When parsing available inputs on Gen3 boards, add parsing of digital
input enpoints to the already in-place CSI-2 node parsing.

Signed-off-by: Jacopo Mondi <[email protected]>
---
 drivers/media/platform/rcar-vin/rcar-core.c | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/drivers/media/platform/rcar-vin/rcar-core.c 
b/drivers/media/platform/rcar-vin/rcar-core.c
index 6738825..78ca232 100644
--- a/drivers/media/platform/rcar-vin/rcar-core.c
+++ b/drivers/media/platform/rcar-vin/rcar-core.c
@@ -777,7 +777,9 @@ static int rvin_group_graph_parse(struct rvin_dev *vin, 
unsigned long *bitmap)
        vin_dbg(vin, "I'm VIN number %u", val);
        vin->group->vin[val] = vin;
 
-       /* Parse all CSI-2 nodes */
+       /* Parse all endpoints on Port@1 (CSI-2) and eventually on Port@2 */
+       vin->mbus_cfg.type = 0;
+       vin->mbus_cfg.flags = 0;
        for (i = 0; i < RVIN_CSI_MAX; i++) {
 
                /* Check if instance is connected to the CSI-2 */
@@ -804,15 +806,21 @@ static int rvin_group_graph_parse(struct rvin_dev *vin, 
unsigned long *bitmap)
                vin->group->csi[i].asd.match_type = V4L2_ASYNC_MATCH_FWNODE;
 
                *bitmap |= BIT(i);
+               vin->mbus_cfg.type = V4L2_MBUS_CSI2;
 
                vin_dbg(vin, "Handle CSI-2 %s\n", of_node_full_name(csi));
        }
 
-       /* All our sources are CSI-2 */
-       vin->mbus_cfg.type = V4L2_MBUS_CSI2;
-       vin->mbus_cfg.flags = 0;
+       /* Done with at least one CSI-2 port registered */
+       if (vin->mbus_cfg.type)
+               return 0;
 
-       return 0;
+       /* Check if any digital input is connected to this instance's Port@2 */
+       ret = rvin_digital_graph_parse(vin, 2, -1);
+       if (!ret)
+               *bitmap |=  BIT(RVIN_PARALLEL_IN);
+
+       return (!ret || (ret == -ENOENT)) ? 0 : ret;
 }
 
 /* group lock should be held when calling this function */
-- 
2.7.4

Reply via email to