Message ID | 20240626-port-map-v1-0-bd8987d2b332@linaro.org |
---|---|
Headers | show |
Series | ASoC: codecs: wsa88xx: add support for static port mapping. | expand |
On 27/06/2024 13:55, Srinivas Kandagatla wrote: > Document port mapping property for wsa884x. Port mapping is required > to be able map correct master ports. > > All the device ports are not mapped in same order as master ports, so > there is a need for having static port mapping for WSA codecs. > > Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Best regards, Krzysztof
On 27/06/2024 13:55, Srinivas Kandagatla wrote: > Existing way of allocating ports dynamically is linear starting from 1 to > MAX_PORTS. This will not work for x1e80100 as the master ports are > are not mapped in the same order. > > Without this fix only one speaker in a pair of speakers will function. > > After this fix along with WSA codec changes both the speakers starts > working. > > Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Tested-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Best regards, Krzysztof
On 27/06/2024 13:55, srinivas.kandagatla@linaro.org wrote: > Existing way of allocating soundwire master ports on Qualcommm platforms is > dynamic, and in linear order starting from 1 to MAX_PORTS. > This will work as long as soundwire device ports are 1:1 mapped > linearly. However on most Qcom SoCs like SM8550, SM8650, x1e80100, these > are NOT mapped in that order. > > The result of this is that only one speaker among the pair of speakers > is always silent, With recent changes for WSA codec to support codec > versions and along with these patches we are able to get all speakers > working on these SoCs. > > Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> > --- > Manikantan R (1): > ASoC: dt-bindings: wsa883x: Document port mapping property > > Srinivas Kandagatla (5): > ASoC: codecs: wsa883x: parse port-mapping information > ASoC: dt-bindings: wsa8840: Document port mapping property > ASoC: codecs: wsa884x: parse port-mapping information > arm64: dts: x1e80100-crd: fix wsa soundwire port mapping > arm64: dts: x1e80100-qcp: fix wsa soundwire port mapping > > Documentation/devicetree/bindings/sound/qcom,wsa883x.yaml | 8 ++++++++ > Documentation/devicetree/bindings/sound/qcom,wsa8840.yaml | 8 ++++++++ > arch/arm64/boot/dts/qcom/x1e80100-crd.dts | 4 ++++ > arch/arm64/boot/dts/qcom/x1e80100-qcp.dts | 2 ++ > sound/soc/codecs/wsa883x.c | 8 ++++++++ > sound/soc/codecs/wsa884x.c | 8 ++++++++ > 6 files changed, 38 insertions(+) > --- > base-commit: 9935be184a55dd84fc3275094f2df095491f6ea1 > change-id: 20240626-port-map-ef50c3304d4a > > Best regards, I now have both speakers working ! Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8650-HDK Thanks! Neil
On Thu, Jun 27, 2024 at 12:55:18PM GMT, Srinivas Kandagatla wrote: > Add support to parse static master port map information from device tree. > > Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> > --- > sound/soc/codecs/wsa883x.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/sound/soc/codecs/wsa883x.c b/sound/soc/codecs/wsa883x.c > index a2e86ef7d18f..43156d39480f 100644 > --- a/sound/soc/codecs/wsa883x.c > +++ b/sound/soc/codecs/wsa883x.c > @@ -1399,6 +1399,14 @@ static int wsa883x_probe(struct sdw_slave *pdev, > wsa883x->sconfig.direction = SDW_DATA_DIR_RX; > wsa883x->sconfig.type = SDW_STREAM_PDM; > > + /** > + * Port map index starts with 0, however the data port for this codec > + * are from index 1 > + */ > + if (of_property_read_u32_array(dev->of_node, "qcom,port-mapping", &pdev->m_port_map[1], > + WSA883X_MAX_SWR_PORTS)) > + dev_info(dev, "Static Port mapping not specified\n"); dev_info looks strange. It should be either dev_warn or dev_dbg. > + > pdev->prop.sink_ports = GENMASK(WSA883X_MAX_SWR_PORTS, 0); > pdev->prop.simple_clk_stop_capable = true; > pdev->prop.sink_dpn_prop = wsa_sink_dpn_prop; > > -- > 2.25.1 >
On 27/06/2024 14:36, Dmitry Baryshkov wrote: > On Thu, Jun 27, 2024 at 12:55:18PM GMT, Srinivas Kandagatla wrote: >> Add support to parse static master port map information from device tree. >> >> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> >> --- >> sound/soc/codecs/wsa883x.c | 8 ++++++++ >> 1 file changed, 8 insertions(+) >> >> diff --git a/sound/soc/codecs/wsa883x.c b/sound/soc/codecs/wsa883x.c >> index a2e86ef7d18f..43156d39480f 100644 >> --- a/sound/soc/codecs/wsa883x.c >> +++ b/sound/soc/codecs/wsa883x.c >> @@ -1399,6 +1399,14 @@ static int wsa883x_probe(struct sdw_slave *pdev, >> wsa883x->sconfig.direction = SDW_DATA_DIR_RX; >> wsa883x->sconfig.type = SDW_STREAM_PDM; >> >> + /** >> + * Port map index starts with 0, however the data port for this codec >> + * are from index 1 >> + */ >> + if (of_property_read_u32_array(dev->of_node, "qcom,port-mapping", &pdev->m_port_map[1], >> + WSA883X_MAX_SWR_PORTS)) >> + dev_info(dev, "Static Port mapping not specified\n"); > > dev_info looks strange. It should be either dev_warn or dev_dbg. dev_dbg should be good in this case! --srini > >> + >> pdev->prop.sink_ports = GENMASK(WSA883X_MAX_SWR_PORTS, 0); >> pdev->prop.simple_clk_stop_capable = true; >> pdev->prop.sink_dpn_prop = wsa_sink_dpn_prop; >> >> -- >> 2.25.1 >> >
Existing way of allocating soundwire master ports on Qualcommm platforms is dynamic, and in linear order starting from 1 to MAX_PORTS. This will work as long as soundwire device ports are 1:1 mapped linearly. However on most Qcom SoCs like SM8550, SM8650, x1e80100, these are NOT mapped in that order. The result of this is that only one speaker among the pair of speakers is always silent, With recent changes for WSA codec to support codec versions and along with these patches we are able to get all speakers working on these SoCs. Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> --- Manikantan R (1): ASoC: dt-bindings: wsa883x: Document port mapping property Srinivas Kandagatla (5): ASoC: codecs: wsa883x: parse port-mapping information ASoC: dt-bindings: wsa8840: Document port mapping property ASoC: codecs: wsa884x: parse port-mapping information arm64: dts: x1e80100-crd: fix wsa soundwire port mapping arm64: dts: x1e80100-qcp: fix wsa soundwire port mapping Documentation/devicetree/bindings/sound/qcom,wsa883x.yaml | 8 ++++++++ Documentation/devicetree/bindings/sound/qcom,wsa8840.yaml | 8 ++++++++ arch/arm64/boot/dts/qcom/x1e80100-crd.dts | 4 ++++ arch/arm64/boot/dts/qcom/x1e80100-qcp.dts | 2 ++ sound/soc/codecs/wsa883x.c | 8 ++++++++ sound/soc/codecs/wsa884x.c | 8 ++++++++ 6 files changed, 38 insertions(+) --- base-commit: 9935be184a55dd84fc3275094f2df095491f6ea1 change-id: 20240626-port-map-ef50c3304d4a Best regards,