summaryrefslogtreecommitdiff
path: root/sound/soc/codecs/wsa883x.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/codecs/wsa883x.c')
-rw-r--r--sound/soc/codecs/wsa883x.c28
1 files changed, 13 insertions, 15 deletions
diff --git a/sound/soc/codecs/wsa883x.c b/sound/soc/codecs/wsa883x.c
index c7b10bbfba7e..966ba4909204 100644
--- a/sound/soc/codecs/wsa883x.c
+++ b/sound/soc/codecs/wsa883x.c
@@ -7,7 +7,7 @@
#include <linux/debugfs.h>
#include <linux/delay.h>
#include <linux/device.h>
-#include <linux/gpio.h>
+#include <linux/gpio/consumer.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
@@ -1380,22 +1380,19 @@ static int wsa883x_probe(struct sdw_slave *pdev,
return -ENOMEM;
wsa883x->vdd = devm_regulator_get(dev, "vdd");
- if (IS_ERR(wsa883x->vdd)) {
- dev_err(dev, "No vdd regulator found\n");
- return PTR_ERR(wsa883x->vdd);
- }
+ if (IS_ERR(wsa883x->vdd))
+ return dev_err_probe(dev, PTR_ERR(wsa883x->vdd),
+ "No vdd regulator found\n");
ret = regulator_enable(wsa883x->vdd);
- if (ret) {
- dev_err(dev, "Failed to enable vdd regulator (%d)\n", ret);
- return ret;
- }
+ if (ret)
+ return dev_err_probe(dev, ret, "Failed to enable vdd regulator\n");
wsa883x->sd_n = devm_gpiod_get_optional(&pdev->dev, "powerdown",
- GPIOD_FLAGS_BIT_NONEXCLUSIVE);
+ GPIOD_FLAGS_BIT_NONEXCLUSIVE | GPIOD_OUT_HIGH);
if (IS_ERR(wsa883x->sd_n)) {
- dev_err(&pdev->dev, "Shutdown Control GPIO not found\n");
- ret = PTR_ERR(wsa883x->sd_n);
+ ret = dev_err_probe(&pdev->dev, PTR_ERR(wsa883x->sd_n),
+ "Shutdown Control GPIO not found\n");
goto err;
}
@@ -1411,12 +1408,13 @@ static int wsa883x_probe(struct sdw_slave *pdev,
pdev->prop.simple_clk_stop_capable = true;
pdev->prop.sink_dpn_prop = wsa_sink_dpn_prop;
pdev->prop.scp_int1_mask = SDW_SCP_INT1_BUS_CLASH | SDW_SCP_INT1_PARITY;
- gpiod_direction_output(wsa883x->sd_n, 1);
+ gpiod_direction_output(wsa883x->sd_n, 0);
wsa883x->regmap = devm_regmap_init_sdw(pdev, &wsa883x_regmap_config);
if (IS_ERR(wsa883x->regmap)) {
- dev_err(&pdev->dev, "regmap_init failed\n");
- ret = PTR_ERR(wsa883x->regmap);
+ gpiod_direction_output(wsa883x->sd_n, 1);
+ ret = dev_err_probe(&pdev->dev, PTR_ERR(wsa883x->regmap),
+ "regmap_init failed\n");
goto err;
}
pm_runtime_set_autosuspend_delay(dev, 3000);