diff --git a/asoc/codecs/bolero/rx-macro.c b/asoc/codecs/bolero/rx-macro.c index 0be5c4e9a495..f72aa1deca08 100644 --- a/asoc/codecs/bolero/rx-macro.c +++ b/asoc/codecs/bolero/rx-macro.c @@ -3605,6 +3605,12 @@ static int rx_macro_probe(struct platform_device *pdev) __func__); return -EINVAL; } + if (msm_cdc_pinctrl_get_state(rx_priv->rx_swr_gpio_p) < 0) { + dev_err(&pdev->dev, "%s: failed to get swr pin state\n", + __func__); + return -EPROBE_DEFER; + } + rx_io_base = devm_ioremap(&pdev->dev, rx_base_addr, RX_MACRO_MAX_OFFSET); if (!rx_io_base) { diff --git a/asoc/codecs/bolero/tx-macro.c b/asoc/codecs/bolero/tx-macro.c index cb3aa59e4cb1..fb04d7469ee7 100644 --- a/asoc/codecs/bolero/tx-macro.c +++ b/asoc/codecs/bolero/tx-macro.c @@ -2000,6 +2000,12 @@ static int tx_macro_probe(struct platform_device *pdev) __func__); return -EINVAL; } + if (msm_cdc_pinctrl_get_state(tx_priv->tx_swr_gpio_p) < 0) { + dev_err(&pdev->dev, "%s: failed to get swr pin state\n", + __func__); + return -EPROBE_DEFER; + } + tx_io_base = devm_ioremap(&pdev->dev, tx_base_addr, TX_MACRO_MAX_OFFSET); if (!tx_io_base) { diff --git a/asoc/codecs/bolero/wsa-macro.c b/asoc/codecs/bolero/wsa-macro.c index f41392df4c1e..4fac4c652506 100644 --- a/asoc/codecs/bolero/wsa-macro.c +++ b/asoc/codecs/bolero/wsa-macro.c @@ -2901,6 +2901,12 @@ static int wsa_macro_probe(struct platform_device *pdev) __func__); return -EINVAL; } + if (msm_cdc_pinctrl_get_state(wsa_priv->wsa_swr_gpio_p) < 0) { + dev_err(&pdev->dev, "%s: failed to get swr pin state\n", + __func__); + return -EPROBE_DEFER; + } + wsa_io_base = devm_ioremap(&pdev->dev, wsa_base_addr, WSA_MACRO_MAX_OFFSET); if (!wsa_io_base) { diff --git a/asoc/codecs/msm-cdc-pinctrl.c b/asoc/codecs/msm-cdc-pinctrl.c index 8ed0c8ebf50d..0dadb7489aa5 100644 --- a/asoc/codecs/msm-cdc-pinctrl.c +++ b/asoc/codecs/msm-cdc-pinctrl.c @@ -122,9 +122,10 @@ EXPORT_SYMBOL(msm_cdc_pinctrl_select_active_state); * msm_cdc_pinctrl_get_state: get curren pinctrl state * @np: pointer to struct device_node * - * Returns 0 for sleep state, 1 for active state + * Returns 0 for sleep state, 1 for active state, + * error code for failure */ -bool msm_cdc_pinctrl_get_state(struct device_node *np) +int msm_cdc_pinctrl_get_state(struct device_node *np) { struct msm_cdc_pinctrl_info *gpio_data; diff --git a/include/asoc/msm-cdc-pinctrl.h b/include/asoc/msm-cdc-pinctrl.h index 4024d90becde..73022ab46ef1 100644 --- a/include/asoc/msm-cdc-pinctrl.h +++ b/include/asoc/msm-cdc-pinctrl.h @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: GPL-2.0-only */ -/* Copyright (c) 2016-2018, The Linux Foundation. All rights reserved. +/* Copyright (c) 2016-2019, The Linux Foundation. All rights reserved. */ #ifndef __MFD_CDC_PINCTRL_H_ @@ -11,7 +11,7 @@ #if IS_ENABLED(CONFIG_MSM_CDC_PINCTRL) extern int msm_cdc_pinctrl_select_sleep_state(struct device_node *np); extern int msm_cdc_pinctrl_select_active_state(struct device_node *np); -extern bool msm_cdc_pinctrl_get_state(struct device_node *np); +extern int msm_cdc_pinctrl_get_state(struct device_node *np); extern int msm_cdc_get_gpio_state(struct device_node *np); int msm_cdc_pinctrl_drv_init(void); void msm_cdc_pinctrl_drv_exit(void); @@ -36,7 +36,7 @@ int msm_cdc_pinctrl_drv_init(void) void msm_cdc_pinctrl_drv_exit(void) { } -bool msm_cdc_pinctrl_get_state(struct device_node *np) +int msm_cdc_pinctrl_get_state(struct device_node *np) { return true; }