Changeset 21930


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

backfire: generic: rtl8366: move mii bus handling to the rtl8366_smi code (backport of r21911)

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

    r21929 r21930  
    1515#include <linux/gpio.h> 
    1616#include <linux/spinlock.h> 
     17#include <linux/skbuff.h> 
    1718 
    1819#include "rtl8366_smi.h" 
     
    266267EXPORT_SYMBOL_GPL(rtl8366_smi_write_reg); 
    267268 
     269static int rtl8366_smi_mii_init(struct rtl8366_smi *smi) 
     270{ 
     271        int ret; 
     272        int i; 
     273 
     274        smi->mii_bus = mdiobus_alloc(); 
     275        if (smi->mii_bus == NULL) { 
     276                ret = -ENOMEM; 
     277                goto err; 
     278        } 
     279 
     280        smi->mii_bus->priv = (void *) smi; 
     281        smi->mii_bus->name = dev_name(smi->parent); 
     282        smi->mii_bus->read = smi->ops->mii_read; 
     283        smi->mii_bus->write = smi->ops->mii_write; 
     284        snprintf(smi->mii_bus->id, MII_BUS_ID_SIZE, "%s", 
     285                 dev_name(smi->parent)); 
     286        smi->mii_bus->parent = smi->parent; 
     287        smi->mii_bus->phy_mask = ~(0x1f); 
     288        smi->mii_bus->irq = smi->mii_irq; 
     289        for (i = 0; i < PHY_MAX_ADDR; i++) 
     290                smi->mii_irq[i] = PHY_POLL; 
     291 
     292        ret = mdiobus_register(smi->mii_bus); 
     293        if (ret) 
     294                goto err_free; 
     295 
     296        return 0; 
     297 
     298 err_free: 
     299        mdiobus_free(smi->mii_bus); 
     300 err: 
     301        return ret; 
     302} 
     303 
     304static void rtl8366_smi_mii_cleanup(struct rtl8366_smi *smi) 
     305{ 
     306        mdiobus_unregister(smi->mii_bus); 
     307        mdiobus_free(smi->mii_bus); 
     308} 
     309 
    268310int rtl8366_smi_init(struct rtl8366_smi *smi) 
    269311{ 
     
    300342                goto err_free_sck; 
    301343        } 
     344 
     345        err = rtl8366_smi_mii_init(smi); 
     346        if (err) 
     347                goto err_free_sck; 
    302348 
    303349        return 0; 
     
    314360void rtl8366_smi_cleanup(struct rtl8366_smi *smi) 
    315361{ 
     362        rtl8366_smi_mii_cleanup(smi); 
    316363        gpio_free(smi->gpio_sck); 
    317364        gpio_free(smi->gpio_sda); 
  • branches/backfire/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h

    r21929 r21930  
    1212#define _RTL8366_SMI_H 
    1313 
     14#include <linux/phy.h> 
     15 
    1416struct rtl8366_smi_ops; 
     17struct mii_bus; 
    1518 
    1619struct rtl8366_smi { 
     
    1922        unsigned int            gpio_sck; 
    2023        spinlock_t              lock; 
     24        struct mii_bus          *mii_bus; 
     25        int                     mii_irq[PHY_MAX_ADDR]; 
    2126 
    2227        struct rtl8366_smi_ops  *ops; 
     
    2530struct rtl8366_smi_ops { 
    2631        int     (*detect)(struct rtl8366_smi *smi); 
     32 
     33        int     (*mii_read)(struct mii_bus *bus, int addr, int reg); 
     34        int     (*mii_write)(struct mii_bus *bus, int addr, int reg, u16 val); 
    2735}; 
    2836 
  • branches/backfire/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c

    r21929 r21930  
    1717#include <linux/skbuff.h> 
    1818#include <linux/switch.h> 
    19 #include <linux/phy.h> 
    2019#include <linux/rtl8366rb.h> 
    2120 
     
    149148        struct device           *parent; 
    150149        struct rtl8366_smi      smi; 
    151         struct mii_bus          *mii_bus; 
    152         int                     mii_irq[PHY_MAX_ADDR]; 
    153150        struct switch_dev       dev; 
    154151        char                    buf[4096]; 
     
    226223}; 
    227224 
     225static inline struct rtl8366rb *smi_to_rtl8366rb(struct rtl8366_smi *smi) 
     226{ 
     227        return container_of(smi, struct rtl8366rb, smi); 
     228} 
     229 
    228230static inline struct rtl8366rb *sw_to_rtl8366rb(struct switch_dev *sw) 
    229231{ 
     
    15011503static int rtl8366rb_mii_read(struct mii_bus *bus, int addr, int reg) 
    15021504{ 
    1503         struct rtl8366rb *rtl = bus->priv; 
     1505        struct rtl8366rb *rtl = smi_to_rtl8366rb(bus->priv); 
    15041506        u32 val = 0; 
    15051507        int err; 
     
    15141516static int rtl8366rb_mii_write(struct mii_bus *bus, int addr, int reg, u16 val) 
    15151517{ 
    1516         struct rtl8366rb *rtl = bus->priv; 
     1518        struct rtl8366rb *rtl = smi_to_rtl8366rb(bus->priv); 
    15171519        u32 t; 
    15181520        int err; 
     
    15231525 
    15241526        return err; 
    1525 } 
    1526  
    1527 static int rtl8366rb_mii_init(struct rtl8366rb *rtl) 
    1528 { 
    1529         int ret; 
    1530         int i; 
    1531  
    1532         rtl->mii_bus = mdiobus_alloc(); 
    1533         if (rtl->mii_bus == NULL) { 
    1534                 ret = -ENOMEM; 
    1535                 goto err; 
    1536         } 
    1537  
    1538         rtl->mii_bus->priv = (void *) rtl; 
    1539         rtl->mii_bus->name = "rtl8366-rtl"; 
    1540         rtl->mii_bus->read = rtl8366rb_mii_read; 
    1541         rtl->mii_bus->write = rtl8366rb_mii_write; 
    1542         snprintf(rtl->mii_bus->id, MII_BUS_ID_SIZE, "%s", 
    1543                  dev_name(rtl->parent)); 
    1544         rtl->mii_bus->parent = rtl->parent; 
    1545         rtl->mii_bus->phy_mask = ~(0x1f); 
    1546         rtl->mii_bus->irq = rtl->mii_irq; 
    1547         for (i = 0; i < PHY_MAX_ADDR; i++) 
    1548                 rtl->mii_irq[i] = PHY_POLL; 
    1549  
    1550         ret = mdiobus_register(rtl->mii_bus); 
    1551         if (ret) 
    1552                 goto err_free; 
    1553  
    1554         return 0; 
    1555  
    1556  err_free: 
    1557         mdiobus_free(rtl->mii_bus); 
    1558  err: 
    1559         return ret; 
    1560 } 
    1561  
    1562 static void rtl8366rb_mii_cleanup(struct rtl8366rb *rtl) 
    1563 { 
    1564         mdiobus_unregister(rtl->mii_bus); 
    1565         mdiobus_free(rtl->mii_bus); 
    15661527} 
    15671528 
     
    16191580static struct rtl8366_smi_ops rtl8366rb_smi_ops = { 
    16201581        .detect         = rtl8366rb_detect, 
     1582        .mii_read       = rtl8366rb_mii_read, 
     1583        .mii_write      = rtl8366rb_mii_write, 
    16211584}; 
    16221585 
     
    16651628                goto err_clear_drvdata; 
    16661629 
    1667         err = rtl8366rb_mii_init(rtl); 
     1630        err = rtl8366rb_switch_init(rtl); 
    16681631        if (err) 
    16691632                goto err_clear_drvdata; 
    16701633 
    1671         err = rtl8366rb_switch_init(rtl); 
    1672         if (err) 
    1673                 goto err_mii_cleanup; 
    1674  
    1675         return 0; 
    1676  
    1677  err_mii_cleanup: 
    1678         rtl8366rb_mii_cleanup(rtl); 
     1634        return 0; 
     1635 
    16791636 err_clear_drvdata: 
    16801637        platform_set_drvdata(pdev, NULL); 
     
    17191676                rtl8366rb_switch_cleanup(rtl); 
    17201677                rtl8366rb_debugfs_remove(rtl); 
    1721                 rtl8366rb_mii_cleanup(rtl); 
    17221678                platform_set_drvdata(pdev, NULL); 
    17231679                rtl8366_smi_cleanup(&rtl->smi); 
  • branches/backfire/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c

    r21929 r21930  
    1717#include <linux/skbuff.h> 
    1818#include <linux/switch.h> 
    19 #include <linux/phy.h> 
    2019#include <linux/rtl8366s.h> 
    2120 
     
    150149        struct device           *parent; 
    151150        struct rtl8366_smi      smi; 
    152         struct mii_bus          *mii_bus; 
    153         int                     mii_irq[PHY_MAX_ADDR]; 
    154151        struct switch_dev       dev; 
    155152        char                    buf[4096]; 
     
    226223}; 
    227224 
     225static inline struct rtl8366s *smi_to_rtl8366s(struct rtl8366_smi *smi) 
     226{ 
     227        return container_of(smi, struct rtl8366s, smi); 
     228} 
     229 
    228230static inline struct rtl8366s *sw_to_rtl8366s(struct switch_dev *sw) 
    229231{ 
     
    14701472static int rtl8366s_mii_read(struct mii_bus *bus, int addr, int reg) 
    14711473{ 
    1472         struct rtl8366s *rtl = bus->priv; 
     1474        struct rtl8366s *rtl = smi_to_rtl8366s(bus->priv); 
    14731475        u32 val = 0; 
    14741476        int err; 
     
    14831485static int rtl8366s_mii_write(struct mii_bus *bus, int addr, int reg, u16 val) 
    14841486{ 
    1485         struct rtl8366s *rtl = bus->priv; 
     1487        struct rtl8366s *rtl = smi_to_rtl8366s(bus->priv); 
    14861488        u32 t; 
    14871489        int err; 
     
    14921494 
    14931495        return err; 
    1494 } 
    1495  
    1496 static int rtl8366s_mii_init(struct rtl8366s *rtl) 
    1497 { 
    1498         int ret; 
    1499         int i; 
    1500  
    1501         rtl->mii_bus = mdiobus_alloc(); 
    1502         if (rtl->mii_bus == NULL) { 
    1503                 ret = -ENOMEM; 
    1504                 goto err; 
    1505         } 
    1506  
    1507         rtl->mii_bus->priv = (void *) rtl; 
    1508         rtl->mii_bus->name = "rtl8366-rtl"; 
    1509         rtl->mii_bus->read = rtl8366s_mii_read; 
    1510         rtl->mii_bus->write = rtl8366s_mii_write; 
    1511         snprintf(rtl->mii_bus->id, MII_BUS_ID_SIZE, "%s", 
    1512                  dev_name(rtl->parent)); 
    1513         rtl->mii_bus->parent = rtl->parent; 
    1514         rtl->mii_bus->phy_mask = ~(0x1f); 
    1515         rtl->mii_bus->irq = rtl->mii_irq; 
    1516         for (i = 0; i < PHY_MAX_ADDR; i++) 
    1517                 rtl->mii_irq[i] = PHY_POLL; 
    1518  
    1519         ret = mdiobus_register(rtl->mii_bus); 
    1520         if (ret) 
    1521                 goto err_free; 
    1522  
    1523         return 0; 
    1524  
    1525  err_free: 
    1526         mdiobus_free(rtl->mii_bus); 
    1527  err: 
    1528         return ret; 
    1529 } 
    1530  
    1531 static void rtl8366s_mii_cleanup(struct rtl8366s *rtl) 
    1532 { 
    1533         mdiobus_unregister(rtl->mii_bus); 
    1534         mdiobus_free(rtl->mii_bus); 
    15351496} 
    15361497 
     
    15881549static struct rtl8366_smi_ops rtl8366s_smi_ops = { 
    15891550        .detect         = rtl8366s_detect, 
     1551        .mii_read       = rtl8366s_mii_read, 
     1552        .mii_write      = rtl8366s_mii_write, 
    15901553}; 
    15911554 
     
    16341597                goto err_clear_drvdata; 
    16351598 
    1636         err = rtl8366s_mii_init(rtl); 
     1599        err = rtl8366s_switch_init(rtl); 
    16371600        if (err) 
    16381601                goto err_clear_drvdata; 
    16391602 
    1640         err = rtl8366s_switch_init(rtl); 
    1641         if (err) 
    1642                 goto err_mii_cleanup; 
    1643  
    1644         return 0; 
    1645  
    1646  err_mii_cleanup: 
    1647         rtl8366s_mii_cleanup(rtl); 
     1603        return 0; 
     1604 
    16481605 err_clear_drvdata: 
    16491606        platform_set_drvdata(pdev, NULL); 
     
    16881645                rtl8366s_switch_cleanup(rtl); 
    16891646                rtl8366s_debugfs_remove(rtl); 
    1690                 rtl8366s_mii_cleanup(rtl); 
    16911647                platform_set_drvdata(pdev, NULL); 
    16921648                rtl8366_smi_cleanup(&rtl->smi); 
Note: See TracChangeset for help on using the changeset viewer.