Claim the memory resource associated with the Cyber2000 SPARC MMIO aperture before accessing it.
This is part of the effort to request memory regions in fbdev drivers. Signed-off-by: Chintan Patel <[email protected]> --- v3: - Use pr_err() instead of pci_err() v2: - Use pci_err() for error reporting instead of printk(). drivers/video/fbdev/cyber2000fb.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/video/fbdev/cyber2000fb.c b/drivers/video/fbdev/cyber2000fb.c index 2d12f8e96c7e..9fced6bf6ffd 100644 --- a/drivers/video/fbdev/cyber2000fb.c +++ b/drivers/video/fbdev/cyber2000fb.c @@ -47,6 +47,7 @@ #include <linux/io.h> #include <linux/i2c.h> #include <linux/i2c-algo-bit.h> +#include <linux/ioport.h> #ifdef __arm__ #include <asm/mach-types.h> @@ -1620,9 +1621,14 @@ static int cyberpro_pci_enable_mmio(struct cfb_info *cfb) */ unsigned char __iomem *iop; + if (!request_mem_region(0x3000000, 0x5000, "cyber2000fb iop")) { + pr_err("iga5000: cannot reserve I/O area 0x3000000\n"); + return -EBUSY; + } iop = ioremap(0x3000000, 0x5000); if (iop == NULL) { - printk(KERN_ERR "iga5000: cannot map I/O\n"); + pr_err("iga5000: cannot map I/O area\n"); + release_mem_region(0x3000000, 0x5000); return -ENOMEM; } @@ -1633,6 +1639,7 @@ static int cyberpro_pci_enable_mmio(struct cfb_info *cfb) writeb(EXT_BIU_MISC_LIN_ENABLE, iop + 0x3cf); iounmap(iop); + release_mem_region(0x3000000, 0x5000); #else /* * Most other machine types are "normal", so -- 2.43.0
