Yes, it's me again. The GPIO LEDs default-state = keep patch was accepted into the kernel. This patch takes advantage of that patch.
It would be nice if the patch made it into 2.6.31 since this was my last outstanding patch. I really didn't think the "keep" patch would be accepted in this release. But at minimum, it would be nice if the DTS change went in. I actually held back on a change to warp.c that made the LEDS work correctly if AD7414 was not configured. The "keep" makes that change unnecessary... but you need the dts fix. The DTS fix is just two lines and is fully backwards compatible. The warp.c patch just removes the hardcoding of the two LEDs. Now I have to get used to the LED not glitching on startup ;) Cheers, Sean The GPIO LEDS driver now has a default-state of keep. Since u-boot sets the initial LED state on the Warp, take advantage of this new state. Signed-off-by: Sean MacLennan <smaclen...@pikatech.com> --- diff --git a/arch/powerpc/boot/dts/warp.dts b/arch/powerpc/boot/dts/warp.dts index 01bfb56..31605ee 100644 --- a/arch/powerpc/boot/dts/warp.dts +++ b/arch/powerpc/boot/dts/warp.dts @@ -261,10 +261,11 @@ compatible = "gpio-leds"; green { gpios = <&GPIO1 0 0>; - default-state = "on"; + default-state = "keep"; }; red { gpios = <&GPIO1 1 0>; + default-state = "keep"; }; }; diff --git a/arch/powerpc/platforms/44x/warp.c b/arch/powerpc/platforms/44x/warp.c index 0362c88..9916b39 100644 --- a/arch/powerpc/platforms/44x/warp.c +++ b/arch/powerpc/platforms/44x/warp.c @@ -64,8 +64,6 @@ define_machine(warp) { }; -static u32 post_info; - static int __init warp_post_info(void) { struct device_node *np; @@ -87,10 +85,9 @@ static int __init warp_post_info(void) iounmap(fpga); - if (post1 || post2) { + if (post1 || post2) printk(KERN_INFO "Warp POST %08x %08x\n", post1, post2); - post_info = 1; - } else + else printk(KERN_INFO "Warp POST OK\n"); return 0; @@ -179,15 +176,10 @@ static int pika_setup_leds(void) } for_each_child_of_node(np, child) - if (strcmp(child->name, "green") == 0) { + if (strcmp(child->name, "green") == 0) green_led = of_get_gpio(child, 0); - /* Turn back on the green LED */ - gpio_set_value(green_led, 1); - } else if (strcmp(child->name, "red") == 0) { + else if (strcmp(child->name, "red") == 0) red_led = of_get_gpio(child, 0); - /* Set based on post */ - gpio_set_value(red_led, post_info); - } of_node_put(np); _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev