phylib: cleanup marvell.c a bit
Simplify the marvell driver init a bit: Make the supported devices an array instead of explicitly registering each structure. This makes it considerably easier to add new devices down the road. Signed-off-by: Olof Johansson <olof@lixom.net> Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
parent
825a2ff189
commit
e54792396f
1 changed files with 52 additions and 58 deletions
|
@ -254,77 +254,71 @@ static int m88e1145_config_init(struct phy_device *phydev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static struct phy_driver m88e1101_driver = {
|
||||
.phy_id = 0x01410c60,
|
||||
.phy_id_mask = 0xfffffff0,
|
||||
.name = "Marvell 88E1101",
|
||||
.features = PHY_GBIT_FEATURES,
|
||||
.flags = PHY_HAS_INTERRUPT,
|
||||
.config_aneg = &marvell_config_aneg,
|
||||
.read_status = &genphy_read_status,
|
||||
.ack_interrupt = &marvell_ack_interrupt,
|
||||
.config_intr = &marvell_config_intr,
|
||||
.driver = {.owner = THIS_MODULE,},
|
||||
};
|
||||
|
||||
static struct phy_driver m88e1111_driver = {
|
||||
.phy_id = 0x01410cc0,
|
||||
.phy_id_mask = 0xfffffff0,
|
||||
.name = "Marvell 88E1111",
|
||||
.features = PHY_GBIT_FEATURES,
|
||||
.flags = PHY_HAS_INTERRUPT,
|
||||
.config_aneg = &marvell_config_aneg,
|
||||
.read_status = &genphy_read_status,
|
||||
.ack_interrupt = &marvell_ack_interrupt,
|
||||
.config_intr = &marvell_config_intr,
|
||||
.config_init = &m88e1111_config_init,
|
||||
.driver = {.owner = THIS_MODULE,},
|
||||
};
|
||||
|
||||
static struct phy_driver m88e1145_driver = {
|
||||
.phy_id = 0x01410cd0,
|
||||
.phy_id_mask = 0xfffffff0,
|
||||
.name = "Marvell 88E1145",
|
||||
.features = PHY_GBIT_FEATURES,
|
||||
.flags = PHY_HAS_INTERRUPT,
|
||||
.config_init = &m88e1145_config_init,
|
||||
.config_aneg = &marvell_config_aneg,
|
||||
.read_status = &genphy_read_status,
|
||||
.ack_interrupt = &marvell_ack_interrupt,
|
||||
.config_intr = &marvell_config_intr,
|
||||
.driver = {.owner = THIS_MODULE,},
|
||||
static struct phy_driver marvell_drivers[] = {
|
||||
{
|
||||
.phy_id = 0x01410c60,
|
||||
.phy_id_mask = 0xfffffff0,
|
||||
.name = "Marvell 88E1101",
|
||||
.features = PHY_GBIT_FEATURES,
|
||||
.flags = PHY_HAS_INTERRUPT,
|
||||
.config_aneg = &marvell_config_aneg,
|
||||
.read_status = &genphy_read_status,
|
||||
.ack_interrupt = &marvell_ack_interrupt,
|
||||
.config_intr = &marvell_config_intr,
|
||||
.driver = {.owner = THIS_MODULE,},
|
||||
},
|
||||
{
|
||||
.phy_id = 0x01410cc0,
|
||||
.phy_id_mask = 0xfffffff0,
|
||||
.name = "Marvell 88E1111",
|
||||
.features = PHY_GBIT_FEATURES,
|
||||
.flags = PHY_HAS_INTERRUPT,
|
||||
.config_init = &m88e1111_config_init,
|
||||
.config_aneg = &marvell_config_aneg,
|
||||
.read_status = &genphy_read_status,
|
||||
.ack_interrupt = &marvell_ack_interrupt,
|
||||
.config_intr = &marvell_config_intr,
|
||||
.driver = {.owner = THIS_MODULE,},
|
||||
},
|
||||
{
|
||||
.phy_id = 0x01410cd0,
|
||||
.phy_id_mask = 0xfffffff0,
|
||||
.name = "Marvell 88E1145",
|
||||
.features = PHY_GBIT_FEATURES,
|
||||
.flags = PHY_HAS_INTERRUPT,
|
||||
.config_init = &m88e1145_config_init,
|
||||
.config_aneg = &marvell_config_aneg,
|
||||
.read_status = &genphy_read_status,
|
||||
.ack_interrupt = &marvell_ack_interrupt,
|
||||
.config_intr = &marvell_config_intr,
|
||||
.driver = {.owner = THIS_MODULE,},
|
||||
}
|
||||
};
|
||||
|
||||
static int __init marvell_init(void)
|
||||
{
|
||||
int ret;
|
||||
int i;
|
||||
|
||||
ret = phy_driver_register(&m88e1101_driver);
|
||||
if (ret)
|
||||
return ret;
|
||||
for (i = 0; i < ARRAY_SIZE(marvell_drivers); i++) {
|
||||
ret = phy_driver_register(&marvell_drivers[i]);
|
||||
|
||||
ret = phy_driver_register(&m88e1111_driver);
|
||||
if (ret)
|
||||
goto err1111;
|
||||
|
||||
ret = phy_driver_register(&m88e1145_driver);
|
||||
if (ret)
|
||||
goto err1145;
|
||||
if (ret) {
|
||||
while (i-- > 0)
|
||||
phy_driver_unregister(&marvell_drivers[i]);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
err1145:
|
||||
phy_driver_unregister(&m88e1111_driver);
|
||||
err1111:
|
||||
phy_driver_unregister(&m88e1101_driver);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void __exit marvell_exit(void)
|
||||
{
|
||||
phy_driver_unregister(&m88e1101_driver);
|
||||
phy_driver_unregister(&m88e1111_driver);
|
||||
phy_driver_unregister(&m88e1145_driver);
|
||||
int i;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(marvell_drivers); i++)
|
||||
phy_driver_unregister(&marvell_drivers[i]);
|
||||
}
|
||||
|
||||
module_init(marvell_init);
|
||||
|
|
Loading…
Reference in a new issue