Changeset 21929


Ignore:
Timestamp:
2010-06-26T21:52:55+02:00 (7 years ago)
Author:
juhosg
Message:

backfire: generic: rtl8366: introduce rtl8366_smi_ops (backport of r21910)

Location:
branches/backfire/target/linux/generic-2.6/files/drivers/net/phy
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/backfire/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c

    r19402 r21929  
    273273                return -EINVAL; 
    274274 
     275        if (!smi->ops) 
     276                return -EINVAL; 
     277 
    275278        err = gpio_request(smi->gpio_sda, dev_name(smi->parent)); 
    276279        if (err) { 
     
    292295                 smi->gpio_sda, smi->gpio_sck); 
    293296 
     297        err = smi->ops->detect(smi); 
     298        if (err) { 
     299                dev_err(smi->parent, "chip detection failed, err=%d\n", err); 
     300                goto err_free_sck; 
     301        } 
     302 
    294303        return 0; 
    295304 
     305 err_free_sck: 
     306        gpio_free(smi->gpio_sck); 
    296307 err_free_sda: 
    297308        gpio_free(smi->gpio_sda); 
  • branches/backfire/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h

    r19329 r21929  
    1212#define _RTL8366_SMI_H 
    1313 
     14struct rtl8366_smi_ops; 
     15 
    1416struct rtl8366_smi { 
    1517        struct device           *parent; 
     
    1719        unsigned int            gpio_sck; 
    1820        spinlock_t              lock; 
     21 
     22        struct rtl8366_smi_ops  *ops; 
     23}; 
     24 
     25struct rtl8366_smi_ops { 
     26        int     (*detect)(struct rtl8366_smi *smi); 
    1927}; 
    2028 
  • branches/backfire/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c

    r21928 r21929  
    2727 
    2828#define RTL8366S_DRIVER_DESC    "Realtek RTL8366RB ethernet switch driver" 
    29 #define RTL8366S_DRIVER_VER     "0.2.0" 
     29#define RTL8366S_DRIVER_VER     "0.2.2" 
    3030 
    3131#define RTL8366S_PHY_NO_MAX                 4 
     
    15741574static int rtl8366rb_setup(struct rtl8366rb *rtl) 
    15751575{ 
    1576         struct rtl8366_smi *smi = &rtl->smi; 
     1576        int ret; 
     1577 
     1578        ret = rtl8366rb_reset_chip(rtl); 
     1579        if (ret) 
     1580                return ret; 
     1581 
     1582        rtl8366rb_debugfs_init(rtl); 
     1583        return 0; 
     1584} 
     1585 
     1586static int rtl8366rb_detect(struct rtl8366_smi *smi) 
     1587{ 
    15771588        u32 chip_id = 0; 
    15781589        u32 chip_ver = 0; 
     
    15811592        ret = rtl8366_smi_read_reg(smi, RTL8366S_CHIP_ID_REG, &chip_id); 
    15821593        if (ret) { 
    1583                 dev_err(rtl->parent, "unable to read chip id\n"); 
     1594                dev_err(smi->parent, "unable to read chip id\n"); 
    15841595                return ret; 
    15851596        } 
     
    15891600                break; 
    15901601        default: 
    1591                 dev_err(rtl->parent, "unknown chip id (%04x)\n", chip_id); 
     1602                dev_err(smi->parent, "unknown chip id (%04x)\n", chip_id); 
    15921603                return -ENODEV; 
    15931604        } 
     
    15961607                                   &chip_ver); 
    15971608        if (ret) { 
    1598                 dev_err(rtl->parent, "unable to read chip version\n"); 
     1609                dev_err(smi->parent, "unable to read chip version\n"); 
    15991610                return ret; 
    16001611        } 
    16011612 
    1602         dev_info(rtl->parent, "RTL%04x ver. %u chip found\n", 
     1613        dev_info(smi->parent, "RTL%04x ver. %u chip found\n", 
    16031614                 chip_id, chip_ver & RTL8366S_CHIP_VERSION_MASK); 
    16041615 
    1605         ret = rtl8366rb_reset_chip(rtl); 
    1606         if (ret) 
    1607                 return ret; 
    1608  
    1609         rtl8366rb_debugfs_init(rtl); 
    1610         return 0; 
    1611 } 
     1616        return 0; 
     1617} 
     1618 
     1619static struct rtl8366_smi_ops rtl8366rb_smi_ops = { 
     1620        .detect         = rtl8366rb_detect, 
     1621}; 
    16121622 
    16131623static int __init rtl8366rb_probe(struct platform_device *pdev) 
     
    16431653        smi->gpio_sda = pdata->gpio_sda; 
    16441654        smi->gpio_sck = pdata->gpio_sck; 
     1655        smi->ops = &rtl8366rb_smi_ops; 
    16451656 
    16461657        err = rtl8366_smi_init(smi); 
  • branches/backfire/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c

    r21928 r21929  
    2727 
    2828#define RTL8366S_DRIVER_DESC    "Realtek RTL8366S ethernet switch driver" 
    29 #define RTL8366S_DRIVER_VER     "0.2.1" 
     29#define RTL8366S_DRIVER_VER     "0.2.2" 
    3030 
    3131#define RTL8366S_PHY_NO_MAX                 4 
     
    15431543static int rtl8366s_setup(struct rtl8366s *rtl) 
    15441544{ 
    1545         struct rtl8366_smi *smi = &rtl->smi; 
     1545        int ret; 
     1546 
     1547        ret = rtl8366s_reset_chip(rtl); 
     1548        if (ret) 
     1549                return ret; 
     1550 
     1551        rtl8366s_debugfs_init(rtl); 
     1552        return 0; 
     1553} 
     1554 
     1555static int rtl8366s_detect(struct rtl8366_smi *smi) 
     1556{ 
    15461557        u32 chip_id = 0; 
    15471558        u32 chip_ver = 0; 
     
    15501561        ret = rtl8366_smi_read_reg(smi, RTL8366S_CHIP_ID_REG, &chip_id); 
    15511562        if (ret) { 
    1552                 dev_err(rtl->parent, "unable to read chip id\n"); 
     1563                dev_err(smi->parent, "unable to read chip id\n"); 
    15531564                return ret; 
    15541565        } 
     
    15581569                break; 
    15591570        default: 
    1560                 dev_err(rtl->parent, "unknown chip id (%04x)\n", chip_id); 
     1571                dev_err(smi->parent, "unknown chip id (%04x)\n", chip_id); 
    15611572                return -ENODEV; 
    15621573        } 
     
    15651576                                   &chip_ver); 
    15661577        if (ret) { 
    1567                 dev_err(rtl->parent, "unable to read chip version\n"); 
     1578                dev_err(smi->parent, "unable to read chip version\n"); 
    15681579                return ret; 
    15691580        } 
    15701581 
    1571         dev_info(rtl->parent, "RTL%04x ver. %u chip found\n", 
     1582        dev_info(smi->parent, "RTL%04x ver. %u chip found\n", 
    15721583                 chip_id, chip_ver & RTL8366S_CHIP_VERSION_MASK); 
    15731584 
    1574         ret = rtl8366s_reset_chip(rtl); 
    1575         if (ret) 
    1576                 return ret; 
    1577  
    1578         rtl8366s_debugfs_init(rtl); 
    1579         return 0; 
    1580 } 
     1585        return 0; 
     1586} 
     1587 
     1588static struct rtl8366_smi_ops rtl8366s_smi_ops = { 
     1589        .detect         = rtl8366s_detect, 
     1590}; 
    15811591 
    15821592static int __init rtl8366s_probe(struct platform_device *pdev) 
     
    16121622        smi->gpio_sda = pdata->gpio_sda; 
    16131623        smi->gpio_sck = pdata->gpio_sck; 
     1624        smi->ops = &rtl8366s_smi_ops; 
    16141625 
    16151626        err = rtl8366_smi_init(smi); 
Note: See TracChangeset for help on using the changeset viewer.