1 /* 2 * Copyright (c) 2023 HPMicro 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 * 6 */ 7 8 #include "hpm_mipi_csi_phy_drv.h" 9 mipi_csi_phy_default_config(mipi_csi_phy_config_t * cfg)10void mipi_csi_phy_default_config(mipi_csi_phy_config_t *cfg) 11 { 12 cfg->clane_cfg.t_settle_ns = 140; 13 cfg->clane_cfg.t_term_en_ns = 30; 14 15 cfg->dlane_cfg.t_settle_ns = 100; 16 cfg->dlane_cfg.t_term_en_ns = 30; 17 } 18 mipi_csi_phy_init(MIPI_CSI_PHY_Type * ptr,mipi_csi_phy_config_t * cfg)19void mipi_csi_phy_init(MIPI_CSI_PHY_Type *ptr, mipi_csi_phy_config_t *cfg) 20 { 21 ptr->SOFT_RST = 0x03; 22 ptr->SOFT_RST = 0x00; 23 24 ptr->CLANE_PARA = (ptr->CLANE_PARA & ~(MIPI_CSI_PHY_CLANE_PARA_T_CLK_TERMEN_MASK | 25 MIPI_CSI_PHY_CLANE_PARA_T_CLK_SETTLE_MASK)) | 26 MIPI_CSI_PHY_CLANE_PARA_T_CLK_TERMEN_SET(cfg->clane_cfg.t_term_en_ns / 10) | 27 MIPI_CSI_PHY_CLANE_PARA_T_CLK_SETTLE_SET(cfg->clane_cfg.t_settle_ns / 10); 28 29 30 ptr->T_HS_TERMEN = (ptr->T_HS_TERMEN & ~(MIPI_CSI_PHY_T_HS_TERMEN_T_D1_TERMEN_MASK | 31 MIPI_CSI_PHY_T_HS_TERMEN_T_D0_TERMEN_MASK)) | 32 MIPI_CSI_PHY_T_HS_TERMEN_T_D1_TERMEN_SET(cfg->dlane_cfg.t_term_en_ns / 10) | 33 MIPI_CSI_PHY_T_HS_TERMEN_T_D0_TERMEN_SET(cfg->dlane_cfg.t_term_en_ns / 10); 34 35 ptr->T_HS_SETTLE = (ptr->T_HS_SETTLE & ~(MIPI_CSI_PHY_T_HS_SETTLE_T_D1_SETTLE_MASK | 36 MIPI_CSI_PHY_T_HS_SETTLE_T_D0_SETTLE_MASK)) | 37 MIPI_CSI_PHY_T_HS_SETTLE_T_D1_SETTLE_SET(cfg->dlane_cfg.t_settle_ns / 10) | 38 MIPI_CSI_PHY_T_HS_SETTLE_T_D0_SETTLE_SET(cfg->dlane_cfg.t_settle_ns / 10); 39 } 40