diff options
3 files changed, 103 insertions, 6 deletions
diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/leds b/target/linux/ar71xx/base-files/etc/uci-defaults/leds index 88538f84f..0fdab7b2a 100755 --- a/target/linux/ar71xx/base-files/etc/uci-defaults/leds +++ b/target/linux/ar71xx/base-files/etc/uci-defaults/leds @@ -60,6 +60,25 @@ EOF COMMIT_SYSTEM=1 } +set_led_switch() { + local cfg="led_$1" + local name=$2 + local sysfs=$3 + local trigger=$4 + local port_mask=$5 + + uci -q get system.$cfg && return 0 + + uci batch <<EOF +set system.$cfg='led' +set system.$cfg.name='$name' +set system.$cfg.sysfs='$sysfs' +set system.$cfg.trigger='$trigger' +set system.$cfg.port_mask='$port_mask' +EOF + COMMIT_SYSTEM=1 +} + set_led_default() { local cfg="led_$1" local name=$2 @@ -116,7 +135,22 @@ tl-mr3420 ) set_led_usbdev "usb" "USB" "tp-link:green:3g" "1-1" ;; -tl-wr741nd-v4 | \ +tl-wr741nd) + set_led_netdev "wan" "WAN" "tp-link:green:wan" "eth1" + set_led_switch "lan1" "LAN1" "tp-link:green:lan1" "switch0" "0x02" + set_led_switch "lan2" "LAN2" "tp-link:green:lan2" "switch0" "0x04" + set_led_switch "lan3" "LAN3" "tp-link:green:lan3" "switch0" "0x08" + set_led_switch "lan4" "LAN4" "tp-link:green:lan4" "switch0" "0x10" + ;; + +tl-wr741nd-v4) + set_led_netdev "wan" "WAN" "tp-link:green:wan" "eth1" + set_led_switch "lan1" "LAN1" "tp-link:green:lan1" "switch0" "0x04" + set_led_switch "lan2" "LAN2" "tp-link:green:lan2" "switch0" "0x08" + set_led_switch "lan3" "LAN3" "tp-link:green:lan3" "switch0" "0x10" + set_led_switch "lan4" "LAN4" "tp-link:green:lan4" "switch0" "0x02" + ;; + tl-wr941nd) set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt" ;; diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/mach-tl-wr741nd-v4.c b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-tl-wr741nd-v4.c index 47fbf85e7..8af72320c 100644 --- a/target/linux/ar71xx/files/arch/mips/ar71xx/mach-tl-wr741nd-v4.c +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-tl-wr741nd-v4.c @@ -24,6 +24,12 @@ #define TL_WR741NDV4_GPIO_LED_WLAN 0 #define TL_WR741NDV4_GPIO_LED_QSS 1 +#define TL_WR741NDV4_GPIO_LED_WAN 13 +#define TL_WR741NDV4_GPIO_LED_LAN1 14 +#define TL_WR741NDV4_GPIO_LED_LAN2 15 +#define TL_WR741NDV4_GPIO_LED_LAN3 16 +#define TL_WR741NDV4_GPIO_LED_LAN4 17 + #define TL_WR741NDV4_GPIO_LED_SYSTEM 27 #define TL_WR741NDV4_KEYS_POLL_INTERVAL 20 /* msecs */ @@ -40,14 +46,34 @@ static struct flash_platform_data tl_wr741ndv4_flash_data = { static struct gpio_led tl_wr741ndv4_leds_gpio[] __initdata = { { - .name = "tp-link:green:system", - .gpio = TL_WR741NDV4_GPIO_LED_SYSTEM, + .name = "tp-link:green:lan1", + .gpio = TL_WR741NDV4_GPIO_LED_LAN1, + .active_low = 0, + }, { + .name = "tp-link:green:lan2", + .gpio = TL_WR741NDV4_GPIO_LED_LAN2, + .active_low = 0, + }, { + .name = "tp-link:green:lan3", + .gpio = TL_WR741NDV4_GPIO_LED_LAN3, + .active_low = 0, + }, { + .name = "tp-link:green:lan4", + .gpio = TL_WR741NDV4_GPIO_LED_LAN4, .active_low = 1, }, { .name = "tp-link:green:qss", .gpio = TL_WR741NDV4_GPIO_LED_QSS, .active_low = 0, }, { + .name = "tp-link:green:system", + .gpio = TL_WR741NDV4_GPIO_LED_SYSTEM, + .active_low = 1, + }, { + .name = "tp-link:green:wan", + .gpio = TL_WR741NDV4_GPIO_LED_WAN, + .active_low = 0, + }, { .name = "tp-link:green:wlan", .gpio = TL_WR741NDV4_GPIO_LED_WLAN, .active_low = 0, @@ -93,6 +119,12 @@ static void __init tl_wr741ndv4_setup(void) tl_wr741ndv4_gmac_setup(); + ar71xx_gpio_function_disable(AR933X_GPIO_FUNC_ETH_SWITCH_LED0_EN | + AR933X_GPIO_FUNC_ETH_SWITCH_LED1_EN | + AR933X_GPIO_FUNC_ETH_SWITCH_LED2_EN | + AR933X_GPIO_FUNC_ETH_SWITCH_LED3_EN | + AR933X_GPIO_FUNC_ETH_SWITCH_LED4_EN); + ar71xx_add_device_leds_gpio(-1, ARRAY_SIZE(tl_wr741ndv4_leds_gpio), tl_wr741ndv4_leds_gpio); diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/mach-tl-wr741nd.c b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-tl-wr741nd.c index b29c7aa9d..f877e9882 100644 --- a/target/linux/ar71xx/files/arch/mips/ar71xx/mach-tl-wr741nd.c +++ b/target/linux/ar71xx/files/arch/mips/ar71xx/mach-tl-wr741nd.c @@ -19,6 +19,11 @@ #define TL_WR741ND_GPIO_LED_QSS 0 #define TL_WR741ND_GPIO_LED_SYSTEM 1 +#define TL_WR741ND_GPIO_LED_LAN1 13 +#define TL_WR741ND_GPIO_LED_LAN2 14 +#define TL_WR741ND_GPIO_LED_LAN3 15 +#define TL_WR741ND_GPIO_LED_LAN4 16 +#define TL_WR741ND_GPIO_LED_WAN 17 #define TL_WR741ND_GPIO_BTN_RESET 11 #define TL_WR741ND_GPIO_BTN_QSS 12 @@ -37,14 +42,34 @@ static struct flash_platform_data tl_wr741nd_flash_data = { static struct gpio_led tl_wr741nd_leds_gpio[] __initdata = { { - .name = "tp-link:green:system", - .gpio = TL_WR741ND_GPIO_LED_SYSTEM, + .name = "tp-link:green:lan1", + .gpio = TL_WR741ND_GPIO_LED_LAN1, + .active_low = 1, + }, { + .name = "tp-link:green:lan2", + .gpio = TL_WR741ND_GPIO_LED_LAN2, + .active_low = 1, + }, { + .name = "tp-link:green:lan3", + .gpio = TL_WR741ND_GPIO_LED_LAN3, + .active_low = 1, + }, { + .name = "tp-link:green:lan4", + .gpio = TL_WR741ND_GPIO_LED_LAN4, .active_low = 1, }, { .name = "tp-link:green:qss", .gpio = TL_WR741ND_GPIO_LED_QSS, .active_low = 1, - } + }, { + .name = "tp-link:green:system", + .gpio = TL_WR741ND_GPIO_LED_SYSTEM, + .active_low = 1, + }, { + .name = "tp-link:green:wan", + .gpio = TL_WR741ND_GPIO_LED_WAN, + .active_low = 1, + }, }; static struct gpio_keys_button tl_wr741nd_gpio_keys[] __initdata = { @@ -72,6 +97,12 @@ static void __init tl_wr741nd_setup(void) ar71xx_add_device_m25p80(&tl_wr741nd_flash_data); + ar71xx_gpio_function_disable(AR724X_GPIO_FUNC_ETH_SWITCH_LED0_EN | + AR724X_GPIO_FUNC_ETH_SWITCH_LED1_EN | + AR724X_GPIO_FUNC_ETH_SWITCH_LED2_EN | + AR724X_GPIO_FUNC_ETH_SWITCH_LED3_EN | + AR724X_GPIO_FUNC_ETH_SWITCH_LED4_EN); + ar71xx_add_device_leds_gpio(-1, ARRAY_SIZE(tl_wr741nd_leds_gpio), tl_wr741nd_leds_gpio); |