2 * drivers/net/phy/micrel.c
4 * Driver for Micrel PHYs
6 * Author: David J. Choi
8 * Copyright (c) 2010 Micrel, Inc.
10 * This program is free software; you can redistribute it and/or modify it
11 * under the terms of the GNU General Public License as published by the
12 * Free Software Foundation; either version 2 of the License, or (at your
13 * option) any later version.
15 * Support : ksz9021 , vsc8201, ks8001
18 #include <linux/kernel.h>
19 #include <linux/module.h>
20 #include <linux/phy.h>
22 #define PHY_ID_KSZ9021 0x00221611
23 #define PHY_ID_VSC8201 0x000FC413
24 #define PHY_ID_KS8001 0x0022161A
27 static int kszphy_config_init(struct phy_device
*phydev
)
33 static struct phy_driver ks8001_driver
= {
34 .phy_id
= PHY_ID_KS8001
,
35 .phy_id_mask
= 0x00fffff0,
36 .features
= PHY_BASIC_FEATURES
,
38 .config_init
= kszphy_config_init
,
39 .config_aneg
= genphy_config_aneg
,
40 .read_status
= genphy_read_status
,
41 .driver
= { .owner
= THIS_MODULE
,},
44 static struct phy_driver vsc8201_driver
= {
45 .phy_id
= PHY_ID_VSC8201
,
46 .name
= "Micrel VSC8201",
47 .phy_id_mask
= 0x00fffff0,
48 .features
= PHY_BASIC_FEATURES
,
50 .config_init
= kszphy_config_init
,
51 .config_aneg
= genphy_config_aneg
,
52 .read_status
= genphy_read_status
,
53 .driver
= { .owner
= THIS_MODULE
,},
56 static struct phy_driver ksz9021_driver
= {
57 .phy_id
= PHY_ID_KSZ9021
,
58 .phy_id_mask
= 0x000fff10,
59 .name
= "Micrel KSZ9021 Gigabit PHY",
60 .features
= PHY_GBIT_FEATURES
| SUPPORTED_Pause
,
62 .config_init
= kszphy_config_init
,
63 .config_aneg
= genphy_config_aneg
,
64 .read_status
= genphy_read_status
,
65 .driver
= { .owner
= THIS_MODULE
, },
68 static int __init
ksphy_init(void)
72 ret
= phy_driver_register(&ks8001_driver
);
75 ret
= phy_driver_register(&vsc8201_driver
);
79 ret
= phy_driver_register(&ksz9021_driver
);
85 phy_driver_unregister(&vsc8201_driver
);
87 phy_driver_unregister(&ks8001_driver
);
92 static void __exit
ksphy_exit(void)
94 phy_driver_unregister(&ks8001_driver
);
95 phy_driver_unregister(&vsc8201_driver
);
96 phy_driver_unregister(&ksz9021_driver
);
99 module_init(ksphy_init
);
100 module_exit(ksphy_exit
);
102 MODULE_DESCRIPTION("Micrel PHY driver");
103 MODULE_AUTHOR("David J. Choi");
104 MODULE_LICENSE("GPL");