ASoC: wsa881x: Fix GPIO leak issue
In case of any probe/logical address error, set the pinctrl of wsa881x to the state that it was before the probe entered. Otherwise set it to active state. CRs-fixed: 2050725 Change-Id: I5022885f36111caeac1d25017db8a474e26ca521 Signed-off-by: Karthikeyan Mani <kmani@codeaurora.org>
This commit is contained in:
parent
a9f9dadb78
commit
c848d4ca45
1 changed files with 6 additions and 0 deletions
|
@ -1185,6 +1185,7 @@ static int wsa881x_swr_probe(struct swr_device *pdev)
|
|||
int ret = 0;
|
||||
struct wsa881x_priv *wsa881x;
|
||||
u8 devnum = 0;
|
||||
bool pin_state_current = false;
|
||||
|
||||
wsa881x = devm_kzalloc(&pdev->dev, sizeof(struct wsa881x_priv),
|
||||
GFP_KERNEL);
|
||||
|
@ -1218,6 +1219,9 @@ static int wsa881x_swr_probe(struct swr_device *pdev)
|
|||
if (ret)
|
||||
goto err;
|
||||
}
|
||||
if (wsa881x->wsa_rst_np)
|
||||
pin_state_current = msm_cdc_pinctrl_get_state(
|
||||
wsa881x->wsa_rst_np);
|
||||
wsa881x_gpio_ctrl(wsa881x, true);
|
||||
wsa881x->state = WSA881X_DEV_UP;
|
||||
|
||||
|
@ -1280,6 +1284,8 @@ static int wsa881x_swr_probe(struct swr_device *pdev)
|
|||
return 0;
|
||||
|
||||
dev_err:
|
||||
if (pin_state_current == false)
|
||||
wsa881x_gpio_ctrl(wsa881x, false);
|
||||
swr_remove_device(pdev);
|
||||
err:
|
||||
return ret;
|
||||
|
|
Loading…
Add table
Reference in a new issue