On Fri, 19 Feb 2016, Deepak M <m.dee...@intel.com> wrote: > From: Gaurav K Singh <gaurav.k.si...@intel.com> > > New sequences are added in the mipi sequence block of the > VBT from version 3 onwards. The sequences are added to > make the code more generic as the panel related info > are placed in the VBT. > > Cc: Jani Nikula <jani.nik...@intel.com> > Signed-off-by: Gaurav K Singh <gaurav.k.si...@intel.com> > Signed-off-by: Shobhit Kumar <shobhit.ku...@intel.com> > Signed-off-by: Deepak M <m.dee...@intel.com> > --- > drivers/gpu/drm/i915/intel_dsi_panel_vbt.c | 48 > ++++++++++++++++++++++++++++++ > 1 file changed, 48 insertions(+) > > diff --git a/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c > b/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c > index c6e18fe..db8e210 100644 > --- a/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c > +++ b/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c > @@ -1035,12 +1035,60 @@ 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 int vbt_panel_backlight_on(struct drm_panel *panel) > +{ > + generic_exec_sequence(panel, MIPI_SEQ_BACKLIGHT_ON); > + > + return 0; > +} > + > +static int vbt_panel_backlight_off(struct drm_panel *panel) > +{ > + generic_exec_sequence(panel, MIPI_SEQ_BACKLIGHT_OFF); > + > + return 0; > +} > + > +static int vbt_panel_get_info(struct drm_panel *panel, > + struct drm_connector *connector) > +{ > + struct intel_connector *intel_connector = > + to_intel_connector(connector); > + > + if (intel_connector) { > + connector->display_info.width_mm = > + intel_connector->panel.fixed_mode->width_mm; > + connector->display_info.height_mm = > + intel_connector->panel.fixed_mode->height_mm; > + } > + return 0;
I think we could do this part in the ->get_modes hook. For all the other displays, it's the ->get_modes hook that reads the EDID, and ultimately sets the display_info from EDID. We wouldn't need a new hook at all. Also, this should be a separate change. If we can get the size information from the fixed mode from VBT, we should do that in ->get_modes, and backport this fix for stable kernels. It's sorely needed for BYT/CHV too. BR, Jani. > +} > + > static const struct drm_panel_funcs vbt_panel_funcs = { > .disable = vbt_panel_disable, > .unprepare = vbt_panel_unprepare, > .prepare = vbt_panel_prepare, > .enable = vbt_panel_enable, > .get_modes = vbt_panel_get_modes, > + .power_on = vbt_panel_power_on, > + .power_off = vbt_panel_power_off, > + .backlight_on = vbt_panel_backlight_on, > + .backlight_off = vbt_panel_backlight_off, > + .get_info = vbt_panel_get_info, > }; > > struct drm_panel *vbt_panel_init(struct intel_dsi *intel_dsi, u16 panel_id) -- Jani Nikula, Intel Open Source Technology Center _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx