diff --git a/msm/dsi/dsi_catalog.c b/msm/dsi/dsi_catalog.c index 0fade39ba4..96f0615123 100644 --- a/msm/dsi/dsi_catalog.c +++ b/msm/dsi/dsi_catalog.c @@ -72,6 +72,7 @@ static void dsi_catalog_cmn_init(struct dsi_ctrl_hw *ctrl, case DSI_CTRL_VERSION_2_4: case DSI_CTRL_VERSION_2_5: case DSI_CTRL_VERSION_2_6: + case DSI_CTRL_VERSION_2_7: ctrl->ops.phy_reset_config = dsi_ctrl_hw_22_phy_reset_config; ctrl->ops.config_clk_gating = dsi_ctrl_hw_22_config_clk_gating; ctrl->ops.setup_lane_map = dsi_ctrl_hw_22_setup_lane_map; @@ -142,6 +143,7 @@ int dsi_catalog_ctrl_setup(struct dsi_ctrl_hw *ctrl, break; case DSI_CTRL_VERSION_2_5: case DSI_CTRL_VERSION_2_6: + case DSI_CTRL_VERSION_2_7: ctrl->widebus_support = true; ctrl->phy_isolation_enabled = phy_isolation_enabled; dsi_catalog_cmn_init(ctrl, version); @@ -265,6 +267,7 @@ int dsi_catalog_phy_setup(struct dsi_phy_hw *phy, case DSI_PHY_VERSION_4_1: case DSI_PHY_VERSION_4_2: case DSI_PHY_VERSION_4_3: + case DSI_PHY_VERSION_5_2: dsi_catalog_phy_4_0_init(phy); break; default: diff --git a/msm/dsi/dsi_ctrl.c b/msm/dsi/dsi_ctrl.c index 50c4f3073f..c3ce462d7f 100644 --- a/msm/dsi/dsi_ctrl.c +++ b/msm/dsi/dsi_ctrl.c @@ -54,6 +54,7 @@ static const enum dsi_ctrl_version dsi_ctrl_v2_3 = DSI_CTRL_VERSION_2_3; static const enum dsi_ctrl_version dsi_ctrl_v2_4 = DSI_CTRL_VERSION_2_4; static const enum dsi_ctrl_version dsi_ctrl_v2_5 = DSI_CTRL_VERSION_2_5; static const enum dsi_ctrl_version dsi_ctrl_v2_6 = DSI_CTRL_VERSION_2_6; +static const enum dsi_ctrl_version dsi_ctrl_v2_7 = DSI_CTRL_VERSION_2_7; static const struct of_device_id msm_dsi_of_match[] = { { @@ -76,6 +77,10 @@ static const struct of_device_id msm_dsi_of_match[] = { .compatible = "qcom,dsi-ctrl-hw-v2.6", .data = &dsi_ctrl_v2_6, }, + { + .compatible = "qcom,dsi-ctrl-hw-v2.7", + .data = &dsi_ctrl_v2_7, + }, {} }; @@ -693,6 +698,7 @@ static int dsi_ctrl_init_regmap(struct platform_device *pdev, case DSI_CTRL_VERSION_2_4: case DSI_CTRL_VERSION_2_5: case DSI_CTRL_VERSION_2_6: + case DSI_CTRL_VERSION_2_7: ptr = msm_ioremap(pdev, "disp_cc_base", ctrl->name); if (IS_ERR(ptr)) { DSI_CTRL_ERR(ctrl, "disp_cc base address not found for\n"); diff --git a/msm/dsi/dsi_ctrl_hw.h b/msm/dsi/dsi_ctrl_hw.h index 84b6ac0a63..ee01df53b9 100644 --- a/msm/dsi/dsi_ctrl_hw.h +++ b/msm/dsi/dsi_ctrl_hw.h @@ -49,6 +49,7 @@ * @DSI_CTRL_VERSION_2_4: DSI host v2.4 controller * @DSI_CTRL_VERSION_2_5: DSI host v2.5 controller * @DSI_CTRL_VERSION_2_6: DSI host v2.6 controller + * @DSI_CTRL_VERSION_2_7: DSI host v2.7 controller * @DSI_CTRL_VERSION_MAX: max version */ enum dsi_ctrl_version { @@ -58,6 +59,7 @@ enum dsi_ctrl_version { DSI_CTRL_VERSION_2_4, DSI_CTRL_VERSION_2_5, DSI_CTRL_VERSION_2_6, + DSI_CTRL_VERSION_2_7, DSI_CTRL_VERSION_MAX }; diff --git a/msm/dsi/dsi_phy.c b/msm/dsi/dsi_phy.c index 2305790fee..98183a26e8 100644 --- a/msm/dsi/dsi_phy.c +++ b/msm/dsi/dsi_phy.c @@ -71,6 +71,14 @@ static const struct dsi_ver_spec_info dsi_phy_v4_3 = { .timing_cfg_count = 14, }; +static const struct dsi_ver_spec_info dsi_phy_v5_2 = { + .version = DSI_PHY_VERSION_5_2, + .lane_cfg_count = 4, + .strength_cfg_count = 2, + .regulator_cfg_count = 0, + .timing_cfg_count = 14, +}; + static const struct of_device_id msm_dsi_phy_of_match[] = { { .compatible = "qcom,dsi-phy-v3.0", .data = &dsi_phy_v3_0,}, @@ -82,6 +90,8 @@ static const struct of_device_id msm_dsi_phy_of_match[] = { .data = &dsi_phy_v4_2,}, { .compatible = "qcom,dsi-phy-v4.3", .data = &dsi_phy_v4_3,}, + { .compatible = "qcom,dsi-phy-v5.2", + .data = &dsi_phy_v5_2,}, {} }; diff --git a/msm/dsi/dsi_phy_hw.h b/msm/dsi/dsi_phy_hw.h index adf39e8a1e..775381e23c 100644 --- a/msm/dsi/dsi_phy_hw.h +++ b/msm/dsi/dsi_phy_hw.h @@ -34,6 +34,7 @@ * @DSI_PHY_VERSION_4_1: 7nm * @DSI_PHY_VERSION_4_2: 5nm * @DSI_PHY_VERSION_4_3: 5nm + * @DSI_PHY_VERSION_5_2: 4nm * @DSI_PHY_VERSION_MAX: */ enum dsi_phy_version { @@ -43,6 +44,7 @@ enum dsi_phy_version { DSI_PHY_VERSION_4_1, /* 7nm */ DSI_PHY_VERSION_4_2, /* 5nm */ DSI_PHY_VERSION_4_3, /* 5nm */ + DSI_PHY_VERSION_5_2, /* 4nm */ DSI_PHY_VERSION_MAX }; diff --git a/msm/dsi/dsi_phy_timing_calc.c b/msm/dsi/dsi_phy_timing_calc.c index 2d407930d6..ec78c95fc3 100644 --- a/msm/dsi/dsi_phy_timing_calc.c +++ b/msm/dsi/dsi_phy_timing_calc.c @@ -994,6 +994,7 @@ int dsi_phy_timing_calc_init(struct dsi_phy_hw *phy, case DSI_PHY_VERSION_4_1: case DSI_PHY_VERSION_4_2: case DSI_PHY_VERSION_4_3: + case DSI_PHY_VERSION_5_2: ops->get_default_phy_params = dsi_phy_hw_v4_0_get_default_phy_params; ops->calc_clk_zero =