Changeset 27785


Ignore:
Timestamp:
2011-07-26T18:24:35+02:00 (7 years ago)
Author:
nbd
Message:

backport rtl8366 detection support from trunk

Location:
branches/backfire/target/linux
Files:
1 added
2 deleted
7 edited

Legend:

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

    r25257 r27785  
    1515#include <linux/mtd/partitions.h> 
    1616#include <linux/delay.h> 
    17 #include <linux/rtl8366s.h> 
     17#include <linux/rtl8366.h> 
    1818 
    1919#include <asm/mach-ar71xx/ar71xx.h> 
     
    131131}; 
    132132 
    133 static struct rtl8366s_initval dir825b1_rtl8366s_initvals[] = { 
     133static struct rtl8366_initval dir825b1_rtl8366s_initvals[] = { 
    134134        { .reg = 0x06, .val = 0x0108 }, 
    135135}; 
    136136 
    137 static struct rtl8366s_platform_data dir825b1_rtl8366s_data = { 
     137static struct rtl8366_platform_data dir825b1_rtl8366s_data = { 
    138138        .gpio_sda       = DIR825B1_GPIO_RTL8366_SDA, 
    139139        .gpio_sck       = DIR825B1_GPIO_RTL8366_SCK, 
  • branches/backfire/target/linux/ar71xx/files/arch/mips/ar71xx/mach-tl-wr1043nd.c

    r20358 r27785  
    1212#include <linux/mtd/partitions.h> 
    1313#include <linux/platform_device.h> 
    14 #include <linux/rtl8366rb.h> 
     14#include <linux/rtl8366.h> 
    1515#include <asm/mach-ar71xx/ar71xx.h> 
    1616 
     
    109109}; 
    110110 
    111 static struct rtl8366rb_platform_data tl_wr1043nd_rtl8366rb_data = { 
     111static struct rtl8366_platform_data tl_wr1043nd_rtl8366rb_data = { 
    112112        .gpio_sda        = TL_WR1043ND_GPIO_RTL8366_SDA, 
    113113        .gpio_sck        = TL_WR1043ND_GPIO_RTL8366_SCK, 
  • branches/backfire/target/linux/ar71xx/files/arch/mips/ar71xx/mach-wndr3700.c

    r26116 r27785  
    1414#include <linux/mtd/partitions.h> 
    1515#include <linux/delay.h> 
    16 #include <linux/rtl8366s.h> 
     16#include <linux/rtl8366.h> 
    1717 
    1818#include <asm/mach-ar71xx/ar71xx.h> 
     
    202202}; 
    203203 
    204 static struct rtl8366s_platform_data wndr3700_rtl8366s_data = { 
     204static struct rtl8366_platform_data wndr3700_rtl8366s_data = { 
    205205        .gpio_sda        = WNDR3700_GPIO_RTL8366_SDA, 
    206206        .gpio_sck        = WNDR3700_GPIO_RTL8366_SCK, 
  • branches/backfire/target/linux/ar71xx/files/arch/mips/ar71xx/mach-wzr-hp-g300nh.c

    r20358 r27785  
    1313#include <linux/mtd/partitions.h> 
    1414#include <linux/nxp_74hc153.h> 
    15 #include <linux/rtl8366s.h> 
     15#include <linux/rtl8366.h> 
    1616 
    1717#include <asm/mips_machine.h> 
     
    213213}; 
    214214 
    215 static struct rtl8366s_platform_data wzrhpg300nh_rtl8366s_data = { 
     215static struct rtl8366_platform_data wzrhpg300nh_rtl8366_data = { 
    216216        .gpio_sda        = WZRHPG300NH_GPIO_RTL8366_SDA, 
    217217        .gpio_sck        = WZRHPG300NH_GPIO_RTL8366_SCK, 
     
    222222        .id             = -1, 
    223223        .dev = { 
    224                 .platform_data  = &wzrhpg300nh_rtl8366s_data, 
     224                .platform_data  = &wzrhpg300nh_rtl8366_data, 
     225        } 
     226}; 
     227 
     228static struct platform_device wzrhpg301nh_rtl8366rb_device = { 
     229        .name           = RTL8366RB_DRIVER_NAME, 
     230        .id             = -1, 
     231        .dev = { 
     232                .platform_data  = &wzrhpg300nh_rtl8366_data, 
    225233        } 
    226234}; 
     
    229237{ 
    230238        u8 *eeprom = (u8 *) KSEG1ADDR(0x1fff1000); 
     239        bool hasrtl8366rb = false; 
    231240 
    232241        ar71xx_set_mac_base(eeprom + WZRHPG300NH_MAC_OFFSET); 
    233242 
    234         ar71xx_eth0_pll_data.pll_1000 = 0x1e000100; 
    235         ar71xx_eth0_data.mii_bus_dev = &wzrhpg300nh_rtl8366s_device.dev; 
     243        if (rtl8366_smi_detect(&wzrhpg300nh_rtl8366_data) == RTL8366_TYPE_RB) 
     244                hasrtl8366rb = true; 
     245 
     246        if (hasrtl8366rb) { 
     247                ar71xx_eth0_pll_data.pll_1000 = 0x1f000000; 
     248                ar71xx_eth0_data.mii_bus_dev = &wzrhpg301nh_rtl8366rb_device.dev; 
     249                ar71xx_eth1_pll_data.pll_1000 = 0x100; 
     250                ar71xx_eth1_data.mii_bus_dev = &wzrhpg301nh_rtl8366rb_device.dev; 
     251        } else { 
     252                ar71xx_eth0_pll_data.pll_1000 = 0x1e000100; 
     253                ar71xx_eth0_data.mii_bus_dev = &wzrhpg300nh_rtl8366s_device.dev; 
     254                ar71xx_eth1_pll_data.pll_1000 = 0x1e000100; 
     255                ar71xx_eth1_data.mii_bus_dev = &wzrhpg300nh_rtl8366s_device.dev; 
     256        } 
     257 
    236258        ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII; 
    237259        ar71xx_eth0_data.speed = SPEED_1000; 
    238260        ar71xx_eth0_data.duplex = DUPLEX_FULL; 
    239261 
    240         ar71xx_eth1_pll_data.pll_1000 = 0x1e000100; 
    241         ar71xx_eth1_data.mii_bus_dev = &wzrhpg300nh_rtl8366s_device.dev; 
    242262        ar71xx_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII; 
    243263        ar71xx_eth1_data.phy_mask = 0x10; 
  • branches/backfire/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c

    r24999 r27785  
    1616#include <linux/spinlock.h> 
    1717#include <linux/skbuff.h> 
     18#include <linux/rtl8366.h> 
    1819 
    1920#ifdef CONFIG_RTL8366S_PHY_DEBUG_FS 
     
    11611162EXPORT_SYMBOL_GPL(rtl8366_smi_alloc); 
    11621163 
     1164static int __rtl8366_smi_init(struct rtl8366_smi *smi, const char *name) 
     1165{ 
     1166        int err; 
     1167 
     1168        err = gpio_request(smi->gpio_sda, name); 
     1169        if (err) { 
     1170                printk(KERN_ERR "rtl8366_smi: gpio_request failed for %u, err=%d\n", 
     1171                        smi->gpio_sda, err); 
     1172                goto err_out; 
     1173        } 
     1174 
     1175        err = gpio_request(smi->gpio_sck, name); 
     1176        if (err) { 
     1177                printk(KERN_ERR "rtl8366_smi: gpio_request failed for %u, err=%d\n", 
     1178                        smi->gpio_sck, err); 
     1179                goto err_free_sda; 
     1180        } 
     1181 
     1182        spin_lock_init(&smi->lock); 
     1183        return 0; 
     1184 
     1185 err_free_sda: 
     1186        gpio_free(smi->gpio_sda); 
     1187 err_out: 
     1188        return err; 
     1189} 
     1190 
     1191static void __rtl8366_smi_cleanup(struct rtl8366_smi *smi) 
     1192{ 
     1193        gpio_free(smi->gpio_sck); 
     1194        gpio_free(smi->gpio_sda); 
     1195} 
     1196 
     1197enum rtl8366_type rtl8366_smi_detect(struct rtl8366_platform_data *pdata) 
     1198{ 
     1199        static struct rtl8366_smi smi; 
     1200        enum rtl8366_type type = RTL8366_TYPE_UNKNOWN; 
     1201        u32 reg = 0; 
     1202 
     1203        memset(&smi, 0, sizeof(smi)); 
     1204        smi.gpio_sda = pdata->gpio_sda; 
     1205        smi.gpio_sck = pdata->gpio_sck; 
     1206 
     1207        if (__rtl8366_smi_init(&smi, "rtl8366")) 
     1208                goto out; 
     1209 
     1210        if (rtl8366_smi_read_reg(&smi, 0x5c, &reg)) 
     1211                goto cleanup; 
     1212 
     1213        switch(reg) { 
     1214        case 0x6027: 
     1215                printk("Found an RTL8366S switch\n"); 
     1216                type = RTL8366_TYPE_S; 
     1217                break; 
     1218        case 0x5937: 
     1219                printk("Found an RTL8366RB switch\n"); 
     1220                type = RTL8366_TYPE_RB; 
     1221                break; 
     1222        default: 
     1223                printk("Found an Unknown RTL8366 switch (id=0x%04x)\n", reg); 
     1224                break; 
     1225        } 
     1226 
     1227cleanup: 
     1228        __rtl8366_smi_cleanup(&smi); 
     1229out: 
     1230        return type; 
     1231} 
     1232 
    11631233int rtl8366_smi_init(struct rtl8366_smi *smi) 
    11641234{ 
     
    11681238                return -EINVAL; 
    11691239 
    1170         err = gpio_request(smi->gpio_sda, dev_name(smi->parent)); 
    1171         if (err) { 
    1172                 dev_err(smi->parent, "gpio_request failed for %u, err=%d\n", 
    1173                         smi->gpio_sda, err); 
     1240        err = __rtl8366_smi_init(smi, dev_name(smi->parent)); 
     1241        if (err) 
    11741242                goto err_out; 
    1175         } 
    1176  
    1177         err = gpio_request(smi->gpio_sck, dev_name(smi->parent)); 
    1178         if (err) { 
    1179                 dev_err(smi->parent, "gpio_request failed for %u, err=%d\n", 
    1180                         smi->gpio_sck, err); 
    1181                 goto err_free_sda; 
    1182         } 
    11831243 
    11841244        spin_lock_init(&smi->lock); 
     
    12191279 
    12201280 err_free_sck: 
    1221         gpio_free(smi->gpio_sck); 
    1222  err_free_sda: 
    1223         gpio_free(smi->gpio_sda); 
     1281        __rtl8366_smi_cleanup(smi); 
    12241282 err_out: 
    12251283        return err; 
  • branches/backfire/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c

    r24999 r27785  
    1717#include <linux/delay.h> 
    1818#include <linux/skbuff.h> 
    19 #include <linux/rtl8366rb.h> 
     19#include <linux/rtl8366.h> 
    2020 
    2121#include "rtl8366_smi.h" 
     
    12321232{ 
    12331233        static int rtl8366_smi_version_printed; 
    1234         struct rtl8366rb_platform_data *pdata; 
     1234        struct rtl8366_platform_data *pdata; 
    12351235        struct rtl8366_smi *smi; 
    12361236        int err; 
  • branches/backfire/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c

    r25256 r27785  
    1616#include <linux/delay.h> 
    1717#include <linux/skbuff.h> 
    18 #include <linux/rtl8366s.h> 
     18#include <linux/rtl8366.h> 
    1919 
    2020#include "rtl8366_smi.h" 
     
    252252static int rtl8366s_hw_init(struct rtl8366_smi *smi) 
    253253{ 
    254         struct rtl8366s_platform_data *pdata; 
     254        struct rtl8366_platform_data *pdata; 
    255255        int err; 
    256256 
     
    10611061{ 
    10621062        static int rtl8366_smi_version_printed; 
    1063         struct rtl8366s_platform_data *pdata; 
     1063        struct rtl8366_platform_data *pdata; 
    10641064        struct rtl8366_smi *smi; 
    10651065        int err; 
Note: See TracChangeset for help on using the changeset viewer.