disp: msm: dsi: reuse continuous splash path for trusted vm

Display in trusted VM works in a handover mode i.e, all
display components need to be initialized by the primary VM
before switching to trusted VM on the usecase boundary.
That makes it a hard requirement for the trusted VM not to
re-program any of the display configuration registers before
it could hand the HW back to the primary VM.

Also, most of the linux framework drivers including pintrl, clocks
are not enabled in the trusted VM.

In order to address the above two limitations and to control the
probe/commit sequences, this change adapts the same path as that
of continuous splash to bypass some of the critical functions
which are identified to be HW intrusive. Based on the DT property
read from SDE handle, dsi drivers will choose to bypass
enable/disable HW state updates when executing in the vm environment.

Change-Id: Ica71c924d189ab65fe3be5b0ac870633e3b749e1
Signed-off-by: Jeykumar Sankaran <jsanka@codeaurora.org>
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
Этот коммит содержится в:
Jeykumar Sankaran
2020-05-03 19:49:09 -07:00
родитель ea2fdb01f7
Коммит 4b27380f07
8 изменённых файлов: 302 добавлений и 238 удалений

Просмотреть файл

@@ -872,7 +872,8 @@ error:
* @config: DSI host configuration.
* @pll_source: Source PLL for PHY clock.
* @skip_validation: Validation will not be performed on parameters.
* @is_cont_splash_enabled: check whether continuous splash enabled.
* @skip_op: Skip re-enabling dsi phy hw during usecases like
* cont-splash/trusted-vm if set to true.
*
* Validates and enables DSI PHY.
*
@@ -882,7 +883,7 @@ int dsi_phy_enable(struct msm_dsi_phy *phy,
struct dsi_host_config *config,
enum dsi_phy_pll_source pll_source,
bool skip_validation,
bool is_cont_splash_enabled)
bool skip_op)
{
int rc = 0;
@@ -917,7 +918,7 @@ int dsi_phy_enable(struct msm_dsi_phy *phy,
goto error;
}
if (!is_cont_splash_enabled) {
if (!skip_op) {
dsi_phy_enable_hw(phy);
DSI_PHY_DBG(phy, "cont splash not enabled, phy enable required\n");
}
@@ -968,10 +969,12 @@ int dsi_phy_lane_reset(struct msm_dsi_phy *phy)
/**
* dsi_phy_disable() - disable DSI PHY hardware.
* @phy: DSI PHY handle.
* @skip_op: Skip disabling dsi phy hw during usecases like
* trusted-vm if set to true.
*
* Return: error code.
*/
int dsi_phy_disable(struct msm_dsi_phy *phy)
int dsi_phy_disable(struct msm_dsi_phy *phy, bool skip_op)
{
int rc = 0;
@@ -981,7 +984,8 @@ int dsi_phy_disable(struct msm_dsi_phy *phy)
}
mutex_lock(&phy->phy_lock);
dsi_phy_disable_hw(phy);
if (!skip_op)
dsi_phy_disable_hw(phy);
phy->dsi_phy_state = DSI_PHY_ENGINE_OFF;
mutex_unlock(&phy->phy_lock);