diff options
author | Steve Glendinning <steve.glendinning@smsc.com> | 2009-03-23 18:17:31 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-03-23 18:17:31 -0400 |
commit | e072b639dc13b06b65be487633dad9bb3d2067d5 (patch) | |
tree | de96136585a21fb6ecab93c006c302351ea54454 /drivers/net/phy/smsc.c | |
parent | 61fa9dcf9329cb92c220f7b656410fbe5e72f933 (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.c | 31 |
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 | ||
162 | static 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 | |||
162 | static int __init smsc_init(void) | 186 | static 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 | ||
212 | err5: | ||
213 | phy_driver_unregister (&lan911x_int_driver); | ||
184 | err4: | 214 | err4: |
185 | phy_driver_unregister (&lan8700_driver); | 215 | phy_driver_unregister (&lan8700_driver); |
186 | err3: | 216 | err3: |
@@ -193,6 +223,7 @@ err1: | |||
193 | 223 | ||
194 | static void __exit smsc_exit(void) | 224 | static 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); |