diff options
author | Matthew Wilcox <willy@parisc-linux.org> | 2006-01-10 20:47:53 -0500 |
---|---|---|
committer | Kyle McMartin <kyle@duet.int.mcmartin.ca> | 2006-01-10 21:51:33 -0500 |
commit | a01c8cb126cb5f5a592f01b08ff8859508c75ba1 (patch) | |
tree | b91f00dbfc10ac140818e869bfc8eb383f1c4234 /arch/parisc | |
parent | e0565a1c83a1045d8fae728056082262e712b201 (diff) |
[PARISC] Fix GSC graphics cards with 64MB regions
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>
Diffstat (limited to 'arch/parisc')
-rw-r--r-- | arch/parisc/kernel/drivers.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/arch/parisc/kernel/drivers.c b/arch/parisc/kernel/drivers.c index 041524d24ef1..1eaa0d37f677 100644 --- a/arch/parisc/kernel/drivers.c +++ b/arch/parisc/kernel/drivers.c | |||
@@ -515,8 +515,13 @@ alloc_pa_dev(unsigned long hpa, struct hardware_path *mod_path) | |||
515 | (iodc_data[5] << 8) | iodc_data[6]; | 515 | (iodc_data[5] << 8) | iodc_data[6]; |
516 | dev->hpa.name = parisc_pathname(dev); | 516 | dev->hpa.name = parisc_pathname(dev); |
517 | dev->hpa.start = hpa; | 517 | dev->hpa.start = hpa; |
518 | if (hpa == 0xf4000000 || hpa == 0xf6000000 || | 518 | /* This is awkward. The STI spec says that gfx devices may occupy |
519 | hpa == 0xf8000000 || hpa == 0xfa000000) { | 519 | * 32MB or 64MB. Unfortunately, we don't know how to tell whether |
520 | * it's the former or the latter. Assumptions either way can hurt us. | ||
521 | */ | ||
522 | if (hpa == 0xf4000000 || hpa == 0xf8000000) { | ||
523 | dev->hpa.end = hpa + 0x03ffffff; | ||
524 | } else if (hpa == 0xf6000000 || hpa == 0xfa000000) { | ||
520 | dev->hpa.end = hpa + 0x01ffffff; | 525 | dev->hpa.end = hpa + 0x01ffffff; |
521 | } else { | 526 | } else { |
522 | dev->hpa.end = hpa + 0xfff; | 527 | dev->hpa.end = hpa + 0xfff; |
@@ -834,7 +839,7 @@ static void print_parisc_device(struct parisc_device *dev) | |||
834 | 839 | ||
835 | if (dev->num_addrs) { | 840 | if (dev->num_addrs) { |
836 | int k; | 841 | int k; |
837 | printk(", additional addresses: "); | 842 | printk(", additional addresses: "); |
838 | for (k = 0; k < dev->num_addrs; k++) | 843 | for (k = 0; k < dev->num_addrs; k++) |
839 | printk("0x%lx ", dev->addr[k]); | 844 | printk("0x%lx ", dev->addr[k]); |
840 | } | 845 | } |