Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 253369
b: refs/heads/master
c: 9eeb089
h: refs/heads/master
i:
  253367: bb50b2e
v: v3
  • Loading branch information
oftedal authored and David S. Miller committed Jun 7, 2011
1 parent 8d39963 commit 5aef992
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 13 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ea160584574e345495e75ee4a7d3a7dbcad9e16c
refs/heads/master: 9eeb08986f41c0740306f6f56cf04e619e2fe525
34 changes: 22 additions & 12 deletions trunk/arch/sparc/kernel/sun4d_irq.c
Original file line number Diff line number Diff line change
Expand Up @@ -334,21 +334,29 @@ unsigned int sun4d_build_device_irq(struct platform_device *op,
unsigned int real_irq)
{
struct device_node *dp = op->dev.of_node;
struct device_node *io_unit, *sbi = dp->parent;
struct device_node *board_parent, *bus = dp->parent;
char *bus_connection;
const struct linux_prom_registers *regs;
unsigned int pil;
unsigned int irq;
int board, slot;
int sbusl;

irq = real_irq;
while (sbi) {
if (!strcmp(sbi->name, "sbi"))
while (bus) {
if (!strcmp(bus->name, "sbi")) {
bus_connection = "io-unit";
break;
}

if (!strcmp(bus->name, "bootbus")) {
bus_connection = "cpu-unit";
break;
}

sbi = sbi->parent;
bus = bus->parent;
}
if (!sbi)
if (!bus)
goto err_out;

regs = of_get_property(dp, "reg", NULL);
Expand All @@ -358,17 +366,19 @@ unsigned int sun4d_build_device_irq(struct platform_device *op,
slot = regs->which_io;

/*
* If SBI's parent is not io-unit or the io-unit lacks
* a "board#" property, something is very wrong.
* If Bus nodes parent is not io-unit/cpu-unit or the io-unit/cpu-unit
* lacks a "board#" property, something is very wrong.
*/
if (!sbi->parent || strcmp(sbi->parent->name, "io-unit")) {
printk("%s: Error, parent is not io-unit.\n", sbi->full_name);
if (!bus->parent || strcmp(bus->parent->name, bus_connection)) {
printk(KERN_ERR "%s: Error, parent is not %s.\n",
bus->full_name, bus_connection);
goto err_out;
}
io_unit = sbi->parent;
board = of_getintprop_default(io_unit, "board#", -1);
board_parent = bus->parent;
board = of_getintprop_default(board_parent, "board#", -1);
if (board == -1) {
printk("%s: Error, lacks board# property.\n", io_unit->full_name);
printk(KERN_ERR "%s: Error, lacks board# property.\n",
board_parent->full_name);
goto err_out;
}

Expand Down

0 comments on commit 5aef992

Please sign in to comment.