ASoC: rsnd: Fix probe failure on HiHope boards due to endpoint parsing
[ Upstream commit9b064d200a] On the HiHope boards, we have a single port with a single endpoint defined as below: .... rsnd_port: port { rsnd_endpoint: endpoint { remote-endpoint = <&dw_hdmi0_snd_in>; dai-format = "i2s"; bitclock-master = <&rsnd_endpoint>; frame-master = <&rsnd_endpoint>; playback = <&ssi2>; }; }; .... With commit547b02f74e("ASoC: rsnd: enable multi Component support for Audio Graph Card/Card2"), support for multiple ports was added. This caused probe failures on HiHope boards, as the endpoint could not be retrieved due to incorrect device node pointers being used. This patch fixes the issue by updating the `rsnd_dai_of_node()` and `rsnd_dai_probe()` functions to use the correct device node pointers based on the port names ('port' or 'ports'). It ensures that the endpoint is properly parsed for both single and multi-port configurations, restoring compatibility with HiHope boards. Fixes:547b02f74e("ASoC: rsnd: enable multi Component support for Audio Graph Card/Card2") Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://patch.msgid.link/20241010141432.716868-1-prabhakar.mahadev-lad.rj@bp.renesas.com Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
83a420e965
commit
f9ba85f823
@@ -1297,7 +1297,9 @@ audio_graph:
|
||||
if (!of_node_name_eq(ports, "ports") &&
|
||||
!of_node_name_eq(ports, "port"))
|
||||
continue;
|
||||
priv->component_dais[i] = of_graph_get_endpoint_count(ports);
|
||||
priv->component_dais[i] =
|
||||
of_graph_get_endpoint_count(of_node_name_eq(ports, "ports") ?
|
||||
ports : np);
|
||||
nr += priv->component_dais[i];
|
||||
i++;
|
||||
if (i >= RSND_MAX_COMPONENT) {
|
||||
@@ -1510,7 +1512,8 @@ static int rsnd_dai_probe(struct rsnd_priv *priv)
|
||||
if (!of_node_name_eq(ports, "ports") &&
|
||||
!of_node_name_eq(ports, "port"))
|
||||
continue;
|
||||
for_each_endpoint_of_node(ports, dai_np) {
|
||||
for_each_endpoint_of_node(of_node_name_eq(ports, "ports") ?
|
||||
ports : np, dai_np) {
|
||||
__rsnd_dai_probe(priv, dai_np, dai_np, 0, dai_i);
|
||||
if (rsnd_is_gen3(priv) || rsnd_is_gen4(priv)) {
|
||||
rdai = rsnd_rdai_get(priv, dai_i);
|
||||
|
||||
Reference in New Issue
Block a user