diff options
author | Guoniu.zhou <guoniu.zhou@nxp.com> | 2020-05-20 14:02:05 +0800 |
---|---|---|
committer | Guoniu.zhou <guoniu.zhou@nxp.com> | 2020-05-20 16:35:14 +0800 |
commit | 334a82c65d9d0c299509e4da36ac0dd8c7170b23 (patch) | |
tree | e09fa154f4601c95826d3c59160fe4deba95b1d6 /drivers/staging | |
parent | c8078eb4684885ec503a43217aecdec5a1c60d10 (diff) |
MLK-23860: media: imx: improve calculation for csi RXHS_SETTLE parameter
According to Mixel MIPI CSI PHY spec, the minimum value for RXHS_SETTLE
is 85ns + 6*UI and the maximum value for RXHS_SETTLE is 145ns + 10*UI,
so get average value of maximum and minimum as RXHS_SETTLE typical value.
Signed-off-by: Guoniu.zhou <guoniu.zhou@nxp.com>
Reviewed-by: Sandor Yu <sandor.yu@nxp.com>
(cherry picked from commit af684872dceece899b439b6167343b1e7655a251)
Diffstat (limited to 'drivers/staging')
-rw-r--r-- | drivers/staging/media/imx/imx8-mipi-csi2.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/staging/media/imx/imx8-mipi-csi2.c b/drivers/staging/media/imx/imx8-mipi-csi2.c index f6ecf7dc67ad..19b76fa72782 100644 --- a/drivers/staging/media/imx/imx8-mipi-csi2.c +++ b/drivers/staging/media/imx/imx8-mipi-csi2.c @@ -338,6 +338,7 @@ static inline struct mxc_mipi_csi2_dev *sd_to_mxc_mipi_csi2_dev(struct v4l2_subd * UI = 1000 / mipi csi phy clock * THS-SETTLE_mim = 85ns + 6 * UI * THS-SETTLE_max = 145ns +10 * UI + * THS-SETTLE = (THS-SETTLE_mim + THS-SETTLE_max) / 2 * PRG_RXHS_SETTLE = THS-SETTLE / (Tperiod of RxClk_ESC) + 1 ****************************************/ static int calc_hs_settle(struct mxc_mipi_csi2_dev *csi2dev, u32 dphy_clk) @@ -345,9 +346,13 @@ static int calc_hs_settle(struct mxc_mipi_csi2_dev *csi2dev, u32 dphy_clk) u32 esc_rate; u32 hs_settle; u32 rxhs_settle; + u32 hs_settle_min; + u32 hs_settle_max; esc_rate = clk_get_rate(csi2dev->clk_esc) / 1000000; - hs_settle = 140 + 8 * 1000 / dphy_clk; + hs_settle_min = 85 + 6 * 1000 / dphy_clk; + hs_settle_max = 145 + 10 * 1000 / dphy_clk; + hs_settle = (hs_settle_min + hs_settle_max) >> 1; rxhs_settle = hs_settle / (1000 / esc_rate) - 1; return rxhs_settle; } |