| From c2e1d84523ad2a19e5be08c1f01999cc9e82652e Mon Sep 17 00:00:00 2001 |
| From: Brian King <brking@linux.vnet.ibm.com> |
| Date: Mon, 8 Apr 2013 03:05:10 +0000 |
| Subject: powerpc: Set default VGA device |
| |
| From: Brian King <brking@linux.vnet.ibm.com> |
| |
| commit c2e1d84523ad2a19e5be08c1f01999cc9e82652e upstream. |
| |
| Add a PCI quirk for VGA devices on Power to set the default VGA device. |
| Ensures a default VGA is always set if a graphics adapter is present, |
| even if firmware did not initialize it. If more than one graphics |
| adapter is present, ensure the one initialized by firmware is set |
| as the default VGA device. This ensures that X autoconfiguration |
| will work. |
| |
| Signed-off-by: Brian King <brking@linux.vnet.ibm.com> |
| Signed-off-by: Michael Ellerman <michael@ellerman.id.au> |
| Signed-off-by: Kleber Sacilotto de Souza <klebers@linux.vnet.ibm.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| arch/powerpc/kernel/pci-common.c | 13 +++++++++++++ |
| 1 file changed, 13 insertions(+) |
| |
| --- a/arch/powerpc/kernel/pci-common.c |
| +++ b/arch/powerpc/kernel/pci-common.c |
| @@ -30,6 +30,7 @@ |
| #include <linux/irq.h> |
| #include <linux/vmalloc.h> |
| #include <linux/slab.h> |
| +#include <linux/vgaarb.h> |
| |
| #include <asm/processor.h> |
| #include <asm/io.h> |
| @@ -1725,3 +1726,15 @@ static void fixup_hide_host_resource_fsl |
| } |
| DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MOTOROLA, PCI_ANY_ID, fixup_hide_host_resource_fsl); |
| DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_FREESCALE, PCI_ANY_ID, fixup_hide_host_resource_fsl); |
| + |
| +static void fixup_vga(struct pci_dev *pdev) |
| +{ |
| + u16 cmd; |
| + |
| + pci_read_config_word(pdev, PCI_COMMAND, &cmd); |
| + if ((cmd & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY)) || !vga_default_device()) |
| + vga_set_default_device(pdev); |
| + |
| +} |
| +DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_ANY_ID, PCI_ANY_ID, |
| + PCI_CLASS_DISPLAY_VGA, 8, fixup_vga); |