Handle CLOCKENB pin polarity, or use HSYNC in its place if polarity is
not specified.

Signed-off-by: Jacopo Mondi <jacopo+rene...@jmondi.org>
---
 drivers/media/platform/rcar-vin/rcar-dma.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/drivers/media/platform/rcar-vin/rcar-dma.c 
b/drivers/media/platform/rcar-vin/rcar-dma.c
index ac07f99..7a84eae 100644
--- a/drivers/media/platform/rcar-vin/rcar-dma.c
+++ b/drivers/media/platform/rcar-vin/rcar-dma.c
@@ -123,6 +123,8 @@
 /* Video n Data Mode Register 2 bits */
 #define VNDMR2_VPS             (1 << 30)
 #define VNDMR2_HPS             (1 << 29)
+#define VNDMR2_CES             (1 << 28)
+#define VNDMR2_CHS             (1 << 23)
 #define VNDMR2_FTEV            (1 << 17)
 #define VNDMR2_VLV(n)          ((n & 0xf) << 12)
 
@@ -691,6 +693,15 @@ static int rvin_setup(struct rvin_dev *vin)
                dmr2 |= VNDMR2_VPS;
 
        /*
+        * Clock-enable active level select.
+        * Use HSYNC as enable if not specified
+        */
+       if (vin->mbus_cfg.flags & V4L2_MBUS_DATA_ACTIVE_LOW)
+               dmr2 |= VNDMR2_CES;
+       else if (!(vin->mbus_cfg.flags & V4L2_MBUS_DATA_ACTIVE_HIGH))
+               dmr2 |= VNDMR2_CHS;
+
+       /*
         * Output format
         */
        switch (vin->format.pixelformat) {
-- 
2.7.4

Reply via email to