--- zzzz-none-000/linux-2.6.19.2/arch/sparc64/kernel/of_device.c 2007-01-10 19:10:37.000000000 +0000 +++ davinci-8020-5505/linux-2.6.19.2/arch/sparc64/kernel/of_device.c 2007-01-11 07:38:19.000000000 +0000 @@ -402,22 +402,16 @@ *sizec = 1; } -/* - * FHC/Central bus specific translator. - * - * This is just needed to hard-code the address and size cell - * counts. 'fhc' and 'central' nodes lack the #address-cells and - * #size-cells properties, and if you walk to the root on such - * Enterprise boxes all you'll get is a #size-cells of 2 which is - * not what we want to use. - */ -static int of_bus_fhc_match(struct device_node *np) +static int of_bus_sbus_map(u32 *addr, const u32 *range, int na, int ns, int pna) +{ + return of_bus_default_map(addr, range, na, ns, pna); +} + +static unsigned int of_bus_sbus_get_flags(u32 *addr) { - return !strcmp(np->name, "fhc") || - !strcmp(np->name, "central"); + return IORESOURCE_MEM; } -#define of_bus_fhc_count_cells of_bus_sbus_count_cells /* * Array of bus specific translators @@ -439,17 +433,8 @@ .addr_prop_name = "reg", .match = of_bus_sbus_match, .count_cells = of_bus_sbus_count_cells, - .map = of_bus_default_map, - .get_flags = of_bus_default_get_flags, - }, - /* FHC */ - { - .name = "fhc", - .addr_prop_name = "reg", - .match = of_bus_fhc_match, - .count_cells = of_bus_fhc_count_cells, - .map = of_bus_default_map, - .get_flags = of_bus_default_get_flags, + .map = of_bus_sbus_map, + .get_flags = of_bus_sbus_get_flags, }, /* Default */ { @@ -861,7 +846,7 @@ if (!parent) strcpy(op->dev.bus_id, "root"); else - sprintf(op->dev.bus_id, "%08x", dp->node); + sprintf(op->dev.bus_id, "%s@%08x", dp->name, dp->node); if (of_device_register(op)) { printk("%s: Could not register of device.\n",