|
@@ -26,7 +26,6 @@
|
|
|
#define RTL8366RB_PHY_NO_MAX 4
|
|
#define RTL8366RB_PHY_NO_MAX 4
|
|
|
#define RTL8366RB_PHY_PAGE_MAX 7
|
|
#define RTL8366RB_PHY_PAGE_MAX 7
|
|
|
#define RTL8366RB_PHY_ADDR_MAX 31
|
|
#define RTL8366RB_PHY_ADDR_MAX 31
|
|
|
-#define RTL8366RB_PHY_WAN 4
|
|
|
|
|
|
|
|
|
|
/* Switch Global Configuration register */
|
|
/* Switch Global Configuration register */
|
|
|
#define RTL8366RB_SGCR 0x0000
|
|
#define RTL8366RB_SGCR 0x0000
|
|
@@ -1157,12 +1156,6 @@ static int rtl8366rb_mii_write(struct mii_bus *bus, int addr, int reg, u16 val)
|
|
|
return err;
|
|
return err;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-static int rtl8366rb_mii_bus_match(struct mii_bus *bus)
|
|
|
|
|
-{
|
|
|
|
|
- return (bus->read == rtl8366rb_mii_read &&
|
|
|
|
|
- bus->write == rtl8366rb_mii_write);
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
static int rtl8366rb_setup(struct rtl8366_smi *smi)
|
|
static int rtl8366rb_setup(struct rtl8366_smi *smi)
|
|
|
{
|
|
{
|
|
|
int ret;
|
|
int ret;
|
|
@@ -1282,36 +1275,6 @@ static int __devinit rtl8366rb_probe(struct platform_device *pdev)
|
|
|
return err;
|
|
return err;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-static int rtl8366rb_phy_config_init(struct phy_device *phydev)
|
|
|
|
|
-{
|
|
|
|
|
- if (!rtl8366rb_mii_bus_match(phydev->bus))
|
|
|
|
|
- return -EINVAL;
|
|
|
|
|
-
|
|
|
|
|
- return 0;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-static int rtl8366rb_phy_config_aneg(struct phy_device *phydev)
|
|
|
|
|
-{
|
|
|
|
|
- /* phy 4 might be connected to a second mac, allow aneg config */
|
|
|
|
|
- if (phydev->addr == RTL8366RB_PHY_WAN)
|
|
|
|
|
- return genphy_config_aneg(phydev);
|
|
|
|
|
-
|
|
|
|
|
- return 0;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-static struct phy_driver rtl8366rb_phy_driver = {
|
|
|
|
|
- .phy_id = 0x001cc960,
|
|
|
|
|
- .name = "Realtek RTL8366RB",
|
|
|
|
|
- .phy_id_mask = 0x1ffffff0,
|
|
|
|
|
- .features = PHY_GBIT_FEATURES,
|
|
|
|
|
- .config_aneg = rtl8366rb_phy_config_aneg,
|
|
|
|
|
- .config_init = rtl8366rb_phy_config_init,
|
|
|
|
|
- .read_status = genphy_read_status,
|
|
|
|
|
- .driver = {
|
|
|
|
|
- .owner = THIS_MODULE,
|
|
|
|
|
- },
|
|
|
|
|
-};
|
|
|
|
|
-
|
|
|
|
|
static int __devexit rtl8366rb_remove(struct platform_device *pdev)
|
|
static int __devexit rtl8366rb_remove(struct platform_device *pdev)
|
|
|
{
|
|
{
|
|
|
struct rtl8366_smi *smi = platform_get_drvdata(pdev);
|
|
struct rtl8366_smi *smi = platform_get_drvdata(pdev);
|
|
@@ -1337,26 +1300,12 @@ static struct platform_driver rtl8366rb_driver = {
|
|
|
|
|
|
|
|
static int __init rtl8366rb_module_init(void)
|
|
static int __init rtl8366rb_module_init(void)
|
|
|
{
|
|
{
|
|
|
- int ret;
|
|
|
|
|
- ret = platform_driver_register(&rtl8366rb_driver);
|
|
|
|
|
- if (ret)
|
|
|
|
|
- return ret;
|
|
|
|
|
-
|
|
|
|
|
- ret = phy_driver_register(&rtl8366rb_phy_driver);
|
|
|
|
|
- if (ret)
|
|
|
|
|
- goto err_platform_unregister;
|
|
|
|
|
-
|
|
|
|
|
- return 0;
|
|
|
|
|
-
|
|
|
|
|
- err_platform_unregister:
|
|
|
|
|
- platform_driver_unregister(&rtl8366rb_driver);
|
|
|
|
|
- return ret;
|
|
|
|
|
|
|
+ return platform_driver_register(&rtl8366rb_driver);
|
|
|
}
|
|
}
|
|
|
module_init(rtl8366rb_module_init);
|
|
module_init(rtl8366rb_module_init);
|
|
|
|
|
|
|
|
static void __exit rtl8366rb_module_exit(void)
|
|
static void __exit rtl8366rb_module_exit(void)
|
|
|
{
|
|
{
|
|
|
- phy_driver_unregister(&rtl8366rb_phy_driver);
|
|
|
|
|
platform_driver_unregister(&rtl8366rb_driver);
|
|
platform_driver_unregister(&rtl8366rb_driver);
|
|
|
}
|
|
}
|
|
|
module_exit(rtl8366rb_module_exit);
|
|
module_exit(rtl8366rb_module_exit);
|