if (priv->streaming == enable)
                goto done;
 
+       if (priv->bus_type == V4L2_MBUS_BT656) {
+               ret = regmap_update_bits(priv->regmap, COM7, ITU656_ON_OFF,
+                                        enable ?
+                                        ITU656_ON_OFF : ~ITU656_ON_OFF);
+               if (ret)
+                       goto done;
+       }
+
        ret = regmap_update_bits(priv->regmap, COM2, SOFT_SLEEP_MODE,
                                 enable ? 0 : SOFT_SLEEP_MODE);
        if (ret)
                return -EINVAL;
        }
 
+       /*
+        * For backward compatibility with older DTS where the
+        * bus-type property was not mandatory, assume
+        * V4L2_MBUS_PARALLEL as it was the only supported bus at the
+        * time. v4l2_fwnode_endpoint_alloc_parse() will not fail if
+        * 'bus-type' is not specified.
+        */
        ret = v4l2_fwnode_endpoint_alloc_parse(ep, &bus_cfg);
-       if (ret)
-               goto error_fwnode_put;
+       if (ret) {
+               bus_cfg = (struct v4l2_fwnode_endpoint)
+                         { .bus_type = V4L2_MBUS_BT656 };
+               ret = v4l2_fwnode_endpoint_alloc_parse(ep, &bus_cfg);
+               if (ret)
+                       goto error_fwnode_put;
+       }
 
        priv->bus_type = bus_cfg.bus_type;
        v4l2_fwnode_endpoint_free(&bus_cfg);