disp: msm: dsi: Add new phy comaptible string for cape
Cape uses phy version 4.3 but requires programming of different values for vreg_ctrl_0 and vreg_ctrl_1 to configure LDO setting. Add new phy compatible string to distinguish cape from other chipsets and program the registers accordingly. Change-Id: I68b266cc6e179d211ee0fd05584a605f39b4d31d Signed-off-by: Srihitha Tangudu <quic_tangudu@quicinc.com>
Dieser Commit ist enthalten in:

committet von
Gerrit - the friendly Code Review server

Ursprung
46849f2f19
Commit
25beb2fccc
@@ -1,6 +1,7 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (c) 2015-2021, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/errno.h>
|
||||
@@ -265,6 +266,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_4_3_2:
|
||||
dsi_catalog_phy_4_0_init(phy);
|
||||
break;
|
||||
default:
|
||||
|
@@ -1,6 +1,7 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (c) 2016-2021, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/of_device.h>
|
||||
@@ -71,6 +72,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_v4_3_2 = {
|
||||
.version = DSI_PHY_VERSION_4_3_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 +91,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-v4.3.2",
|
||||
.data = &dsi_phy_v4_3_2,},
|
||||
{}
|
||||
};
|
||||
|
||||
|
@@ -1,6 +1,7 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/*
|
||||
* Copyright (c) 2015-2021, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef _DSI_PHY_HW_H_
|
||||
@@ -34,6 +35,7 @@
|
||||
* @DSI_PHY_VERSION_4_1: 7nm
|
||||
* @DSI_PHY_VERSION_4_2: 5nm
|
||||
* @DSI_PHY_VERSION_4_3: 5nm
|
||||
* @DSI_PHY_VERSION_4_3_2: 4nm (v4.3 specific to SM8475)
|
||||
* @DSI_PHY_VERSION_MAX:
|
||||
*/
|
||||
enum dsi_phy_version {
|
||||
@@ -43,6 +45,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_4_3_2, /* 4nm */
|
||||
DSI_PHY_VERSION_MAX
|
||||
};
|
||||
|
||||
|
@@ -1,6 +1,7 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (c) 2016-2021, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/math64.h>
|
||||
@@ -247,6 +248,7 @@ static void dsi_phy_hw_cphy_enable(struct dsi_phy_hw *phy,
|
||||
u32 minor_ver = 0;
|
||||
/* For C-PHY, no low power settings for lower clk rate */
|
||||
u32 vreg_ctrl_0 = 0x51;
|
||||
u32 vreg_ctrl_1 = 0x55;
|
||||
u32 glbl_str_swi_cal_sel_ctrl = 0;
|
||||
u32 glbl_hstx_str_ctrl_0 = 0;
|
||||
u32 glbl_rescode_top_ctrl = 0;
|
||||
@@ -272,6 +274,11 @@ static void dsi_phy_hw_cphy_enable(struct dsi_phy_hw *phy,
|
||||
glbl_rescode_bot_ctrl = 0x3c;
|
||||
}
|
||||
|
||||
if (phy->version == DSI_PHY_VERSION_4_3_2) {
|
||||
vreg_ctrl_0 = 0x45;
|
||||
vreg_ctrl_1 = 0x41;
|
||||
}
|
||||
|
||||
/* de-assert digital and pll power down */
|
||||
data = BIT(6) | BIT(5);
|
||||
DSI_W32(phy, DSIPHY_CMN_CTRL_0, data);
|
||||
@@ -295,7 +302,7 @@ static void dsi_phy_hw_cphy_enable(struct dsi_phy_hw *phy,
|
||||
|
||||
/* Enable LDO */
|
||||
DSI_W32(phy, DSIPHY_CMN_VREG_CTRL_0, vreg_ctrl_0);
|
||||
DSI_W32(phy, DSIPHY_CMN_VREG_CTRL_1, 0x55);
|
||||
DSI_W32(phy, DSIPHY_CMN_VREG_CTRL_1, vreg_ctrl_1);
|
||||
DSI_W32(phy, DSIPHY_CMN_GLBL_STR_SWI_CAL_SEL_CTRL,
|
||||
glbl_str_swi_cal_sel_ctrl);
|
||||
DSI_W32(phy, DSIPHY_CMN_GLBL_HSTX_STR_CTRL_0, glbl_hstx_str_ctrl_0);
|
||||
@@ -356,6 +363,7 @@ static void dsi_phy_hw_dphy_enable(struct dsi_phy_hw *phy,
|
||||
u32 minor_ver = 0;
|
||||
bool less_than_1500_mhz = false;
|
||||
u32 vreg_ctrl_0 = 0;
|
||||
u32 vreg_ctrl_1 = 0x5c;
|
||||
u32 glbl_str_swi_cal_sel_ctrl = 0;
|
||||
u32 glbl_hstx_str_ctrl_0 = 0;
|
||||
u32 glbl_rescode_top_ctrl = 0;
|
||||
@@ -390,6 +398,11 @@ static void dsi_phy_hw_dphy_enable(struct dsi_phy_hw *phy,
|
||||
if (phy->version >= DSI_PHY_VERSION_4_3)
|
||||
glbl_rescode_top_ctrl = less_than_1500_mhz ? 0x3d : 0x01;
|
||||
|
||||
if (phy->version == DSI_PHY_VERSION_4_3_2){
|
||||
vreg_ctrl_0 = 0x19;
|
||||
vreg_ctrl_1 = 0x44;
|
||||
}
|
||||
|
||||
split_link_enabled = cfg->split_link.enabled;
|
||||
lanes_per_sublink = cfg->split_link.lanes_per_sublink;
|
||||
/* de-assert digital and pll power down */
|
||||
@@ -418,7 +431,7 @@ static void dsi_phy_hw_dphy_enable(struct dsi_phy_hw *phy,
|
||||
|
||||
/* Enable LDO */
|
||||
DSI_W32(phy, DSIPHY_CMN_VREG_CTRL_0, vreg_ctrl_0);
|
||||
DSI_W32(phy, DSIPHY_CMN_VREG_CTRL_1, 0x5c);
|
||||
DSI_W32(phy, DSIPHY_CMN_VREG_CTRL_1, vreg_ctrl_1);
|
||||
DSI_W32(phy, DSIPHY_CMN_CTRL_3, 0x00);
|
||||
DSI_W32(phy, DSIPHY_CMN_GLBL_STR_SWI_CAL_SEL_CTRL,
|
||||
glbl_str_swi_cal_sel_ctrl);
|
||||
@@ -491,7 +504,7 @@ void dsi_phy_hw_v4_0_enable(struct dsi_phy_hw *phy,
|
||||
pr_warn("PLL turned on before configuring PHY\n");
|
||||
|
||||
/* Request for REFGEN ready */
|
||||
if (phy->version == DSI_PHY_VERSION_4_3) {
|
||||
if (phy->version >= DSI_PHY_VERSION_4_3) {
|
||||
DSI_W32(phy, DSIPHY_CMN_GLBL_DIGTOP_SPARE10, 0x1);
|
||||
udelay(500);
|
||||
}
|
||||
|
@@ -1,6 +1,7 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (c) 2016-2021, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include "dsi_phy_timing_calc.h"
|
||||
@@ -994,6 +995,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_4_3_2:
|
||||
ops->get_default_phy_params =
|
||||
dsi_phy_hw_v4_0_get_default_phy_params;
|
||||
ops->calc_clk_zero =
|
||||
|
In neuem Issue referenzieren
Einen Benutzer sperren