| From 64d1bdd5f40a2212529e3ab3be56b9acc9ba33db Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 3 Apr 2024 06:10:58 +0300 |
| Subject: soc: qcom: pmic_glink: notify clients about the current state |
| |
| From: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> |
| |
| [ Upstream commit d6cbce2cd354c9a37a558f290a8f1dfd20584f99 ] |
| |
| In case the client is registered after the pmic-glink recived a response |
| from the Protection Domain mapper, it is going to miss the notification |
| about the state. Notify clients about the current state upon |
| registration. |
| |
| Fixes: 58ef4ece1e41 ("soc: qcom: pmic_glink: Introduce base PMIC GLINK driver") |
| Reviewed-by: Andrew Halaney <ahalaney@redhat.com> |
| Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> |
| Reviewed-by: Mukesh Ojha <quic_mojha@quicinc.com> |
| Tested-by: Xilin Wu <wuxilin123@gmail.com> # on QCS8550 AYN Odin 2 |
| Link: https://lore.kernel.org/r/20240403-pmic-glink-fix-clients-v2-2-aed4e02baacc@linaro.org |
| Signed-off-by: Bjorn Andersson <andersson@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/soc/qcom/pmic_glink.c | 5 +++++ |
| 1 file changed, 5 insertions(+) |
| |
| diff --git a/drivers/soc/qcom/pmic_glink.c b/drivers/soc/qcom/pmic_glink.c |
| index 2b2cdf4796542..e85a12ec2aab1 100644 |
| --- a/drivers/soc/qcom/pmic_glink.c |
| +++ b/drivers/soc/qcom/pmic_glink.c |
| @@ -83,9 +83,14 @@ struct pmic_glink_client *devm_pmic_glink_register_client(struct device *dev, |
| client->pdr_notify = pdr; |
| client->priv = priv; |
| |
| + mutex_lock(&pg->state_lock); |
| mutex_lock(&pg->client_lock); |
| + |
| list_add(&client->node, &pg->clients); |
| + client->pdr_notify(client->priv, pg->client_state); |
| + |
| mutex_unlock(&pg->client_lock); |
| + mutex_unlock(&pg->state_lock); |
| |
| devres_add(dev, client); |
| |
| -- |
| 2.43.0 |
| |