diff options
author | Kim Phillips <kim.phillips@freescale.com> | 2006-11-21 18:19:42 -0600 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2006-11-22 13:28:21 +1100 |
commit | 8746ed3dae14e87e9f7ad8e44649b72e22b33274 (patch) | |
tree | 4555911faa3bb62237b8bcfdee543cc29a28bde4 | |
parent | df9c23095fc8652798c41dd860676d3dafb2f1dc (diff) | |
download | linux-8746ed3dae14e87e9f7ad8e44649b72e22b33274.tar.bz2 |
[POWERPC] Fix ucc_geth of_device discovery on mpc832x
mpc832x, as in mpc8360, needs to explicitly find and create the
platform device for ucc_geth in 2.6.19. This code will likely be
readapted to Benh's new of_ methods for 2.6.20.
Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
-rw-r--r-- | arch/powerpc/platforms/83xx/mpc832x_mds.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/arch/powerpc/platforms/83xx/mpc832x_mds.c b/arch/powerpc/platforms/83xx/mpc832x_mds.c index 54dea9d42dc9..a43ac71ab740 100644 --- a/arch/powerpc/platforms/83xx/mpc832x_mds.c +++ b/arch/powerpc/platforms/83xx/mpc832x_mds.c @@ -24,6 +24,7 @@ #include <linux/root_dev.h> #include <linux/initrd.h> +#include <asm/of_device.h> #include <asm/system.h> #include <asm/atomic.h> #include <asm/time.h> @@ -136,6 +137,24 @@ static void __init mpc832x_sys_setup_arch(void) #endif } +static int __init mpc832x_declare_of_platform_devices(void) +{ + struct device_node *np; + + for (np = NULL; (np = of_find_compatible_node(np, "network", + "ucc_geth")) != NULL;) { + int ucc_num; + char bus_id[BUS_ID_SIZE]; + + ucc_num = *((uint *) get_property(np, "device-id", NULL)) - 1; + snprintf(bus_id, BUS_ID_SIZE, "ucc_geth.%u", ucc_num); + of_platform_device_create(np, bus_id, NULL); + } + + return 0; +} +device_initcall(mpc832x_declare_of_platform_devices); + void __init mpc832x_sys_init_IRQ(void) { |