fbdev/core: Remove remove_conflicting_pci_framebuffers()
Remove remove_conflicting_pci_framebuffers() and implement similar functionality in aperture_remove_conflicting_pci_device(), which was the only caller. Removes an otherwise unused interface and streamlines the aperture helper. No functional changes. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/20220718072322.8927-5-tzimmermann@suse.de
This commit is contained in:
parent
8a611e0825
commit
9d69ef1838
@ -321,30 +321,36 @@ EXPORT_SYMBOL(aperture_remove_conflicting_devices);
|
||||
*/
|
||||
int aperture_remove_conflicting_pci_devices(struct pci_dev *pdev, const char *name)
|
||||
{
|
||||
bool primary = false;
|
||||
resource_size_t base, size;
|
||||
int bar, ret;
|
||||
|
||||
#ifdef CONFIG_X86
|
||||
primary = pdev->resource[PCI_ROM_RESOURCE].flags & IORESOURCE_ROM_SHADOW;
|
||||
#endif
|
||||
|
||||
for (bar = 0; bar < PCI_STD_NUM_BARS; ++bar) {
|
||||
if (!(pci_resource_flags(pdev, bar) & IORESOURCE_MEM))
|
||||
continue;
|
||||
|
||||
base = pci_resource_start(pdev, bar);
|
||||
size = pci_resource_len(pdev, bar);
|
||||
ret = aperture_remove_conflicting_devices(base, size, primary, name);
|
||||
if (ret)
|
||||
break;
|
||||
}
|
||||
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
/*
|
||||
* WARNING: Apparently we must kick fbdev drivers before vgacon,
|
||||
* otherwise the vga fbdev driver falls over.
|
||||
*/
|
||||
#if IS_REACHABLE(CONFIG_FB)
|
||||
ret = remove_conflicting_pci_framebuffers(pdev, name);
|
||||
if (ret)
|
||||
return ret;
|
||||
#endif
|
||||
ret = vga_remove_vgacon(pdev);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
for (bar = 0; bar < PCI_STD_NUM_BARS; ++bar) {
|
||||
if (!(pci_resource_flags(pdev, bar) & IORESOURCE_MEM))
|
||||
continue;
|
||||
base = pci_resource_start(pdev, bar);
|
||||
size = pci_resource_len(pdev, bar);
|
||||
aperture_detach_devices(base, size);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
@ -1799,54 +1799,6 @@ int remove_conflicting_framebuffers(struct apertures_struct *a,
|
||||
}
|
||||
EXPORT_SYMBOL(remove_conflicting_framebuffers);
|
||||
|
||||
/**
|
||||
* remove_conflicting_pci_framebuffers - remove firmware-configured framebuffers for PCI devices
|
||||
* @pdev: PCI device
|
||||
* @name: requesting driver name
|
||||
*
|
||||
* This function removes framebuffer devices (eg. initialized by firmware)
|
||||
* using memory range configured for any of @pdev's memory bars.
|
||||
*
|
||||
* The function assumes that PCI device with shadowed ROM drives a primary
|
||||
* display and so kicks out vga16fb.
|
||||
*/
|
||||
int remove_conflicting_pci_framebuffers(struct pci_dev *pdev, const char *name)
|
||||
{
|
||||
struct apertures_struct *ap;
|
||||
bool primary = false;
|
||||
int err, idx, bar;
|
||||
|
||||
for (idx = 0, bar = 0; bar < PCI_STD_NUM_BARS; bar++) {
|
||||
if (!(pci_resource_flags(pdev, bar) & IORESOURCE_MEM))
|
||||
continue;
|
||||
idx++;
|
||||
}
|
||||
|
||||
ap = alloc_apertures(idx);
|
||||
if (!ap)
|
||||
return -ENOMEM;
|
||||
|
||||
for (idx = 0, bar = 0; bar < PCI_STD_NUM_BARS; bar++) {
|
||||
if (!(pci_resource_flags(pdev, bar) & IORESOURCE_MEM))
|
||||
continue;
|
||||
ap->ranges[idx].base = pci_resource_start(pdev, bar);
|
||||
ap->ranges[idx].size = pci_resource_len(pdev, bar);
|
||||
pci_dbg(pdev, "%s: bar %d: 0x%lx -> 0x%lx\n", __func__, bar,
|
||||
(unsigned long)pci_resource_start(pdev, bar),
|
||||
(unsigned long)pci_resource_end(pdev, bar));
|
||||
idx++;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_X86
|
||||
primary = pdev->resource[PCI_ROM_RESOURCE].flags &
|
||||
IORESOURCE_ROM_SHADOW;
|
||||
#endif
|
||||
err = remove_conflicting_framebuffers(ap, name, primary);
|
||||
kfree(ap);
|
||||
return err;
|
||||
}
|
||||
EXPORT_SYMBOL(remove_conflicting_pci_framebuffers);
|
||||
|
||||
/**
|
||||
* register_framebuffer - registers a frame buffer device
|
||||
* @fb_info: frame buffer info structure
|
||||
|
@ -615,8 +615,6 @@ extern ssize_t fb_sys_write(struct fb_info *info, const char __user *buf,
|
||||
/* drivers/video/fbmem.c */
|
||||
extern int register_framebuffer(struct fb_info *fb_info);
|
||||
extern void unregister_framebuffer(struct fb_info *fb_info);
|
||||
extern int remove_conflicting_pci_framebuffers(struct pci_dev *pdev,
|
||||
const char *name);
|
||||
extern int remove_conflicting_framebuffers(struct apertures_struct *a,
|
||||
const char *name, bool primary);
|
||||
extern int fb_prepare_logo(struct fb_info *fb_info, int rotate);
|
||||
|
Loading…
Reference in New Issue
Block a user