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 <[EMAIL PROTECTED]>
---

 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)) {
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Reply via email to