Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cac18ecb authored by Randy Li's avatar Randy Li Committed by Kishon Vijay Abraham I
Browse files

phy: Add reset callback



The only use for this is for solving a hardware design problem in
usb of Rockchip RK3288.

Signed-off-by: default avatarRandy Li <ayaka@soulik.info>
Reviewed-by: default avatarHeiko Stuebner <heiko@sntech.de>
Signed-off-by: default avatarKishon Vijay Abraham I <kishon@ti.com>
parent 91d6e3b6
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -357,6 +357,21 @@ int phy_set_mode(struct phy *phy, enum phy_mode 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
 * @np: device_node for which to get the phy
+3 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ enum phy_mode {
 * @power_on: powering on the phy
 * @power_off: powering off the phy
 * @set_mode: set the mode of the phy
 * @reset: resetting the phy
 * @owner: the module owner containing the ops
 */
struct phy_ops {
@@ -44,6 +45,7 @@ struct phy_ops {
	int	(*power_on)(struct phy *phy);
	int	(*power_off)(struct phy *phy);
	int	(*set_mode)(struct phy *phy, enum phy_mode mode);
	int	(*reset)(struct phy *phy);
	struct module *owner;
};

@@ -136,6 +138,7 @@ int phy_exit(struct phy *phy);
int phy_power_on(struct phy *phy);
int phy_power_off(struct phy *phy);
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)
{
	return phy->attrs.bus_width;