forked from Minki/linux
Merge branch 'pci/vga'; commit '6a73336bde29' into for-linus
* pci/vga: vgaarb: Drop obsolete #ifndef vgaarb: Don't default exclusively to first video device with mem+io * commit '6a73336bde29': PCI: Remove "no hotplug settings from platform" warning
This commit is contained in:
commit
649ae75286
@ -38,27 +38,6 @@ static void pci_fixup_video(struct pci_dev *pdev)
|
||||
return;
|
||||
/* Maybe, this machine supports legacy memory map. */
|
||||
|
||||
if (!vga_default_device()) {
|
||||
resource_size_t start, end;
|
||||
int i;
|
||||
|
||||
/* Does firmware framebuffer belong to us? */
|
||||
for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) {
|
||||
if (!(pci_resource_flags(pdev, i) & IORESOURCE_MEM))
|
||||
continue;
|
||||
|
||||
start = pci_resource_start(pdev, i);
|
||||
end = pci_resource_end(pdev, i);
|
||||
|
||||
if (!start || !end)
|
||||
continue;
|
||||
|
||||
if (screen_info.lfb_base >= start &&
|
||||
(screen_info.lfb_base + screen_info.lfb_size) < end)
|
||||
vga_set_default_device(pdev);
|
||||
}
|
||||
}
|
||||
|
||||
/* Is VGA routed to us? */
|
||||
bus = pdev->bus;
|
||||
while (bus) {
|
||||
@ -83,8 +62,7 @@ static void pci_fixup_video(struct pci_dev *pdev)
|
||||
pci_read_config_word(pdev, PCI_COMMAND, &config);
|
||||
if (config & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY)) {
|
||||
pdev->resource[PCI_ROM_RESOURCE].flags |= IORESOURCE_ROM_SHADOW;
|
||||
dev_printk(KERN_DEBUG, &pdev->dev, "Boot video device\n");
|
||||
vga_set_default_device(pdev);
|
||||
dev_printk(KERN_DEBUG, &pdev->dev, "Video device with shadowed ROM\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -326,27 +326,6 @@ static void pci_fixup_video(struct pci_dev *pdev)
|
||||
struct pci_bus *bus;
|
||||
u16 config;
|
||||
|
||||
if (!vga_default_device()) {
|
||||
resource_size_t start, end;
|
||||
int i;
|
||||
|
||||
/* Does firmware framebuffer belong to us? */
|
||||
for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) {
|
||||
if (!(pci_resource_flags(pdev, i) & IORESOURCE_MEM))
|
||||
continue;
|
||||
|
||||
start = pci_resource_start(pdev, i);
|
||||
end = pci_resource_end(pdev, i);
|
||||
|
||||
if (!start || !end)
|
||||
continue;
|
||||
|
||||
if (screen_info.lfb_base >= start &&
|
||||
(screen_info.lfb_base + screen_info.lfb_size) < end)
|
||||
vga_set_default_device(pdev);
|
||||
}
|
||||
}
|
||||
|
||||
/* Is VGA routed to us? */
|
||||
bus = pdev->bus;
|
||||
while (bus) {
|
||||
@ -371,8 +350,7 @@ static void pci_fixup_video(struct pci_dev *pdev)
|
||||
pci_read_config_word(pdev, PCI_COMMAND, &config);
|
||||
if (config & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY)) {
|
||||
pdev->resource[PCI_ROM_RESOURCE].flags |= IORESOURCE_ROM_SHADOW;
|
||||
dev_printk(KERN_DEBUG, &pdev->dev, "Boot video device\n");
|
||||
vga_set_default_device(pdev);
|
||||
dev_printk(KERN_DEBUG, &pdev->dev, "Video device with shadowed ROM\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -41,6 +41,7 @@
|
||||
#include <linux/poll.h>
|
||||
#include <linux/miscdevice.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/screen_info.h>
|
||||
|
||||
#include <linux/uaccess.h>
|
||||
|
||||
@ -112,10 +113,8 @@ both:
|
||||
return 1;
|
||||
}
|
||||
|
||||
#ifndef __ARCH_HAS_VGA_DEFAULT_DEVICE
|
||||
/* this is only used a cookie - it should not be dereferenced */
|
||||
static struct pci_dev *vga_default;
|
||||
#endif
|
||||
|
||||
static void vga_arb_device_card_gone(struct pci_dev *pdev);
|
||||
|
||||
@ -131,7 +130,6 @@ static struct vga_device *vgadev_find(struct pci_dev *pdev)
|
||||
}
|
||||
|
||||
/* Returns the default VGA device (vgacon's babe) */
|
||||
#ifndef __ARCH_HAS_VGA_DEFAULT_DEVICE
|
||||
struct pci_dev *vga_default_device(void)
|
||||
{
|
||||
return vga_default;
|
||||
@ -147,7 +145,6 @@ void vga_set_default_device(struct pci_dev *pdev)
|
||||
pci_dev_put(vga_default);
|
||||
vga_default = pci_dev_get(pdev);
|
||||
}
|
||||
#endif
|
||||
|
||||
static inline void vga_irq_set_state(struct vga_device *vgadev, bool state)
|
||||
{
|
||||
@ -583,11 +580,12 @@ static bool vga_arbiter_add_pci_device(struct pci_dev *pdev)
|
||||
/* Deal with VGA default device. Use first enabled one
|
||||
* by default if arch doesn't have it's own hook
|
||||
*/
|
||||
#ifndef __ARCH_HAS_VGA_DEFAULT_DEVICE
|
||||
if (vga_default == NULL &&
|
||||
((vgadev->owns & VGA_RSRC_LEGACY_MASK) == VGA_RSRC_LEGACY_MASK))
|
||||
((vgadev->owns & VGA_RSRC_LEGACY_MASK) == VGA_RSRC_LEGACY_MASK)) {
|
||||
pr_info("vgaarb: setting as boot device: PCI:%s\n",
|
||||
pci_name(pdev));
|
||||
vga_set_default_device(pdev);
|
||||
#endif
|
||||
}
|
||||
|
||||
vga_arbiter_check_bridge_sharing(vgadev);
|
||||
|
||||
@ -621,10 +619,8 @@ static bool vga_arbiter_del_pci_device(struct pci_dev *pdev)
|
||||
goto bail;
|
||||
}
|
||||
|
||||
#ifndef __ARCH_HAS_VGA_DEFAULT_DEVICE
|
||||
if (vga_default == pdev)
|
||||
vga_set_default_device(NULL);
|
||||
#endif
|
||||
|
||||
if (vgadev->decodes & (VGA_RSRC_LEGACY_IO | VGA_RSRC_LEGACY_MEM))
|
||||
vga_decode_count--;
|
||||
@ -1320,6 +1316,38 @@ static int __init vga_arb_device_init(void)
|
||||
pr_info("vgaarb: loaded\n");
|
||||
|
||||
list_for_each_entry(vgadev, &vga_list, list) {
|
||||
#if defined(CONFIG_X86) || defined(CONFIG_IA64)
|
||||
/* Override I/O based detection done by vga_arbiter_add_pci_device()
|
||||
* as it may take the wrong device (e.g. on Apple system under EFI).
|
||||
*
|
||||
* Select the device owning the boot framebuffer if there is one.
|
||||
*/
|
||||
resource_size_t start, end;
|
||||
int i;
|
||||
|
||||
/* Does firmware framebuffer belong to us? */
|
||||
for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) {
|
||||
if (!(pci_resource_flags(vgadev->pdev, i) & IORESOURCE_MEM))
|
||||
continue;
|
||||
|
||||
start = pci_resource_start(vgadev->pdev, i);
|
||||
end = pci_resource_end(vgadev->pdev, i);
|
||||
|
||||
if (!start || !end)
|
||||
continue;
|
||||
|
||||
if (screen_info.lfb_base < start ||
|
||||
(screen_info.lfb_base + screen_info.lfb_size) >= end)
|
||||
continue;
|
||||
if (!vga_default_device())
|
||||
pr_info("vgaarb: setting as boot device: PCI:%s\n",
|
||||
pci_name(vgadev->pdev));
|
||||
else if (vgadev->pdev != vga_default_device())
|
||||
pr_info("vgaarb: overriding boot device: PCI:%s\n",
|
||||
pci_name(vgadev->pdev));
|
||||
vga_set_default_device(vgadev->pdev);
|
||||
}
|
||||
#endif
|
||||
if (vgadev->bridge_has_one_vga)
|
||||
pr_info("vgaarb: bridge control possible %s\n", pci_name(vgadev->pdev));
|
||||
else
|
||||
|
@ -46,7 +46,6 @@ static void program_hpp_type0(struct pci_dev *dev, struct hpp_type0 *hpp)
|
||||
*/
|
||||
if (pci_is_pcie(dev))
|
||||
return;
|
||||
dev_info(&dev->dev, "using default PCI settings\n");
|
||||
hpp = &pci_default_type0;
|
||||
}
|
||||
|
||||
@ -153,7 +152,6 @@ void pci_configure_slot(struct pci_dev *dev)
|
||||
{
|
||||
struct pci_dev *cdev;
|
||||
struct hotplug_params hpp;
|
||||
int ret;
|
||||
|
||||
if (!(dev->hdr_type == PCI_HEADER_TYPE_NORMAL ||
|
||||
(dev->hdr_type == PCI_HEADER_TYPE_BRIDGE &&
|
||||
@ -163,9 +161,7 @@ void pci_configure_slot(struct pci_dev *dev)
|
||||
pcie_bus_configure_settings(dev->bus);
|
||||
|
||||
memset(&hpp, 0, sizeof(hpp));
|
||||
ret = pci_get_hp_params(dev, &hpp);
|
||||
if (ret)
|
||||
dev_warn(&dev->dev, "no hotplug settings from platform\n");
|
||||
pci_get_hp_params(dev, &hpp);
|
||||
|
||||
program_hpp_type2(dev, hpp.t2);
|
||||
program_hpp_type1(dev, hpp.t1);
|
||||
|
@ -182,7 +182,6 @@ extern void vga_put(struct pci_dev *pdev, unsigned int rsrc);
|
||||
* vga_get()...
|
||||
*/
|
||||
|
||||
#ifndef __ARCH_HAS_VGA_DEFAULT_DEVICE
|
||||
#ifdef CONFIG_VGA_ARB
|
||||
extern struct pci_dev *vga_default_device(void);
|
||||
extern void vga_set_default_device(struct pci_dev *pdev);
|
||||
@ -190,7 +189,6 @@ extern void vga_set_default_device(struct pci_dev *pdev);
|
||||
static inline struct pci_dev *vga_default_device(void) { return NULL; };
|
||||
static inline void vga_set_default_device(struct pci_dev *pdev) { };
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/**
|
||||
* vga_conflicts
|
||||
|
Loading…
Reference in New Issue
Block a user