On Thu, Mar 17, 2016 at 05:04:40PM +0200, Jani Nikula wrote: > In sequence block v2, and only in v2, the gpio source (i.e. IOSF port) > is specified separately. > > Signed-off-by: Jani Nikula <jani.nikula@xxxxxxxxx> > --- > drivers/gpu/drm/i915/intel_dsi_panel_vbt.c | 21 +++++++++++++++++---- > 1 file changed, 17 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c b/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c > index f687b2e9d8ca..765dd5cd23ac 100644 > --- a/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c > +++ b/drivers/gpu/drm/i915/intel_dsi_panel_vbt.c > @@ -198,7 +198,7 @@ static const u8 *mipi_exec_delay(struct intel_dsi *intel_dsi, const u8 *data) > > static const u8 *mipi_exec_gpio(struct intel_dsi *intel_dsi, const u8 *data) > { > - u8 gpio_index, action; > + u8 gpio_source, gpio_index, action, port; > u16 function, pad; > u32 val; > struct drm_device *dev = intel_dsi->base.base.dev; > @@ -209,6 +209,9 @@ static const u8 *mipi_exec_gpio(struct intel_dsi *intel_dsi, const u8 *data) > > gpio_index = *data++; > > + /* gpio source in sequence v2 only */ > + gpio_source = (*data >> 1) & 3; > + Would it perhaps be cleaner to do the version check here and just leave gpio_source==0 for v1? > /* pull up/down */ > action = *data++ & 1; > > @@ -225,6 +228,17 @@ static const u8 *mipi_exec_gpio(struct intel_dsi *intel_dsi, const u8 *data) > if (dev_priv->vbt.dsi.seq_version >= 3) { > DRM_DEBUG_KMS("GPIO element v3 not supported\n"); > goto out; > + } else if (dev_priv->vbt.dsi.seq_version == 2) { > + if (gpio_source == 0) { > + port = IOSF_PORT_GPIO_NC; > + } else if (gpio_source == 1) { > + port = IOSF_PORT_GPIO_SC; > + } else { > + DRM_DEBUG_KMS("unknown gpio source %u\n", gpio_source); > + goto out; > + } > + } else { > + port = IOSF_PORT_GPIO_NC; > } > > function = gtable[gpio_index].function_reg; > @@ -234,15 +248,14 @@ static const u8 *mipi_exec_gpio(struct intel_dsi *intel_dsi, const u8 *data) > if (!gtable[gpio_index].init) { > /* program the function */ > /* FIXME: remove constant below */ > - vlv_iosf_sb_write(dev_priv, IOSF_PORT_GPIO_NC, function, > - 0x2000CC00); > + vlv_iosf_sb_write(dev_priv, port, function, 0x2000CC00); > gtable[gpio_index].init = 1; > } > > val = 0x4 | action; > > /* pull up/down */ > - vlv_iosf_sb_write(dev_priv, IOSF_PORT_GPIO_NC, pad, val); > + vlv_iosf_sb_write(dev_priv, port, pad, val); > mutex_unlock(&dev_priv->sb_lock); > > out: > -- > 2.1.4 -- Ville Syrjälä Intel OTC _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx