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