aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/phy/smsc.c
diff options
context:
space:
mode:
authorSteve Glendinning <steve.glendinning@smsc.com>2009-03-23 18:17:31 -0400
committerDavid S. Miller <davem@davemloft.net>2009-03-23 18:17:31 -0400
commite072b639dc13b06b65be487633dad9bb3d2067d5 (patch)
treede96136585a21fb6ecab93c006c302351ea54454 /drivers/net/phy/smsc.c
parent61fa9dcf9329cb92c220f7b656410fbe5e72f933 (diff)
phy: add new LAN8710 and LAN8720 device ids to smsc phy driver
LAN8710 and LAN8720 are two new 10/100 ethernet PHY models. The two share the same phy id, this patch adds it to the smsc phy driver. Signed-off-by: Steve Glendinning <steve.glendinning@smsc.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/phy/smsc.c')
-rw-r--r--drivers/net/phy/smsc.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/drivers/net/phy/smsc.c b/drivers/net/phy/smsc.c
index 1387187543e4..5123bb954dd7 100644
--- a/drivers/net/phy/smsc.c
+++ b/drivers/net/phy/smsc.c
@@ -159,6 +159,30 @@ static struct phy_driver lan911x_int_driver = {
159 .driver = { .owner = THIS_MODULE, } 159 .driver = { .owner = THIS_MODULE, }
160}; 160};
161 161
162static struct phy_driver lan8710_driver = {
163 .phy_id = 0x0007c0f0, /* OUI=0x00800f, Model#=0x0f */
164 .phy_id_mask = 0xfffffff0,
165 .name = "SMSC LAN8710/LAN8720",
166
167 .features = (PHY_BASIC_FEATURES | SUPPORTED_Pause
168 | SUPPORTED_Asym_Pause),
169 .flags = PHY_HAS_INTERRUPT | PHY_HAS_MAGICANEG,
170
171 /* basic functions */
172 .config_aneg = genphy_config_aneg,
173 .read_status = genphy_read_status,
174 .config_init = smsc_phy_config_init,
175
176 /* IRQ related */
177 .ack_interrupt = smsc_phy_ack_interrupt,
178 .config_intr = smsc_phy_config_intr,
179
180 .suspend = genphy_suspend,
181 .resume = genphy_resume,
182
183 .driver = { .owner = THIS_MODULE, }
184};
185
162static int __init smsc_init(void) 186static int __init smsc_init(void)
163{ 187{
164 int ret; 188 int ret;
@@ -179,8 +203,14 @@ static int __init smsc_init(void)
179 if (ret) 203 if (ret)
180 goto err4; 204 goto err4;
181 205
206 ret = phy_driver_register (&lan8710_driver);
207 if (ret)
208 goto err5;
209
182 return 0; 210 return 0;
183 211
212err5:
213 phy_driver_unregister (&lan911x_int_driver);
184err4: 214err4:
185 phy_driver_unregister (&lan8700_driver); 215 phy_driver_unregister (&lan8700_driver);
186err3: 216err3:
@@ -193,6 +223,7 @@ err1:
193 223
194static void __exit smsc_exit(void) 224static void __exit smsc_exit(void)
195{ 225{
226 phy_driver_unregister (&lan8710_driver);
196 phy_driver_unregister (&lan911x_int_driver); 227 phy_driver_unregister (&lan911x_int_driver);
197 phy_driver_unregister (&lan8700_driver); 228 phy_driver_unregister (&lan8700_driver);
198 phy_driver_unregister (&lan8187_driver); 229 phy_driver_unregister (&lan8187_driver);