Messages in this thread | | | Date | Mon, 19 Sep 2022 20:29:56 +0300 | Subject | Re: [PATCH v6 3/5] phy: core: Add support for phy power down & power up | From | Dmitry Baryshkov <> |
| |
On 14/09/2022 17:50, Krishna Chaitanya Chundru wrote: > > On 9/9/2022 2:34 PM, Dmitry Baryshkov wrote: >> On Fri, 9 Sept 2022 at 11:45, Krishna chaitanya chundru >> <quic_krichai@quicinc.com> wrote: >>> Introducing phy power down/up callbacks for allowing to park the >>> link-state in L1ss without holding any PCIe resources during >>> system suspend. >>> >>> Signed-off-by: Krishna chaitanya chundru <quic_krichai@quicinc.com> >>> --- >>> drivers/phy/phy-core.c | 30 ++++++++++++++++++++++++++++++ >>> include/linux/phy/phy.h | 20 ++++++++++++++++++++ >>> 2 files changed, 50 insertions(+) >>> >>> diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c >>> index d93ddf1..1b0b757 100644 >>> --- a/drivers/phy/phy-core.c >>> +++ b/drivers/phy/phy-core.c >>> @@ -441,6 +441,36 @@ int phy_set_speed(struct phy *phy, int speed) >>> } >>> EXPORT_SYMBOL_GPL(phy_set_speed); >>> >>> +int phy_power_down(struct phy *phy) >>> +{ >>> + int ret; >>> + >>> + if (!phy || !phy->ops->power_down) >>> + return 0; >>> + >>> + mutex_lock(&phy->mutex); >>> + ret = phy->ops->power_down(phy); >>> + mutex_unlock(&phy->mutex); >>> + >>> + return ret; >>> +} >>> +EXPORT_SYMBOL_GPL(phy_power_down); >>> + >>> +int phy_power_up(struct phy *phy) >>> +{ >>> + int ret; >>> + >>> + if (!phy || !phy->ops->power_up) >>> + return 0; >>> + >>> + mutex_lock(&phy->mutex); >>> + ret = phy->ops->power_up(phy); >>> + mutex_unlock(&phy->mutex); >>> + >>> + return ret; >>> +} >> As it can be seen from the phy_power_off(), the PHY can be a shared >> resource, with the power_count counting the number of users that >> requested the PHY to be powered up. By introducing suc calls you break >> directly into this by allowing a single user to power down the PHY, no >> matter how many other users have requested the PHY to stay alive. > > can we use same power_count in this function also here and restrict the > single user to > > power down the PHY same like phy_power_off?.
What is the difference between power_off() and power_down()?
-- With best wishes Dmitry
| |