aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Wilcox <willy@parisc-linux.org>2006-01-10 20:47:53 -0500
committerKyle McMartin <kyle@duet.int.mcmartin.ca>2006-01-10 21:51:33 -0500
commita01c8cb126cb5f5a592f01b08ff8859508c75ba1 (patch)
treeb91f00dbfc10ac140818e869bfc8eb383f1c4234
parente0565a1c83a1045d8fae728056082262e712b201 (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>
-rw-r--r--arch/parisc/kernel/drivers.c11
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 }