| From 14d0567b436105207b16dc8180edb0698bd34a35 Mon Sep 17 00:00:00 2001 |
| From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> |
| Date: Wed, 11 Apr 2018 02:10:45 +0000 |
| Subject: [PATCH 1211/1795] ASoC: rsnd: don't assume node full path name for |
| HDMI probing |
| |
| Current ssi.c is assuming below 2 things to probing HDMI node. |
| 1) remote node is including "hdmi0" or "hdmi1" in node name |
| 2) remote_ep->full_name is including full path name |
| |
| But, these assumptions are broken by below |
| 1) Node names should not use numerical suffixes |
| commit 6b5ac2f1cb11 ("arm64: dts: renesas: r8a7795: Drop bogus HDMI |
| node names suffixes") |
| 2) node full_name no longer include full path name |
| commit a7e4cfb0a7ca ("of/fdt: only store the device node basename |
| in full_name") |
| |
| Because of these reasons, ssi.c can't probe HDMI on current kernel. |
| This patch probes HDMI0/1 by using its address. |
| Note is that we need to keep updating for this address for future |
| generation chip. |
| |
| Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> |
| Tested-by: Nguyen Viet Dung <dung.nguyen.aj@renesas.com> |
| Signed-off-by: Mark Brown <broonie@kernel.org> |
| (cherry picked from commit 9ff7386656f5b7d9524ab7bdf69d508d14800d42) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> |
| --- |
| sound/soc/sh/rcar/ssi.c | 11 +++++++++-- |
| 1 file changed, 9 insertions(+), 2 deletions(-) |
| |
| diff --git a/sound/soc/sh/rcar/ssi.c b/sound/soc/sh/rcar/ssi.c |
| index 333b802681ad..31ffe3f0e163 100644 |
| --- a/sound/soc/sh/rcar/ssi.c |
| +++ b/sound/soc/sh/rcar/ssi.c |
| @@ -1004,19 +1004,26 @@ static void __rsnd_ssi_parse_hdmi_connection(struct rsnd_priv *priv, |
| struct device *dev = rsnd_priv_to_dev(priv); |
| struct rsnd_mod *mod = rsnd_io_to_mod_ssi(io); |
| struct rsnd_ssi *ssi; |
| + struct device_node *remote_node = of_graph_get_port_parent(remote_ep); |
| + |
| + /* support Gen3 only */ |
| + if (!rsnd_is_gen3(priv)) |
| + return; |
| |
| if (!mod) |
| return; |
| |
| ssi = rsnd_mod_to_ssi(mod); |
| |
| - if (strstr(remote_ep->full_name, "hdmi0")) { |
| + /* HDMI0 */ |
| + if (strstr(remote_node->full_name, "hdmi@fead0000")) { |
| rsnd_flags_set(ssi, RSND_SSI_HDMI0); |
| dev_dbg(dev, "%s[%d] connected to HDMI0\n", |
| rsnd_mod_name(mod), rsnd_mod_id(mod)); |
| } |
| |
| - if (strstr(remote_ep->full_name, "hdmi1")) { |
| + /* HDMI1 */ |
| + if (strstr(remote_node->full_name, "hdmi@feae0000")) { |
| rsnd_flags_set(ssi, RSND_SSI_HDMI1); |
| dev_dbg(dev, "%s[%d] connected to HDMI1\n", |
| rsnd_mod_name(mod), rsnd_mod_id(mod)); |
| -- |
| 2.19.0 |
| |