1) correct mipiphy_hsfreqrange of 3368.
2) add csi-phy timing setting for 3368.
Change-Id: Ia5203dcd8f01bc8989d5bb41a1b2af71bb91f607
Signed-off-by: dalong.zhang <dalon.zhang@rock-chips.com>
1) support rk3288.
*v0.0x21.0xd:
1) modify mipiphy_hsfreqrange for 3368.
+*v0.0x21.0xe
+ 1) correct mipiphy_hsfreqrange of 3368.
+ 2) add csi-phy timing setting for 3368.
*/
-#define CAMSYS_DRIVER_VERSION KERNEL_VERSION(0, 0x21, 0xd)
+#define CAMSYS_DRIVER_VERSION KERNEL_VERSION(0, 0x21, 0xe)
#define CAMSYS_PLATFORM_DRV_NAME "RockChip-CamSys"
#define CAMSYS_PLATFORM_MARVIN_NAME "Platform_MarvinDev"
{500, 600, 0x07},
{600, 700, 0x08},
{700, 800, 0x09},
- {800, 1000, 0x10},
- {1000, 1200, 0x11},
- {1200, 1400, 0x12},
- {1400, 1600, 0x13},
- {1600, 1800, 0x14}
+ {800, 1000, 0xa},
+ {1000, 1100, 0xb},
+ {1100, 1250, 0xc},
+ {1250, 1350, 0xd},
+ {1350, 1500, 0xe}
};
#if 0
| (1 << ISP_MIPI_CSI_HOST_SEL_OFFSET_BIT));
*/
/* phy start */
+ write_csiphy_reg(MIPI_CSI_DPHY_CTRL_PWRCTL_OFFSET, 0xe4);
+
+ /* set data lane num and enable clock lane */
+ write_csiphy_reg(MIPI_CSI_DPHY_LANEX_THS_SETTLE_OFFSET,
+ ((para->phy->data_en_bit << 2) | (0x1 << 6) | 0x1));
+ /* Reset dphy analog part */
+ write_csiphy_reg(MIPI_CSI_DPHY_CTRL_PWRCTL_OFFSET, 0xe0);
+ usleep_range(500, 1000);
+ /* Reset dphy digital part */
+ write_csiphy_reg(MIPI_CSI_DPHY_CTRL_DIG_RST_OFFSET, 0x1e);
+ write_csiphy_reg(MIPI_CSI_DPHY_CTRL_DIG_RST_OFFSET, 0x1f);
+
+ write_grf_reg(GRF_SOC_CON6_OFFSET,
+ MIPI_CSI_DPHY_RX_FORCERXMODE_MASK |
+ MIPI_CSI_DPHY_RX_FORCERXMODE_BIT);
+
write_csiphy_reg
((MIPI_CSI_DPHY_LANEX_THS_SETTLE_OFFSET + 0x100),
hsfreqrange |
(read_csiphy_reg(MIPI_CSI_DPHY_LANEX_THS_SETTLE_OFFSET
+ 0x300) & (~0xf)));
}
-
- /*set data lane num and enable clock lane */
- write_csiphy_reg(0x00, ((para->phy->data_en_bit << 2)
- | (0x1 << 6) | 0x1));
-
+ /*
+ * MIPI CTRL bit8:11 SHUTDOWN_LANE are invert
+ * connect to dphy pin_enable_x
+ */
base =
(unsigned long)
para->camsys_dev->devmems.registermem->vir_base;
else
__raw_writel(0x00, (void *)(camsys_dev->rk_isp_base +
MRV_AFM_BASE + VI_IRCL));
- camsys_trace(1, "Isp self soft rst: %ld", reset);
+ camsys_trace(2, "Isp self soft rst: %ld", reset);
break;
}
*/
#define MIPI_CSI_DPHY_LANEX_MSB_EN_OFFSET (0x38)
+#define MIPI_CSI_DPHY_RX_FORCERXMODE_MASK (0x0f << 24)
+#define MIPI_CSI_DPHY_RX_FORCERXMODE_BIT (0 << 8)
+
#define CSIHOST_N_LANES_OFFSET 0x04
#define CSIHOST_N_LANES_OFFSET_BIT (0)
{500, 600, 0x07},
{600, 700, 0x08},
{700, 800, 0x09},
- {800, 1000, 0x10},
- {1000, 1200, 0x11},
- {1200, 1400, 0x12},
- {1400, 1600, 0x13},
- {1600, 1800, 0x14}
+ {800, 1000, 0xa},
+ {1000, 1100, 0xb},
+ {1100, 1250, 0xc},
+ {1250, 1350, 0xd},
+ {1350, 1500, 0xe}
};
#if 0
write_grf_reg(GRF_SOC_CON6_OFFSET, ISP_MIPI_CSI_HOST_SEL_OFFSET_MASK
| (1 << ISP_MIPI_CSI_HOST_SEL_OFFSET_BIT));
- /* phy start */
+ /* phy start */
+ write_csiphy_reg(MIPI_CSI_DPHY_CTRL_PWRCTL_OFFSET, 0xe4);
+
+ /* set data lane num and enable clock lane */
+ write_csiphy_reg(MIPI_CSI_DPHY_LANEX_THS_SETTLE_OFFSET,
+ ((para->phy->data_en_bit << 2) | (0x1 << 6) | 0x1));
+ /* Reset dphy analog part */
+ write_csiphy_reg(MIPI_CSI_DPHY_CTRL_PWRCTL_OFFSET, 0xe0);
+ usleep_range(500, 1000);
+ /* Reset dphy digital part */
+ write_csiphy_reg(MIPI_CSI_DPHY_CTRL_DIG_RST_OFFSET, 0x1e);
+ write_csiphy_reg(MIPI_CSI_DPHY_CTRL_DIG_RST_OFFSET, 0x1f);
+
+ write_grf_reg(GRF_SOC_CON6_OFFSET,
+ MIPI_CSI_DPHY_RX_FORCERXMODE_MASK |
+ MIPI_CSI_DPHY_RX_FORCERXMODE_BIT);
+
write_csiphy_reg((MIPI_CSI_DPHY_LANEX_THS_SETTLE_OFFSET + 0x100),
hsfreqrange |
(read_csiphy_reg(MIPI_CSI_DPHY_LANEX_THS_SETTLE_OFFSET
(read_csiphy_reg(MIPI_CSI_DPHY_LANEX_THS_SETTLE_OFFSET
+ 0x300) & (~0xf)));
}
-
- /*set data lane num and enable clock lane */
- write_csiphy_reg(0x00, ((para->phy->data_en_bit << 2)
- | (0x1 << 6) | 0x1));
-
+ /*
+ * MIPI CTRL bit8:11 SHUTDOWN_LANE are invert
+ * connect to dphy pin_enable_x
+ */
base = (unsigned long)para->camsys_dev->devmems.registermem->vir_base;
*((unsigned int *)(base + (MRV_MIPI_BASE + MRV_MIPI_CTRL)))
&= ~(0x0f << 8);
*/
#define MIPI_CSI_DPHY_LANEX_MSB_EN_OFFSET (0x38)
+#define MIPI_CSI_DPHY_RX_FORCERXMODE_MASK (0x0f << 24)
+#define MIPI_CSI_DPHY_RX_FORCERXMODE_BIT (0 << 8)
+
#define CSIHOST_N_LANES_OFFSET 0x04
#define CSIHOST_N_LANES_OFFSET_BIT (0)