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>
This commit is contained in:
@@ -170,6 +170,18 @@ struct dsi_panel_spr_info {
|
||||
enum msm_display_spr_pack_type pack_type;
|
||||
};
|
||||
|
||||
struct dsi_panel;
|
||||
|
||||
struct dsi_panel_ops {
|
||||
int (*pinctrl_init)(struct dsi_panel *panel);
|
||||
int (*gpio_request)(struct dsi_panel *panel);
|
||||
int (*pinctrl_deinit)(struct dsi_panel *panel);
|
||||
int (*gpio_release)(struct dsi_panel *panel);
|
||||
int (*bl_register)(struct dsi_panel *panel);
|
||||
int (*bl_unregister)(struct dsi_panel *panel);
|
||||
int (*parse_gpios)(struct dsi_panel *panel);
|
||||
};
|
||||
|
||||
struct dsi_panel {
|
||||
const char *name;
|
||||
const char *type;
|
||||
@@ -227,6 +239,8 @@ struct dsi_panel {
|
||||
int panel_test_gpio;
|
||||
int power_mode;
|
||||
enum dsi_panel_physical_type panel_type;
|
||||
|
||||
struct dsi_panel_ops panel_ops;
|
||||
};
|
||||
|
||||
static inline bool dsi_panel_ulps_feature_enabled(struct dsi_panel *panel)
|
||||
@@ -258,7 +272,8 @@ struct dsi_panel *dsi_panel_get(struct device *parent,
|
||||
struct device_node *of_node,
|
||||
struct device_node *parser_node,
|
||||
const char *type,
|
||||
int topology_override);
|
||||
int topology_override,
|
||||
bool trusted_vm_env);
|
||||
|
||||
int dsi_panel_trigger_esd_attack(struct dsi_panel *panel);
|
||||
|
||||
|
Reference in New Issue
Block a user