aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/phy/realtek.c88
1 files changed, 37 insertions, 51 deletions
diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c
index fa1d69a38ccf..45483fdfbe06 100644
--- a/drivers/net/phy/realtek.c
+++ b/drivers/net/phy/realtek.c
@@ -64,65 +64,51 @@ static int rtl8211e_config_intr(struct phy_device *phydev)
64 return err; 64 return err;
65} 65}
66 66
67/* RTL8201CP */ 67static struct phy_driver realtek_drvs[] = {
68static struct phy_driver rtl8201cp_driver = { 68 {
69 .phy_id = 0x00008201, 69 .phy_id = 0x00008201,
70 .name = "RTL8201CP Ethernet", 70 .name = "RTL8201CP Ethernet",
71 .phy_id_mask = 0x0000ffff, 71 .phy_id_mask = 0x0000ffff,
72 .features = PHY_BASIC_FEATURES, 72 .features = PHY_BASIC_FEATURES,
73 .flags = PHY_HAS_INTERRUPT, 73 .flags = PHY_HAS_INTERRUPT,
74 .config_aneg = &genphy_config_aneg, 74 .config_aneg = &genphy_config_aneg,
75 .read_status = &genphy_read_status, 75 .read_status = &genphy_read_status,
76 .driver = { .owner = THIS_MODULE,}, 76 .driver = { .owner = THIS_MODULE,},
77}; 77 }, {
78 78 .phy_id = 0x001cc912,
79/* RTL8211B */ 79 .name = "RTL8211B Gigabit Ethernet",
80static struct phy_driver rtl8211b_driver = { 80 .phy_id_mask = 0x001fffff,
81 .phy_id = 0x001cc912, 81 .features = PHY_GBIT_FEATURES,
82 .name = "RTL8211B Gigabit Ethernet", 82 .flags = PHY_HAS_INTERRUPT,
83 .phy_id_mask = 0x001fffff, 83 .config_aneg = &genphy_config_aneg,
84 .features = PHY_GBIT_FEATURES, 84 .read_status = &genphy_read_status,
85 .flags = PHY_HAS_INTERRUPT, 85 .ack_interrupt = &rtl821x_ack_interrupt,
86 .config_aneg = &genphy_config_aneg, 86 .config_intr = &rtl8211b_config_intr,
87 .read_status = &genphy_read_status, 87 .driver = { .owner = THIS_MODULE,},
88 .ack_interrupt = &rtl821x_ack_interrupt, 88 }, {
89 .config_intr = &rtl8211b_config_intr, 89 .phy_id = 0x001cc915,
90 .driver = { .owner = THIS_MODULE,}, 90 .name = "RTL8211E Gigabit Ethernet",
91}; 91 .phy_id_mask = 0x001fffff,
92 92 .features = PHY_GBIT_FEATURES,
93/* RTL8211E */ 93 .flags = PHY_HAS_INTERRUPT,
94static struct phy_driver rtl8211e_driver = { 94 .config_aneg = &genphy_config_aneg,
95 .phy_id = 0x001cc915, 95 .read_status = &genphy_read_status,
96 .name = "RTL8211E Gigabit Ethernet", 96 .ack_interrupt = &rtl821x_ack_interrupt,
97 .phy_id_mask = 0x001fffff, 97 .config_intr = &rtl8211e_config_intr,
98 .features = PHY_GBIT_FEATURES, 98 .suspend = genphy_suspend,
99 .flags = PHY_HAS_INTERRUPT, 99 .resume = genphy_resume,
100 .config_aneg = &genphy_config_aneg, 100 .driver = { .owner = THIS_MODULE,},
101 .read_status = &genphy_read_status, 101 },
102 .ack_interrupt = &rtl821x_ack_interrupt,
103 .config_intr = &rtl8211e_config_intr,
104 .suspend = genphy_suspend,
105 .resume = genphy_resume,
106 .driver = { .owner = THIS_MODULE,},
107}; 102};
108 103
109static int __init realtek_init(void) 104static int __init realtek_init(void)
110{ 105{
111 int ret; 106 return phy_drivers_register(realtek_drvs, ARRAY_SIZE(realtek_drvs));
112
113 ret = phy_driver_register(&rtl8201cp_driver);
114 if (ret < 0)
115 return -ENODEV;
116 ret = phy_driver_register(&rtl8211b_driver);
117 if (ret < 0)
118 return -ENODEV;
119 return phy_driver_register(&rtl8211e_driver);
120} 107}
121 108
122static void __exit realtek_exit(void) 109static void __exit realtek_exit(void)
123{ 110{
124 phy_driver_unregister(&rtl8211b_driver); 111 phy_drivers_unregister(realtek_drvs, ARRAY_SIZE(realtek_drvs));
125 phy_driver_unregister(&rtl8211e_driver);
126} 112}
127 113
128module_init(realtek_init); 114module_init(realtek_init);