Changeset 29119


Ignore:
Timestamp:
2011-11-14T17:09:17+01:00 (4 years ago)
Author:
jow
Message:

[backfire] ar71xx: backport r28295 (#10357)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/backfire/target/linux/ar71xx/files/arch/mips/ar71xx/mach-dir-825-b1.c

    r27785 r29119  
    4545#define DIR825B1_CAL_LOCATION_1                 0x1f665000 
    4646 
    47 #define DIR825B1_MAC_LOCATION_0                 0x2ffa81b8 
    48 #define DIR825B1_MAC_LOCATION_1                 0x2ffa8370 
     47#define DIR825B1_MAC_LOCATION_0                 0x1f66ffa0 
     48#define DIR825B1_MAC_LOCATION_1                 0x1f66ffb4 
    4949 
    5050#ifdef CONFIG_MTD_PARTITIONS 
     
    150150}; 
    151151 
     152static void dir825b1_read_ascii_mac(u8 *dest, unsigned int src_addr, int off) 
     153{ 
     154        int ret; 
     155        u32 add; 
     156        u8 *src = (u8 *)KSEG1ADDR(src_addr); 
     157 
     158        ret = sscanf(src, "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx", 
     159                     &dest[0], &dest[1], &dest[2], 
     160                     &dest[3], &dest[4], &dest[5]); 
     161 
     162        if (ret != ETH_ALEN) { 
     163                memset(dest, 0, ETH_ALEN); 
     164                return; 
     165        } 
     166 
     167        add = (((u32)dest[3]) << 16) + (((u32)dest[4]) << 8) + ((u32)dest[5]); 
     168        add += off; 
     169 
     170        dest[3] = (add >> 16) & 0xFF; 
     171        dest[4] = (add >> 8) & 0xFF; 
     172        dest[5] = add & 0xFF; 
     173} 
     174 
    152175static void __init dir825b1_setup(void) 
    153176{ 
    154         u8 mac[6], i; 
    155  
    156         memcpy(mac, (u8*)KSEG1ADDR(DIR825B1_MAC_LOCATION_1), 6); 
    157         for(i = 5; i >= 3; i--) 
    158                 if(++mac[i] != 0x00) break; 
    159  
    160         ar71xx_set_mac_base(mac); 
     177        u8 mac_base[ETH_ALEN], wmac1[ETH_ALEN], wmac2[ETH_ALEN]; 
     178 
     179        dir825b1_read_ascii_mac(mac_base, DIR825B1_MAC_LOCATION_0, 2); 
     180        dir825b1_read_ascii_mac(wmac1,    DIR825B1_MAC_LOCATION_0, 0); 
     181        dir825b1_read_ascii_mac(wmac2,    DIR825B1_MAC_LOCATION_1, 0); 
     182 
     183        ar71xx_set_mac_base(mac_base); 
    161184 
    162185        ar71xx_add_device_mdio(0x0); 
     
    192215        ap94_pci_setup_wmac_led_pin(1, 5); 
    193216 
    194         ap94_pci_init((u8 *) KSEG1ADDR(DIR825B1_CAL_LOCATION_0), 
    195                       (u8 *) KSEG1ADDR(DIR825B1_MAC_LOCATION_0), 
    196                       (u8 *) KSEG1ADDR(DIR825B1_CAL_LOCATION_1), 
    197                       (u8 *) KSEG1ADDR(DIR825B1_MAC_LOCATION_1)); 
     217        ap94_pci_init((u8 *) KSEG1ADDR(DIR825B1_CAL_LOCATION_0), wmac1, 
     218                      (u8 *) KSEG1ADDR(DIR825B1_CAL_LOCATION_1), wmac2); 
    198219} 
    199220 
Note: See TracChangeset for help on using the changeset viewer.