forked from luck/tmp_suning_uos_patched
phy: Add reset callback
The only use for this is for solving a hardware design problem in usb of Rockchip RK3288. Signed-off-by: Randy Li <ayaka@soulik.info> Reviewed-by: Heiko Stuebner <heiko@sntech.de> Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
This commit is contained in:
parent
91d6e3b6bc
commit
cac18ecb6f
|
@ -357,6 +357,21 @@ int phy_set_mode(struct phy *phy, enum phy_mode mode)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(phy_set_mode);
|
EXPORT_SYMBOL_GPL(phy_set_mode);
|
||||||
|
|
||||||
|
int phy_reset(struct phy *phy)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if (!phy || !phy->ops->reset)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
mutex_lock(&phy->mutex);
|
||||||
|
ret = phy->ops->reset(phy);
|
||||||
|
mutex_unlock(&phy->mutex);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(phy_reset);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* _of_phy_get() - lookup and obtain a reference to a phy by phandle
|
* _of_phy_get() - lookup and obtain a reference to a phy by phandle
|
||||||
* @np: device_node for which to get the phy
|
* @np: device_node for which to get the phy
|
||||||
|
|
|
@ -36,6 +36,7 @@ enum phy_mode {
|
||||||
* @power_on: powering on the phy
|
* @power_on: powering on the phy
|
||||||
* @power_off: powering off the phy
|
* @power_off: powering off the phy
|
||||||
* @set_mode: set the mode of the phy
|
* @set_mode: set the mode of the phy
|
||||||
|
* @reset: resetting the phy
|
||||||
* @owner: the module owner containing the ops
|
* @owner: the module owner containing the ops
|
||||||
*/
|
*/
|
||||||
struct phy_ops {
|
struct phy_ops {
|
||||||
|
@ -44,6 +45,7 @@ struct phy_ops {
|
||||||
int (*power_on)(struct phy *phy);
|
int (*power_on)(struct phy *phy);
|
||||||
int (*power_off)(struct phy *phy);
|
int (*power_off)(struct phy *phy);
|
||||||
int (*set_mode)(struct phy *phy, enum phy_mode mode);
|
int (*set_mode)(struct phy *phy, enum phy_mode mode);
|
||||||
|
int (*reset)(struct phy *phy);
|
||||||
struct module *owner;
|
struct module *owner;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -136,6 +138,7 @@ int phy_exit(struct phy *phy);
|
||||||
int phy_power_on(struct phy *phy);
|
int phy_power_on(struct phy *phy);
|
||||||
int phy_power_off(struct phy *phy);
|
int phy_power_off(struct phy *phy);
|
||||||
int phy_set_mode(struct phy *phy, enum phy_mode mode);
|
int phy_set_mode(struct phy *phy, enum phy_mode mode);
|
||||||
|
int phy_reset(struct phy *phy);
|
||||||
static inline int phy_get_bus_width(struct phy *phy)
|
static inline int phy_get_bus_width(struct phy *phy)
|
||||||
{
|
{
|
||||||
return phy->attrs.bus_width;
|
return phy->attrs.bus_width;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user