diff options
author | Kim Phillips <kim.phillips@freescale.com> | 2006-06-28 22:13:23 -0400 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2006-07-05 14:07:14 -0400 |
commit | 0c639b31068e8e111ec330a3634d95e20c11aab6 (patch) | |
tree | d3fe1de937067552cdba4d656c3a4a02311929a6 /drivers/net/phy | |
parent | c9a4b35df9a5e24065e2dd80aa18a381da62339d (diff) |
[PATCH] Add support for the Cicada 8201 PHY
Add support for the Cicada 8201 PHY, a.k.a Vitesse VSC8201. This PHY is present on the MPC8349mITX.
Signed-off-by: Kim Phillips <kim.phillips@freescale.com>
Signed-off-by: Andy Fleming <afleming@freescale.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/net/phy')
-rw-r--r-- | drivers/net/phy/cicada.c | 42 |
1 files changed, 36 insertions, 6 deletions
diff --git a/drivers/net/phy/cicada.c b/drivers/net/phy/cicada.c index 3efb715c28dc..ae60e6e4107c 100644 --- a/drivers/net/phy/cicada.c +++ b/drivers/net/phy/cicada.c | |||
@@ -103,7 +103,22 @@ static int cis820x_config_intr(struct phy_device *phydev) | |||
103 | return err; | 103 | return err; |
104 | } | 104 | } |
105 | 105 | ||
106 | /* Cicada 820x */ | 106 | /* Cicada 8201, a.k.a Vitesse VSC8201 */ |
107 | static struct phy_driver cis8201_driver = { | ||
108 | .phy_id = 0x000fc410, | ||
109 | .name = "Cicada Cis8201", | ||
110 | .phy_id_mask = 0x000ffff0, | ||
111 | .features = PHY_GBIT_FEATURES, | ||
112 | .flags = PHY_HAS_INTERRUPT, | ||
113 | .config_init = &cis820x_config_init, | ||
114 | .config_aneg = &genphy_config_aneg, | ||
115 | .read_status = &genphy_read_status, | ||
116 | .ack_interrupt = &cis820x_ack_interrupt, | ||
117 | .config_intr = &cis820x_config_intr, | ||
118 | .driver = { .owner = THIS_MODULE,}, | ||
119 | }; | ||
120 | |||
121 | /* Cicada 8204 */ | ||
107 | static struct phy_driver cis8204_driver = { | 122 | static struct phy_driver cis8204_driver = { |
108 | .phy_id = 0x000fc440, | 123 | .phy_id = 0x000fc440, |
109 | .name = "Cicada Cis8204", | 124 | .name = "Cicada Cis8204", |
@@ -118,15 +133,30 @@ static struct phy_driver cis8204_driver = { | |||
118 | .driver = { .owner = THIS_MODULE,}, | 133 | .driver = { .owner = THIS_MODULE,}, |
119 | }; | 134 | }; |
120 | 135 | ||
121 | static int __init cis8204_init(void) | 136 | static int __init cicada_init(void) |
122 | { | 137 | { |
123 | return phy_driver_register(&cis8204_driver); | 138 | int ret; |
139 | |||
140 | ret = phy_driver_register(&cis8204_driver); | ||
141 | if (ret) | ||
142 | goto err1; | ||
143 | |||
144 | ret = phy_driver_register(&cis8201_driver); | ||
145 | if (ret) | ||
146 | goto err2; | ||
147 | return 0; | ||
148 | |||
149 | err2: | ||
150 | phy_driver_unregister(&cis8204_driver); | ||
151 | err1: | ||
152 | return ret; | ||
124 | } | 153 | } |
125 | 154 | ||
126 | static void __exit cis8204_exit(void) | 155 | static void __exit cicada_exit(void) |
127 | { | 156 | { |
128 | phy_driver_unregister(&cis8204_driver); | 157 | phy_driver_unregister(&cis8204_driver); |
158 | phy_driver_unregister(&cis8201_driver); | ||
129 | } | 159 | } |
130 | 160 | ||
131 | module_init(cis8204_init); | 161 | module_init(cicada_init); |
132 | module_exit(cis8204_exit); | 162 | module_exit(cicada_exit); |