diff mbox

[4/9] drm/i915: Add DSI panel power on/off sequence callbacks

Message ID 1486551058-22596-5-git-send-email-vidya.srinivas@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Srinivas, Vidya Feb. 8, 2017, 10:50 a.m. UTC
From: Uma Shankar <uma.shankar@intel.com>

Panel Power On/Off sequences are part of Panel spec.
These are present in VBT v3 of the Intel VBT spec.
Some DSI controller/panels require making SOC specific
device ready changes in between the panel power ON and
sending the OTP sequences.

This patch introduces panel power on callbacks to decouple
panel power ON and OTP.

Signed-off-by: Uma Shankar <uma.shankar@intel.com>
Signed-off-by: Vidya Srinivas <vidya.srinivas@intel.com>
---
 drivers/gpu/drm/i915/intel_dsi_panel_vbt.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

Comments

Paauwe, Bob J Feb. 15, 2017, 6:44 p.m. UTC | #1
On Wed, 8 Feb 2017 16:20:53 +0530
Vidya Srinivas <vidya.srinivas@intel.com> wrote:

> From: Uma Shankar <uma.shankar@intel.com>
> 
> Panel Power On/Off sequences are part of Panel spec.
> These are present in VBT v3 of the Intel VBT spec.
> Some DSI controller/panels require making SOC specific
> device ready changes in between the panel power ON and
> sending the OTP sequences.
> 
> This patch introduces panel power on callbacks to decouple
> panel power ON and OTP.
> 
> Signed-off-by: Uma Shankar <uma.shankar@intel.com>
> Signed-off-by: Vidya Srinivas <vidya.srinivas@intel.com>

Based on some conversation with Jani, we probably don't want to expand
the use of the drm_panel interfaces but instead move to an i915 only
panel interface.  This would allow us to have more granular control
over the sequences.

But since this is actually adding new drm_panel interfaces,

Acknowledged-by: Bob Paauwe <bob.j.paauwe@intel.com>

> ---
>  drivers/gpu/drm/i915/intel_dsi_panel_vbt.c | 14 ++++++++++++++
>  1 file changed, 14 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c b/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c
> index 8f683b8..4279279 100644
> --- a/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c
> +++ b/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c
> @@ -547,10 +547,24 @@ static int vbt_panel_get_modes(struct drm_panel *panel)
>  	return 1;
>  }
>  
> +static int vbt_panel_power_on(struct drm_panel *panel)
> +{
> +	generic_exec_sequence(panel, MIPI_SEQ_POWER_ON);
> +	return 0;
> +}
> +
> +static int vbt_panel_power_off(struct drm_panel *panel)
> +{
> +	generic_exec_sequence(panel, MIPI_SEQ_POWER_OFF);
> +	return 0;
> +}
> +
>  static const struct drm_panel_funcs vbt_panel_funcs = {
>  	.disable = vbt_panel_disable,
>  	.unprepare = vbt_panel_unprepare,
>  	.prepare = vbt_panel_prepare,
> +	.power_on = vbt_panel_power_on,
> +	.power_off = vbt_panel_power_off,
>  	.enable = vbt_panel_enable,
>  	.get_modes = vbt_panel_get_modes,
>  };
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c b/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c
index 8f683b8..4279279 100644
--- a/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c
+++ b/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c
@@ -547,10 +547,24 @@  static int vbt_panel_get_modes(struct drm_panel *panel)
 	return 1;
 }
 
+static int vbt_panel_power_on(struct drm_panel *panel)
+{
+	generic_exec_sequence(panel, MIPI_SEQ_POWER_ON);
+	return 0;
+}
+
+static int vbt_panel_power_off(struct drm_panel *panel)
+{
+	generic_exec_sequence(panel, MIPI_SEQ_POWER_OFF);
+	return 0;
+}
+
 static const struct drm_panel_funcs vbt_panel_funcs = {
 	.disable = vbt_panel_disable,
 	.unprepare = vbt_panel_unprepare,
 	.prepare = vbt_panel_prepare,
+	.power_on = vbt_panel_power_on,
+	.power_off = vbt_panel_power_off,
 	.enable = vbt_panel_enable,
 	.get_modes = vbt_panel_get_modes,
 };