[PARISC] Fix GSC graphics cards with 64MB regions
authorMatthew Wilcox <willy@parisc-linux.org>
Wed, 11 Jan 2006 01:47:53 +0000 (20:47 -0500)
committerKyle McMartin <kyle@duet.int.mcmartin.ca>
Wed, 11 Jan 2006 02:51:33 +0000 (21:51 -0500)
Make knapps work with its 64MB gfx card.  I probably just broke another
machine in the process, but assuming 64MB when 64MB aligned is probably
safer than assuming 32MB all the time.

Signed-off-by: Matthew Wilcox <willy@parisc-linux.org>
Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
arch/parisc/kernel/drivers.c

index 041524d24ef1e99914cbf8ef69767a330464800a..1eaa0d37f677feffe7e2c8fd4f3439f3bbe6ce41 100644 (file)
@@ -515,8 +515,13 @@ alloc_pa_dev(unsigned long hpa, struct hardware_path *mod_path)
                        (iodc_data[5] << 8) | iodc_data[6];
        dev->hpa.name = parisc_pathname(dev);
        dev->hpa.start = hpa;
-       if (hpa == 0xf4000000 || hpa == 0xf6000000 ||
-           hpa == 0xf8000000 || hpa == 0xfa000000) {
+       /* This is awkward.  The STI spec says that gfx devices may occupy
+        * 32MB or 64MB.  Unfortunately, we don't know how to tell whether
+        * it's the former or the latter.  Assumptions either way can hurt us.
+        */
+       if (hpa == 0xf4000000 || hpa == 0xf8000000) {
+               dev->hpa.end = hpa + 0x03ffffff;
+       } else if (hpa == 0xf6000000 || hpa == 0xfa000000) {
                dev->hpa.end = hpa + 0x01ffffff;
        } else {
                dev->hpa.end = hpa + 0xfff;
@@ -834,7 +839,7 @@ static void print_parisc_device(struct parisc_device *dev)
 
        if (dev->num_addrs) {
                int k;
-               printk(",  additional addresses: ");
+               printk(", additional addresses: ");
                for (k = 0; k < dev->num_addrs; k++)
                        printk("0x%lx ", dev->addr[k]);
        }