From: Albert H. <he...@us...> - 2008-11-25 19:11:36
|
Update of /cvsroot/gc-linux/linux/arch/powerpc/platforms/embedded6xx In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv28930/arch/powerpc/platforms/embedded6xx Modified Files: usbgecko_udbg.c wii.c Log Message: Apply: gc-linux+fix_cputable-2.6.27.patch gcnfb+fix_mmap-2.6.27.patch usbgecko_udbg+safeness.patch rvl-sthcd+workaround_7005.patch Index: usbgecko_udbg.c =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/platforms/embedded6xx/usbgecko_udbg.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- usbgecko_udbg.c 15 Nov 2008 20:10:14 -0000 1.3 +++ usbgecko_udbg.c 25 Nov 2008 19:09:31 -0000 1.4 @@ -37,6 +37,9 @@ #define EXI_DATA 0x10 +#define UG_READ_ATTEMPTS 100 +#define UG_WRITE_ATTEMPTS 100 + static void __iomem *ug_io_base; @@ -106,7 +109,7 @@ */ static void ug_putc(char ch) { - int count = 16; + int count = UG_WRITE_ATTEMPTS; if (!ug_io_base) return; @@ -158,7 +161,7 @@ */ static int ug_getc(void) { - int count = 16; + int count = UG_READ_ATTEMPTS; if (!ug_io_base) return -1; @@ -214,10 +217,12 @@ reg = of_get_property(np, "reg", NULL); if (reg) { paddr = of_translate_address(np, reg); - if (paddr) + if (paddr) { ug_io_base = ioremap(paddr, reg[1]); + return ug_io_base; + } } - return ug_io_base; + return NULL; } /* @@ -225,19 +230,30 @@ */ void __init ug_udbg_init(void) { - struct device_node *np; + struct device_node *np = NULL; struct device_node *stdout; const char *path; - ug_io_base = NULL; + if (ug_io_base) + udbg_printf("%s: early -> final\n", __func__); + + if (!of_chosen) { + udbg_printf("%s: missing of_chosen\n", __func__); + goto done; + } path = of_get_property(of_chosen, "linux,stdout-path", NULL); - if (!path) - return; + if (!path) { + udbg_printf("%s: missing %s property", __func__, + "linux,stdout-path"); + goto done; + } stdout = of_find_node_by_path(path); - if (!stdout) - return; + if (!stdout) { + udbg_printf("%s: missing path %s", __func__, path); + goto done; + } for(np = NULL; (np = of_find_compatible_node(np, NULL, "usbgecko,usbgecko")); ) @@ -245,18 +261,30 @@ break; of_node_put(stdout); - if (!np) - return; + if (!np) { + udbg_printf("%s: stdout is not an usbgecko", __func__); + goto done; + } - ug_udbg_setup_io_base(np); - if (ug_is_adapter_present()) { + if (!ug_udbg_setup_io_base(np)) { + udbg_printf("%s: failed to setup io base", __func__); + goto done; + } + + if (!ug_is_adapter_present()) { + udbg_printf("usbgecko_udbg: not found\n"); + ug_io_base = NULL; + } else { udbg_putc = ug_udbg_putc; udbg_getc = ug_udbg_getc; udbg_getc_poll = ug_udbg_getc_poll; - printk(KERN_INFO "usbgecko_udbg: ready\n"); + udbg_printf("usbgecko_udbg: ready\n"); } - of_node_put(np); +done: + if (np) + of_node_put(np); + return; } #ifdef CONFIG_PPC_EARLY_DEBUG_USBGECKO Index: wii.c =================================================================== RCS file: /cvsroot/gc-linux/linux/arch/powerpc/platforms/embedded6xx/wii.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- wii.c 15 Nov 2008 20:10:14 -0000 1.2 +++ wii.c 25 Nov 2008 19:09:31 -0000 1.3 @@ -59,14 +59,14 @@ seq_printf(m, "machine\t\t: Nintendo Wii\n"); } -static void wii_setup_arch(void) +static void __init wii_setup_arch(void) { + ug_udbg_init(); + gcnvi_udbg_init(); } static void __init wii_init_early(void) { - ug_udbg_init(); - gcnvi_udbg_init(); } static int __init wii_probe(void) |