Ignore:
Timestamp:
2012-03-25T10:50:09+02:00 (4 years ago)
Author:
blogic
Message:

[lantiq] bump kernel to 3.2.12

Location:
trunk/target/linux/lantiq/files-3.2
Files:
5 added
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/lantiq/files-3.2/arch/mips/lantiq/xway/mach-arv.c

    r31059 r31060  
    1818#include <linux/etherdevice.h> 
    1919#include <linux/ath5k_platform.h> 
     20#include <linux/ath9k_platform.h> 
    2021#include <linux/pci.h> 
    2122 
     
    2728#include "../machtypes.h" 
    2829#include "dev-wifi-rt2x00.h" 
    29 #include "dev-wifi-ath5k.h" 
     30#include "dev-wifi-athxk.h" 
    3031#include "devices.h" 
    3132#include "dev-dwc_otg.h" 
    32  
    33 static struct mtd_partition arv4510_partitions[] = 
     33#include "pci-ath-fixup.h" 
     34 
     35static struct mtd_partition arv45xx_brnboot_partitions[] = 
     36{ 
     37        { 
     38                .name   = "brn-boot", 
     39                .offset = 0x0, 
     40                .size   = 0x20000, 
     41        }, 
     42        { 
     43                .name   = "config", 
     44                .offset = 0x20000, 
     45                .size   = 0x30000, 
     46        }, 
     47        { 
     48                .name   = "linux", 
     49                .offset = 0x50000, 
     50                .size   = 0x390000, 
     51        }, 
     52        { 
     53                .name   = "reserved", /* 12-byte signature at 0x3efff4 :/ */ 
     54                .offset = 0x3e0000, 
     55                .size   = 0x010000, 
     56        }, 
     57        { 
     58                .name   = "eeprom", 
     59                .offset = 0x3f0000, 
     60                .size   = 0x10000, 
     61        }, 
     62}; 
     63 
     64static struct mtd_partition arv75xx_brnboot_partitions[] = 
     65{ 
     66        { 
     67                .name   = "brn-boot", 
     68                .offset = 0x0, 
     69                .size   = 0x20000, 
     70        }, 
     71        { 
     72                .name   = "config", 
     73                .offset = 0x20000, 
     74                .size   = 0x40000, 
     75        }, 
     76        { 
     77                .name   = "linux", 
     78                .offset = 0x440000, 
     79                .size   = 0x3a0000, 
     80        }, 
     81        { 
     82                .name   = "reserved", /* 12-byte signature at 0x7efff4 :/ */ 
     83                .offset = 0x7e0000, 
     84                .size   = 0x010000, 
     85        }, 
     86        { 
     87                .name   = "board_config", 
     88                .offset = 0x7f0000, 
     89                .size   = 0x10000, 
     90        }, 
     91}; 
     92 
     93/* 
     94 * this is generic configuration for all arv based boards, note that it can be 
     95 * rewriten in arv_load_nor() 
     96 */ 
     97static struct mtd_partition arv_partitions[] = 
    3498{ 
    3599        { 
     
    41105                .name   = "uboot_env", 
    42106                .offset = 0x20000, 
    43                 .size   = 0x120000, 
    44         }, 
    45         { 
    46                 .name   = "linux", 
    47                 .offset = 0x40000, 
    48                 .size   = 0xfa0000, 
    49         }, 
    50         { 
    51                 .name   = "board_config", 
    52                 .offset = 0xfe0000, 
    53                 .size   = 0x20000, 
    54         }, 
    55 }; 
    56  
    57 static struct mtd_partition arv45xx_partitions[] = 
    58 { 
    59         { 
    60                 .name   = "uboot", 
    61                 .offset = 0x0, 
    62                 .size   = 0x20000, 
    63         }, 
    64         { 
    65                 .name   = "uboot_env", 
    66                 .offset = 0x20000, 
    67107                .size   = 0x10000, 
    68108        }, 
     
    79119}; 
    80120 
    81 static struct mtd_partition arv45xx_brnboot_partitions[] = 
    82 { 
    83         { 
    84                 .name   = "brn-boot", 
    85                 .offset = 0x0, 
    86                 .size   = 0x20000, 
    87         }, 
    88         { 
    89                 .name   = "config", 
    90                 .offset = 0x20000, 
    91                 .size   = 0x30000, 
    92         }, 
    93         { 
    94                 .name   = "linux", 
    95                 .offset = 0x50000, 
    96                 .size   = 0x390000, 
    97         }, 
    98         { 
    99                 .name   = "reserved", /* 12-byte signature at 0x3efff4 :/ */ 
    100                 .offset = 0x3e0000, 
    101                 .size   = 0x010000, 
    102         }, 
    103         { 
    104                 .name   = "eeprom", 
    105                 .offset = 0x3f0000, 
    106                 .size   = 0x10000, 
    107         }, 
    108 }; 
    109  
    110 static struct mtd_partition arv7525_partitions[] = 
    111 { 
    112         { 
    113                 .name   = "uboot", 
    114                 .offset = 0x0, 
    115                 .size   = 0x10000, 
    116         }, 
    117         { 
    118                 .name   = "uboot_env", 
    119                 .offset = 0x10000, 
    120                 .size   = 0x10000, 
    121         }, 
    122         { 
    123                 .name   = "linux", 
    124                 .offset = 0x20000, 
    125                 .size   = 0x3d0000, 
    126         }, 
    127         { 
    128                 .name   = "board_config", 
    129                 .offset = 0x3f0000, 
    130                 .size   = 0x10000, 
    131         }, 
    132 }; 
    133  
    134 static struct mtd_partition arv75xx_partitions[] = 
    135 { 
    136         { 
    137                 .name   = "uboot", 
    138                 .offset = 0x0, 
    139                 .size   = 0x10000, 
    140         }, 
    141         { 
    142                 .name   = "uboot_env", 
    143                 .offset = 0x10000, 
    144                 .size   = 0x10000, 
    145         }, 
    146         { 
    147                 .name   = "linux", 
    148                 .offset = 0x20000, 
    149                 .size   = 0x7d0000, 
    150         }, 
    151         { 
    152                 .name   = "board_config", 
    153                 .offset = 0x7f0000, 
    154                 .size   = 0x10000, 
    155         }, 
    156 }; 
    157  
    158 static struct physmap_flash_data arv4510_flash_data = { 
    159         .nr_parts       = ARRAY_SIZE(arv4510_partitions), 
    160         .parts          = arv4510_partitions, 
    161 }; 
    162  
    163 static struct physmap_flash_data arv45xx_flash_data = { 
    164         .nr_parts       = ARRAY_SIZE(arv45xx_partitions), 
    165         .parts          = arv45xx_partitions, 
    166 }; 
    167  
    168121static struct physmap_flash_data arv45xx_brnboot_flash_data = { 
    169122        .nr_parts       = ARRAY_SIZE(arv45xx_brnboot_partitions), 
     
    171124}; 
    172125 
    173 static struct physmap_flash_data arv7525_flash_data = { 
    174         .nr_parts       = ARRAY_SIZE(arv7525_partitions), 
    175         .parts          = arv7525_partitions, 
    176 }; 
    177  
    178 static struct physmap_flash_data arv75xx_flash_data = { 
    179         .nr_parts       = ARRAY_SIZE(arv75xx_partitions), 
    180         .parts          = arv75xx_partitions, 
    181 }; 
     126static struct physmap_flash_data arv75xx_brnboot_flash_data = { 
     127        .nr_parts       = ARRAY_SIZE(arv75xx_brnboot_partitions), 
     128        .parts          = arv75xx_brnboot_partitions, 
     129}; 
     130 
     131static struct physmap_flash_data arv_flash_data = { 
     132        .nr_parts       = ARRAY_SIZE(arv_partitions), 
     133        .parts          = arv_partitions, 
     134}; 
     135 
     136static void arv_load_nor(unsigned int max) 
     137{ 
     138#define UBOOT_MAGIC     0x27051956 
     139 
     140        int i; 
     141        int sector = -1; 
     142 
     143        if (ltq_brn_boot) { 
     144                if (max == 0x800000) 
     145                        ltq_register_nor(&arv75xx_brnboot_flash_data); 
     146                else 
     147                        ltq_register_nor(&arv45xx_brnboot_flash_data); 
     148                return; 
     149        } 
     150 
     151        for (i = 1; i < 4 && sector < 0; i++) { 
     152                unsigned int uboot_magic; 
     153                memcpy_fromio(&uboot_magic, (void *)KSEG1ADDR(LTQ_FLASH_START) + (i * 0x10000), 4); 
     154                if (uboot_magic == UBOOT_MAGIC) 
     155                        sector = i; 
     156        } 
     157 
     158        if (sector < 0) 
     159                return; 
     160 
     161        arv_partitions[0].size = arv_partitions[1].offset = (sector - 1) * 0x10000; 
     162        arv_partitions[2].offset = arv_partitions[0].size + 0x10000; 
     163        arv_partitions[2].size = max - arv_partitions[2].offset - 0x10000; 
     164        arv_partitions[3].offset = max - 0x10000; 
     165        ltq_register_nor(&arv_flash_data); 
     166} 
    182167 
    183168static struct ltq_pci_data ltq_pci_data = { 
     
    237222                .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL, 
    238223                .gpio           = 29, 
     224                .active_low     = 1, 
     225        }, 
     226}; 
     227 
     228static struct gpio_led 
     229arv4519pw_gpio_leds[] __initdata = { 
     230        { .name = "soc:red:power", .gpio = 7, .active_low = 1, }, 
     231        { .name = "soc:green:power", .gpio = 2, .active_low = 1, .default_trigger = "default-on" }, 
     232        { .name = "soc:green:wifi", .gpio = 6, .active_low = 1, }, 
     233        { .name = "soc:green:adsl", .gpio = 4, .active_low = 1, }, 
     234        { .name = "soc:green:internet", .gpio = 5, .active_low = 1, }, 
     235        { .name = "soc:red:internet", .gpio = 8, .active_low = 1, }, 
     236        { .name = "soc:green:voip", .gpio = 100, .active_low = 1, }, 
     237        { .name = "soc:green:phone1", .gpio = 101, .active_low = 1, }, 
     238        { .name = "soc:green:phone2", .gpio = 102, .active_low = 1, }, 
     239        { .name = "soc:green:fxo", .gpio = 103, .active_low = 1, }, 
     240        { .name = "soc:green:usb", .gpio = 19, .active_low = 1, }, 
     241        { .name = "soc:orange:wps", .gpio = 104, .active_low = 1, }, 
     242        { .name = "soc:green:wps", .gpio = 105, .active_low = 1, }, 
     243        { .name = "soc:red:wps", .gpio = 106, .active_low = 1, }, 
     244 
     245}; 
     246 
     247static struct gpio_keys_button 
     248arv4519pw_gpio_keys[] __initdata = { 
     249        { 
     250                .desc           = "reset", 
     251                .type           = EV_KEY, 
     252                .code           = BTN_1, 
     253                .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL, 
     254                .gpio           = 30, 
     255                .active_low     = 1, 
     256        }, 
     257        { 
     258                .desc           = "wlan", 
     259                .type           = EV_KEY, 
     260                .code           = BTN_2, 
     261                .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL, 
     262                .gpio           = 28, 
    239263                .active_low     = 1, 
    240264        }, 
     
    286310}; 
    287311 
    288 #define ARV4525PW_PHYRESET 13 
    289 #define ARV4525PW_RELAY    31 
     312#define ARV4525PW_PHYRESET      13 
     313#define ARV4525PW_RELAY         31 
    290314 
    291315static struct gpio arv4525pw_gpios[] __initdata = { 
     
    333357        }, 
    334358        { 
    335                 .desc           = "btn2", 
    336                 .type           = EV_KEY, 
    337                 .code           = BTN_2, 
    338                 .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL, 
    339                 .gpio           = 28, 
    340                 .active_low     = 1, 
     359                .desc           = "btn2", 
     360                .type           = EV_KEY, 
     361                .code           = BTN_2, 
     362                .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL, 
     363                .gpio           = 28, 
     364                .active_low     = 1, 
    341365        }, 
    342366}; 
     
    344368static struct gpio_led 
    345369arv7518pw_gpio_leds[] __initdata = { 
    346         { .name = "soc:green:power", .gpio = 2, .active_low = 1, }, 
     370        { .name = "soc:red:power", .gpio = 7, .active_low = 1, }, 
     371        { .name = "soc:green:power", .gpio = 2, .active_low = 1, .default_trigger = "default-on" }, 
     372        { .name = "soc:green:wifi", .gpio = 6, .active_low = 1, }, 
    347373        { .name = "soc:green:adsl", .gpio = 4, .active_low = 1, }, 
    348374        { .name = "soc:green:internet", .gpio = 5, .active_low = 1, }, 
    349         { .name = "soc:green:wifi", .gpio = 6, .active_low = 1, }, 
    350375        { .name = "soc:red:internet", .gpio = 8, .active_low = 1, }, 
     376        { .name = "soc:green:voip", .gpio = 100, .active_low = 1, }, 
     377        { .name = "soc:green:phone1", .gpio = 101, .active_low = 1, }, 
     378        { .name = "soc:green:phone2", .gpio = 102, .active_low = 1, }, 
     379        { .name = "soc:orange:fail", .gpio = 103, .active_low = 1, }, 
    351380        { .name = "soc:green:usb", .gpio = 19, .active_low = 1, }, 
     381        { .name = "soc:orange:wps", .gpio = 104, .active_low = 1, }, 
     382        { .name = "soc:green:wps", .gpio = 105, .active_low = 1, }, 
     383        { .name = "soc:red:wps", .gpio = 106, .active_low = 1, }, 
     384 
    352385}; 
    353386 
    354387static struct gpio_keys_button 
    355388arv7518pw_gpio_keys[] __initdata = { 
    356         { 
     389        /*{ 
    357390                .desc           = "reset", 
    358391                .type           = EV_KEY, 
    359                 .code           = BTN_0, 
     392                .code           = BTN_1, 
    360393                .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL, 
    361394                .gpio           = 23, 
    362395                .active_low     = 1, 
    363         }, 
     396        },*/ 
    364397        { 
    365398                .desc           = "wifi", 
    366399                .type           = EV_KEY, 
    367                 .code           = BTN_1, 
     400                .code           = BTN_2, 
    368401                .debounce_interval = LTQ_KEYS_DEBOUNCE_INTERVAL, 
    369402                .gpio           = 25, 
     
    385418 
    386419static void 
    387 arv45xx_register_ethernet(void) 
    388 { 
    389 #define ARV45XX_BRN_MAC                 0x3f0016 
     420arv_register_ethernet(unsigned int mac_addr) 
     421{ 
    390422        memcpy_fromio(&ltq_eth_data.mac.sa_data, 
    391                 (void *)KSEG1ADDR(LTQ_FLASH_START + ARV45XX_BRN_MAC), 6); 
     423                (void *)KSEG1ADDR(LTQ_FLASH_START + mac_addr), 6); 
    392424        ltq_register_etop(&ltq_eth_data); 
    393425} 
    394426 
    395 static void 
    396 arv75xx_register_ethernet(void) 
    397 { 
    398 #define ARV75XX_BRN_MAC                 0x7f0016 
    399         memcpy_fromio(&ltq_eth_data.mac.sa_data, 
    400                 (void *)KSEG1ADDR(LTQ_FLASH_START + ARV75XX_BRN_MAC), 6); 
    401         ltq_register_etop(&ltq_eth_data); 
    402 } 
    403  
    404 static void 
    405 bewan_register_ethernet(void) 
    406 { 
    407 #define BEWAN_BRN_MAC                   0x3f0014 
    408         memcpy_fromio(&ltq_eth_data.mac.sa_data, 
    409                 (void *)KSEG1ADDR(LTQ_FLASH_START + BEWAN_BRN_MAC), 6); 
    410         ltq_register_etop(&ltq_eth_data); 
    411 } 
    412  
    413 static u16 arv45xx_ath5k_eeprom_data[ATH5K_PLAT_EEP_MAX_WORDS]; 
    414 static u8 arv45xx_ath5k_eeprom_mac[6]; 
     427static u16 arv_ath5k_eeprom_data[ATH5K_PLAT_EEP_MAX_WORDS]; 
     428static u16 arv_ath9k_eeprom_data[ATH9K_PLAT_EEP_MAX_WORDS]; 
     429static u8 arv_athxk_eeprom_mac[6]; 
    415430 
    416431void __init 
    417 arv45xx_register_ath5k(void) 
    418 { 
    419 #define ARV45XX_BRN_ATH         0x3f0478 
     432arv_register_ath5k(unsigned int ath_addr, unsigned int mac_addr) 
     433{ 
    420434        int i; 
    421         static u16 eeprom_data[ATH5K_PLAT_EEP_MAX_WORDS]; 
    422         u32 *p = (u32*)arv45xx_ath5k_eeprom_data; 
    423  
    424         memcpy_fromio(arv45xx_ath5k_eeprom_mac, 
    425                 (void *)KSEG1ADDR(LTQ_FLASH_START + ARV45XX_BRN_MAC), 6); 
    426         arv45xx_ath5k_eeprom_mac[5]++; 
    427         memcpy_fromio(arv45xx_ath5k_eeprom_data, 
    428                 (void *)KSEG1ADDR(LTQ_FLASH_START + ARV45XX_BRN_ATH), ATH5K_PLAT_EEP_MAX_WORDS); 
     435 
     436        memcpy_fromio(arv_athxk_eeprom_mac, 
     437                (void *)KSEG1ADDR(LTQ_FLASH_START + mac_addr), 6); 
     438        arv_athxk_eeprom_mac[5]++; 
     439        memcpy_fromio(arv_ath5k_eeprom_data, 
     440                (void *)KSEG1ADDR(LTQ_FLASH_START + ath_addr), ATH5K_PLAT_EEP_MAX_WORDS); 
    429441        // swap eeprom bytes 
    430         for (i = 0; i < ATH5K_PLAT_EEP_MAX_WORDS>>1; i++){ 
    431                 //arv4518_ath5k_eeprom_data[i] = ((eeprom_data[i]&0xff)<<8)|((eeprom_data[i]&0xff00)>>8); 
    432                 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); 
    433                 if (i == 0xbf>>1){ 
    434                         // printk ("regdomain: 0x%x --> 0x%x\n", p[i], (p[i] & 0xffff0000)|0x67); 
    435                         /* regdomain is invalid?? how did original fw convert  
    436                         * value to 0x82d4 ?? 
    437                         * for now, force to 0x67 */ 
    438                         p[i] &= 0xffff0000; 
    439                         p[i] |= 0x67; 
     442        for (i = 0; i < ATH5K_PLAT_EEP_MAX_WORDS>>1; i++) { 
     443                arv_ath5k_eeprom_data[i] = swab16(arv_ath5k_eeprom_data[i]); 
     444                if (i == 0x17e>>1) { 
     445                        /* 
     446                         * regdomain is invalid. it's unknown how did original 
     447                         * fw convered value to 0x82d4 so for now force to 0x67 
     448                         */ 
     449                        arv_ath5k_eeprom_data[i] &= 0x0000; 
     450                        arv_ath5k_eeprom_data[i] |= 0x67; 
    440451                } 
    441452        } 
    442453} 
    443454 
     455void __init 
     456arv_register_ath9k(unsigned int ath_addr, unsigned int mac_addr) 
     457{ 
     458        int i; 
     459        u16 *eepdata, sum, el; 
     460 
     461        memcpy_fromio(arv_athxk_eeprom_mac, 
     462                (void *)KSEG1ADDR(LTQ_FLASH_START + mac_addr), 6); 
     463        arv_athxk_eeprom_mac[5]++; 
     464        memcpy_fromio(arv_ath9k_eeprom_data, 
     465                (void *)KSEG1ADDR(LTQ_FLASH_START + ath_addr), ATH9K_PLAT_EEP_MAX_WORDS); 
     466 
     467        // force regdomain to 0x67 
     468        arv_ath9k_eeprom_data[0x208>>1] = 0x67; 
     469 
     470        // calculate new checksum 
     471        sum = arv_ath9k_eeprom_data[0x200>>1]; 
     472        el = sum / sizeof(u16) - 2;  /* skip length and (old) checksum */ 
     473        eepdata = (u16 *) (&arv_ath9k_eeprom_data[0x204>>1]); /* after checksum */ 
     474        for (i = 0; i < el; i++) 
     475                sum ^= *eepdata++; 
     476        sum ^= 0xffff; 
     477        arv_ath9k_eeprom_data[0x202>>1] = sum; 
     478} 
     479 
    444480static void __init 
    445481arv3527p_init(void) 
    446482{ 
     483#define ARV3527P_MAC_ADDR               0x3f0016 
     484 
    447485        ltq_register_gpio_stp(); 
    448486        //ltq_add_device_gpio_leds(arv3527p_gpio_leds, ARRAY_SIZE(arv3527p_gpio_leds)); 
    449         ltq_register_nor(&arv45xx_flash_data); 
    450         arv45xx_register_ethernet(); 
     487        arv_load_nor(0x400000); 
     488        arv_register_ethernet(ARV3527P_MAC_ADDR); 
    451489} 
    452490 
     
    459497arv4510pw_init(void) 
    460498{ 
     499#define ARV4510PW_MAC_ADDR              0x3f0014 
     500 
    461501        ltq_register_gpio_stp(); 
    462502        ltq_add_device_gpio_leds(-1, ARRAY_SIZE(arv4510pw_gpio_leds), arv4510pw_gpio_leds); 
    463         ltq_register_nor(&arv4510_flash_data); 
     503        arv_load_nor(0x400000); 
    464504        ltq_pci_data.irq[12] = (INT_NUM_IM2_IRL0 + 31); 
    465505        ltq_pci_data.irq[15] = (INT_NUM_IM0_IRL0 + 26); 
    466506        ltq_pci_data.gpio |= PCI_EXIN2 | PCI_REQ2; 
    467507        ltq_register_pci(&ltq_pci_data); 
    468         bewan_register_ethernet(); 
     508        arv_register_ethernet(ARV4510PW_MAC_ADDR); 
    469509} 
    470510 
     
    480520#define ARV4518PW_USB                   14 
    481521#define ARV4518PW_SWITCH_RESET          13 
    482 #define ARV4518PW_MADWIFI_ADDR          0xb07f0400 
     522#define ARV4518PW_ATH_ADDR              0x3f0400 
     523#define ARV4518PW_MADWIFI_ADDR          0xb03f0400 
     524#define ARV4518PW_MAC_ADDR              0x3f0016 
    483525 
    484526        ltq_register_gpio_ebu(ARV4518PW_EBU); 
     
    486528        ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL, 
    487529                                ARRAY_SIZE(arv4518pw_gpio_keys), arv4518pw_gpio_keys); 
    488         ltq_register_nor(&arv45xx_flash_data); 
     530        arv_load_nor(0x400000); 
    489531        ltq_pci_data.gpio = PCI_GNT2 | PCI_REQ2; 
    490532        ltq_register_pci(&ltq_pci_data); 
    491         ltq_register_madwifi_eep(ARV4518PW_MADWIFI_ADDR); 
    492         ltq_register_ath5k(arv45xx_ath5k_eeprom_data, arv45xx_ath5k_eeprom_mac); 
    493533        xway_register_dwc(ARV4518PW_USB); 
    494         arv45xx_register_ethernet(); 
     534        arv_register_ethernet(ARV4518PW_MAC_ADDR); 
     535        arv_register_ath5k(ARV4518PW_ATH_ADDR, ARV4518PW_MAC_ADDR); 
     536        ltq_register_ath5k(arv_ath5k_eeprom_data, arv_athxk_eeprom_mac); 
    495537 
    496538        gpio_request(ARV4518PW_SWITCH_RESET, "switch"); 
     
    505547 
    506548static void __init 
     549arv4519pw_init(void) 
     550{ 
     551#define ARV4519PW_EBU                   0 
     552#define ARV4519PW_USB                   14 
     553#define ARV4519PW_RELAY                 31 
     554#define ARV4519PW_SWITCH_RESET          13 
     555#define ARV4519PW_ATH_ADDR              0x3f0400 
     556#define ARV4519PW_MAC_ADDR              0x3f0016 
     557 
     558        arv_load_nor(0x400000); 
     559        ltq_register_gpio_ebu(ARV4519PW_EBU); 
     560        ltq_add_device_gpio_leds(-1, ARRAY_SIZE(arv4519pw_gpio_leds), arv4519pw_gpio_leds); 
     561        ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL, 
     562                                ARRAY_SIZE(arv4519pw_gpio_keys), arv4519pw_gpio_keys); 
     563        ltq_pci_data.gpio = PCI_GNT2 | PCI_REQ1; 
     564        ltq_register_pci(&ltq_pci_data); 
     565        xway_register_dwc(ARV4519PW_USB); 
     566        arv_register_ethernet(ARV4519PW_MAC_ADDR); 
     567        arv_register_ath5k(ARV4519PW_ATH_ADDR, ARV4519PW_MAC_ADDR); 
     568        ltq_register_ath5k(arv_ath5k_eeprom_data, arv_athxk_eeprom_mac); 
     569 
     570        gpio_request(ARV4519PW_RELAY, "relay"); 
     571        gpio_direction_output(ARV4519PW_RELAY, 1); 
     572        gpio_export(ARV4519PW_RELAY, 0); 
     573 
     574        gpio_request(ARV4519PW_SWITCH_RESET, "switch"); 
     575        gpio_set_value(ARV4519PW_SWITCH_RESET, 1); 
     576        gpio_export(ARV4519PW_SWITCH_RESET, 0); 
     577} 
     578 
     579MIPS_MACHINE(LANTIQ_MACH_ARV4519PW, 
     580                        "ARV4519PW", 
     581                        "ARV4519PW - Vodafone, Pirelli", 
     582                        arv4519pw_init); 
     583 
     584static void __init 
    507585arv4520pw_init(void) 
    508586{ 
     
    510588#define ARV4520PW_USB                   28 
    511589#define ARV4520PW_SWITCH_RESET          110 
     590#define ARV4520PW_MAC_ADDR              0x3f0016 
    512591 
    513592        ltq_register_gpio_ebu(ARV4520PW_EBU); 
    514593        ltq_add_device_gpio_leds(-1, ARRAY_SIZE(arv4520pw_gpio_leds), arv4520pw_gpio_leds); 
    515         ltq_register_nor(&arv45xx_flash_data); 
     594        arv_load_nor(0x400000); 
    516595        ltq_register_pci(&ltq_pci_data); 
    517596        ltq_register_tapi(); 
    518         arv45xx_register_ethernet(); 
     597        arv_register_ethernet(ARV4520PW_MAC_ADDR); 
    519598        xway_register_dwc(ARV4520PW_USB); 
    520599 
     
    536615#define ARV452CPW_RELAY2                107 
    537616#define ARV452CPW_SWITCH_RESET          110 
    538 #define ARV452CPW_MADWIFI_ADDR          0xb07f0400 
     617#define ARV452CPW_ATH_ADDR              0x3f0400 
     618#define ARV452CPW_MADWIFI_ADDR          0xb03f0400 
     619#define ARV452CPW_MAC_ADDR              0x3f0016 
    539620 
    540621        ltq_register_gpio_ebu(ARV452CPW_EBU); 
    541622        ltq_add_device_gpio_leds(-1, ARRAY_SIZE(arv452cpw_gpio_leds), arv452cpw_gpio_leds); 
    542         ltq_register_nor(&arv45xx_flash_data); 
    543         ltq_register_pci(&ltq_pci_data); 
    544         ltq_register_madwifi_eep(ARV452CPW_MADWIFI_ADDR); 
     623        arv_load_nor(0x400000); 
     624        ltq_register_pci(&ltq_pci_data); 
    545625        xway_register_dwc(ARV452CPW_USB); 
    546         arv45xx_register_ethernet(); 
    547         arv45xx_register_ath5k(); 
     626        arv_register_ethernet(ARV452CPW_MAC_ADDR); 
     627        arv_register_ath5k(ARV452CPW_ATH_ADDR, ARV452CPW_MAC_ADDR); 
     628        ltq_register_ath5k(arv_ath5k_eeprom_data, arv_athxk_eeprom_mac); 
    548629 
    549630        gpio_request(ARV452CPW_SWITCH_RESET, "switch"); 
     
    568649arv4525pw_init(void) 
    569650{ 
     651#define ARV4525PW_ATH_ADDR              0x3f0400 
    570652#define ARV4525PW_MADWIFI_ADDR          0xb03f0400 
    571         if (ltq_brn_boot) 
    572                 ltq_register_nor(&arv45xx_brnboot_flash_data); 
    573         else 
    574                 ltq_register_nor(&arv45xx_flash_data); 
    575  
     653#define ARV4525PW_MAC_ADDR              0x3f0016 
     654 
     655        arv_load_nor(0x400000); 
    576656        ltq_add_device_gpio_leds(-1, ARRAY_SIZE(arv4525pw_gpio_leds), arv4525pw_gpio_leds); 
    577657        gpio_request_array(arv4525pw_gpios, ARRAY_SIZE(arv4525pw_gpios)); 
     
    580660        ltq_pci_data.clock = PCI_CLOCK_INT; 
    581661        ltq_register_pci(&ltq_pci_data); 
    582         ltq_register_madwifi_eep(ARV4525PW_MADWIFI_ADDR); 
    583         arv45xx_register_ath5k(); 
    584         ltq_register_ath5k(arv45xx_ath5k_eeprom_data, arv45xx_ath5k_eeprom_mac); 
     662        arv_register_ath5k(ARV4525PW_ATH_ADDR, ARV4525PW_MADWIFI_ADDR); 
     663        ltq_register_ath5k(arv_ath5k_eeprom_data, arv_athxk_eeprom_mac); 
    585664        ltq_eth_data.mii_mode = PHY_INTERFACE_MODE_MII; 
    586         arv45xx_register_ethernet(); 
     665        arv_register_ethernet(ARV4525PW_MAC_ADDR); 
    587666} 
    588667 
     
    595674arv7525pw_init(void) 
    596675{ 
     676#define ARV7525P_MAC_ADDR       0x3f0016 
     677 
     678        arv_load_nor(0x400000); 
    597679        ltq_add_device_gpio_leds(-1, ARRAY_SIZE(arv4525pw_gpio_leds), arv4525pw_gpio_leds); 
    598         ltq_register_nor(&arv7525_flash_data); 
    599680        ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL, 
    600681                                ARRAY_SIZE(arv7525pw_gpio_keys), arv7525pw_gpio_keys); 
     
    606687        ltq_register_rt2x00("RT2860.eeprom"); 
    607688        ltq_register_tapi(); 
    608         arv45xx_register_ethernet(); 
     689        arv_register_ethernet(ARV7525P_MAC_ADDR); 
    609690} 
    610691 
     
    619700#define ARV7518PW_EBU                   0x2 
    620701#define ARV7518PW_USB                   14 
    621  
     702#define ARV7518PW_SWITCH_RESET          13 
     703#define ARV7518PW_ATH_ADDR              0x7f0400 
     704#define ARV7518PW_MAC_ADDR              0x7f0016 
     705 
     706        arv_load_nor(0x800000); 
    622707        ltq_register_gpio_ebu(ARV7518PW_EBU); 
    623708        ltq_add_device_gpio_leds(-1, ARRAY_SIZE(arv7518pw_gpio_leds), arv7518pw_gpio_leds); 
    624709        ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL, 
    625710                                ARRAY_SIZE(arv7518pw_gpio_keys), arv7518pw_gpio_keys); 
    626         ltq_register_nor(&arv75xx_flash_data); 
    627711        ltq_register_pci(&ltq_pci_data); 
    628712        ltq_register_tapi(); 
    629713        xway_register_dwc(ARV7518PW_USB); 
    630         arv75xx_register_ethernet(); 
    631         //arv7518_register_ath9k(mac); 
     714        arv_register_ethernet(ARV7518PW_MAC_ADDR); 
     715        arv_register_ath9k(ARV7518PW_ATH_ADDR, ARV7518PW_MAC_ADDR); 
     716        ltq_register_ath9k(arv_ath9k_eeprom_data, arv_athxk_eeprom_mac); 
     717        ltq_pci_ath_fixup(14, arv_ath9k_eeprom_data); 
     718 
     719        gpio_request(ARV7518PW_SWITCH_RESET, "switch"); 
     720        gpio_direction_output(ARV7518PW_SWITCH_RESET, 1); 
     721        gpio_export(ARV7518PW_SWITCH_RESET, 0); 
    632722} 
    633723 
     
    643733#define ARV752DPW22_USB                 100 
    644734#define ARV752DPW22_RELAY               101 
    645  
     735#define ARV752DPW22_MAC_ADDR            0x7f0016 
     736 
     737        arv_load_nor(0x800000); 
    646738        ltq_register_gpio_ebu(ARV752DPW22_EBU); 
    647739        ltq_add_device_gpio_leds(-1, ARRAY_SIZE(arv752dpw22_gpio_leds), arv752dpw22_gpio_leds); 
    648740        ltq_register_gpio_keys_polled(-1, LTQ_KEYS_POLL_INTERVAL, 
    649741                                ARRAY_SIZE(arv752dpw22_gpio_keys), arv752dpw22_gpio_keys); 
    650         ltq_register_nor(&arv75xx_flash_data); 
    651742        ltq_pci_data.irq[15] = (INT_NUM_IM3_IRL0 + 31); 
    652743        ltq_pci_data.gpio |= PCI_EXIN1 | PCI_REQ2; 
    653744        ltq_register_pci(&ltq_pci_data); 
    654745        xway_register_dwc(ARV752DPW22_USB); 
    655         arv75xx_register_ethernet(); 
     746        arv_register_ethernet(ARV752DPW22_MAC_ADDR); 
    656747 
    657748        gpio_request(ARV752DPW22_RELAY, "relay"); 
Note: See TracChangeset for help on using the changeset viewer.