diff options
author | Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> | 2012-11-18 13:49:44 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2012-11-20 09:38:33 +0100 |
commit | 4a1e4d4b1da62a02f6ca32f44b709326bd764efc (patch) | |
tree | 783c28edb6d1b6dceed5455d54aee86d2aef6119 /include | |
parent | 30298c0f3ce43c364090f14618ccf012260841ca (diff) | |
download | barebox-4a1e4d4b1da62a02f6ca32f44b709326bd764efc.tar.gz barebox-4a1e4d4b1da62a02f6ca32f44b709326bd764efc.tar.xz |
phylib: add fixup support
if board need specific phy fixup they can register it and then the code will
executed only if needed
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/phy.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/include/linux/phy.h b/include/linux/phy.h index 791d657c92..b39eca5fbf 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h @@ -226,10 +226,20 @@ struct phy_driver { #define PHY_ANY_ID "MATCH ANY PHY" #define PHY_ANY_UID 0xffffffff +/* A Structure for boards to register fixups with the PHY Lib */ +struct phy_fixup { + struct list_head list; + char bus_id[20]; + u32 phy_uid; + u32 phy_uid_mask; + int (*run)(struct phy_device *phydev); +}; + int phy_driver_register(struct phy_driver *drv); int phy_drivers_register(struct phy_driver *new_driver, int n); struct phy_device *get_phy_device(struct mii_bus *bus, int addr); int phy_init(void); +int phy_init_hw(struct phy_device *phydev); /** * phy_read - Convenience function for reading a given PHY register @@ -267,5 +277,13 @@ int genphy_config_advert(struct phy_device *phydev); int genphy_setup_forced(struct phy_device *phydev); int get_phy_id(struct mii_bus *bus, int addr, u32 *phy_id); +int phy_register_fixup(const char *bus_id, u32 phy_uid, u32 phy_uid_mask, + int (*run)(struct phy_device *)); +int phy_register_fixup_for_id(const char *bus_id, + int (*run)(struct phy_device *)); +int phy_register_fixup_for_uid(u32 phy_uid, u32 phy_uid_mask, + int (*run)(struct phy_device *)); +int phy_scan_fixups(struct phy_device *phydev); + extern struct bus_type mdio_bus_type; #endif /* __PHYDEV_H__ */ |