summaryrefslogtreecommitdiffstats
path: root/target/linux/brcm63xx/patches-2.6.33/210-init_gpio_out_low_high_current_value_at_boot.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/brcm63xx/patches-2.6.33/210-init_gpio_out_low_high_current_value_at_boot.patch')
-rw-r--r--target/linux/brcm63xx/patches-2.6.33/210-init_gpio_out_low_high_current_value_at_boot.patch19
1 files changed, 19 insertions, 0 deletions
diff --git a/target/linux/brcm63xx/patches-2.6.33/210-init_gpio_out_low_high_current_value_at_boot.patch b/target/linux/brcm63xx/patches-2.6.33/210-init_gpio_out_low_high_current_value_at_boot.patch
new file mode 100644
index 000000000..902840b39
--- /dev/null
+++ b/target/linux/brcm63xx/patches-2.6.33/210-init_gpio_out_low_high_current_value_at_boot.patch
@@ -0,0 +1,19 @@
+To avoid glitch during gpio initialisation, fetch gpio output
+registers values left by bootloader.
+
+Signed-off-by: Maxime Bizon <mbizon@freebox.fr>
+---
+ arch/mips/bcm63xx/gpio.c | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+--- a/arch/mips/bcm63xx/gpio.c
++++ b/arch/mips/bcm63xx/gpio.c
+@@ -125,6 +125,8 @@ static struct gpio_chip bcm63xx_gpio_chi
+
+ int __init bcm63xx_gpio_init(void)
+ {
++ gpio_out_low = bcm_gpio_readl(GPIO_DATA_LO_REG);
++ gpio_out_high = bcm_gpio_readl(GPIO_DATA_HI_REG);
+ bcm63xx_gpio_chip.ngpio = bcm63xx_gpio_count();
+ pr_info("registering %d GPIOs\n", bcm63xx_gpio_chip.ngpio);
+