49 lines
1.5 KiB
Diff
49 lines
1.5 KiB
Diff
--- a/arch/sparc64/kernel/prom.c 2006-09-19 20:42:06.000000000 -0700
|
|
+++ b/arch/sparc64/kernel/prom.c 2006-10-31 22:41:07.000000000 -0800
|
|
@@ -794,7 +794,7 @@
|
|
return virt_irq;
|
|
}
|
|
|
|
-static void schizo_irq_trans_init(struct device_node *dp)
|
|
+static void __schizo_irq_trans_init(struct device_node *dp, int is_tomatillo)
|
|
{
|
|
struct linux_prom64_registers *regs;
|
|
struct schizo_irq_data *irq_data;
|
|
@@ -808,11 +808,24 @@
|
|
dp->irq_trans->data = irq_data;
|
|
|
|
irq_data->pbm_regs = regs[0].phys_addr;
|
|
- irq_data->sync_reg = regs[3].phys_addr + 0x1a18UL;
|
|
+ if (is_tomatillo)
|
|
+ irq_data->sync_reg = regs[3].phys_addr + 0x1a18UL;
|
|
+ else
|
|
+ irq_data->sync_reg = 0UL;
|
|
irq_data->portid = of_getintprop_default(dp, "portid", 0);
|
|
irq_data->chip_version = of_getintprop_default(dp, "version#", 0);
|
|
}
|
|
|
|
+static void schizo_irq_trans_init(struct device_node *dp)
|
|
+{
|
|
+ __schizo_irq_trans_init(dp, 0);
|
|
+}
|
|
+
|
|
+static void tomatillo_irq_trans_init(struct device_node *dp)
|
|
+{
|
|
+ __schizo_irq_trans_init(dp, 1);
|
|
+}
|
|
+
|
|
static unsigned int pci_sun4v_irq_build(struct device_node *dp,
|
|
unsigned int devino,
|
|
void *_data)
|
|
@@ -1051,8 +1064,8 @@
|
|
{ "pci108e,8001", schizo_irq_trans_init },
|
|
{ "SUNW,schizo+", schizo_irq_trans_init },
|
|
{ "pci108e,8002", schizo_irq_trans_init },
|
|
- { "SUNW,tomatillo", schizo_irq_trans_init },
|
|
- { "pci108e,a801", schizo_irq_trans_init },
|
|
+ { "SUNW,tomatillo", tomatillo_irq_trans_init },
|
|
+ { "pci108e,a801", tomatillo_irq_trans_init },
|
|
{ "SUNW,sun4v-pci", pci_sun4v_irq_trans_init },
|
|
};
|
|
#endif
|