Changeset 44729


Ignore:
Timestamp:
2015-03-13T04:01:42+01:00 (3 years ago)
Author:
nbd
Message:

atheros: v3.18: rearrange code between patches

Cleanup board patch by moving code to specific patches, and factor out
leds to separate patch. No functional changes.

Signed-off-by: Sergey Ryazanov <ryazanov.s.a@…>

Location:
trunk/target/linux/atheros/patches-3.18
Files:
1 added
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/atheros/patches-3.18/100-board.patch

    r44727 r44729  
    11--- a/arch/mips/Kconfig 
    22+++ b/arch/mips/Kconfig 
    3 @@ -96,6 +96,20 @@ config AR7 
     3@@ -96,6 +96,19 @@ config AR7 
    44          Support for the Texas Instruments AR7 System-on-a-Chip 
    55          family: TNETD7100, 7200 and 7300. 
     
    1515+       select SYS_SUPPORTS_BIG_ENDIAN 
    1616+       select SYS_SUPPORTS_32BIT_KERNEL 
    17 +       select ARCH_REQUIRE_GPIOLIB 
    1817+       help 
    1918+         Support for AR231x and AR531x based boards 
     
    2221        bool "Atheros AR71XX/AR724X/AR913X based boards" 
    2322        select ARCH_REQUIRE_GPIOLIB 
    24 @@ -834,6 +848,7 @@ config MIPS_PARAVIRT 
     23@@ -834,6 +847,7 @@ config MIPS_PARAVIRT 
    2524  
    2625 endchoice 
     
    355354--- /dev/null 
    356355+++ b/arch/mips/include/asm/mach-ath25/ath25_platform.h 
    357 @@ -0,0 +1,84 @@ 
     356@@ -0,0 +1,73 @@ 
    358357+#ifndef __ASM_MACH_ATH25_PLATFORM_H 
    359358+#define __ASM_MACH_ATH25_PLATFORM_H 
     
    428427+}; 
    429428+ 
    430 +/* 
    431 + * Platform device information for the Ethernet MAC 
    432 + */ 
    433 +struct ar231x_eth { 
    434 +       void (*reset_set)(u32); 
    435 +       void (*reset_clear)(u32); 
    436 +       u32 reset_mac; 
    437 +       u32 reset_phy; 
    438 +       char *macaddr; 
    439 +}; 
    440 + 
    441429+#endif /* __ASM_MACH_ATH25_PLATFORM_H */ 
    442430--- /dev/null 
     
    641629--- /dev/null 
    642630+++ b/arch/mips/ath25/ar2315_regs.h 
    643 @@ -0,0 +1,479 @@ 
     631@@ -0,0 +1,471 @@ 
    644632+/* 
    645633+ * Register definitions for AR2315+ 
     
    700688+#define AR2315_PCI_EXT_BASE    0x80000000      /* PCI external */ 
    701689+#define AR2315_PCI_EXT_SIZE    0x40000000 
    702 + 
    703 +/* MII registers offset inside Ethernet MMR region */ 
    704 +#define AR2315_ENET0_MII_BASE  (AR2315_ENET0_BASE + 0x14) 
    705690+ 
    706691+/* 
     
    968953+#define AR2315_AMBACLK_CLK_DIV_M       0x0000000c 
    969954+#define AR2315_AMBACLK_CLK_DIV_S       2 
    970 + 
    971 +/* GPIO MMR base address */ 
    972 +#define AR2315_GPIO                    0x0088 
    973 + 
    974 +#define AR2315_RESET_GPIO       5 
    975955+ 
    976956+/* 
     
    11231103--- /dev/null 
    11241104+++ b/arch/mips/ath25/ar5312_regs.h 
    1125 @@ -0,0 +1,229 @@ 
     1105@@ -0,0 +1,225 @@ 
    11261106+/* 
    11271107+ * This file is subject to the terms and conditions of the GNU General Public 
     
    11911171+#define AR5312_AR5312_REV7      0x0057          /* AR5312 WMAC (AP30-040) */ 
    11921172+#define AR5312_AR2313_REV8      0x0058          /* AR2313 WMAC (AP43-030) */ 
    1193 + 
    1194 +/* MII registers offset inside Ethernet MMR region */ 
    1195 +#define AR5312_ENET0_MII_BASE  (AR5312_ENET0_BASE + 0x14) 
    1196 +#define AR5312_ENET1_MII_BASE  (AR5312_ENET1_BASE + 0x14) 
    11971173+ 
    11981174+/* Reset/Timer Block Address Map */ 
     
    13551331--- /dev/null 
    13561332+++ b/arch/mips/ath25/ar5312.c 
    1357 @@ -0,0 +1,492 @@ 
     1333@@ -0,0 +1,401 @@ 
    13581334+/* 
    13591335+ * This file is subject to the terms and conditions of the GNU General Public 
     
    13831359+#include <linux/irqdomain.h> 
    13841360+#include <linux/reboot.h> 
    1385 +#include <linux/leds.h> 
    1386 +#include <linux/gpio.h> 
    13871361+#include <asm/bootinfo.h> 
    13881362+#include <asm/reboot.h> 
     
    14961470+       if (pending & CAUSEF_IP2) 
    14971471+               do_IRQ(AR5312_IRQ_WLAN0); 
    1498 +       else if (pending & CAUSEF_IP3) 
    1499 +               do_IRQ(AR5312_IRQ_ENET0); 
    1500 +       else if (pending & CAUSEF_IP4) 
    1501 +               do_IRQ(AR5312_IRQ_ENET1); 
    15021472+       else if (pending & CAUSEF_IP5) 
    15031473+               do_IRQ(AR5312_IRQ_WLAN1); 
     
    15311501+} 
    15321502+ 
    1533 +static void ar5312_device_reset_set(u32 mask) 
    1534 +{ 
    1535 +       u32 val; 
    1536 + 
    1537 +       val = ar5312_rst_reg_read(AR5312_RESET); 
    1538 +       ar5312_rst_reg_write(AR5312_RESET, val | mask); 
    1539 +} 
    1540 + 
    1541 +static void ar5312_device_reset_clear(u32 mask) 
    1542 +{ 
    1543 +       u32 val; 
    1544 + 
    1545 +       val = ar5312_rst_reg_read(AR5312_RESET); 
    1546 +       ar5312_rst_reg_write(AR5312_RESET, val & ~mask); 
    1547 +} 
    1548 + 
    15491503+static struct physmap_flash_data ar5312_flash_data = { 
    15501504+       .width = 2, 
     
    15551509+       .end = AR5312_FLASH_BASE + AR5312_FLASH_SIZE - 1, 
    15561510+       .flags = IORESOURCE_MEM, 
    1557 +}; 
    1558 + 
    1559 +static struct ar231x_eth ar5312_eth0_data = { 
    1560 +       .reset_set = ar5312_device_reset_set, 
    1561 +       .reset_clear = ar5312_device_reset_clear, 
    1562 +       .reset_mac = AR5312_RESET_ENET0, 
    1563 +       .reset_phy = AR5312_RESET_EPHY0, 
    1564 +}; 
    1565 + 
    1566 +static struct ar231x_eth ar5312_eth1_data = { 
    1567 +       .reset_set = ar5312_device_reset_set, 
    1568 +       .reset_clear = ar5312_device_reset_clear, 
    1569 +       .reset_mac = AR5312_RESET_ENET1, 
    1570 +       .reset_phy = AR5312_RESET_EPHY1, 
    15711511+}; 
    15721512+ 
     
    15781518+       .num_resources = 1, 
    15791519+}; 
    1580 + 
    1581 +#ifdef CONFIG_LEDS_GPIO 
    1582 +static struct gpio_led ar5312_leds[] = { 
    1583 +       { .name = "wlan", .gpio = 0, .active_low = 1, }, 
    1584 +}; 
    1585 + 
    1586 +static const struct gpio_led_platform_data ar5312_led_data = { 
    1587 +       .num_leds = ARRAY_SIZE(ar5312_leds), 
    1588 +       .leds = (void *)ar5312_leds, 
    1589 +}; 
    1590 + 
    1591 +static struct platform_device ar5312_gpio_leds = { 
    1592 +       .name = "leds-gpio", 
    1593 +       .id = -1, 
    1594 +       .dev.platform_data = (void *)&ar5312_led_data, 
    1595 +}; 
    1596 +#endif 
    15971520+ 
    15981521+static void __init ar5312_flash_init(void) 
     
    16421565+{ 
    16431566+       struct ath25_boarddata *config; 
    1644 +       u8 *c; 
    16451567+ 
    16461568+       ar5312_flash_init(); 
     
    16641586+       platform_device_register(&ar5312_physmap_flash); 
    16651587+ 
    1666 +#ifdef CONFIG_LEDS_GPIO 
    1667 +       ar5312_leds[0].gpio = config->sys_led_gpio; 
    1668 +       platform_device_register(&ar5312_gpio_leds); 
    1669 +#endif 
    1670 + 
    1671 +       /* Fix up MAC addresses if necessary */ 
    1672 +       if (is_broadcast_ether_addr(config->enet0_mac)) 
    1673 +               ether_addr_copy(config->enet0_mac, config->enet1_mac); 
    1674 + 
    1675 +       /* If ENET0 and ENET1 have the same mac address, 
    1676 +        * increment the one from ENET1 */ 
    1677 +       if (ether_addr_equal(config->enet0_mac, config->enet1_mac)) { 
    1678 +               c = config->enet1_mac + 5; 
    1679 +               while ((c >= config->enet1_mac) && !(++(*c))) 
    1680 +                       c--; 
    1681 +       } 
    1682 + 
    16831588+       switch (ath25_soc) { 
    16841589+       case ATH25_SOC_AR5312: 
    1685 +               ar5312_eth0_data.macaddr = config->enet0_mac; 
    1686 +               ath25_add_ethernet(0, AR5312_ENET0_BASE, "eth0_mii", 
    1687 +                                  AR5312_ENET0_MII_BASE, AR5312_IRQ_ENET0, 
    1688 +                                  &ar5312_eth0_data); 
    1689 + 
    1690 +               ar5312_eth1_data.macaddr = config->enet1_mac; 
    1691 +               ath25_add_ethernet(1, AR5312_ENET1_BASE, "eth1_mii", 
    1692 +                                  AR5312_ENET1_MII_BASE, AR5312_IRQ_ENET1, 
    1693 +                                  &ar5312_eth1_data); 
    1694 + 
    16951590+               if (!ath25_board.radio) 
    16961591+                       return; 
     
    17011596+               ath25_add_wmac(0, AR5312_WLAN0_BASE, AR5312_IRQ_WLAN0); 
    17021597+               break; 
    1703 +       /* 
    1704 +        * AR2312/3 ethernet uses the PHY of ENET0, but the MAC 
    1705 +        * of ENET1. Atheros calls it 'twisted' for a reason :) 
    1706 +        */ 
    17071598+       case ATH25_SOC_AR2312: 
    17081599+       case ATH25_SOC_AR2313: 
    1709 +               ar5312_eth1_data.reset_phy = ar5312_eth0_data.reset_phy; 
    1710 +               ar5312_eth1_data.macaddr = config->enet0_mac; 
    1711 +               ath25_add_ethernet(1, AR5312_ENET1_BASE, "eth0_mii", 
    1712 +                                  AR5312_ENET0_MII_BASE, AR5312_IRQ_ENET1, 
    1713 +                                  &ar5312_eth1_data); 
    1714 + 
    17151600+               if (!ath25_board.radio) 
    17161601+                       return; 
     
    18501735--- /dev/null 
    18511736+++ b/arch/mips/ath25/ar2315.c 
    1852 @@ -0,0 +1,438 @@ 
     1737@@ -0,0 +1,312 @@ 
    18531738+/* 
    18541739+ * This file is subject to the terms and conditions of the GNU General Public 
     
    18771762+#include <linux/irqdomain.h> 
    18781763+#include <linux/reboot.h> 
    1879 +#include <linux/delay.h> 
    1880 +#include <linux/leds.h> 
    1881 +#include <linux/gpio.h> 
    18821764+#include <asm/bootinfo.h> 
    18831765+#include <asm/reboot.h> 
     
    19951877+       if (pending & CAUSEF_IP3) 
    19961878+               do_IRQ(AR2315_IRQ_WLAN0); 
    1997 +       else if (pending & CAUSEF_IP4) 
    1998 +               do_IRQ(AR2315_IRQ_ENET0); 
    19991879+       else if (pending & CAUSEF_IP2) 
    20001880+               do_IRQ(AR2315_IRQ_MISC); 
     
    20261906+} 
    20271907+ 
    2028 +static void ar2315_device_reset_set(u32 mask) 
    2029 +{ 
    2030 +       u32 val; 
    2031 + 
    2032 +       val = ar2315_rst_reg_read(AR2315_RESET); 
    2033 +       ar2315_rst_reg_write(AR2315_RESET, val | mask); 
    2034 +} 
    2035 + 
    2036 +static void ar2315_device_reset_clear(u32 mask) 
    2037 +{ 
    2038 +       u32 val; 
    2039 + 
    2040 +       val = ar2315_rst_reg_read(AR2315_RESET); 
    2041 +       ar2315_rst_reg_write(AR2315_RESET, val & ~mask); 
    2042 +} 
    2043 + 
    2044 +static struct ar231x_eth ar2315_eth_data = { 
    2045 +       .reset_set = ar2315_device_reset_set, 
    2046 +       .reset_clear = ar2315_device_reset_clear, 
    2047 +       .reset_mac = AR2315_RESET_ENET0, 
    2048 +       .reset_phy = AR2315_RESET_EPHY0, 
    2049 +}; 
    2050 + 
    2051 +static struct resource ar2315_spiflash_res[] = { 
    2052 +       { 
    2053 +               .name = "spiflash_read", 
    2054 +               .flags = IORESOURCE_MEM, 
    2055 +               .start = AR2315_SPI_READ_BASE, 
    2056 +               .end = AR2315_SPI_READ_BASE + AR2315_SPI_READ_SIZE - 1, 
    2057 +       }, 
    2058 +       { 
    2059 +               .name = "spiflash_mmr", 
    2060 +               .flags = IORESOURCE_MEM, 
    2061 +               .start = AR2315_SPI_MMR_BASE, 
    2062 +               .end = AR2315_SPI_MMR_BASE + AR2315_SPI_MMR_SIZE - 1, 
    2063 +       }, 
    2064 +}; 
    2065 + 
    2066 +static struct platform_device ar2315_spiflash = { 
    2067 +       .id = 0, 
    2068 +       .name = "ar2315-spiflash", 
    2069 +       .resource = ar2315_spiflash_res, 
    2070 +       .num_resources = ARRAY_SIZE(ar2315_spiflash_res) 
    2071 +}; 
    2072 + 
    2073 +static struct resource ar2315_wdt_res[] = { 
    2074 +       { 
    2075 +               .flags = IORESOURCE_MEM, 
    2076 +               .start = AR2315_RST_BASE + AR2315_WDT_TIMER, 
    2077 +               .end = AR2315_RST_BASE + AR2315_WDT_TIMER + 8 - 1, 
    2078 +       }, 
    2079 +       { 
    2080 +               .flags = IORESOURCE_IRQ, 
    2081 +       } 
    2082 +}; 
    2083 + 
    2084 +static struct platform_device ar2315_wdt = { 
    2085 +       .id = 0, 
    2086 +       .name = "ar2315-wdt", 
    2087 +       .resource = ar2315_wdt_res, 
    2088 +       .num_resources = ARRAY_SIZE(ar2315_wdt_res) 
    2089 +}; 
    2090 + 
    2091 +#ifdef CONFIG_LEDS_GPIO 
    2092 +static struct gpio_led ar2315_leds[6]; 
    2093 +static struct gpio_led_platform_data ar2315_led_data = { 
    2094 +       .leds = (void *)ar2315_leds, 
    2095 +}; 
    2096 + 
    2097 +static struct platform_device ar2315_gpio_leds = { 
    2098 +       .name = "leds-gpio", 
    2099 +       .id = -1, 
    2100 +       .dev = { 
    2101 +               .platform_data = (void *)&ar2315_led_data, 
    2102 +       } 
    2103 +}; 
    2104 + 
    2105 +static void __init ar2315_init_gpio_leds(void) 
    2106 +{ 
    2107 +       static char led_names[6][6]; 
    2108 +       int i, led = 0; 
    2109 + 
    2110 +       ar2315_led_data.num_leds = 0; 
    2111 +       for (i = 1; i < 8; i++) { 
    2112 +               if ((i == AR2315_RESET_GPIO) || 
    2113 +                   (i == ath25_board.config->reset_config_gpio)) 
    2114 +                       continue; 
    2115 + 
    2116 +               if (i == ath25_board.config->sys_led_gpio) 
    2117 +                       strcpy(led_names[led], "wlan"); 
    2118 +               else 
    2119 +                       sprintf(led_names[led], "gpio%d", i); 
    2120 + 
    2121 +               ar2315_leds[led].name = led_names[led]; 
    2122 +               ar2315_leds[led].gpio = i; 
    2123 +               ar2315_leds[led].active_low = 0; 
    2124 +               led++; 
    2125 +       } 
    2126 +       ar2315_led_data.num_leds = led; 
    2127 +       platform_device_register(&ar2315_gpio_leds); 
    2128 +} 
    2129 +#else 
    2130 +static inline void ar2315_init_gpio_leds(void) 
    2131 +{ 
    2132 +} 
    2133 +#endif 
    2134 + 
    21351908+void __init ar2315_init_devices(void) 
    21361909+{ 
    21371910+       /* Find board configuration */ 
    21381911+       ath25_find_config(AR2315_SPI_READ_BASE, AR2315_SPI_READ_SIZE); 
    2139 +       ar2315_eth_data.macaddr = ath25_board.config->enet0_mac; 
    2140 + 
    2141 +       ar2315_init_gpio_leds(); 
    2142 + 
    2143 +       ar2315_wdt_res[1].start = irq_create_mapping(ar2315_misc_irq_domain, 
    2144 +                                                    AR2315_MISC_IRQ_WATCHDOG); 
    2145 +       ar2315_wdt_res[1].end = ar2315_wdt_res[1].start; 
    2146 +       platform_device_register(&ar2315_wdt); 
    2147 + 
    2148 +       platform_device_register(&ar2315_spiflash); 
    2149 + 
    2150 +       ath25_add_ethernet(0, AR2315_ENET0_BASE, "eth0_mii", 
    2151 +                          AR2315_ENET0_MII_BASE, AR2315_IRQ_ENET0, 
    2152 +                          &ar2315_eth_data); 
    21531912+ 
    21541913+       ath25_add_wmac(0, AR2315_WLAN0_BASE, AR2315_IRQ_WLAN0); 
     
    21671926+        * a workaround. Give it some time to attempt a gpio based hardware 
    21681927+        * reset (atheros reference design workaround) */ 
    2169 +       gpio_request_one(AR2315_RESET_GPIO, GPIOF_OUT_INIT_LOW, "Reset"); 
    2170 +       mdelay(100); 
     1928+ 
     1929+       /* TODO: implement the GPIO reset workaround */ 
    21711930+ 
    21721931+       /* Some boards (e.g. Senao EOC-2610) don't implement the reset logic 
     
    23692128--- /dev/null 
    23702129+++ b/arch/mips/ath25/devices.h 
    2371 @@ -0,0 +1,45 @@ 
     2130@@ -0,0 +1,41 @@ 
    23722131+#ifndef __ATH25_DEVICES_H 
    23732132+#define __ATH25_DEVICES_H 
    2374 + 
    2375 +#define AR231X_GPIO_IRQ_BASE           0x30 
    23762133+ 
    23772134+#define ATH25_REG_MS(_val, _field)     (((_val) & _field##_M) >> _field##_S) 
     
    23992156+ 
    24002157+int ath25_find_config(phys_addr_t offset, unsigned long size); 
    2401 +int ath25_add_ethernet(int nr, u32 base, const char *mii_name, u32 mii_base, 
    2402 +                      int irq, void *pdata); 
    24032158+void ath25_serial_setup(u32 mapbase, int irq, unsigned int uartclk); 
    24042159+int ath25_add_wmac(int nr, u32 base, int irq); 
     
    24172172--- /dev/null 
    24182173+++ b/arch/mips/ath25/devices.c 
    2419 @@ -0,0 +1,191 @@ 
     2174@@ -0,0 +1,127 @@ 
    24202175+#include <linux/kernel.h> 
    24212176+#include <linux/init.h> 
     
    24332188+struct ar231x_board_config ath25_board; 
    24342189+enum ath25_soc_type ath25_soc = ATH25_SOC_UNKNOWN; 
    2435 + 
    2436 +static struct resource ath25_eth0_res[] = { 
    2437 +       { 
    2438 +               .name = "eth0_membase", 
    2439 +               .flags = IORESOURCE_MEM, 
    2440 +       }, 
    2441 +       { 
    2442 +               .name = "eth0_mii", 
    2443 +               .flags = IORESOURCE_MEM, 
    2444 +       }, 
    2445 +       { 
    2446 +               .name = "eth0_irq", 
    2447 +               .flags = IORESOURCE_IRQ, 
    2448 +       } 
    2449 +}; 
    2450 + 
    2451 +static struct resource ath25_eth1_res[] = { 
    2452 +       { 
    2453 +               .name = "eth1_membase", 
    2454 +               .flags = IORESOURCE_MEM, 
    2455 +       }, 
    2456 +       { 
    2457 +               .name = "eth1_mii", 
    2458 +               .flags = IORESOURCE_MEM, 
    2459 +       }, 
    2460 +       { 
    2461 +               .name = "eth1_irq", 
    2462 +               .flags = IORESOURCE_IRQ, 
    2463 +       } 
    2464 +}; 
    2465 + 
    2466 +static struct platform_device ath25_eth[] = { 
    2467 +       { 
    2468 +               .id = 0, 
    2469 +               .name = "ar231x-eth", 
    2470 +               .resource = ath25_eth0_res, 
    2471 +               .num_resources = ARRAY_SIZE(ath25_eth0_res) 
    2472 +       }, 
    2473 +       { 
    2474 +               .id = 1, 
    2475 +               .name = "ar231x-eth", 
    2476 +               .resource = ath25_eth1_res, 
    2477 +               .num_resources = ARRAY_SIZE(ath25_eth1_res) 
    2478 +       } 
    2479 +}; 
    24802190+ 
    24812191+static struct resource ath25_wmac0_res[] = { 
     
    25372247+} 
    25382248+ 
    2539 +int __init ath25_add_ethernet(int nr, u32 base, const char *mii_name, 
    2540 +                             u32 mii_base, int irq, void *pdata) 
    2541 +{ 
    2542 +       struct resource *res; 
    2543 + 
    2544 +       ath25_eth[nr].dev.platform_data = pdata; 
    2545 +       res = &ath25_eth[nr].resource[0]; 
    2546 +       res->start = base; 
    2547 +       res->end = base + 0x2000 - 1; 
    2548 +       res++; 
    2549 +       res->name = mii_name; 
    2550 +       res->start = mii_base; 
    2551 +       res->end = mii_base + 8 - 1; 
    2552 +       res++; 
    2553 +       res->start = irq; 
    2554 +       res->end = irq; 
    2555 +       return platform_device_register(&ath25_eth[nr]); 
    2556 +} 
    2557 + 
    25582249+void __init ath25_serial_setup(u32 mapbase, int irq, unsigned int uartclk) 
    25592250+{ 
  • trunk/target/linux/atheros/patches-3.18/101-early-printk-support.patch

    r44727 r44729  
    6161--- a/arch/mips/Kconfig 
    6262+++ b/arch/mips/Kconfig 
    63 @@ -107,6 +107,7 @@ config ATH25 
     63@@ -106,6 +106,7 @@ config ATH25 
     64        select SYS_HAS_CPU_MIPS32_R1 
    6465        select SYS_SUPPORTS_BIG_ENDIAN 
    6566        select SYS_SUPPORTS_32BIT_KERNEL 
    66         select ARCH_REQUIRE_GPIOLIB 
    6767+       select SYS_HAS_EARLY_PRINTK 
    6868        help 
  • trunk/target/linux/atheros/patches-3.18/105-ar2315_pci.patch

    r44728 r44729  
    538538--- a/arch/mips/ath25/ar2315.c 
    539539+++ b/arch/mips/ath25/ar2315.c 
    540 @@ -144,6 +144,10 @@ static void ar2315_irq_dispatch(void) 
     540@@ -139,6 +139,10 @@ static void ar2315_irq_dispatch(void) 
     541  
     542        if (pending & CAUSEF_IP3) 
    541543                do_IRQ(AR2315_IRQ_WLAN0); 
    542         else if (pending & CAUSEF_IP4) 
    543                 do_IRQ(AR2315_IRQ_ENET0); 
    544544+#ifdef CONFIG_PCI_AR2315 
    545545+       else if (pending & CAUSEF_IP5) 
     
    549549                do_IRQ(AR2315_IRQ_MISC); 
    550550        else if (pending & CAUSEF_IP7) 
    551 @@ -429,10 +433,62 @@ void __init ar2315_plat_mem_setup(void) 
     551@@ -303,10 +307,62 @@ void __init ar2315_plat_mem_setup(void) 
    552552        _machine_restart = ar2315_restart; 
    553553 } 
  • trunk/target/linux/atheros/patches-3.18/107-ar5312_gpio.patch

    r44728 r44729  
    1111--- a/arch/mips/ath25/ar5312.c 
    1212+++ b/arch/mips/ath25/ar5312.c 
    13 @@ -221,6 +221,22 @@ static struct platform_device ar5312_phy 
     13@@ -25,6 +25,7 @@ 
     14 #include <linux/bitops.h> 
     15 #include <linux/irqdomain.h> 
     16 #include <linux/reboot.h> 
     17+#include <linux/gpio.h> 
     18 #include <asm/bootinfo.h> 
     19 #include <asm/reboot.h> 
     20 #include <asm/time.h> 
     21@@ -185,6 +186,22 @@ static struct platform_device ar5312_phy 
    1422        .num_resources = 1, 
    1523 }; 
     
    3139+}; 
    3240+ 
    33  #ifdef CONFIG_LEDS_GPIO 
    34  static struct gpio_led ar5312_leds[] = { 
    35         { .name = "wlan", .gpio = 0, .active_low = 1, }, 
    36 @@ -306,6 +322,8 @@ void __init ar5312_init_devices(void) 
     41 static void __init ar5312_flash_init(void) 
     42 { 
     43        void __iomem *flashctl_base; 
     44@@ -252,6 +269,8 @@ void __init ar5312_init_devices(void) 
    3745  
    3846        platform_device_register(&ar5312_physmap_flash); 
     
    4048+       platform_device_register(&ar5312_gpio); 
    4149+ 
    42  #ifdef CONFIG_LEDS_GPIO 
    43         ar5312_leds[0].gpio = config->sys_led_gpio; 
    44         platform_device_register(&ar5312_gpio_leds); 
     50        switch (ath25_soc) { 
     51        case ATH25_SOC_AR5312: 
     52                if (!ath25_board.radio) 
    4553--- a/drivers/gpio/Kconfig 
    4654+++ b/drivers/gpio/Kconfig 
     
    193201+} 
    194202+subsys_initcall(ar5312_gpio_init); 
     203--- a/arch/mips/Kconfig 
     204+++ b/arch/mips/Kconfig 
     205@@ -107,6 +107,7 @@ config ATH25 
     206        select SYS_SUPPORTS_BIG_ENDIAN 
     207        select SYS_SUPPORTS_32BIT_KERNEL 
     208        select SYS_HAS_EARLY_PRINTK 
     209+       select ARCH_REQUIRE_GPIOLIB 
     210        help 
     211          Support for AR231x and AR531x based boards 
     212  
  • trunk/target/linux/atheros/patches-3.18/108-ar2315_gpio.patch

    r44728 r44729  
    1111--- a/arch/mips/ath25/ar2315.c 
    1212+++ b/arch/mips/ath25/ar2315.c 
    13 @@ -240,6 +240,32 @@ static struct platform_device ar2315_wdt 
    14         .num_resources = ARRAY_SIZE(ar2315_wdt_res) 
    15  }; 
     13@@ -24,6 +24,8 @@ 
     14 #include <linux/bitops.h> 
     15 #include <linux/irqdomain.h> 
     16 #include <linux/reboot.h> 
     17+#include <linux/delay.h> 
     18+#include <linux/gpio.h> 
     19 #include <asm/bootinfo.h> 
     20 #include <asm/reboot.h> 
     21 #include <asm/time.h> 
     22@@ -172,11 +174,42 @@ void __init ar2315_arch_init_irq(void) 
     23        ar2315_misc_irq_domain = domain; 
     24 } 
    1625  
    1726+static struct resource ar2315_gpio_res[] = { 
     
    4150+}; 
    4251+ 
    43  #ifdef CONFIG_LEDS_GPIO 
    44  static struct gpio_led ar2315_leds[6]; 
    45  static struct gpio_led_platform_data ar2315_led_data = { 
    46 @@ -290,6 +316,11 @@ void __init ar2315_init_devices(void) 
     52 void __init ar2315_init_devices(void) 
     53 { 
     54        /* Find board configuration */ 
    4755        ath25_find_config(AR2315_SPI_READ_BASE, AR2315_SPI_READ_SIZE); 
    48         ar2315_eth_data.macaddr = ath25_board.config->enet0_mac; 
    4956  
    5057+       ar2315_gpio_res[1].start = irq_create_mapping(ar2315_misc_irq_domain, 
     
    5360+       platform_device_register(&ar2315_gpio); 
    5461+ 
    55         ar2315_init_gpio_leds(); 
    56   
    57         ar2315_wdt_res[1].start = irq_create_mapping(ar2315_misc_irq_domain, 
     62        ath25_add_wmac(0, AR2315_WLAN0_BASE, AR2315_IRQ_WLAN0); 
     63 } 
     64  
     65@@ -192,8 +225,8 @@ static void ar2315_restart(char *command 
     66        /* Cold reset does not work on the AR2315/6, use the GPIO reset bits 
     67         * a workaround. Give it some time to attempt a gpio based hardware 
     68         * reset (atheros reference design workaround) */ 
     69- 
     70-       /* TODO: implement the GPIO reset workaround */ 
     71+       gpio_request_one(AR2315_RESET_GPIO, GPIOF_OUT_INIT_LOW, "Reset"); 
     72+       mdelay(100); 
     73  
     74        /* Some boards (e.g. Senao EOC-2610) don't implement the reset logic 
     75         * workaround. Attempt to jump to the mips reset location - 
    5876--- a/drivers/gpio/Kconfig 
    5977+++ b/drivers/gpio/Kconfig 
     
    318336+} 
    319337+subsys_initcall(ar2315_gpio_init); 
     338--- a/arch/mips/ath25/devices.h 
     339+++ b/arch/mips/ath25/devices.h 
     340@@ -1,6 +1,11 @@ 
     341 #ifndef __ATH25_DEVICES_H 
     342 #define __ATH25_DEVICES_H 
     343  
     344+#define AR231X_GPIO_IRQ_BASE           0x30 
     345+ 
     346+/* GPIO number for AR2315/16 reset issue workaround */ 
     347+#define AR2315_RESET_GPIO              5 
     348+ 
     349 #define ATH25_REG_MS(_val, _field)     (((_val) & _field##_M) >> _field##_S) 
     350  
     351 #define ATH25_IRQ_CPU_CLOCK    (MIPS_CPU_IRQ_BASE + 7) /* C0_CAUSE: 0x8000 */ 
     352--- a/arch/mips/ath25/ar2315_regs.h 
     353+++ b/arch/mips/ath25/ar2315_regs.h 
     354@@ -322,6 +322,9 @@ 
     355 #define AR2315_AMBACLK_CLK_DIV_M       0x0000000c 
     356 #define AR2315_AMBACLK_CLK_DIV_S       2 
     357  
     358+/* GPIO MMR base address */ 
     359+#define AR2315_GPIO                    0x0088 
     360+ 
     361 /* 
     362  *  PCI Clock Control 
     363  */ 
  • trunk/target/linux/atheros/patches-3.18/110-ar2313_ethernet.patch

    r44708 r44729  
    15321532+ 
    15331533+#endif /* _AR2313_H_ */ 
     1534--- a/arch/mips/ath25/ar2315_regs.h 
     1535+++ b/arch/mips/ath25/ar2315_regs.h 
     1536@@ -57,6 +57,9 @@ 
     1537 #define AR2315_PCI_EXT_BASE    0x80000000      /* PCI external */ 
     1538 #define AR2315_PCI_EXT_SIZE    0x40000000 
     1539  
     1540+/* MII registers offset inside Ethernet MMR region */ 
     1541+#define AR2315_ENET0_MII_BASE  (AR2315_ENET0_BASE + 0x14) 
     1542+ 
     1543 /* 
     1544  * Cold reset register 
     1545  */ 
     1546--- a/arch/mips/ath25/ar5312_regs.h 
     1547+++ b/arch/mips/ath25/ar5312_regs.h 
     1548@@ -66,6 +66,10 @@ 
     1549 #define AR5312_AR5312_REV7      0x0057          /* AR5312 WMAC (AP30-040) */ 
     1550 #define AR5312_AR2313_REV8      0x0058          /* AR2313 WMAC (AP43-030) */ 
     1551  
     1552+/* MII registers offset inside Ethernet MMR region */ 
     1553+#define AR5312_ENET0_MII_BASE  (AR5312_ENET0_BASE + 0x14) 
     1554+#define AR5312_ENET1_MII_BASE  (AR5312_ENET1_BASE + 0x14) 
     1555+ 
     1556 /* Reset/Timer Block Address Map */ 
     1557 #define AR5312_TIMER           0x0000 /* countdown timer */ 
     1558 #define AR5312_RELOAD          0x0004 /* timer reload value */ 
     1559--- a/arch/mips/ath25/ar2315.c 
     1560+++ b/arch/mips/ath25/ar2315.c 
     1561@@ -141,6 +141,8 @@ static void ar2315_irq_dispatch(void) 
     1562  
     1563        if (pending & CAUSEF_IP3) 
     1564                do_IRQ(AR2315_IRQ_WLAN0); 
     1565+       else if (pending & CAUSEF_IP4) 
     1566+               do_IRQ(AR2315_IRQ_ENET0); 
     1567 #ifdef CONFIG_PCI_AR2315 
     1568        else if (pending & CAUSEF_IP5) 
     1569                do_IRQ(AR2315_IRQ_LCBUS_PCI); 
     1570@@ -174,6 +176,29 @@ void __init ar2315_arch_init_irq(void) 
     1571        ar2315_misc_irq_domain = domain; 
     1572 } 
     1573  
     1574+static void ar2315_device_reset_set(u32 mask) 
     1575+{ 
     1576+       u32 val; 
     1577+ 
     1578+       val = ar2315_rst_reg_read(AR2315_RESET); 
     1579+       ar2315_rst_reg_write(AR2315_RESET, val | mask); 
     1580+} 
     1581+ 
     1582+static void ar2315_device_reset_clear(u32 mask) 
     1583+{ 
     1584+       u32 val; 
     1585+ 
     1586+       val = ar2315_rst_reg_read(AR2315_RESET); 
     1587+       ar2315_rst_reg_write(AR2315_RESET, val & ~mask); 
     1588+} 
     1589+ 
     1590+static struct ar231x_eth ar2315_eth_data = { 
     1591+       .reset_set = ar2315_device_reset_set, 
     1592+       .reset_clear = ar2315_device_reset_clear, 
     1593+       .reset_mac = AR2315_RESET_ENET0, 
     1594+       .reset_phy = AR2315_RESET_EPHY0, 
     1595+}; 
     1596+ 
     1597 static struct resource ar2315_gpio_res[] = { 
     1598        { 
     1599                .name = "ar2315-gpio", 
     1600@@ -210,6 +235,11 @@ void __init ar2315_init_devices(void) 
     1601        ar2315_gpio_res[1].end = ar2315_gpio_res[1].start; 
     1602        platform_device_register(&ar2315_gpio); 
     1603  
     1604+       ar2315_eth_data.macaddr = ath25_board.config->enet0_mac; 
     1605+       ath25_add_ethernet(0, AR2315_ENET0_BASE, "eth0_mii", 
     1606+                          AR2315_ENET0_MII_BASE, AR2315_IRQ_ENET0, 
     1607+                          &ar2315_eth_data); 
     1608+ 
     1609        ath25_add_wmac(0, AR2315_WLAN0_BASE, AR2315_IRQ_WLAN0); 
     1610 } 
     1611  
     1612--- a/arch/mips/ath25/ar5312.c 
     1613+++ b/arch/mips/ath25/ar5312.c 
     1614@@ -137,6 +137,10 @@ static void ar5312_irq_dispatch(void) 
     1615  
     1616        if (pending & CAUSEF_IP2) 
     1617                do_IRQ(AR5312_IRQ_WLAN0); 
     1618+       else if (pending & CAUSEF_IP3) 
     1619+               do_IRQ(AR5312_IRQ_ENET0); 
     1620+       else if (pending & CAUSEF_IP4) 
     1621+               do_IRQ(AR5312_IRQ_ENET1); 
     1622        else if (pending & CAUSEF_IP5) 
     1623                do_IRQ(AR5312_IRQ_WLAN1); 
     1624        else if (pending & CAUSEF_IP6) 
     1625@@ -168,6 +172,36 @@ void __init ar5312_arch_init_irq(void) 
     1626        ar5312_misc_irq_domain = domain; 
     1627 } 
     1628  
     1629+static void ar5312_device_reset_set(u32 mask) 
     1630+{ 
     1631+       u32 val; 
     1632+ 
     1633+       val = ar5312_rst_reg_read(AR5312_RESET); 
     1634+       ar5312_rst_reg_write(AR5312_RESET, val | mask); 
     1635+} 
     1636+ 
     1637+static void ar5312_device_reset_clear(u32 mask) 
     1638+{ 
     1639+       u32 val; 
     1640+ 
     1641+       val = ar5312_rst_reg_read(AR5312_RESET); 
     1642+       ar5312_rst_reg_write(AR5312_RESET, val & ~mask); 
     1643+} 
     1644+ 
     1645+static struct ar231x_eth ar5312_eth0_data = { 
     1646+       .reset_set = ar5312_device_reset_set, 
     1647+       .reset_clear = ar5312_device_reset_clear, 
     1648+       .reset_mac = AR5312_RESET_ENET0, 
     1649+       .reset_phy = AR5312_RESET_EPHY0, 
     1650+}; 
     1651+ 
     1652+static struct ar231x_eth ar5312_eth1_data = { 
     1653+       .reset_set = ar5312_device_reset_set, 
     1654+       .reset_clear = ar5312_device_reset_clear, 
     1655+       .reset_mac = AR5312_RESET_ENET1, 
     1656+       .reset_phy = AR5312_RESET_EPHY1, 
     1657+}; 
     1658+ 
     1659 static struct physmap_flash_data ar5312_flash_data = { 
     1660        .width = 2, 
     1661 }; 
     1662@@ -248,6 +282,7 @@ static void __init ar5312_flash_init(voi 
     1663 void __init ar5312_init_devices(void) 
     1664 { 
     1665        struct ath25_boarddata *config; 
     1666+       u8 *c; 
     1667  
     1668        ar5312_flash_init(); 
     1669  
     1670@@ -271,8 +306,30 @@ void __init ar5312_init_devices(void) 
     1671  
     1672        platform_device_register(&ar5312_gpio); 
     1673  
     1674+       /* Fix up MAC addresses if necessary */ 
     1675+       if (is_broadcast_ether_addr(config->enet0_mac)) 
     1676+               ether_addr_copy(config->enet0_mac, config->enet1_mac); 
     1677+ 
     1678+       /* If ENET0 and ENET1 have the same mac address, 
     1679+        * increment the one from ENET1 */ 
     1680+       if (ether_addr_equal(config->enet0_mac, config->enet1_mac)) { 
     1681+               c = config->enet1_mac + 5; 
     1682+               while ((c >= config->enet1_mac) && !(++(*c))) 
     1683+                       c--; 
     1684+       } 
     1685+ 
     1686        switch (ath25_soc) { 
     1687        case ATH25_SOC_AR5312: 
     1688+               ar5312_eth0_data.macaddr = config->enet0_mac; 
     1689+               ath25_add_ethernet(0, AR5312_ENET0_BASE, "eth0_mii", 
     1690+                                  AR5312_ENET0_MII_BASE, AR5312_IRQ_ENET0, 
     1691+                                  &ar5312_eth0_data); 
     1692+ 
     1693+               ar5312_eth1_data.macaddr = config->enet1_mac; 
     1694+               ath25_add_ethernet(1, AR5312_ENET1_BASE, "eth1_mii", 
     1695+                                  AR5312_ENET1_MII_BASE, AR5312_IRQ_ENET1, 
     1696+                                  &ar5312_eth1_data); 
     1697+ 
     1698                if (!ath25_board.radio) 
     1699                        return; 
     1700  
     1701@@ -281,8 +338,18 @@ void __init ar5312_init_devices(void) 
     1702  
     1703                ath25_add_wmac(0, AR5312_WLAN0_BASE, AR5312_IRQ_WLAN0); 
     1704                break; 
     1705+       /* 
     1706+        * AR2312/3 ethernet uses the PHY of ENET0, but the MAC 
     1707+        * of ENET1. Atheros calls it 'twisted' for a reason :) 
     1708+        */ 
     1709        case ATH25_SOC_AR2312: 
     1710        case ATH25_SOC_AR2313: 
     1711+               ar5312_eth1_data.reset_phy = ar5312_eth0_data.reset_phy; 
     1712+               ar5312_eth1_data.macaddr = config->enet0_mac; 
     1713+               ath25_add_ethernet(1, AR5312_ENET1_BASE, "eth0_mii", 
     1714+                                  AR5312_ENET0_MII_BASE, AR5312_IRQ_ENET1, 
     1715+                                  &ar5312_eth1_data); 
     1716+ 
     1717                if (!ath25_board.radio) 
     1718                        return; 
     1719                break; 
     1720--- a/arch/mips/ath25/devices.h 
     1721+++ b/arch/mips/ath25/devices.h 
     1722@@ -30,6 +30,8 @@ extern struct ar231x_board_config ath25_ 
     1723 extern void (*ath25_irq_dispatch)(void); 
     1724  
     1725 int ath25_find_config(phys_addr_t offset, unsigned long size); 
     1726+int ath25_add_ethernet(int nr, u32 base, const char *mii_name, u32 mii_base, 
     1727+                      int irq, void *pdata); 
     1728 void ath25_serial_setup(u32 mapbase, int irq, unsigned int uartclk); 
     1729 int ath25_add_wmac(int nr, u32 base, int irq); 
     1730  
     1731--- a/arch/mips/ath25/devices.c 
     1732+++ b/arch/mips/ath25/devices.c 
     1733@@ -14,6 +14,51 @@ 
     1734 struct ar231x_board_config ath25_board; 
     1735 enum ath25_soc_type ath25_soc = ATH25_SOC_UNKNOWN; 
     1736  
     1737+static struct resource ath25_eth0_res[] = { 
     1738+       { 
     1739+               .name = "eth0_membase", 
     1740+               .flags = IORESOURCE_MEM, 
     1741+       }, 
     1742+       { 
     1743+               .name = "eth0_mii", 
     1744+               .flags = IORESOURCE_MEM, 
     1745+       }, 
     1746+       { 
     1747+               .name = "eth0_irq", 
     1748+               .flags = IORESOURCE_IRQ, 
     1749+       } 
     1750+}; 
     1751+ 
     1752+static struct resource ath25_eth1_res[] = { 
     1753+       { 
     1754+               .name = "eth1_membase", 
     1755+               .flags = IORESOURCE_MEM, 
     1756+       }, 
     1757+       { 
     1758+               .name = "eth1_mii", 
     1759+               .flags = IORESOURCE_MEM, 
     1760+       }, 
     1761+       { 
     1762+               .name = "eth1_irq", 
     1763+               .flags = IORESOURCE_IRQ, 
     1764+       } 
     1765+}; 
     1766+ 
     1767+static struct platform_device ath25_eth[] = { 
     1768+       { 
     1769+               .id = 0, 
     1770+               .name = "ar231x-eth", 
     1771+               .resource = ath25_eth0_res, 
     1772+               .num_resources = ARRAY_SIZE(ath25_eth0_res) 
     1773+       }, 
     1774+       { 
     1775+               .id = 1, 
     1776+               .name = "ar231x-eth", 
     1777+               .resource = ath25_eth1_res, 
     1778+               .num_resources = ARRAY_SIZE(ath25_eth1_res) 
     1779+       } 
     1780+}; 
     1781+ 
     1782 static struct resource ath25_wmac0_res[] = { 
     1783        { 
     1784                .name = "wmac0_membase", 
     1785@@ -72,6 +117,25 @@ const char *get_system_type(void) 
     1786        return soc_type_strings[ath25_soc]; 
     1787 } 
     1788  
     1789+int __init ath25_add_ethernet(int nr, u32 base, const char *mii_name, 
     1790+                             u32 mii_base, int irq, void *pdata) 
     1791+{ 
     1792+       struct resource *res; 
     1793+ 
     1794+       ath25_eth[nr].dev.platform_data = pdata; 
     1795+       res = &ath25_eth[nr].resource[0]; 
     1796+       res->start = base; 
     1797+       res->end = base + 0x2000 - 1; 
     1798+       res++; 
     1799+       res->name = mii_name; 
     1800+       res->start = mii_base; 
     1801+       res->end = mii_base + 8 - 1; 
     1802+       res++; 
     1803+       res->start = irq; 
     1804+       res->end = irq; 
     1805+       return platform_device_register(&ath25_eth[nr]); 
     1806+} 
     1807+ 
     1808 void __init ath25_serial_setup(u32 mapbase, int irq, unsigned int uartclk) 
     1809 { 
     1810        struct uart_port s; 
     1811--- a/arch/mips/include/asm/mach-ath25/ath25_platform.h 
     1812+++ b/arch/mips/include/asm/mach-ath25/ath25_platform.h 
     1813@@ -70,4 +70,15 @@ struct ar231x_board_config { 
     1814        const char *radio; 
     1815 }; 
     1816  
     1817+/* 
     1818+ * Platform device information for the Ethernet MAC 
     1819+ */ 
     1820+struct ar231x_eth { 
     1821+       void (*reset_set)(u32); 
     1822+       void (*reset_clear)(u32); 
     1823+       u32 reset_mac; 
     1824+       u32 reset_phy; 
     1825+       char *macaddr; 
     1826+}; 
     1827+ 
     1828 #endif /* __ASM_MACH_ATH25_PLATFORM_H */ 
  • trunk/target/linux/atheros/patches-3.18/120-spiflash.patch

    r44705 r44729  
    593593+ 
    594594+#endif 
     595--- a/arch/mips/ath25/ar2315.c 
     596+++ b/arch/mips/ath25/ar2315.c 
     597@@ -225,6 +225,28 @@ static struct platform_device ar2315_gpi 
     598        .num_resources = ARRAY_SIZE(ar2315_gpio_res) 
     599 }; 
     600  
     601+static struct resource ar2315_spiflash_res[] = { 
     602+       { 
     603+               .name = "spiflash_read", 
     604+               .flags = IORESOURCE_MEM, 
     605+               .start = AR2315_SPI_READ_BASE, 
     606+               .end = AR2315_SPI_READ_BASE + AR2315_SPI_READ_SIZE - 1, 
     607+       }, 
     608+       { 
     609+               .name = "spiflash_mmr", 
     610+               .flags = IORESOURCE_MEM, 
     611+               .start = AR2315_SPI_MMR_BASE, 
     612+               .end = AR2315_SPI_MMR_BASE + AR2315_SPI_MMR_SIZE - 1, 
     613+       }, 
     614+}; 
     615+ 
     616+static struct platform_device ar2315_spiflash = { 
     617+       .id = 0, 
     618+       .name = "ar2315-spiflash", 
     619+       .resource = ar2315_spiflash_res, 
     620+       .num_resources = ARRAY_SIZE(ar2315_spiflash_res) 
     621+}; 
     622+ 
     623 void __init ar2315_init_devices(void) 
     624 { 
     625        /* Find board configuration */ 
     626@@ -235,6 +257,8 @@ void __init ar2315_init_devices(void) 
     627        ar2315_gpio_res[1].end = ar2315_gpio_res[1].start; 
     628        platform_device_register(&ar2315_gpio); 
     629  
     630+       platform_device_register(&ar2315_spiflash); 
     631+ 
     632        ar2315_eth_data.macaddr = ath25_board.config->enet0_mac; 
     633        ath25_add_ethernet(0, AR2315_ENET0_BASE, "eth0_mii", 
     634                           AR2315_ENET0_MII_BASE, AR2315_IRQ_ENET0, 
  • trunk/target/linux/atheros/patches-3.18/130-watchdog.patch

    r44706 r44729  
    237237 obj-$(CONFIG_OCTEON_WDT) += octeon-wdt.o 
    238238 octeon-wdt-y := octeon-wdt-main.o octeon-wdt-nmi.o 
     239--- a/arch/mips/ath25/ar2315.c 
     240+++ b/arch/mips/ath25/ar2315.c 
     241@@ -225,6 +225,24 @@ static struct platform_device ar2315_gpi 
     242        .num_resources = ARRAY_SIZE(ar2315_gpio_res) 
     243 }; 
     244  
     245+static struct resource ar2315_wdt_res[] = { 
     246+       { 
     247+               .flags = IORESOURCE_MEM, 
     248+               .start = AR2315_RST_BASE + AR2315_WDT_TIMER, 
     249+               .end = AR2315_RST_BASE + AR2315_WDT_TIMER + 8 - 1, 
     250+       }, 
     251+       { 
     252+               .flags = IORESOURCE_IRQ, 
     253+       } 
     254+}; 
     255+ 
     256+static struct platform_device ar2315_wdt = { 
     257+       .id = 0, 
     258+       .name = "ar2315-wdt", 
     259+       .resource = ar2315_wdt_res, 
     260+       .num_resources = ARRAY_SIZE(ar2315_wdt_res) 
     261+}; 
     262+ 
     263 static struct resource ar2315_spiflash_res[] = { 
     264        { 
     265                .name = "spiflash_read", 
     266@@ -257,6 +275,11 @@ void __init ar2315_init_devices(void) 
     267        ar2315_gpio_res[1].end = ar2315_gpio_res[1].start; 
     268        platform_device_register(&ar2315_gpio); 
     269  
     270+       ar2315_wdt_res[1].start = irq_create_mapping(ar2315_misc_irq_domain, 
     271+                                                    AR2315_MISC_IRQ_WATCHDOG); 
     272+       ar2315_wdt_res[1].end = ar2315_wdt_res[1].start; 
     273+       platform_device_register(&ar2315_wdt); 
     274+ 
     275        platform_device_register(&ar2315_spiflash); 
     276  
     277        ar2315_eth_data.macaddr = ath25_board.config->enet0_mac; 
Note: See TracChangeset for help on using the changeset viewer.