This is a temporary hack until a proper pinmux driver for bcm63xx is added Signed-off-by: Álvaro Fernández Rojas <nolt...@gmail.com> --- .../805-BCM63XX-pinmux-serial-leds.patch | 49 ++++++++++++++++++++++ .../805-BCM63XX-pinmux-serial-leds.patch | 49 ++++++++++++++++++++++ 2 files changed, 98 insertions(+) create mode 100644 target/linux/brcm63xx/patches-3.18/805-BCM63XX-pinmux-serial-leds.patch create mode 100644 target/linux/brcm63xx/patches-4.1/805-BCM63XX-pinmux-serial-leds.patch
diff --git a/target/linux/brcm63xx/patches-3.18/805-BCM63XX-pinmux-serial-leds.patch b/target/linux/brcm63xx/patches-3.18/805-BCM63XX-pinmux-serial-leds.patch new file mode 100644 index 0000000..0af0ac9 --- /dev/null +++ b/target/linux/brcm63xx/patches-3.18/805-BCM63XX-pinmux-serial-leds.patch @@ -0,0 +1,49 @@ +diff -uprN a/arch/mips/bcm63xx/boards/board_common.c b/arch/mips/bcm63xx/boards/board_common.c +--- a/arch/mips/bcm63xx/boards/board_common.c 2015-03-16 16:07:28.171114109 +0100 ++++ b/arch/mips/bcm63xx/boards/board_common.c 2015-05-18 22:53:49.967864529 +0200 +@@ -222,6 +222,45 @@ int __init board_register_devices(void) + } + #endif + ++ /* Serial LEDs pinmux */ ++ if (board_of_device_present("leds0")) { ++ u32 val, val2; ++ ++ val = bcm_gpio_readl(GPIO_MODE_REG); ++ if (BCMCPU_IS_6318()) { ++ val |= BIT(6) | BIT(7); ++ ++ #define PINMUX_EPHY2_ACT_LED (1 << (6 << 1)) ++ #define PINMUX_EPHY3_ACT_LED (1 << (7 << 1)) ++ #define PINMUX_SERIAL_LED_DATA (3 << (6 << 1)) ++ #define PINMUX_SERIAL_LED_CLK (3 << (7 << 1)) ++ ++ val2 = bcm_gpio_readl(GPIO_PINMUX_SEL0_6318); ++ val2 &= ~(PINMUX_EPHY2_ACT_LED | PINMUX_EPHY3_ACT_LED); ++ val2 |= (PINMUX_SERIAL_LED_DATA | PINMUX_SERIAL_LED_CLK); ++ bcm_gpio_writel(val2, GPIO_PINMUX_SEL0_6318); ++ } else if (BCMCPU_IS_6328()) { ++ val |= BIT(6) | BIT(7); ++ } else if (BCMCPU_IS_63268()) { ++ val |= BIT(0) | BIT(1); ++ } else if (BCMCPU_IS_6358()) { ++ val |= BIT(10); ++ ++ val2 = bcm_gpio_readl(GPIO_CTL_LO_REG); ++ val2 |= BIT(6) | BIT(7); ++ bcm_gpio_writel(val2, GPIO_CTL_LO_REG); ++ } else if (BCMCPU_IS_6362()) { ++ val |= BIT(2) | BIT(3); ++ } else if (BCMCPU_IS_6368()) { ++ val |= BIT(3) | BIT(4); ++ ++ val2 = bcm_gpio_readl(GPIO_CTL_LO_REG); ++ val2 |= BIT(3) | BIT(4); ++ bcm_gpio_writel(val2, GPIO_CTL_LO_REG); ++ } ++ bcm_gpio_writel(val, GPIO_MODE_REG); ++ } ++ + bcm63xx_gpio_init(); + + if (board.has_uart0) diff --git a/target/linux/brcm63xx/patches-4.1/805-BCM63XX-pinmux-serial-leds.patch b/target/linux/brcm63xx/patches-4.1/805-BCM63XX-pinmux-serial-leds.patch new file mode 100644 index 0000000..0af0ac9 --- /dev/null +++ b/target/linux/brcm63xx/patches-4.1/805-BCM63XX-pinmux-serial-leds.patch @@ -0,0 +1,49 @@ +diff -uprN a/arch/mips/bcm63xx/boards/board_common.c b/arch/mips/bcm63xx/boards/board_common.c +--- a/arch/mips/bcm63xx/boards/board_common.c 2015-03-16 16:07:28.171114109 +0100 ++++ b/arch/mips/bcm63xx/boards/board_common.c 2015-05-18 22:53:49.967864529 +0200 +@@ -222,6 +222,45 @@ int __init board_register_devices(void) + } + #endif + ++ /* Serial LEDs pinmux */ ++ if (board_of_device_present("leds0")) { ++ u32 val, val2; ++ ++ val = bcm_gpio_readl(GPIO_MODE_REG); ++ if (BCMCPU_IS_6318()) { ++ val |= BIT(6) | BIT(7); ++ ++ #define PINMUX_EPHY2_ACT_LED (1 << (6 << 1)) ++ #define PINMUX_EPHY3_ACT_LED (1 << (7 << 1)) ++ #define PINMUX_SERIAL_LED_DATA (3 << (6 << 1)) ++ #define PINMUX_SERIAL_LED_CLK (3 << (7 << 1)) ++ ++ val2 = bcm_gpio_readl(GPIO_PINMUX_SEL0_6318); ++ val2 &= ~(PINMUX_EPHY2_ACT_LED | PINMUX_EPHY3_ACT_LED); ++ val2 |= (PINMUX_SERIAL_LED_DATA | PINMUX_SERIAL_LED_CLK); ++ bcm_gpio_writel(val2, GPIO_PINMUX_SEL0_6318); ++ } else if (BCMCPU_IS_6328()) { ++ val |= BIT(6) | BIT(7); ++ } else if (BCMCPU_IS_63268()) { ++ val |= BIT(0) | BIT(1); ++ } else if (BCMCPU_IS_6358()) { ++ val |= BIT(10); ++ ++ val2 = bcm_gpio_readl(GPIO_CTL_LO_REG); ++ val2 |= BIT(6) | BIT(7); ++ bcm_gpio_writel(val2, GPIO_CTL_LO_REG); ++ } else if (BCMCPU_IS_6362()) { ++ val |= BIT(2) | BIT(3); ++ } else if (BCMCPU_IS_6368()) { ++ val |= BIT(3) | BIT(4); ++ ++ val2 = bcm_gpio_readl(GPIO_CTL_LO_REG); ++ val2 |= BIT(3) | BIT(4); ++ bcm_gpio_writel(val2, GPIO_CTL_LO_REG); ++ } ++ bcm_gpio_writel(val, GPIO_MODE_REG); ++ } ++ + bcm63xx_gpio_init(); + + if (board.has_uart0) -- 1.9.1 _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel