Move struct tda998x_audio definition to tda998x_drv.c and remove
include/sound/tda998x.h. There is no external use for struct
tda998x_audio.

Fix graph parsing to allow ports to be inside a separate "ports"-node as
specified in Documentation/devicetree/bindings/graph.txt.

Signed-off-by: Jyri Sarha <jsa...@ti.com>
---
 drivers/gpu/drm/i2c/tda998x_drv.c | 59 +++++++++++++++++++++------------------
 include/sound/tda998x.h           |  8 ------
 2 files changed, 32 insertions(+), 35 deletions(-)
 delete mode 100644 include/sound/tda998x.h

diff --git a/drivers/gpu/drm/i2c/tda998x_drv.c 
b/drivers/gpu/drm/i2c/tda998x_drv.c
index 0952eac..4dc2dc0 100644
--- a/drivers/gpu/drm/i2c/tda998x_drv.c
+++ b/drivers/gpu/drm/i2c/tda998x_drv.c
@@ -27,10 +27,14 @@
 #include <drm/drm_edid.h>
 #include <drm/drm_of.h>
 #include <drm/i2c/tda998x.h>
-#include <sound/tda998x.h>
 
 #define DBG(fmt, ...) DRM_DEBUG(fmt"\n", ##__VA_ARGS__)
 
+struct tda998x_audio {
+       u8 ports[2];                    /* AP value */
+       u8 port_types[2];               /* AFMT_xxx */
+};
+
 struct tda998x_priv {
        struct i2c_client *cec;
        struct i2c_client *hdmi;
@@ -1240,9 +1244,10 @@ static int tda998x_parse_ports(struct tda998x_priv *priv,
 {
        struct device_node *of_port;
        const char *port_type;
-       int ret, audio_index, reg, afmt;
+       int ret, audio_index, reg, afmt, rgb_initialized;
 
        audio_index = 0;
+       rgb_initialized = 0;
        for_each_child_of_node(np, of_port) {
                if (!of_port->name
                 || of_node_cmp(of_port->name, "port") != 0)
@@ -1252,11 +1257,17 @@ static int tda998x_parse_ports(struct tda998x_priv 
*priv,
                if (ret < 0)
                        continue;
                ret = of_property_read_u32(of_port, "reg", &reg);
+               if (ret < 0) {
+                       dev_err(&priv->hdmi->dev, "missing reg for %s\n",
+                               port_type);
+                       return ret;
+               }
                if (strcmp(port_type, "rgb") == 0) {
                        if (!ret) {             /* video reg is optional */
                                priv->vip_cntrl_0 = reg >> 16;
                                priv->vip_cntrl_1 = reg >> 8;
                                priv->vip_cntrl_2 = reg;
+                               rgb_initialized = 1;
                        }
                        continue;
                }
@@ -1266,11 +1277,6 @@ static int tda998x_parse_ports(struct tda998x_priv *priv,
                        afmt = AFMT_SPDIF;
                else
                        continue;
-               if (ret < 0) {
-                       dev_err(&priv->hdmi->dev, "missing reg for %s\n",
-                               port_type);
-                       return ret;
-               }
                if (audio_index >= ARRAY_SIZE(priv->audio.ports)) {
                        dev_err(&priv->hdmi->dev, "too many audio ports\n");
                        break;
@@ -1279,13 +1285,13 @@ static int tda998x_parse_ports(struct tda998x_priv 
*priv,
                priv->audio.port_types[audio_index] = afmt;
                audio_index++;
        }
-       return 0;
+       return rgb_initialized;
 }
 
 static int tda998x_create(struct i2c_client *client, struct tda998x_priv *priv)
 {
        struct device_node *np = client->dev.of_node;
-       struct device_node *of_port;
+       struct device_node *ports;
        u32 video;
        int rev_lo, rev_hi, ret;
        unsigned short cec_addr;
@@ -1392,24 +1398,15 @@ static int tda998x_create(struct i2c_client *client, 
struct tda998x_priv *priv)
 
        /* get the device tree parameters */
        if (np) {
-               of_port = of_get_child_by_name(np, "port");
-               if (of_port) {                          /* graph of ports */
-                       of_node_put(of_port);
-                       ret = tda998x_parse_ports(priv, np);
-                       if (ret < 0)
-                               goto fail;
-
-                       /* initialize the default audio configuration */
-                       if (priv->audio.ports[0]) {
-                               priv->params.audio_cfg = priv->audio.ports[0];
-                               priv->params.audio_format =
-                                               priv->audio.port_types[0];
-                               priv->params.audio_clk_cfg =
-                                       priv->params.audio_format ==
-                                                       AFMT_SPDIF ? 0 : 1;
-                       }
-               } else {
-
+               ports = of_get_child_by_name(np, "ports");
+               if (!ports)
+                       ports = of_node_get(np);
+               /* graph of ports */
+               ret = tda998x_parse_ports(priv, ports);
+               of_node_put(ports);
+               if (ret < 0)
+                       goto fail;
+               if (ret == 0) {
                        /* optional video properties */
                        ret = of_property_read_u32(np, "video-ports", &video);
                        if (ret == 0) {
@@ -1418,6 +1415,14 @@ static int tda998x_create(struct i2c_client *client, 
struct tda998x_priv *priv)
                                priv->vip_cntrl_2 = video;
                        }
                }
+               if (priv->audio.ports[0]) {
+                       priv->params.audio_cfg = priv->audio.ports[0];
+                       priv->params.audio_format =
+                               priv->audio.port_types[0];
+                       priv->params.audio_clk_cfg =
+                               priv->params.audio_format ==
+                               AFMT_SPDIF ? 0 : 1;
+               }
        }
 
        return 0;
diff --git a/include/sound/tda998x.h b/include/sound/tda998x.h
deleted file mode 100644
index bef1da7..0000000
--- a/include/sound/tda998x.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef SND_TDA998X_H
-#define SND_TDA998X_H
-
-struct tda998x_audio {
-       u8 ports[2];                    /* AP value */
-       u8 port_types[2];               /* AFMT_xxx */
-};
-#endif
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to