source: trunk/target/linux/lantiq/patches-2.6.39/200-mach-arv45xx.patch @ 27665

Last change on this file since 27665 was 27665, checked in by blogic, 5 years ago

[lantiq]

  • add gigasx76x update
  • rebase patches
  • add arv752DPW arv7525PD
  • fixes gpio_keys

Signed-off-by: Luka Perkov <openwrt@…>
Signed-off-by: John Crispin <blogic@…>

File size: 20.6 KB
  • arch/mips/lantiq/xway/Kconfig

    a b  
    66        bool "Easy50712 - Danube" 
    77        default y 
    88 
     9config LANTIQ_MACH_ARV45XX 
     10        bool "ARV45XX" 
     11        default y 
     12 
    913endmenu 
    1014 
    1115endif 
  • arch/mips/lantiq/xway/Makefile

    a b  
    55 
    66obj-$(CONFIG_LANTIQ_MACH_EASY50712) += mach-easy50712.o 
    77obj-$(CONFIG_LANTIQ_MACH_EASY50601) += mach-easy50601.o 
     8obj-$(CONFIG_LANTIQ_MACH_ARV45XX) += mach-arv45xx.o 
  • new file arch/mips/lantiq/xway/mach-arv45xx.c

    - +  
     1/* 
     2 *  This program is free software; you can redistribute it and/or modify it 
     3 *  under the terms of the GNU General Public License version 2 as published 
     4 *  by the Free Software Foundation. 
     5 * 
     6 *  Copyright (C) 2010 John Crispin <blogic@openwrt.org> 
     7 */ 
     8 
     9#include <linux/init.h> 
     10#include <linux/platform_device.h> 
     11#include <linux/leds.h> 
     12#include <linux/gpio.h> 
     13#include <linux/mtd/mtd.h> 
     14#include <linux/mtd/partitions.h> 
     15#include <linux/mtd/physmap.h> 
     16#include <linux/input.h> 
     17#include <linux/etherdevice.h> 
     18#include <linux/ath5k_platform.h> 
     19#include <linux/pci.h> 
     20 
     21#include <lantiq_soc.h> 
     22#include <lantiq_platform.h> 
     23 
     24#include "../machtypes.h" 
     25#include "devices.h" 
     26#include "dev-leds-gpio.h" 
     27#include "dev-dwc_otg.h" 
     28#include "../dev-gpio-buttons.h" 
     29 
     30#ifdef CONFIG_MTD_PARTITIONS 
     31static struct mtd_partition arv4510_partitions[] = 
     32{ 
     33        { 
     34                .name   = "uboot", 
     35                .offset = 0x0, 
     36                .size   = 0x20000, 
     37        }, 
     38        { 
     39                .name   = "uboot_env", 
     40                .offset = 0x20000, 
     41                .size   = 0x120000, 
     42        }, 
     43        { 
     44                .name   = "linux", 
     45                .offset = 0x40000, 
     46                .size   = 0xfa0000, 
     47        }, 
     48        { 
     49                .name   = "board_config", 
     50                .offset = 0xfe0000, 
     51                .size   = 0x20000, 
     52        }, 
     53}; 
     54 
     55static struct mtd_partition arv45xx_partitions[] = 
     56{ 
     57        { 
     58                .name   = "uboot", 
     59                .offset = 0x0, 
     60                .size   = 0x20000, 
     61        }, 
     62        { 
     63                .name   = "uboot_env", 
     64                .offset = 0x20000, 
     65                .size   = 0x10000, 
     66        }, 
     67        { 
     68                .name   = "linux", 
     69                .offset = 0x30000, 
     70                .size   = 0x3c0000, 
     71        }, 
     72        { 
     73                .name   = "board_config", 
     74                .offset = 0x3f0000, 
     75                .size   = 0x10000, 
     76        }, 
     77}; 
     78 
     79static struct mtd_partition arv75xx_partitions[] = 
     80{ 
     81        { 
     82                .name   = "uboot", 
     83                .offset = 0x0, 
     84                .size   = 0x10000, 
     85        }, 
     86        { 
     87                .name   = "uboot_env", 
     88                .offset = 0x10000, 
     89                .size   = 0x10000, 
     90        }, 
     91        { 
     92                .name   = "linux", 
     93                .offset = 0x20000, 
     94                .size   = 0x7d0000, 
     95        }, 
     96        { 
     97                .name   = "board_config", 
     98                .offset = 0x7f0000, 
     99                .size   = 0x10000, 
     100        }, 
     101}; 
     102 
     103static struct mtd_partition arv7525_partitions[] = 
     104{ 
     105        { 
     106                .name   = "uboot", 
     107                .offset = 0x0, 
     108                .size   = 0x10000, 
     109        }, 
     110        { 
     111                .name   = "uboot_env", 
     112                .offset = 0x10000, 
     113                .size   = 0x10000, 
     114        }, 
     115        { 
     116                .name   = "linux", 
     117                .offset = 0x20000, 
     118                .size   = 0x3d0000, 
     119        }, 
     120        { 
     121                .name   = "board_config", 
     122                .offset = 0x3f0000, 
     123                .size   = 0x10000, 
     124        }, 
     125}; 
     126#endif 
     127 
     128static struct physmap_flash_data arv4510_flash_data = { 
     129#ifdef CONFIG_MTD_PARTITIONS 
     130        .nr_parts       = ARRAY_SIZE(arv4510_partitions), 
     131        .parts          = arv4510_partitions, 
     132#endif 
     133}; 
     134 
     135static struct physmap_flash_data arv45xx_flash_data = { 
     136#ifdef CONFIG_MTD_PARTITIONS 
     137        .nr_parts       = ARRAY_SIZE(arv45xx_partitions), 
     138        .parts          = arv45xx_partitions, 
     139#endif 
     140}; 
     141 
     142static struct physmap_flash_data arv75xx_flash_data = { 
     143#ifdef CONFIG_MTD_PARTITIONS 
     144        .nr_parts       = ARRAY_SIZE(arv75xx_partitions), 
     145        .parts          = arv75xx_partitions, 
     146#endif 
     147}; 
     148 
     149static struct physmap_flash_data arv7525_flash_data = { 
     150#ifdef CONFIG_MTD_PARTITIONS 
     151        .nr_parts       = ARRAY_SIZE(arv7525_partitions), 
     152        .parts          = arv7525_partitions, 
     153#endif 
     154}; 
     155 
     156static struct ltq_pci_data ltq_pci_data = { 
     157        .clock  = PCI_CLOCK_EXT, 
     158        .gpio   = PCI_GNT1 | PCI_REQ1, 
     159        .irq    = { 
     160                [14] = INT_NUM_IM0_IRL0 + 22, 
     161        }, 
     162}; 
     163 
     164static struct ltq_eth_data ltq_eth_data = { 
     165        .mii_mode       = PHY_INTERFACE_MODE_RMII, 
     166}; 
     167 
     168static struct gpio_led 
     169arv4510pw_leds_gpio[] __initdata = { 
     170        { .name = "soc:green:foo", .gpio = 4, .active_low = 1, }, 
     171}; 
     172 
     173static struct gpio_led 
     174arv4518pw_leds_gpio[] __initdata = { 
     175        { .name = "soc:green:power", .gpio = 3, .active_low = 1, .default_trigger = "default-on" }, 
     176        { .name = "soc:green:adsl", .gpio = 4, .active_low = 1, .default_trigger = "default-on" }, 
     177        { .name = "soc:green:internet", .gpio = 5, .active_low = 1, .default_trigger = "default-on" }, 
     178        { .name = "soc:green:wlan", .gpio = 6, .active_low = 1, .default_trigger = "default-on" }, 
     179        { .name = "soc:yellow:wps", .gpio = 7, .active_low = 1, .default_trigger = "default-on" }, 
     180        { .name = "soc:red:fail", .gpio = 8, .active_low = 1, .default_trigger = "default-on" }, 
     181        { .name = "soc:green:usb", .gpio = 19, .active_low = 1, .default_trigger = "default-on" }, 
     182        { .name = "soc:green:voip", .gpio = 72, .active_low = 1, .default_trigger = "default-on" }, 
     183        { .name = "soc:green:fxs1", .gpio = 73, .active_low = 1, .default_trigger = "default-on" }, 
     184        { .name = "soc:green:fxs2", .gpio = 74, .active_low = 1, .default_trigger = "default-on" }, 
     185        { .name = "soc:green:fxo", .gpio = 75, .active_low = 1, .default_trigger = "default-on" }, 
     186}; 
     187 
     188static struct gpio_keys_button 
     189arv4518pw_gpio_keys[] __initdata = { 
     190        { 
     191                .desc           = "wlan", 
     192                .type           = EV_KEY, 
     193                .code           = BTN_0, 
     194                .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL, 
     195                .gpio   = 28, 
     196                .active_low     = 1, 
     197        }, 
     198        { 
     199                .desc           = "wps", 
     200                .type           = EV_KEY, 
     201                .code           = BTN_1, 
     202                .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL, 
     203                .gpio           = 29, 
     204                .active_low     = 1, 
     205        }, 
     206        { 
     207                .desc           = "reset", 
     208                .type           = EV_KEY, 
     209                .code           = BTN_2, 
     210                .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL, 
     211                .gpio           = 30, 
     212                .active_low     = 1, 
     213        }, 
     214}; 
     215 
     216static struct gpio_led 
     217arv4520pw_leds_gpio[] __initdata = { 
     218        { .name = "soc:blue:power", .gpio = 3, .active_low = 1, }, 
     219        { .name = "soc:blue:adsl", .gpio = 4, .active_low = 1, }, 
     220        { .name = "soc:blue:internet", .gpio = 5, .active_low = 1, }, 
     221        { .name = "soc:red:power", .gpio = 6, .active_low = 1, }, 
     222        { .name = "soc:yellow:wps", .gpio = 7, .active_low = 1, }, 
     223        { .name = "soc:red:wps", .gpio = 9, .active_low = 1, }, 
     224        { .name = "soc:blue:voip", .gpio = 72, .active_low = 1, }, 
     225        { .name = "soc:blue:fxs1", .gpio = 73, .active_low = 1, }, 
     226        { .name = "soc:blue:fxs2", .gpio = 74, .active_low = 1, }, 
     227        { .name = "soc:blue:fxo", .gpio = 75, .active_low = 1, }, 
     228        { .name = "soc:blue:voice", .gpio = 76, .active_low = 1, }, 
     229        { .name = "soc:blue:usb", .gpio = 77, .active_low = 1, }, 
     230        { .name = "soc:blue:wlan", .gpio = 78, .active_low = 1, }, 
     231}; 
     232 
     233static struct gpio_led 
     234arv452cpw_leds_gpio[] __initdata = { 
     235        { .name = "soc:blue:power", .gpio = 3, .active_low = 1, .default_trigger = "default-on" }, 
     236        { .name = "soc:blue:adsl", .gpio = 4, .active_low = 1, .default_trigger = "default-on" }, 
     237        { .name = "soc:blue:isdn", .gpio = 5, .active_low = 1, .default_trigger = "default-on" }, 
     238        { .name = "soc:red:power", .gpio = 6, .active_low = 1, .default_trigger = "default-on" }, 
     239        { .name = "soc:yellow:wps", .gpio = 7, .active_low = 1, .default_trigger = "default-on" }, 
     240        { .name = "soc:red:wps", .gpio = 9, .active_low = 1, .default_trigger = "default-on" }, 
     241        { .name = "soc:blue:fxs1", .gpio = 72, .active_low = 1, .default_trigger = "default-on" }, 
     242        { .name = "soc:blue:fxs2", .gpio = 73, .active_low = 1, .default_trigger = "default-on" }, 
     243        { .name = "soc:blue:wps", .gpio = 74, .active_low = 1, .default_trigger = "default-on" }, 
     244        { .name = "soc:blue:fxo", .gpio = 75, .active_low = 1, .default_trigger = "default-on" }, 
     245        { .name = "soc:blue:voice", .gpio = 76, .active_low = 1, .default_trigger = "default-on" }, 
     246        { .name = "soc:blue:usb", .gpio = 77, .active_low = 1, .default_trigger = "default-on" }, 
     247        { .name = "soc:blue:wlan", .gpio = 78, .active_low = 1, .default_trigger = "default-on" }, 
     248        { .name = "soc:blue:internet", .gpio = 80, .active_low = 1, .default_trigger = "default-on" }, 
     249        { .name = "soc:red:internet", .gpio = 81, .active_low = 1, .default_trigger = "default-on" }, 
     250}; 
     251 
     252static struct gpio_led 
     253arv4525pw_leds_gpio[] __initdata = { 
     254        { .name = "soc:green:festnetz", .gpio = 4, .active_low = 1, .default_trigger = "default-on" }, 
     255        { .name = "soc:green:internet", .gpio = 5, .active_low = 1, .default_trigger = "default-on" }, 
     256        { .name = "soc:green:dsl", .gpio = 6, .active_low = 1, .default_trigger = "default-on" }, 
     257        { .name = "soc:green:wlan", .gpio = 8, .active_low = 1, .default_trigger = "default-on" }, 
     258        { .name = "soc:green:online", .gpio = 9, .active_low = 1, .default_trigger = "default-on" }, 
     259}; 
     260 
     261static struct gpio_led 
     262arv752dpw22_leds_gpio[] __initdata = { 
     263        { .name = "soc:blue:power", .gpio = 3, .active_low = 1, .default_trigger = "default-on" }, 
     264        { .name = "soc:red:internet", .gpio = 5, .active_low = 1, .default_trigger = "default-on" }, 
     265        { .name = "soc:red:power", .gpio = 6, .active_low = 1, .default_trigger = "default-on" }, 
     266        { .name = "soc:red:wps", .gpio = 8, .active_low = 1, .default_trigger = "default-on" }, 
     267        { .name = "soc:red:fxo", .gpio = 75, .active_low = 1, .default_trigger = "default-on" }, 
     268        { .name = "soc:red:voice", .gpio = 76, .active_low = 1, .default_trigger = "default-on" }, 
     269        { .name = "soc:green:usb", .gpio = 77, .active_low = 1, .default_trigger = "default-on" }, 
     270        { .name = "soc:green:wlan", .gpio = 78, .active_low = 1, .default_trigger = "default-on" }, 
     271        { .name = "soc:green:wlan1", .gpio = 79, .active_low = 1, .default_trigger = "default-on" }, 
     272        { .name = "soc:blue:wlan", .gpio = 80, .active_low = 1, .default_trigger = "default-on" }, 
     273        { .name = "soc:blue:wlan1", .gpio = 81, .active_low = 1, .default_trigger = "default-on" }, 
     274        { .name = "soc:green:eth1", .gpio = 83, .active_low = 1, .default_trigger = "default-on" }, 
     275        { .name = "soc:green:eth2", .gpio = 84, .active_low = 1, .default_trigger = "default-on" }, 
     276        { .name = "soc:green:eth3", .gpio = 85, .active_low = 1, .default_trigger = "default-on" }, 
     277        { .name = "soc:green:eth4", .gpio = 86, .active_low = 1, .default_trigger = "default-on", }, 
     278}; 
     279 
     280static struct gpio_keys_button 
     281arv752dpw22_gpio_keys[] __initdata = { 
     282        { 
     283                .desc = "btn0", 
     284                .type = EV_KEY, 
     285                .code = BTN_0, 
     286                .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL, 
     287                .gpio = 12, 
     288                .active_low = 1, 
     289        }, 
     290        { 
     291                .desc = "btn1", 
     292                .type = EV_KEY, 
     293                .code = BTN_1, 
     294                .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL, 
     295                .gpio = 13, 
     296                .active_low = 1, 
     297        }, 
     298        { 
     299                .desc = "btn2", 
     300                .type = EV_KEY, 
     301                .code = BTN_2, 
     302                .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL, 
     303                .gpio = 28, 
     304                .active_low = 1, 
     305        }, 
     306}; 
     307 
     308static struct gpio_led 
     309arv7518pw_leds_gpio[] __initdata = { 
     310        { .name = "soc:green:power", .gpio = 2, .active_low = 1, }, 
     311        { .name = "soc:green:adsl", .gpio = 4, .active_low = 1, }, 
     312        { .name = "soc:green:internet", .gpio = 5, .active_low = 1, }, 
     313        { .name = "soc:green:wlan", .gpio = 6, .active_low = 1, }, 
     314        { .name = "soc:red:internet", .gpio = 8, .active_low = 1, }, 
     315        { .name = "soc:green:usb", .gpio = 19, .active_low = 1, }, 
     316}; 
     317 
     318static struct gpio_keys_button 
     319arv7518pw_gpio_keys[] __initdata = { 
     320        { 
     321                .desc = "reset", 
     322                .type = EV_KEY, 
     323                .code = BTN_0, 
     324                .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL, 
     325                .gpio = 23, 
     326                .active_low = 1, 
     327        }, 
     328        { 
     329                .desc = "wlan", 
     330                .type = EV_KEY, 
     331                .code = BTN_1, 
     332                .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL, 
     333                .gpio = 25, 
     334                .active_low = 1, 
     335        }, 
     336}; 
     337 
     338static void 
     339arv45xx_register_ethernet(void) 
     340{ 
     341#define ARV45XX_BRN_MAC                 0x3f0016 
     342        memcpy_fromio(&ltq_eth_data.mac.sa_data, 
     343                (void *)KSEG1ADDR(LTQ_FLASH_START + ARV45XX_BRN_MAC), 6); 
     344        ltq_register_etop(&ltq_eth_data); 
     345} 
     346 
     347static void 
     348arv75xx_register_ethernet(void) 
     349{ 
     350#define ARV75XX_BRN_MAC                 0x7f0016 
     351        memcpy_fromio(&ltq_eth_data.mac.sa_data, 
     352                (void *)KSEG1ADDR(LTQ_FLASH_START + ARV75XX_BRN_MAC), 6); 
     353        ltq_register_etop(&ltq_eth_data); 
     354} 
     355 
     356static void 
     357bewan_register_ethernet(void) 
     358{ 
     359#define BEWAN_BRN_MAC                   0x3f0014 
     360        memcpy_fromio(&ltq_eth_data.mac.sa_data, 
     361                (void *)KSEG1ADDR(LTQ_FLASH_START + BEWAN_BRN_MAC), 6); 
     362        ltq_register_etop(&ltq_eth_data); 
     363} 
     364 
     365static u16 arv45xx_ath5k_eeprom_data[ATH5K_PLAT_EEP_MAX_WORDS]; 
     366static struct ath5k_platform_data arv45xx_ath5k_platform_data; 
     367 
     368/*static int arv45xx_pci_plat_dev_init(struct pci_dev *dev) 
     369{ 
     370        dev->dev.platform_data = &arv45xx_ath5k_platform_data; 
     371        return 0; 
     372} 
     373*/ 
     374void __init 
     375arv45xx_register_ath5k(void) 
     376{ 
     377#define ARV45XX_BRN_ATH         0x3f0478 
     378        int i; 
     379        unsigned char eeprom_mac[6]; 
     380        static u16 eeprom_data[ATH5K_PLAT_EEP_MAX_WORDS]; 
     381        u32 *p = (u32*)arv45xx_ath5k_eeprom_data; 
     382 
     383        memcpy_fromio(eeprom_mac, 
     384                (void *)KSEG1ADDR(LTQ_FLASH_START + ARV45XX_BRN_MAC), 6); 
     385        eeprom_mac[5]++; 
     386        memcpy_fromio(arv45xx_ath5k_eeprom_data, 
     387                (void *)KSEG1ADDR(LTQ_FLASH_START + ARV45XX_BRN_ATH), ATH5K_PLAT_EEP_MAX_WORDS); 
     388        // swap eeprom bytes 
     389        for (i = 0; i < ATH5K_PLAT_EEP_MAX_WORDS>>1; i++){ 
     390                //arv4518_ath5k_eeprom_data[i] = ((eeprom_data[i]&0xff)<<8)|((eeprom_data[i]&0xff00)>>8); 
     391                p[i] = ((eeprom_data[(i<<1)+1]&0xff)<<24)|((eeprom_data[(i<<1)+1]&0xff00)<<8)|((eeprom_data[i<<1]&0xff)<<8)|((eeprom_data[i<<1]&0xff00)>>8); 
     392                if (i == 0xbf>>1){ 
     393                        // printk ("regdomain: 0x%x --> 0x%x\n", p[i], (p[i] & 0xffff0000)|0x67); 
     394                        /* regdomain is invalid?? how did original fw convert 
     395                        * value to 0x82d4 ?? 
     396                        * for now, force to 0x67 */ 
     397                        p[i] &= 0xffff0000; 
     398                        p[i] |= 0x67; 
     399                } 
     400        } 
     401        arv45xx_ath5k_platform_data.eeprom_data = arv45xx_ath5k_eeprom_data; 
     402        arv45xx_ath5k_platform_data.macaddr = eeprom_mac; 
     403        //lqpci_plat_dev_init = arv45xx_pci_plat_dev_init; 
     404} 
     405 
     406static void __init 
     407arv3527p_init(void) 
     408{ 
     409        ltq_register_gpio_stp(); 
     410        //ltq_add_device_leds_gpio(arv3527p_leds_gpio, ARRAY_SIZE(arv3527p_leds_gpio)); 
     411        ltq_register_nor(&arv45xx_flash_data); 
     412        arv45xx_register_ethernet(); 
     413} 
     414 
     415MIPS_MACHINE(LANTIQ_MACH_ARV3527P, 
     416                        "ARV3527P", 
     417                        "ARV3527P - Arcor Easybox 401", 
     418                        arv3527p_init); 
     419 
     420static void __init 
     421arv4510pw_init(void) 
     422{ 
     423        ltq_register_gpio_stp(); 
     424        ltq_add_device_leds_gpio(-1, ARRAY_SIZE(arv4510pw_leds_gpio), arv4510pw_leds_gpio); 
     425        ltq_register_nor(&arv4510_flash_data); 
     426        ltq_pci_data.irq[12] = (INT_NUM_IM2_IRL0 + 31); 
     427        ltq_pci_data.irq[15] = (INT_NUM_IM0_IRL0 + 26); 
     428        ltq_pci_data.gpio |= PCI_EXIN2 | PCI_REQ2; 
     429        ltq_register_pci(&ltq_pci_data); 
     430        bewan_register_ethernet(); 
     431} 
     432 
     433MIPS_MACHINE(LANTIQ_MACH_ARV4510PW, 
     434                        "ARV4510PW", 
     435                        "ARV4510PW - Wippies Homebox", 
     436                        arv4510pw_init); 
     437 
     438static void __init 
     439arv4518pw_init(void) 
     440{ 
     441#define ARV4518PW_EBU                   0 
     442#define ARV4518PW_USB                   14 
     443#define ARV4518PW_SWITCH_RESET          13 
     444#define ARV4518PW_MADWIFI_ADDR          0xb07f0400 
     445 
     446        ltq_register_gpio_ebu(ARV4518PW_EBU); 
     447        ltq_add_device_leds_gpio(-1, ARRAY_SIZE(arv4518pw_leds_gpio), arv4518pw_leds_gpio); 
     448        ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL, ARRAY_SIZE(arv4518pw_gpio_keys), arv4518pw_gpio_keys); 
     449        ltq_register_nor(&arv45xx_flash_data); 
     450        ltq_pci_data.gpio = PCI_GNT2 | PCI_REQ2; 
     451        ltq_register_pci(&ltq_pci_data); 
     452        ltq_register_madwifi_eep(ARV4518PW_MADWIFI_ADDR); 
     453        xway_register_dwc(ARV4518PW_USB); 
     454        arv45xx_register_ethernet(); 
     455        arv45xx_register_ath5k(); 
     456 
     457        gpio_request(ARV4518PW_SWITCH_RESET, "switch"); 
     458        gpio_direction_output(ARV4518PW_SWITCH_RESET, 1); 
     459        gpio_export(ARV4518PW_SWITCH_RESET, 0); 
     460} 
     461 
     462MIPS_MACHINE(LANTIQ_MACH_ARV4518PW, 
     463                        "ARV4518PW", 
     464                        "ARV4518PW - SMC7908A-ISP, Airties WAV-221", 
     465                        arv4518pw_init); 
     466 
     467static void __init 
     468arv4520pw_init(void) 
     469{ 
     470#define ARV4520PW_EBU                   0x400 
     471#define ARV4520PW_USB                   28 
     472#define ARV4520PW_SWITCH_RESET          82 
     473 
     474        ltq_register_gpio_ebu(ARV4520PW_EBU); 
     475        ltq_add_device_leds_gpio(-1, ARRAY_SIZE(arv4520pw_leds_gpio), arv4520pw_leds_gpio); 
     476        ltq_register_nor(&arv45xx_flash_data); 
     477        ltq_register_pci(&ltq_pci_data); 
     478        ltq_register_tapi(); 
     479        arv45xx_register_ethernet(); 
     480        xway_register_dwc(ARV4520PW_USB); 
     481 
     482        gpio_request(ARV4520PW_SWITCH_RESET, "switch"); 
     483        gpio_set_value(ARV4520PW_SWITCH_RESET, 1); 
     484} 
     485 
     486MIPS_MACHINE(LANTIQ_MACH_ARV4520PW, 
     487                        "ARV4520PW", 
     488                        "ARV4520PW - Airties WAV-281, Arcor A800", 
     489                        arv4520pw_init); 
     490 
     491static void __init 
     492arv452Cpw_init(void) 
     493{ 
     494#define ARV452CPW_EBU                   0x77f 
     495#define ARV452CPW_USB                   28 
     496#define ARV452CPW_RELAY1                31 
     497#define ARV452CPW_RELAY2                79 
     498#define ARV452CPW_SWITCH_RESET          82 
     499#define ARV452CPW_MADWIFI_ADDR          0xb07f0400 
     500 
     501        ltq_register_gpio_ebu(ARV452CPW_EBU); 
     502        ltq_add_device_leds_gpio(-1, ARRAY_SIZE(arv452cpw_leds_gpio), arv452cpw_leds_gpio); 
     503        ltq_register_nor(&arv45xx_flash_data); 
     504        ltq_register_pci(&ltq_pci_data); 
     505        ltq_register_madwifi_eep(ARV452CPW_MADWIFI_ADDR); 
     506        xway_register_dwc(ARV452CPW_USB); 
     507        arv45xx_register_ethernet(); 
     508        arv45xx_register_ath5k(); 
     509 
     510        gpio_request(ARV452CPW_SWITCH_RESET, "switch"); 
     511        gpio_set_value(ARV452CPW_SWITCH_RESET, 1); 
     512        gpio_export(ARV452CPW_SWITCH_RESET, 0); 
     513 
     514        gpio_request(ARV452CPW_RELAY1, "relay1"); 
     515        gpio_direction_output(ARV452CPW_RELAY1, 1); 
     516        gpio_export(ARV452CPW_RELAY1, 0); 
     517 
     518        gpio_request(ARV452CPW_RELAY2, "relay2"); 
     519        gpio_set_value(ARV452CPW_RELAY2, 1); 
     520        gpio_export(ARV452CPW_RELAY2, 0); 
     521} 
     522 
     523MIPS_MACHINE(LANTIQ_MACH_ARV452CPW, 
     524                        "ARV452CPW", 
     525                        "ARV452CPW - Arcor A801", 
     526                        arv452Cpw_init); 
     527 
     528static void __init 
     529arv4525pw_init(void) 
     530{ 
     531#define ARV4525PW_MADWIFI_ADDR  0xb07f0400 
     532 
     533        ltq_add_device_leds_gpio(-1, ARRAY_SIZE(arv4525pw_leds_gpio), arv4525pw_leds_gpio); 
     534        ltq_register_nor(&arv45xx_flash_data); 
     535        ltq_pci_data.clock = PCI_CLOCK_INT; 
     536        ltq_register_pci(&ltq_pci_data); 
     537        ltq_register_madwifi_eep(ARV4525PW_MADWIFI_ADDR); 
     538        ltq_eth_data.mii_mode = PHY_INTERFACE_MODE_MII; 
     539        arv45xx_register_ethernet(); 
     540} 
     541 
     542MIPS_MACHINE(LANTIQ_MACH_ARV4525PW, 
     543                        "ARV4525PW", 
     544                        "ARV4525PW - Speedport W502V", 
     545                        arv4525pw_init); 
     546 
     547static void __init 
     548arv7525pw_init(void) 
     549{ 
     550        ltq_add_device_leds_gpio(-1, ARRAY_SIZE(arv4525pw_leds_gpio), arv4525pw_leds_gpio); 
     551        ltq_register_nor(&arv7525_flash_data); 
     552        ltq_register_pci(&ltq_pci_data); 
     553        ltq_eth_data.mii_mode = PHY_INTERFACE_MODE_MII; 
     554        ltq_register_tapi(); 
     555        arv45xx_register_ethernet(); 
     556} 
     557 
     558MIPS_MACHINE(LANTIQ_MACH_ARV7525PW, 
     559                        "ARV7525PW", 
     560                        "ARV7525PW - Speedport W303V", 
     561                        arv7525pw_init); 
     562 
     563static void __init 
     564arv7518pw_init(void) 
     565{ 
     566#define ARV7518PW_EBU                   0x2 
     567#define ARV7518PW_USB                   14 
     568 
     569        ltq_register_gpio_ebu(ARV7518PW_EBU); 
     570        ltq_add_device_leds_gpio(-1, ARRAY_SIZE(arv7518pw_leds_gpio), arv7518pw_leds_gpio); 
     571        ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL, ARRAY_SIZE(arv7518pw_gpio_keys), arv7518pw_gpio_keys); 
     572        ltq_register_nor(&arv75xx_flash_data); 
     573        ltq_register_pci(&ltq_pci_data); 
     574        ltq_register_tapi(); 
     575        xway_register_dwc(ARV7518PW_USB); 
     576        arv75xx_register_ethernet(); 
     577        //arv7518_register_ath9k(mac); 
     578} 
     579 
     580MIPS_MACHINE(LANTIQ_MACH_ARV7518PW, 
     581                        "ARV7518PW", 
     582                        "ARV7518PW - ASTORIA", 
     583                        arv7518pw_init); 
     584 
     585 
     586static void __init 
     587arv752dpw_init(void) 
     588{ 
     589#define ARV752DPW22_EBU                 0x2 
     590#define ARV752DPW22_USB                 72 
     591#define ARV752DPW22_RELAY               73 
     592        ltq_register_gpio_ebu(ARV752DPW22_EBU); 
     593        ltq_add_device_leds_gpio(-1, ARRAY_SIZE(arv752dpw22_leds_gpio), arv752dpw22_leds_gpio); 
     594        ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL, ARRAY_SIZE(arv752dpw22_gpio_keys), arv752dpw22_gpio_keys); 
     595        ltq_register_nor(&arv75xx_flash_data); 
     596        ltq_register_pci(&ltq_pci_data); 
     597        xway_register_dwc(ARV752DPW22_USB); 
     598        arv75xx_register_ethernet(); 
     599        gpio_request(ARV752DPW22_RELAY, "relay"); 
     600        gpio_set_value(ARV752DPW22_RELAY, 1); 
     601        gpio_export(ARV752DPW22_RELAY, 0); 
     602} 
     603 
     604MIPS_MACHINE(LANTIQ_MACH_ARV752DPW, 
     605                        "ARV752DPW", 
     606                        "ARV752DPW - Arcor A802", 
     607                        arv752dpw_init); 
     608 
     609static void __init 
     610arv752dpw22_init(void) 
     611{ 
     612#define ARV752DPW22_EBU                 0x2 
     613#define ARV752DPW22_USB                 72 
     614#define ARV752DPW22_RELAY               73 
     615 
     616        ltq_register_gpio_ebu(ARV752DPW22_EBU); 
     617        ltq_add_device_leds_gpio(-1, ARRAY_SIZE(arv752dpw22_leds_gpio), arv752dpw22_leds_gpio); 
     618        ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL, ARRAY_SIZE(arv752dpw22_gpio_keys), arv752dpw22_gpio_keys); 
     619        ltq_register_nor(&arv75xx_flash_data); 
     620        ltq_pci_data.irq[15] = (INT_NUM_IM3_IRL0 + 31); 
     621        ltq_pci_data.gpio |= PCI_EXIN1 | PCI_REQ2; 
     622        ltq_register_pci(&ltq_pci_data); 
     623        xway_register_dwc(ARV752DPW22_USB); 
     624        arv75xx_register_ethernet(); 
     625 
     626        gpio_request(ARV752DPW22_RELAY, "relay"); 
     627        gpio_set_value(ARV752DPW22_RELAY, 1); 
     628        gpio_export(ARV752DPW22_RELAY, 0); 
     629} 
     630 
     631MIPS_MACHINE(LANTIQ_MACH_ARV752DPW22, 
     632                        "ARV752DPW22", 
     633                        "ARV752DPW22 - Arcor A803", 
     634                        arv752dpw22_init); 
  • arch/mips/lantiq/machtypes.h

    a b  
    2222        LANTIQ_MACH_EASY98000NAND,      /* Falcon Eval Board, NAND Flash */ 
    2323        LANTIQ_MACH_EASY98020,          /* Falcon Reference Board */ 
    2424        LANTIQ_MACH_95C3AM1,            /* Board 95C3AM1 */ 
     25 
     26        /* Arcadyan */ 
     27        LANTIQ_MACH_ARV3527P,           /* Arcor easybox a401 */ 
     28        LANTIQ_MACH_ARV4510PW,          /* Wippies Homebox */ 
     29        LANTIQ_MACH_ARV4518PW,          /* Airties WAV-221, SMC-7908A-ISP */ 
     30        LANTIQ_MACH_ARV4520PW,          /* Airties WAV-281, Arcor EasyboxA800 */ 
     31        LANTIQ_MACH_ARV452CPW,          /* Arcor EasyboxA801 */ 
     32        LANTIQ_MACH_ARV4525PW,          /* Speedport W502V */ 
     33        LANTIQ_MACH_ARV7525PW,          /* Speedport W303V Typ A */ 
     34        LANTIQ_MACH_ARV752DPW,          /* Arcor easybox a802 */ 
     35        LANTIQ_MACH_ARV752DPW22,        /* Arcor easybox a803 */ 
     36        LANTIQ_MACH_ARV7518PW,          /* ASTORIA */ 
    2537}; 
    2638 
    2739#endif 
Note: See TracBrowser for help on using the repository browser.