Message ID | 1486551058-22596-5-git-send-email-vidya.srinivas@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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 --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, };