Changeset 31025


Ignore:
Timestamp:
2012-03-19T16:57:04+01:00 (4 years ago)
Author:
juhosg
Message:

ar71xx: add initial support for RB750GL

Location:
trunk/target/linux/ar71xx
Files:
2 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/ar71xx/base-files/etc/uci-defaults/network

    r31012 r31025  
    6161        ucidef_add_switch "switch0" "1" "1" 
    6262        ucidef_add_switch_vlan "switch0" "1" "0 1 2 3 4" 
     63        ;; 
     64 
     65rb-750gl |\ 
     66wzr-hp-g450h) 
     67        ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2" 
     68        ucidef_add_switch "switch0" "1" "1" 
     69        ucidef_add_switch_vlan "switch0" "1" "0t 2 3 4 5" 
     70        ucidef_add_switch_vlan "switch0" "2" "0t 1" 
    6371        ;; 
    6472 
  • trunk/target/linux/ar71xx/base-files/lib/ar71xx.sh

    r30957 r31025  
    248248                name="rb-750" 
    249249                ;; 
     250        *"RouterBOARD 750GL") 
     251                name="rb-750gl" 
     252                ;; 
    250253        *"Rocket M") 
    251254                name="rocket-m" 
  • trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-rb750.c

    r31024 r31025  
    1111#include <linux/export.h> 
    1212#include <linux/platform_device.h> 
     13#include <linux/phy.h> 
     14#include <linux/ar8216_platform.h> 
    1315 
    1416#include <asm/mach-ath79/ar71xx_regs.h> 
     
    4648                .active_low     = 1, 
    4749        } 
     50}; 
     51 
     52static struct rb750_led_data rb750gr3_leds[] = { 
     53        { 
     54                .name           = "rb750:green:act", 
     55                .mask           = RB7XX_LED_ACT, 
     56                .active_low     = 1, 
     57        }, 
    4858}; 
    4959 
     
    156166MIPS_MACHINE(ATH79_MACH_RB_750, "750i", "MikroTik RouterBOARD 750", 
    157167             rb750_setup); 
     168 
     169static struct ar8327_pad_cfg rb750gr3_ar8327_pad0_cfg = { 
     170        .mode = AR8327_PAD_MAC_RGMII, 
     171        .txclk_delay_en = true, 
     172        .rxclk_delay_en = true, 
     173        .txclk_delay_sel = AR8327_CLK_DELAY_SEL1, 
     174        .rxclk_delay_sel = AR8327_CLK_DELAY_SEL2, 
     175}; 
     176 
     177static struct ar8327_platform_data rb750gr3_ar8327_data = { 
     178        .pad0_cfg = &rb750gr3_ar8327_pad0_cfg, 
     179        .cpuport_cfg = { 
     180                .force_link = 1, 
     181                .speed = AR8327_PORT_SPEED_100, 
     182                .duplex = 1, 
     183                .txpause = 1, 
     184                .rxpause = 1, 
     185        } 
     186}; 
     187 
     188static struct mdio_board_info rb750g3_mdio_info[] = { 
     189        { 
     190                .bus_id = "ag71xx-mdio.0", 
     191                .phy_addr = 0, 
     192                .platform_data = &rb750gr3_ar8327_data, 
     193        }, 
     194}; 
     195 
     196static void rb750gr3_nand_enable_pins(void) 
     197{ 
     198        ath79_gpio_function_setup(AR724X_GPIO_FUNC_JTAG_DISABLE, 
     199                                  AR724X_GPIO_FUNC_SPI_EN | 
     200                                  AR724X_GPIO_FUNC_SPI_CS_EN2); 
     201} 
     202 
     203static void rb750gr3_nand_disable_pins(void) 
     204{ 
     205        ath79_gpio_function_setup(AR724X_GPIO_FUNC_SPI_EN | 
     206                                  AR724X_GPIO_FUNC_SPI_CS_EN2, 
     207                                  AR724X_GPIO_FUNC_JTAG_DISABLE); 
     208} 
     209 
     210static void rb750gr3_latch_change(u32 mask_clr, u32 mask_set) 
     211{ 
     212        static DEFINE_SPINLOCK(lock); 
     213        static u32 latch_set = RB7XX_LED_ACT; 
     214        static u32 latch_clr; 
     215        void __iomem *base = ath79_gpio_base; 
     216        unsigned long flags; 
     217        u32 t; 
     218 
     219        spin_lock_irqsave(&lock, flags); 
     220 
     221        latch_set = (latch_set | mask_set) & ~mask_clr; 
     222        latch_clr = (latch_clr | mask_clr) & ~mask_set; 
     223 
     224        mask_set = latch_set & (RB7XX_USB_POWERON | RB7XX_MONITOR); 
     225        mask_clr = latch_clr & (RB7XX_USB_POWERON | RB7XX_MONITOR); 
     226 
     227        if ((latch_set ^ RB7XX_LED_ACT) & RB7XX_LED_ACT) { 
     228                /* enable output mode */ 
     229                t = __raw_readl(base + AR71XX_GPIO_REG_OE); 
     230                t |= RB7XX_LED_ACT; 
     231                __raw_writel(t, base + AR71XX_GPIO_REG_OE); 
     232 
     233                mask_clr |= RB7XX_LED_ACT; 
     234        } else { 
     235                /* disable output mode */ 
     236                t = __raw_readl(base + AR71XX_GPIO_REG_OE); 
     237                t &= ~RB7XX_LED_ACT; 
     238                __raw_writel(t, base + AR71XX_GPIO_REG_OE); 
     239        } 
     240 
     241        __raw_writel(mask_set, base + AR71XX_GPIO_REG_SET); 
     242        __raw_writel(mask_clr, base + AR71XX_GPIO_REG_CLEAR); 
     243 
     244        spin_unlock_irqrestore(&lock, flags); 
     245} 
     246 
     247static void __init rb750gr3_setup(void) 
     248{ 
     249        ath79_register_mdio(0, 0x0); 
     250        mdiobus_register_board_info(rb750g3_mdio_info, 
     251                                    ARRAY_SIZE(rb750g3_mdio_info)); 
     252 
     253        ath79_init_mac(ath79_eth0_data.mac_addr, ath79_mac_base, 0); 
     254        ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII; 
     255        ath79_eth0_data.phy_mask = BIT(0); 
     256 
     257        ath79_register_eth(0); 
     258 
     259        rb750_leds_data.num_leds = ARRAY_SIZE(rb750gr3_leds); 
     260        rb750_leds_data.leds = rb750gr3_leds; 
     261        rb750_leds_data.latch_change = rb750gr3_latch_change; 
     262        platform_device_register(&rb750_leds_device); 
     263 
     264        rb750_nand_data.nce_line = RB7XX_NAND_NCE; 
     265        rb750_nand_data.enable_pins = rb750gr3_nand_enable_pins; 
     266        rb750_nand_data.disable_pins = rb750gr3_nand_disable_pins; 
     267        rb750_nand_data.latch_change = rb750gr3_latch_change; 
     268        platform_device_register(&rb750_nand_device); 
     269} 
     270 
     271MIPS_MACHINE(ATH79_MACH_RB_750G_R3, "750Gr3", "MikroTik RouterBOARD 750GL", 
     272             rb750gr3_setup); 
  • trunk/target/linux/ar71xx/files/arch/mips/include/asm/mach-ath79/mach-rb750.h

    r31024 r31025  
    5151                         RB750_LED_PORT4 | RB750_LED_PORT5 | RB750_LED_ACT) 
    5252 
     53#define RB7XX_GPIO_NAND_NCE     0 
     54#define RB7XX_GPIO_MON          9 
     55#define RB7XX_GPIO_LED_ACT      11 
     56#define RB7XX_GPIO_USB_POWERON  13 
     57 
     58#define RB7XX_NAND_NCE          BIT(RB7XX_GPIO_NAND_NCE) 
     59#define RB7XX_LED_ACT           BIT(RB7XX_GPIO_LED_ACT) 
     60#define RB7XX_MONITOR           BIT(RB7XX_GPIO_MON) 
     61#define RB7XX_USB_POWERON       BIT(RB7XX_GPIO_USB_POWERON) 
     62 
    5363struct rb750_led_data { 
    5464        char    *name; 
Note: See TracChangeset for help on using the changeset viewer.