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

From: Benjamin Herrenschmidt
Date: Mon Apr 21 2008 - 21:28:01 EST


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@xxxxxxxxxxxxxxxxxxx>
---

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)) {
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/