On Mon, Dec 21, 2015 at 03:11:06PM +0200, Jani Nikula wrote: > Make it a bit tidier. Also more save. > Signed-off-by: Jani Nikula <jani.nikula@xxxxxxxxx> Reviewed-by: Daniel Vetter <daniel.vetter@xxxxxxxx> > --- > drivers/gpu/drm/i915/intel_dsi_panel_vbt.c | 62 +++++++++++------------------- > 1 file changed, 22 insertions(+), 40 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c b/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c > index 1f9c80d21904..f0116a6c14cd 100644 > --- a/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c > +++ b/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c > @@ -317,18 +317,30 @@ static const char *sequence_name(enum mipi_seq seq_id) > return "(unknown)"; > } > > -static void generic_exec_sequence(struct intel_dsi *intel_dsi, const u8 *data) > +static void generic_exec_sequence(struct drm_panel *panel, enum mipi_seq seq_id) > { > + struct vbt_panel *vbt_panel = to_vbt_panel(panel); > + struct intel_dsi *intel_dsi = vbt_panel->intel_dsi; > struct drm_i915_private *dev_priv = to_i915(intel_dsi->base.base.dev); > + const u8 *data; > fn_mipi_elem_exec mipi_elem_exec; > > - if (!data) > + if (WARN_ON(seq_id >= ARRAY_SIZE(dev_priv->vbt.dsi.sequence))) > return; > > - DRM_DEBUG_DRIVER("Starting MIPI sequence %u - %s\n", > - *data, sequence_name(*data)); > + data = dev_priv->vbt.dsi.sequence[seq_id]; > + if (!data) { > + DRM_DEBUG_KMS("MIPI sequence %d - %s not available\n", > + seq_id, sequence_name(seq_id)); > + return; > + } > > - /* go to the first element of the sequence */ > + WARN_ON(*data != seq_id); > + > + DRM_DEBUG_KMS("Starting MIPI sequence %d - %s\n", > + seq_id, sequence_name(seq_id)); > + > + /* Skip Sequence Byte. */ > data++; > > /* Skip Size of Sequence. */ > @@ -370,59 +382,29 @@ static void generic_exec_sequence(struct intel_dsi *intel_dsi, const u8 *data) > > static int vbt_panel_prepare(struct drm_panel *panel) > { > - struct vbt_panel *vbt_panel = to_vbt_panel(panel); > - struct intel_dsi *intel_dsi = vbt_panel->intel_dsi; > - struct drm_device *dev = intel_dsi->base.base.dev; > - struct drm_i915_private *dev_priv = dev->dev_private; > - const u8 *sequence; > - > - sequence = dev_priv->vbt.dsi.sequence[MIPI_SEQ_ASSERT_RESET]; > - generic_exec_sequence(intel_dsi, sequence); > - > - sequence = dev_priv->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP]; > - generic_exec_sequence(intel_dsi, sequence); > + generic_exec_sequence(panel, MIPI_SEQ_ASSERT_RESET); > + generic_exec_sequence(panel, MIPI_SEQ_INIT_OTP); > > return 0; > } > > static int vbt_panel_unprepare(struct drm_panel *panel) > { > - struct vbt_panel *vbt_panel = to_vbt_panel(panel); > - struct intel_dsi *intel_dsi = vbt_panel->intel_dsi; > - struct drm_device *dev = intel_dsi->base.base.dev; > - struct drm_i915_private *dev_priv = dev->dev_private; > - const u8 *sequence; > - > - sequence = dev_priv->vbt.dsi.sequence[MIPI_SEQ_DEASSERT_RESET]; > - generic_exec_sequence(intel_dsi, sequence); > + generic_exec_sequence(panel, MIPI_SEQ_DEASSERT_RESET); > > return 0; > } > > static int vbt_panel_enable(struct drm_panel *panel) > { > - struct vbt_panel *vbt_panel = to_vbt_panel(panel); > - struct intel_dsi *intel_dsi = vbt_panel->intel_dsi; > - struct drm_device *dev = intel_dsi->base.base.dev; > - struct drm_i915_private *dev_priv = dev->dev_private; > - const u8 *sequence; > - > - sequence = dev_priv->vbt.dsi.sequence[MIPI_SEQ_DISPLAY_ON]; > - generic_exec_sequence(intel_dsi, sequence); > + generic_exec_sequence(panel, MIPI_SEQ_DISPLAY_ON); > > return 0; > } > > static int vbt_panel_disable(struct drm_panel *panel) > { > - struct vbt_panel *vbt_panel = to_vbt_panel(panel); > - struct intel_dsi *intel_dsi = vbt_panel->intel_dsi; > - struct drm_device *dev = intel_dsi->base.base.dev; > - struct drm_i915_private *dev_priv = dev->dev_private; > - const u8 *sequence; > - > - sequence = dev_priv->vbt.dsi.sequence[MIPI_SEQ_DISPLAY_OFF]; > - generic_exec_sequence(intel_dsi, sequence); > + generic_exec_sequence(panel, MIPI_SEQ_DISPLAY_OFF); > > return 0; > } > -- > 2.1.4 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx