Loading drivers/media/platform/msm/camera_v2/sensor/csiphy/msm_csiphy.c +23 −10 Original line number Diff line number Diff line Loading @@ -218,6 +218,8 @@ static int msm_csiphy_snps_2_lane_config( } } csiphy_dev->snps_programmed_data_rate = csiphy_params->data_rate; if (mode == TWO_LANE_PHY_A) { msm_camera_io_w(csiphy_dev->ctrl_reg->csiphy_snps_reg. mipi_csiphy_sys_ctrl.data, Loading Loading @@ -322,8 +324,11 @@ static int msm_csiphy_snps_lane_config( mode = AGGREGATE_MODE; num_lanes = 4; if (csiphy_dev->snps_state != NOT_CONFIGURED) { pr_err("%s: invalid request\n", __func__); return -EINVAL; if (csiphy_dev->snps_programmed_data_rate != csiphy_params->data_rate) pr_err("reconfiguring snps phy"); else return 0; } csiphy_dev->snps_state = CONFIGURED_AGGREGATE_MODE; clk_mux_reg &= ~0xff; Loading @@ -332,34 +337,38 @@ static int msm_csiphy_snps_lane_config( } else if (lane_mask == LANE_MASK_PHY_A) { /* PHY A */ /* 2 lane config */ num_lanes = 2; if (csiphy_dev->snps_state == NOT_CONFIGURED) { mode = TWO_LANE_PHY_A; if (csiphy_dev->snps_state == NOT_CONFIGURED) { csiphy_dev->snps_state = CONFIGURED_TWO_LANE_PHY_A; } else if (csiphy_dev->snps_state == CONFIGURED_TWO_LANE_PHY_B) { /* 2 lane + 2 lane config */ mode = TWO_LANE_PHY_A; csiphy_dev->snps_state = CONFIGURED_COMBO_MODE; } else { pr_err("%s: invalid request\n", __func__); return -EINVAL; if (csiphy_dev->snps_programmed_data_rate != csiphy_params->data_rate) pr_err("reconfiguring snps phy"); else return 0; } clk_mux_reg &= ~0xf; clk_mux_reg |= (uint32_t)csiphy_params->csid_core; } else if (lane_mask == LANE_MASK_PHY_B) { /* PHY B */ /* 2 lane config */ num_lanes = 2; if (csiphy_dev->snps_state == NOT_CONFIGURED) { mode = TWO_LANE_PHY_B; if (csiphy_dev->snps_state == NOT_CONFIGURED) { csiphy_dev->snps_state = CONFIGURED_TWO_LANE_PHY_B; } else if (csiphy_dev->snps_state == CONFIGURED_TWO_LANE_PHY_A) { /* 2 lane + 2 lane config */ mode = TWO_LANE_PHY_B; csiphy_dev->snps_state = CONFIGURED_COMBO_MODE; } else { pr_err("%s: invalid request\n", __func__); return -EINVAL; if (csiphy_dev->snps_programmed_data_rate != csiphy_params->data_rate) pr_err("reconfiguring snps phy"); else return 0; } clk_mux_reg &= ~0xf0; clk_mux_reg |= csiphy_params->csid_core << 4; Loading Loading @@ -1660,6 +1669,7 @@ static int msm_csiphy_init(struct csiphy_device *csiphy_dev) csiphy_dev->hw_version); csiphy_dev->csiphy_state = CSIPHY_POWER_UP; csiphy_dev->snps_state = NOT_CONFIGURED; csiphy_dev->snps_programmed_data_rate = 0; return 0; csiphy_enable_clk_fail: Loading Loading @@ -1766,6 +1776,7 @@ static int msm_csiphy_init(struct csiphy_device *csiphy_dev) csiphy_dev->hw_version); csiphy_dev->csiphy_state = CSIPHY_POWER_UP; csiphy_dev->snps_state = NOT_CONFIGURED; csiphy_dev->snps_programmed_data_rate = 0; return 0; csiphy_enable_clk_fail: Loading Loading @@ -1915,6 +1926,7 @@ static int msm_csiphy_release(struct csiphy_device *csiphy_dev, void *arg) csiphy_dev->csiphy_state = CSIPHY_POWER_DOWN; csiphy_dev->snps_state = NOT_CONFIGURED; csiphy_dev->snps_programmed_data_rate = 0; if (cam_config_ahb_clk(NULL, 0, CAM_AHB_CLIENT_CSIPHY, CAM_AHB_SUSPEND_VOTE) < 0) Loading Loading @@ -2047,6 +2059,7 @@ static int msm_csiphy_release(struct csiphy_device *csiphy_dev, void *arg) csiphy_dev->csiphy_state = CSIPHY_POWER_DOWN; csiphy_dev->snps_state = NOT_CONFIGURED; csiphy_dev->snps_programmed_data_rate = 0; if (cam_config_ahb_clk(NULL, 0, CAM_AHB_CLIENT_CSIPHY, CAM_AHB_SUSPEND_VOTE) < 0) Loading drivers/media/platform/msm/camera_v2/sensor/csiphy/msm_csiphy.h +1 −0 Original line number Diff line number Diff line Loading @@ -250,6 +250,7 @@ struct csiphy_device { uint8_t is_snps_phy; enum snps_csiphy_state snps_state; uint8_t num_clk_irq_registers; uint64_t snps_programmed_data_rate; }; #define VIDIOC_MSM_CSIPHY_RELEASE \ Loading Loading
drivers/media/platform/msm/camera_v2/sensor/csiphy/msm_csiphy.c +23 −10 Original line number Diff line number Diff line Loading @@ -218,6 +218,8 @@ static int msm_csiphy_snps_2_lane_config( } } csiphy_dev->snps_programmed_data_rate = csiphy_params->data_rate; if (mode == TWO_LANE_PHY_A) { msm_camera_io_w(csiphy_dev->ctrl_reg->csiphy_snps_reg. mipi_csiphy_sys_ctrl.data, Loading Loading @@ -322,8 +324,11 @@ static int msm_csiphy_snps_lane_config( mode = AGGREGATE_MODE; num_lanes = 4; if (csiphy_dev->snps_state != NOT_CONFIGURED) { pr_err("%s: invalid request\n", __func__); return -EINVAL; if (csiphy_dev->snps_programmed_data_rate != csiphy_params->data_rate) pr_err("reconfiguring snps phy"); else return 0; } csiphy_dev->snps_state = CONFIGURED_AGGREGATE_MODE; clk_mux_reg &= ~0xff; Loading @@ -332,34 +337,38 @@ static int msm_csiphy_snps_lane_config( } else if (lane_mask == LANE_MASK_PHY_A) { /* PHY A */ /* 2 lane config */ num_lanes = 2; if (csiphy_dev->snps_state == NOT_CONFIGURED) { mode = TWO_LANE_PHY_A; if (csiphy_dev->snps_state == NOT_CONFIGURED) { csiphy_dev->snps_state = CONFIGURED_TWO_LANE_PHY_A; } else if (csiphy_dev->snps_state == CONFIGURED_TWO_LANE_PHY_B) { /* 2 lane + 2 lane config */ mode = TWO_LANE_PHY_A; csiphy_dev->snps_state = CONFIGURED_COMBO_MODE; } else { pr_err("%s: invalid request\n", __func__); return -EINVAL; if (csiphy_dev->snps_programmed_data_rate != csiphy_params->data_rate) pr_err("reconfiguring snps phy"); else return 0; } clk_mux_reg &= ~0xf; clk_mux_reg |= (uint32_t)csiphy_params->csid_core; } else if (lane_mask == LANE_MASK_PHY_B) { /* PHY B */ /* 2 lane config */ num_lanes = 2; if (csiphy_dev->snps_state == NOT_CONFIGURED) { mode = TWO_LANE_PHY_B; if (csiphy_dev->snps_state == NOT_CONFIGURED) { csiphy_dev->snps_state = CONFIGURED_TWO_LANE_PHY_B; } else if (csiphy_dev->snps_state == CONFIGURED_TWO_LANE_PHY_A) { /* 2 lane + 2 lane config */ mode = TWO_LANE_PHY_B; csiphy_dev->snps_state = CONFIGURED_COMBO_MODE; } else { pr_err("%s: invalid request\n", __func__); return -EINVAL; if (csiphy_dev->snps_programmed_data_rate != csiphy_params->data_rate) pr_err("reconfiguring snps phy"); else return 0; } clk_mux_reg &= ~0xf0; clk_mux_reg |= csiphy_params->csid_core << 4; Loading Loading @@ -1660,6 +1669,7 @@ static int msm_csiphy_init(struct csiphy_device *csiphy_dev) csiphy_dev->hw_version); csiphy_dev->csiphy_state = CSIPHY_POWER_UP; csiphy_dev->snps_state = NOT_CONFIGURED; csiphy_dev->snps_programmed_data_rate = 0; return 0; csiphy_enable_clk_fail: Loading Loading @@ -1766,6 +1776,7 @@ static int msm_csiphy_init(struct csiphy_device *csiphy_dev) csiphy_dev->hw_version); csiphy_dev->csiphy_state = CSIPHY_POWER_UP; csiphy_dev->snps_state = NOT_CONFIGURED; csiphy_dev->snps_programmed_data_rate = 0; return 0; csiphy_enable_clk_fail: Loading Loading @@ -1915,6 +1926,7 @@ static int msm_csiphy_release(struct csiphy_device *csiphy_dev, void *arg) csiphy_dev->csiphy_state = CSIPHY_POWER_DOWN; csiphy_dev->snps_state = NOT_CONFIGURED; csiphy_dev->snps_programmed_data_rate = 0; if (cam_config_ahb_clk(NULL, 0, CAM_AHB_CLIENT_CSIPHY, CAM_AHB_SUSPEND_VOTE) < 0) Loading Loading @@ -2047,6 +2059,7 @@ static int msm_csiphy_release(struct csiphy_device *csiphy_dev, void *arg) csiphy_dev->csiphy_state = CSIPHY_POWER_DOWN; csiphy_dev->snps_state = NOT_CONFIGURED; csiphy_dev->snps_programmed_data_rate = 0; if (cam_config_ahb_clk(NULL, 0, CAM_AHB_CLIENT_CSIPHY, CAM_AHB_SUSPEND_VOTE) < 0) Loading
drivers/media/platform/msm/camera_v2/sensor/csiphy/msm_csiphy.h +1 −0 Original line number Diff line number Diff line Loading @@ -250,6 +250,7 @@ struct csiphy_device { uint8_t is_snps_phy; enum snps_csiphy_state snps_state; uint8_t num_clk_irq_registers; uint64_t snps_programmed_data_rate; }; #define VIDIOC_MSM_CSIPHY_RELEASE \ Loading