|
@@ -515,8 +515,13 @@ alloc_pa_dev(unsigned long hpa, struct hardware_path *mod_path)
|
|
(iodc_data[5] << 8) | iodc_data[6];
|
|
(iodc_data[5] << 8) | iodc_data[6];
|
|
dev->hpa.name = parisc_pathname(dev);
|
|
dev->hpa.name = parisc_pathname(dev);
|
|
dev->hpa.start = hpa;
|
|
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;
|
|
dev->hpa.end = hpa + 0x01ffffff;
|
|
} else {
|
|
} else {
|
|
dev->hpa.end = hpa + 0xfff;
|
|
dev->hpa.end = hpa + 0xfff;
|
|
@@ -834,7 +839,7 @@ static void print_parisc_device(struct parisc_device *dev)
|
|
|
|
|
|
if (dev->num_addrs) {
|
|
if (dev->num_addrs) {
|
|
int k;
|
|
int k;
|
|
- printk(", additional addresses: ");
|
|
|
|
|
|
+ printk(", additional addresses: ");
|
|
for (k = 0; k < dev->num_addrs; k++)
|
|
for (k = 0; k < dev->num_addrs; k++)
|
|
printk("0x%lx ", dev->addr[k]);
|
|
printk("0x%lx ", dev->addr[k]);
|
|
}
|
|
}
|