OMAP3430 needs various syscon CONTROL_CSIRXFE bits set in order to operate.
Implement the missing functionality.

Signed-off-by: Ivaylo Dimitrov <ivo.g.dimitrov...@gmail.com>
---
 drivers/media/platform/omap3isp/ispccp2.c | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/drivers/media/platform/omap3isp/ispccp2.c 
b/drivers/media/platform/omap3isp/ispccp2.c
index 7bb7feb..833eed4 100644
--- a/drivers/media/platform/omap3isp/ispccp2.c
+++ b/drivers/media/platform/omap3isp/ispccp2.c
@@ -21,6 +21,7 @@
 #include <linux/mutex.h>
 #include <linux/uaccess.h>
 #include <linux/regulator/consumer.h>
+#include <linux/regmap.h>
 
 #include "isp.h"
 #include "ispreg.h"
@@ -160,6 +161,32 @@ static int ccp2_if_enable(struct isp_ccp2_device *ccp2, u8 
enable)
                        return ret;
        }
 
+       if (isp->revision == ISP_REVISION_2_0) {
+               struct media_pad *pad;
+               struct v4l2_subdev *sensor;
+               const struct isp_ccp2_cfg *buscfg;
+               u32 csirxfe;
+
+               pad = media_entity_remote_pad(&ccp2->pads[CCP2_PAD_SINK]);
+               sensor = media_entity_to_v4l2_subdev(pad->entity);
+               buscfg = &((struct isp_bus_cfg *)sensor->host_priv)->bus.ccp2;
+
+
+               if (enable) {
+                       csirxfe = OMAP343X_CONTROL_CSIRXFE_PWRDNZ |
+                                 OMAP343X_CONTROL_CSIRXFE_RESET;
+
+                       if (buscfg->phy_layer)
+                               csirxfe |= OMAP343X_CONTROL_CSIRXFE_SELFORM;
+
+                       if (buscfg->strobe_clk_pol)
+                               csirxfe |= OMAP343X_CONTROL_CSIRXFE_CSIB_INV;
+               } else
+                       csirxfe = 0;
+
+               regmap_write(isp->syscon, isp->syscon_offset, csirxfe);
+       }
+
        /* Enable/Disable all the LCx channels */
        for (i = 0; i < CCP2_LCx_CHANS_NUM; i++)
                isp_reg_clr_set(isp, OMAP3_ISP_IOMEM_CCP2, ISPCCP2_LCx_CTRL(i),
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-media" 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