phy: core: don't require set_mode() callback for phy_get_mode() to work
[ Upstream commit d58c04e305afbaa9dda7969151f06c4efe2c98b0 ] As reported by Damon Ding, the phy_get_mode() call doesn't work as expected unless the PHY driver has a .set_mode() call. This prompts PHY drivers to have empty stubs for .set_mode() for the sake of being able to get the mode. Make .set_mode() callback truly optional and update PHY's mode even if it there is none. Cc: Damon Ding <damon.ding@rock-chips.com> Link: https://lore.kernel.org/r/96f8310f-93f1-4bcb-8637-137e1159ff83@rock-chips.com Tested-by: Damon Ding <damon.ding@rock-chips.com> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Link: https://lore.kernel.org/r/20250209-phy-fix-set-moe-v2-1-76e248503856@linaro.org Signed-off-by: Vinod Koul <vkoul@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
3bf3eae909
commit
6a7b7e98fe
@@ -400,12 +400,13 @@ EXPORT_SYMBOL_GPL(phy_power_off);
|
|||||||
|
|
||||||
int phy_set_mode_ext(struct phy *phy, enum phy_mode mode, int submode)
|
int phy_set_mode_ext(struct phy *phy, enum phy_mode mode, int submode)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret = 0;
|
||||||
|
|
||||||
if (!phy || !phy->ops->set_mode)
|
if (!phy)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
mutex_lock(&phy->mutex);
|
mutex_lock(&phy->mutex);
|
||||||
|
if (phy->ops->set_mode)
|
||||||
ret = phy->ops->set_mode(phy, mode, submode);
|
ret = phy->ops->set_mode(phy, mode, submode);
|
||||||
if (!ret)
|
if (!ret)
|
||||||
phy->attrs.mode = mode;
|
phy->attrs.mode = mode;
|
||||||
|
Reference in New Issue
Block a user