aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Marek <jonathan@marek.ca>2020-06-08 12:54:38 -0400
committerJonathan Marek <jonathan@marek.ca>2020-06-11 23:36:29 -0400
commit93909221e2334db4c76d0b74a980e856848b778c (patch)
treeeb5ba479d441159e214393b6555f924f9cf8460a
parent878523ab8377f38afbba302c7755098f21de7735 (diff)
HACK: soundwire hacks
* Make sure it probes after LPI pinctrl (pinctrl node is set in dts so why doesn't it happen??) * Only enable DAC channels (need this to make it work with 2x WSA config) Signed-off-by: Jonathan Marek <jonathan@marek.ca>
-rw-r--r--drivers/soundwire/qcom.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/soundwire/qcom.c b/drivers/soundwire/qcom.c
index 58ffb46e0d648..6b3d18ad282b8 100644
--- a/drivers/soundwire/qcom.c
+++ b/drivers/soundwire/qcom.c
@@ -15,6 +15,7 @@
#include <linux/slimbus.h>
#include <linux/soundwire/sdw.h>
#include <linux/soundwire/sdw_registers.h>
+#include <linux/pinctrl/consumer.h>
#include <sound/pcm_params.h>
#include <sound/soc.h>
#include "bus.h"
@@ -420,6 +421,9 @@ static int qcom_swrm_port_enable(struct sdw_bus *bus,
ctrl->reg_read(ctrl, reg, &val);
+ if (enable_ch->ch_mask != 1)
+ return 0;
+
if (enable_ch->enable)
val |= (enable_ch->ch_mask << SWRM_DP_PORT_CTRL_EN_CHAN_SHFT);
else
@@ -769,6 +773,7 @@ static int qcom_swrm_probe(struct platform_device *pdev)
struct sdw_bus_params *params;
struct qcom_swrm_ctrl *ctrl;
struct resource *res;
+ struct pinctrl *pinctrl;
int ret;
u32 val;
@@ -809,6 +814,15 @@ static int qcom_swrm_probe(struct platform_device *pdev)
goto err_init;
}
+ /* defer probe if pinctrl wasn't ready.. */
+ pinctrl = devm_pinctrl_get(dev);
+ if (IS_ERR(pinctrl)) {
+ /* getting -ENODEV for some reason.. */
+ return -EPROBE_DEFER;
+ }
+
+ pinctrl_select_default_state(dev);
+
clk_prepare_enable(ctrl->hclk);
ctrl->dev = dev;