On Sat, 09 Nov 2013, Shobhit Kumar <shobhit.kumar@xxxxxxxxx> wrote: > Signed-off-by: Shobhit Kumar <shobhit.kumar@xxxxxxxxx> > Signed-off-by: Yogesh Mohan Marimuthu <yogesh.mohan.marimuthu@xxxxxxxxx> > Reviewed-by: Jani Nikula<jani.nikula@xxxxxxxxx> > --- > drivers/gpu/drm/i915/i915_drv.h | 2 ++ > drivers/gpu/drm/i915/i915_reg.h | 1 + > drivers/gpu/drm/i915/intel_dsi.c | 47 ++++++--------------------------- > drivers/gpu/drm/i915/intel_sideband.c | 14 ++++++++++ > 4 files changed, 25 insertions(+), 39 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h > index b12d942..a2bbff9 100644 > --- a/drivers/gpu/drm/i915/i915_drv.h > +++ b/drivers/gpu/drm/i915/i915_drv.h > @@ -2408,6 +2408,8 @@ u32 intel_sbi_read(struct drm_i915_private *dev_priv, u16 reg, > enum intel_sbi_destination destination); > void intel_sbi_write(struct drm_i915_private *dev_priv, u16 reg, u32 value, > enum intel_sbi_destination destination); > +u32 vlv_flisdsi_read(struct drm_i915_private *dev_priv, u32 reg); > +void vlv_flisdsi_write(struct drm_i915_private *dev_priv, u32 reg, u32 val); This hunk has a (trivial) conflict now, needs a rebase. Jani. > > int vlv_gpu_freq(int ddr_freq, int val); > int vlv_freq_opcode(int ddr_freq, int val); > diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h > index 3f303ba..6236926 100644 > --- a/drivers/gpu/drm/i915/i915_reg.h > +++ b/drivers/gpu/drm/i915/i915_reg.h > @@ -356,6 +356,7 @@ > #define IOSF_PORT_CCK 0x14 > #define IOSF_PORT_CCU 0xA9 > #define IOSF_PORT_GPS_CORE 0x48 > +#define IOSF_PORT_FLISDSI 0x1B > #define VLV_IOSF_DATA (VLV_DISPLAY_BASE + 0x2104) > #define VLV_IOSF_ADDR (VLV_DISPLAY_BASE + 0x2108) > > diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c > index 61267e2..8dc9a38 100644 > --- a/drivers/gpu/drm/i915/intel_dsi.c > +++ b/drivers/gpu/drm/i915/intel_dsi.c > @@ -37,49 +37,18 @@ > static const struct intel_dsi_device intel_dsi_devices[] = { > }; > > - > -static void vlv_cck_modify(struct drm_i915_private *dev_priv, u32 reg, u32 val, > - u32 mask) > -{ > - u32 tmp = vlv_cck_read(dev_priv, reg); > - tmp &= ~mask; > - tmp |= val; > - vlv_cck_write(dev_priv, reg, tmp); > -} > - > -static void band_gap_wa(struct drm_i915_private *dev_priv) > +static void band_gap_reset(struct drm_i915_private *dev_priv) > { > mutex_lock(&dev_priv->dpio_lock); > > - /* Enable bandgap fix in GOP driver */ > - vlv_cck_modify(dev_priv, 0x6D, 0x00010000, 0x00030000); > - msleep(20); > - vlv_cck_modify(dev_priv, 0x6E, 0x00010000, 0x00030000); > - msleep(20); > - vlv_cck_modify(dev_priv, 0x6F, 0x00010000, 0x00030000); > - msleep(20); > - vlv_cck_modify(dev_priv, 0x00, 0x00008000, 0x00008000); > - msleep(20); > - vlv_cck_modify(dev_priv, 0x00, 0x00000000, 0x00008000); > - msleep(20); > - > - /* Turn Display Trunk on */ > - vlv_cck_modify(dev_priv, 0x6B, 0x00020000, 0x00030000); > - msleep(20); > - > - vlv_cck_modify(dev_priv, 0x6C, 0x00020000, 0x00030000); > - msleep(20); > - > - vlv_cck_modify(dev_priv, 0x6D, 0x00020000, 0x00030000); > - msleep(20); > - vlv_cck_modify(dev_priv, 0x6E, 0x00020000, 0x00030000); > - msleep(20); > - vlv_cck_modify(dev_priv, 0x6F, 0x00020000, 0x00030000); > + vlv_flisdsi_write(dev_priv, 0x08, 0x0001); > + vlv_flisdsi_write(dev_priv, 0x0F, 0x0005); > + vlv_flisdsi_write(dev_priv, 0x0F, 0x0025); > + udelay(150); > + vlv_flisdsi_write(dev_priv, 0x0F, 0x0000); > + vlv_flisdsi_write(dev_priv, 0x08, 0x0000); > > mutex_unlock(&dev_priv->dpio_lock); > - > - /* Need huge delay, otherwise clock is not stable */ > - msleep(100); > } > > static struct intel_dsi *intel_attached_dsi(struct drm_connector *connector) > @@ -363,7 +332,7 @@ static void intel_dsi_mode_set(struct intel_encoder *intel_encoder) > vlv_enable_dsi_pll(intel_encoder); > > /* XXX: Location of the call */ > - band_gap_wa(dev_priv); > + band_gap_reset(dev_priv); > > /* escape clock divider, 20MHz, shared for A and C. device ready must be > * off when doing this! txclkesc? */ > diff --git a/drivers/gpu/drm/i915/intel_sideband.c b/drivers/gpu/drm/i915/intel_sideband.c > index 9944d81..f15e57e 100644 > --- a/drivers/gpu/drm/i915/intel_sideband.c > +++ b/drivers/gpu/drm/i915/intel_sideband.c > @@ -242,3 +242,17 @@ void intel_sbi_write(struct drm_i915_private *dev_priv, u16 reg, u32 value, > return; > } > } > + > +u32 vlv_flisdsi_read(struct drm_i915_private *dev_priv, u32 reg) > +{ > + u32 val = 0; > + vlv_sideband_rw(dev_priv, DPIO_DEVFN, IOSF_PORT_FLISDSI, > + DPIO_OPCODE_REG_READ, reg, &val); > + return val; > +} > + > +void vlv_flisdsi_write(struct drm_i915_private *dev_priv, u32 reg, u32 val) > +{ > + vlv_sideband_rw(dev_priv, DPIO_DEVFN, IOSF_PORT_FLISDSI, > + DPIO_OPCODE_REG_WRITE, reg, &val); > +} > -- > 1.7.9.5 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Jani Nikula, Intel Open Source Technology Center _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx