summaryrefslogtreecommitdiff
path: root/drivers/staging
diff options
context:
space:
mode:
authorGuoniu.zhou <guoniu.zhou@nxp.com>2020-05-20 14:02:05 +0800
committerGuoniu.zhou <guoniu.zhou@nxp.com>2020-05-20 16:35:14 +0800
commit334a82c65d9d0c299509e4da36ac0dd8c7170b23 (patch)
treee09fa154f4601c95826d3c59160fe4deba95b1d6 /drivers/staging
parentc8078eb4684885ec503a43217aecdec5a1c60d10 (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.c7
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;
}