Changeset 35961


Ignore:
Timestamp:
2013-03-11T16:55:20+01:00 (5 years ago)
Author:
juhosg
Message:

ar71xx: add kernel support for MR3420v2

[juhosg: use gpio_request_one to enable the USB power]

Patch-by: Dmytro <dioptimizer@…>
Signed-off-by: Gabor Juhos <juhosg@…>

Location:
trunk/target/linux/ar71xx
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr841n-v8.c

    r33818 r35961  
    11/* 
    2  *  TP-LINK TL-WR841N/ND v8 board support 
     2 *  TP-LINK TL-WR841N/ND v8/TL-MR3420 v2 board support 
    33 * 
    44 *  Copyright (C) 2012 Gabor Juhos <juhosg@openwrt.org> 
     
    99 */ 
    1010 
     11#include <linux/gpio.h> 
    1112#include <linux/platform_device.h> 
    1213 
     
    1920#include "dev-leds-gpio.h" 
    2021#include "dev-m25p80.h" 
     22#include "dev-usb.h" 
    2123#include "dev-wmac.h" 
    2224#include "machtypes.h" 
     
    3234 
    3335#define TL_WR841NV8_GPIO_BTN_RESET      17 
    34 #define TL_WR841NV8_GPIO_SW_RFKILL      16 
     36#define TL_WR841NV8_GPIO_SW_RFKILL      16      /* WPS for MR3420 v2 */ 
     37 
     38#define TL_MR3420V2_GPIO_LED_3G 11 
     39#define TL_MR3420V2_GPIO_USB_POWER      4 
    3540 
    3641#define TL_WR841NV8_KEYS_POLL_INTERVAL  20      /* msecs */ 
     
    7984                .gpio           = TL_WR841NV8_GPIO_LED_WLAN, 
    8085                .active_low     = 1, 
     86        }, { 
     87                /* the 3G LED is only present on the MR3420 v2 */ 
     88                .name           = "tp-link:green:3g", 
     89                .gpio           = TL_MR3420V2_GPIO_LED_3G, 
     90                .active_low     = 1, 
    8191        }, 
    8292}; 
     
    100110}; 
    101111 
    102 static void __init tl_wr841n_v8_setup(void) 
     112static struct gpio_keys_button tl_mr3420v2_gpio_keys[] __initdata = { 
     113        { 
     114                .desc           = "Reset button", 
     115                .type           = EV_KEY, 
     116                .code           = KEY_RESTART, 
     117                .debounce_interval = TL_WR841NV8_KEYS_DEBOUNCE_INTERVAL, 
     118                .gpio           = TL_WR841NV8_GPIO_BTN_RESET, 
     119                .active_low     = 1, 
     120        }, { 
     121                .desc           = "WPS", 
     122                .type           = EV_KEY, 
     123                .code           = KEY_WPS_BUTTON, 
     124                .debounce_interval = TL_WR841NV8_KEYS_DEBOUNCE_INTERVAL, 
     125                .gpio           = TL_WR841NV8_GPIO_SW_RFKILL, 
     126                .active_low     = 0, 
     127        } 
     128}; 
     129 
     130static void __init tl_ap123_setup(void) 
    103131{ 
    104132        u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00); 
    105133        u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000); 
    106134 
    107         ath79_register_leds_gpio(-1, ARRAY_SIZE(tl_wr841n_v8_leds_gpio), 
    108                                  tl_wr841n_v8_leds_gpio); 
    109  
    110         ath79_register_gpio_keys_polled(1, TL_WR841NV8_KEYS_POLL_INTERVAL, 
    111                                         ARRAY_SIZE(tl_wr841n_v8_gpio_keys), 
    112                                         tl_wr841n_v8_gpio_keys); 
    113  
    114135        ath79_register_m25p80(&tl_wr841n_v8_flash_data); 
    115136 
    116137        ath79_setup_ar934x_eth_cfg(AR934X_ETH_CFG_SW_PHY_SWAP); 
    117  
    118         ath79_register_mdio(1, 0x0); 
    119138 
    120139        ath79_init_mac(ath79_eth0_data.mac_addr, mac, -1); 
     
    136155} 
    137156 
     157static void __init tl_wr841n_v8_setup(void) 
     158{ 
     159        tl_ap123_setup(); 
     160 
     161        ath79_register_leds_gpio(-1, ARRAY_SIZE(tl_wr841n_v8_leds_gpio) - 1, 
     162                                 tl_wr841n_v8_leds_gpio); 
     163 
     164        ath79_register_gpio_keys_polled(1, TL_WR841NV8_KEYS_POLL_INTERVAL, 
     165                                        ARRAY_SIZE(tl_wr841n_v8_gpio_keys), 
     166                                        tl_wr841n_v8_gpio_keys); 
     167 
     168        ath79_register_mdio(1, 0x0); 
     169} 
     170 
    138171MIPS_MACHINE(ATH79_MACH_TL_WR841N_V8, "TL-WR841N-v8", "TP-LINK TL-WR841N/ND v8", 
    139172             tl_wr841n_v8_setup); 
     173 
     174static void __init tl_mr3420v2_setup(void) 
     175{ 
     176        tl_ap123_setup(); 
     177 
     178        ath79_register_leds_gpio(-1, ARRAY_SIZE(tl_wr841n_v8_leds_gpio), 
     179                                tl_wr841n_v8_leds_gpio); 
     180 
     181        ath79_register_gpio_keys_polled(1, TL_WR841NV8_KEYS_POLL_INTERVAL, 
     182                                ARRAY_SIZE(tl_mr3420v2_gpio_keys), 
     183                                tl_mr3420v2_gpio_keys); 
     184 
     185        ath79_register_mdio(0, 0x0); 
     186 
     187        /* enable power for the USB port */ 
     188        gpio_request_one(TL_MR3420V2_GPIO_USB_POWER, 
     189                         GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED, 
     190                         "USB power"); 
     191 
     192        ath79_register_usb(); 
     193} 
     194 
     195MIPS_MACHINE(ATH79_MACH_TL_MR3420_V2, "TL-MR3420-v2", "TP-LINK TL-MR3420 v2", 
     196             tl_mr3420v2_setup); 
Note: See TracChangeset for help on using the changeset viewer.