video: vesa_fb: Look up VGA device by class instead of id
authorBin Meng <bmeng.cn@gmail.com>
Mon, 6 Jul 2015 08:31:26 +0000 (16:31 +0800)
committerSimon Glass <sjg@chromium.org>
Wed, 15 Jul 2015 00:03:18 +0000 (18:03 -0600)
Per PCI spec, VGA device reports its class as standard 030000h in
its configuration space, so we can use it to determine if we need
run option rom instead of testing the supported vendor/device ids.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Acked-by: Simon Glass <sjg@chromium.org>
drivers/video/vesa_fb.c

index 47f824a726b137e60b3027cd03b263459f5a9851..909f8e8091a028e3b493c2fb75e92721c44f03fe 100644 (file)
@@ -1,6 +1,5 @@
 /*
- *
- * Vesa frame buffer driver for x86
+ * VESA frame buffer driver
  *
  * Copyright (C) 2014 Google, Inc
  *
  */
 GraphicDevice ctfb;
 
-/* Devices to allow - only the last one works fully */
-struct pci_device_id vesa_video_ids[] = {
-       { .vendor = 0x102b, .device = 0x0525 },
-       { .vendor = 0x1002, .device = 0x5159 },
-       { .vendor = 0x1002, .device = 0x4752 },
-       { .vendor = 0x1002, .device = 0x5452 },
-       { .vendor = 0x8086, .device = 0x0f31 },
-       {},
-};
-
 void *video_hw_init(void)
 {
        GraphicDevice *gdev = &ctfb;
@@ -36,8 +25,7 @@ void *video_hw_init(void)
 
        printf("Video: ");
        if (vbe_get_video_info(gdev)) {
-               /* TODO: Should we look these up by class? */
-               dev = pci_find_devices(vesa_video_ids, 0);
+               dev = pci_find_class(PCI_CLASS_DISPLAY_VGA << 8, 0);
                if (dev == -1) {
                        printf("no card detected\n");
                        return NULL;