[PATCH 2/3] aty128fb: Fix 64 bits resources on 32 bits archs

Benjamin Herrenschmidt benh at kernel.crashing.org
Tue Apr 22 11:26:08 EST 2008


This fixes aty128fb to not truncate 64 bits resources on 32 bits
platforms. Unfortunately, there are still issues with addresses
returned to userspace via struct fb_fix_screeninfo. This will
have to be dealt with separately.

Signed-off-by: Benjamin Herrenschmidt <benh at kernel.crashing.org>
---

 drivers/video/aty/aty128fb.c |    7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

--- linux-work.orig/drivers/video/aty/aty128fb.c	2008-04-22 11:18:41.000000000 +1000
+++ linux-work/drivers/video/aty/aty128fb.c	2008-04-22 11:19:31.000000000 +1000
@@ -2011,7 +2011,7 @@ static int __devinit aty128_init(struct 
 /* register a card    ++ajoshi */
 static int __devinit aty128_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 {
-	unsigned long fb_addr, reg_addr;
+	resource_size_t fb_addr, reg_addr;
 	struct aty128fb_par *par;
 	struct fb_info *info;
 	int err;
@@ -2052,7 +2052,6 @@ static int __devinit aty128_probe(struct
 	info->pseudo_palette = par->pseudo_palette;
 
 	/* Virtualize mmio region */
-	info->fix.mmio_start = reg_addr;
 	par->regbase = ioremap(reg_addr, pci_resource_len(pdev, 2));
 	if (!par->regbase)
 		goto err_free_info;
@@ -2068,9 +2067,9 @@ static int __devinit aty128_probe(struct
 
 	/* Set up info->fix */
 	info->fix = aty128fb_fix;
-	info->fix.smem_start = fb_addr;
+	info->fix.smem_start = (unsigned long)fb_addr;
 	info->fix.smem_len = par->vram_size;
-	info->fix.mmio_start = reg_addr;
+	info->fix.mmio_start = (unsigned long)reg_addr;
 
 	/* If we can't test scratch registers, something is seriously wrong */
 	if (!register_test(par)) {



More information about the Linuxppc-dev mailing list