mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-30 02:29:01 +00:00
5deb3996e2
Copy and refresh patches and config from 5.4 to 5.10. Most patches require no more then automatic refresh. The only exception is the Ethernet driver patch, which requires some more work: * drop eth_change_mtu() usage since it was removed from the kernel, it anyway useless for drivers that utilizes alloc_etherdev(); * add the txqueue number argument to the .ndo_tx_timeout callback function; * replace ioremap_nocache() which was finally removed from the kernel by the ioremap() with the same behaviour. Switch target to the new kernel version. Signed-off-by: Daniel Golle <daniel@makrotopia.org> [use KERNEL_TESTING_PATCHVER for now] Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>
117 lines
3.0 KiB
Diff
117 lines
3.0 KiB
Diff
--- a/arch/mips/ath25/ar2315.c
|
|
+++ b/arch/mips/ath25/ar2315.c
|
|
@@ -24,6 +24,7 @@
|
|
#include <linux/reboot.h>
|
|
#include <linux/delay.h>
|
|
#include <linux/gpio.h>
|
|
+#include <linux/leds.h>
|
|
#include <asm/bootinfo.h>
|
|
#include <asm/reboot.h>
|
|
#include <asm/time.h>
|
|
@@ -258,6 +259,50 @@ static struct platform_device ar2315_spi
|
|
.num_resources = ARRAY_SIZE(ar2315_spiflash_res)
|
|
};
|
|
|
|
+#ifdef CONFIG_LEDS_GPIO
|
|
+static struct gpio_led ar2315_leds[6];
|
|
+static struct gpio_led_platform_data ar2315_led_data = {
|
|
+ .leds = (void *)ar2315_leds,
|
|
+};
|
|
+
|
|
+static struct platform_device ar2315_gpio_leds = {
|
|
+ .name = "leds-gpio",
|
|
+ .id = -1,
|
|
+ .dev = {
|
|
+ .platform_data = (void *)&ar2315_led_data,
|
|
+ }
|
|
+};
|
|
+
|
|
+static void __init ar2315_init_gpio_leds(void)
|
|
+{
|
|
+ static char led_names[6][6];
|
|
+ int i, led = 0;
|
|
+
|
|
+ ar2315_led_data.num_leds = 0;
|
|
+ for (i = 1; i < 8; i++) {
|
|
+ if ((i == AR2315_RESET_GPIO) ||
|
|
+ (i == ath25_board.config->reset_config_gpio))
|
|
+ continue;
|
|
+
|
|
+ if (i == ath25_board.config->sys_led_gpio)
|
|
+ strcpy(led_names[led], "wlan");
|
|
+ else
|
|
+ sprintf(led_names[led], "gpio%d", i);
|
|
+
|
|
+ ar2315_leds[led].name = led_names[led];
|
|
+ ar2315_leds[led].gpio = i;
|
|
+ ar2315_leds[led].active_low = 0;
|
|
+ led++;
|
|
+ }
|
|
+ ar2315_led_data.num_leds = led;
|
|
+ platform_device_register(&ar2315_gpio_leds);
|
|
+}
|
|
+#else
|
|
+static inline void ar2315_init_gpio_leds(void)
|
|
+{
|
|
+}
|
|
+#endif
|
|
+
|
|
void __init ar2315_init_devices(void)
|
|
{
|
|
/* Find board configuration */
|
|
@@ -268,6 +313,8 @@ void __init ar2315_init_devices(void)
|
|
ar2315_gpio_res[1].end = ar2315_gpio_res[1].start;
|
|
platform_device_register(&ar2315_gpio);
|
|
|
|
+ ar2315_init_gpio_leds();
|
|
+
|
|
ar2315_wdt_res[1].start = irq_create_mapping(ar2315_misc_irq_domain,
|
|
AR2315_MISC_IRQ_WATCHDOG);
|
|
ar2315_wdt_res[1].end = ar2315_wdt_res[1].start;
|
|
--- a/arch/mips/ath25/ar5312.c
|
|
+++ b/arch/mips/ath25/ar5312.c
|
|
@@ -24,6 +24,7 @@
|
|
#include <linux/mtd/physmap.h>
|
|
#include <linux/reboot.h>
|
|
#include <linux/gpio.h>
|
|
+#include <linux/leds.h>
|
|
#include <asm/bootinfo.h>
|
|
#include <asm/reboot.h>
|
|
#include <asm/time.h>
|
|
@@ -229,6 +230,23 @@ static struct platform_device ar5312_gpi
|
|
.num_resources = ARRAY_SIZE(ar5312_gpio_res),
|
|
};
|
|
|
|
+#ifdef CONFIG_LEDS_GPIO
|
|
+static struct gpio_led ar5312_leds[] = {
|
|
+ { .name = "wlan", .gpio = 0, .active_low = 1, },
|
|
+};
|
|
+
|
|
+static const struct gpio_led_platform_data ar5312_led_data = {
|
|
+ .num_leds = ARRAY_SIZE(ar5312_leds),
|
|
+ .leds = (void *)ar5312_leds,
|
|
+};
|
|
+
|
|
+static struct platform_device ar5312_gpio_leds = {
|
|
+ .name = "leds-gpio",
|
|
+ .id = -1,
|
|
+ .dev.platform_data = (void *)&ar5312_led_data,
|
|
+};
|
|
+#endif
|
|
+
|
|
static void __init ar5312_flash_init(void)
|
|
{
|
|
void __iomem *flashctl_base;
|
|
@@ -299,6 +317,11 @@ void __init ar5312_init_devices(void)
|
|
|
|
platform_device_register(&ar5312_gpio);
|
|
|
|
+#ifdef CONFIG_LEDS_GPIO
|
|
+ ar5312_leds[0].gpio = config->sys_led_gpio;
|
|
+ platform_device_register(&ar5312_gpio_leds);
|
|
+#endif
|
|
+
|
|
/* Fix up MAC addresses if necessary */
|
|
if (is_broadcast_ether_addr(config->enet0_mac))
|
|
ether_addr_copy(config->enet0_mac, config->enet1_mac);
|