Message ID | 1448619706-21293-1-git-send-email-jani.nikula@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, Nov 27, 2015 at 12:21:44PM +0200, Jani Nikula wrote: > For DSI, the pre_pll_enable and the pre_enable hooks are called > back-to-back on all platforms that support DSI. The distinction is > artificial for DSI, for which we enable the DSI PLL in the encoder > hooks. Do everything in pre_enable, and remove DSI pre_pll_enable hook. > > Signed-off-by: Jani Nikula <jani.nikula@intel.com> I was eyeing this same thing at some point. For the series: Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > --- > drivers/gpu/drm/i915/intel_dsi.c | 16 +++++----------- > 1 file changed, 5 insertions(+), 11 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c > index efb5a27dd49c..08c46c49c481 100644 > --- a/drivers/gpu/drm/i915/intel_dsi.c > +++ b/drivers/gpu/drm/i915/intel_dsi.c > @@ -462,6 +462,8 @@ static void intel_dsi_enable(struct intel_encoder *encoder) > intel_panel_enable_backlight(intel_dsi->attached_connector); > } > > +static void intel_dsi_prepare(struct intel_encoder *intel_encoder); > + > static void intel_dsi_pre_enable(struct intel_encoder *encoder) > { > struct drm_device *dev = encoder->base.dev; > @@ -474,6 +476,9 @@ static void intel_dsi_pre_enable(struct intel_encoder *encoder) > > DRM_DEBUG_KMS("\n"); > > + intel_dsi_prepare(encoder); > + intel_enable_dsi_pll(encoder); > + > /* Panel Enable over CRC PMIC */ > if (intel_dsi->gpio_panel) > gpiod_set_value_cansleep(intel_dsi->gpio_panel, 1); > @@ -1026,15 +1031,6 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder) > } > } > > -static void intel_dsi_pre_pll_enable(struct intel_encoder *encoder) > -{ > - DRM_DEBUG_KMS("\n"); > - > - intel_dsi_prepare(encoder); > - intel_enable_dsi_pll(encoder); > - > -} > - > static enum drm_connector_status > intel_dsi_detect(struct drm_connector *connector, bool force) > { > @@ -1154,9 +1150,7 @@ void intel_dsi_init(struct drm_device *dev) > > drm_encoder_init(dev, encoder, &intel_dsi_funcs, DRM_MODE_ENCODER_DSI); > > - /* XXX: very likely not all of these are needed */ > intel_encoder->compute_config = intel_dsi_compute_config; > - intel_encoder->pre_pll_enable = intel_dsi_pre_pll_enable; > intel_encoder->pre_enable = intel_dsi_pre_enable; > intel_encoder->enable = intel_dsi_enable_nop; > intel_encoder->disable = intel_dsi_pre_disable; > -- > 2.1.4 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
On Fri, Nov 27, 2015 at 01:26:40PM +0200, Ville Syrjälä wrote: > On Fri, Nov 27, 2015 at 12:21:44PM +0200, Jani Nikula wrote: > > For DSI, the pre_pll_enable and the pre_enable hooks are called > > back-to-back on all platforms that support DSI. The distinction is > > artificial for DSI, for which we enable the DSI PLL in the encoder > > hooks. Do everything in pre_enable, and remove DSI pre_pll_enable hook. > > > > Signed-off-by: Jani Nikula <jani.nikula@intel.com> > > I was eyeing this same thing at some point. > > For the series: > Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Yeah, all the pretties in here! Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Btw about bxt dsi I wonder whether we should partially merge this with the cpu transcoder (since it's only either that or a dsi encoder aparrently). At least I remember that we still had some issues with bxt's dsi_get_hw_state? Cheers, Daniel > > > --- > > drivers/gpu/drm/i915/intel_dsi.c | 16 +++++----------- > > 1 file changed, 5 insertions(+), 11 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c > > index efb5a27dd49c..08c46c49c481 100644 > > --- a/drivers/gpu/drm/i915/intel_dsi.c > > +++ b/drivers/gpu/drm/i915/intel_dsi.c > > @@ -462,6 +462,8 @@ static void intel_dsi_enable(struct intel_encoder *encoder) > > intel_panel_enable_backlight(intel_dsi->attached_connector); > > } > > > > +static void intel_dsi_prepare(struct intel_encoder *intel_encoder); > > + > > static void intel_dsi_pre_enable(struct intel_encoder *encoder) > > { > > struct drm_device *dev = encoder->base.dev; > > @@ -474,6 +476,9 @@ static void intel_dsi_pre_enable(struct intel_encoder *encoder) > > > > DRM_DEBUG_KMS("\n"); > > > > + intel_dsi_prepare(encoder); > > + intel_enable_dsi_pll(encoder); > > + > > /* Panel Enable over CRC PMIC */ > > if (intel_dsi->gpio_panel) > > gpiod_set_value_cansleep(intel_dsi->gpio_panel, 1); > > @@ -1026,15 +1031,6 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder) > > } > > } > > > > -static void intel_dsi_pre_pll_enable(struct intel_encoder *encoder) > > -{ > > - DRM_DEBUG_KMS("\n"); > > - > > - intel_dsi_prepare(encoder); > > - intel_enable_dsi_pll(encoder); > > - > > -} > > - > > static enum drm_connector_status > > intel_dsi_detect(struct drm_connector *connector, bool force) > > { > > @@ -1154,9 +1150,7 @@ void intel_dsi_init(struct drm_device *dev) > > > > drm_encoder_init(dev, encoder, &intel_dsi_funcs, DRM_MODE_ENCODER_DSI); > > > > - /* XXX: very likely not all of these are needed */ > > intel_encoder->compute_config = intel_dsi_compute_config; > > - intel_encoder->pre_pll_enable = intel_dsi_pre_pll_enable; > > intel_encoder->pre_enable = intel_dsi_pre_enable; > > intel_encoder->enable = intel_dsi_enable_nop; > > intel_encoder->disable = intel_dsi_pre_disable; > > -- > > 2.1.4 > > > > _______________________________________________ > > Intel-gfx mailing list > > Intel-gfx@lists.freedesktop.org > > http://lists.freedesktop.org/mailman/listinfo/intel-gfx > > -- > Ville Syrjälä > Intel OTC > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
On Mon, 30 Nov 2015, Daniel Vetter <daniel@ffwll.ch> wrote: > On Fri, Nov 27, 2015 at 01:26:40PM +0200, Ville Syrjälä wrote: >> On Fri, Nov 27, 2015 at 12:21:44PM +0200, Jani Nikula wrote: >> > For DSI, the pre_pll_enable and the pre_enable hooks are called >> > back-to-back on all platforms that support DSI. The distinction is >> > artificial for DSI, for which we enable the DSI PLL in the encoder >> > hooks. Do everything in pre_enable, and remove DSI pre_pll_enable hook. >> > >> > Signed-off-by: Jani Nikula <jani.nikula@intel.com> >> >> I was eyeing this same thing at some point. >> >> For the series: >> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> > > Yeah, all the pretties in here! > > Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> > > Btw about bxt dsi I wonder whether we should partially merge this with the > cpu transcoder (since it's only either that or a dsi encoder aparrently). > At least I remember that we still had some issues with bxt's > dsi_get_hw_state? One step at a time, maybe as a follow-up. I'm kind of hesitant to conflate this with cpu transcoder, in case some new platform changes the rules. So for now, I've pushed this to drm-intel-next-queued, thanks for the reviews. BR, Jani. > > Cheers, Daniel > >> >> > --- >> > drivers/gpu/drm/i915/intel_dsi.c | 16 +++++----------- >> > 1 file changed, 5 insertions(+), 11 deletions(-) >> > >> > diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c >> > index efb5a27dd49c..08c46c49c481 100644 >> > --- a/drivers/gpu/drm/i915/intel_dsi.c >> > +++ b/drivers/gpu/drm/i915/intel_dsi.c >> > @@ -462,6 +462,8 @@ static void intel_dsi_enable(struct intel_encoder *encoder) >> > intel_panel_enable_backlight(intel_dsi->attached_connector); >> > } >> > >> > +static void intel_dsi_prepare(struct intel_encoder *intel_encoder); >> > + >> > static void intel_dsi_pre_enable(struct intel_encoder *encoder) >> > { >> > struct drm_device *dev = encoder->base.dev; >> > @@ -474,6 +476,9 @@ static void intel_dsi_pre_enable(struct intel_encoder *encoder) >> > >> > DRM_DEBUG_KMS("\n"); >> > >> > + intel_dsi_prepare(encoder); >> > + intel_enable_dsi_pll(encoder); >> > + >> > /* Panel Enable over CRC PMIC */ >> > if (intel_dsi->gpio_panel) >> > gpiod_set_value_cansleep(intel_dsi->gpio_panel, 1); >> > @@ -1026,15 +1031,6 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder) >> > } >> > } >> > >> > -static void intel_dsi_pre_pll_enable(struct intel_encoder *encoder) >> > -{ >> > - DRM_DEBUG_KMS("\n"); >> > - >> > - intel_dsi_prepare(encoder); >> > - intel_enable_dsi_pll(encoder); >> > - >> > -} >> > - >> > static enum drm_connector_status >> > intel_dsi_detect(struct drm_connector *connector, bool force) >> > { >> > @@ -1154,9 +1150,7 @@ void intel_dsi_init(struct drm_device *dev) >> > >> > drm_encoder_init(dev, encoder, &intel_dsi_funcs, DRM_MODE_ENCODER_DSI); >> > >> > - /* XXX: very likely not all of these are needed */ >> > intel_encoder->compute_config = intel_dsi_compute_config; >> > - intel_encoder->pre_pll_enable = intel_dsi_pre_pll_enable; >> > intel_encoder->pre_enable = intel_dsi_pre_enable; >> > intel_encoder->enable = intel_dsi_enable_nop; >> > intel_encoder->disable = intel_dsi_pre_disable; >> > -- >> > 2.1.4 >> > >> > _______________________________________________ >> > Intel-gfx mailing list >> > Intel-gfx@lists.freedesktop.org >> > http://lists.freedesktop.org/mailman/listinfo/intel-gfx >> >> -- >> Ville Syrjälä >> Intel OTC >> _______________________________________________ >> Intel-gfx mailing list >> Intel-gfx@lists.freedesktop.org >> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c index efb5a27dd49c..08c46c49c481 100644 --- a/drivers/gpu/drm/i915/intel_dsi.c +++ b/drivers/gpu/drm/i915/intel_dsi.c @@ -462,6 +462,8 @@ static void intel_dsi_enable(struct intel_encoder *encoder) intel_panel_enable_backlight(intel_dsi->attached_connector); } +static void intel_dsi_prepare(struct intel_encoder *intel_encoder); + static void intel_dsi_pre_enable(struct intel_encoder *encoder) { struct drm_device *dev = encoder->base.dev; @@ -474,6 +476,9 @@ static void intel_dsi_pre_enable(struct intel_encoder *encoder) DRM_DEBUG_KMS("\n"); + intel_dsi_prepare(encoder); + intel_enable_dsi_pll(encoder); + /* Panel Enable over CRC PMIC */ if (intel_dsi->gpio_panel) gpiod_set_value_cansleep(intel_dsi->gpio_panel, 1); @@ -1026,15 +1031,6 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder) } } -static void intel_dsi_pre_pll_enable(struct intel_encoder *encoder) -{ - DRM_DEBUG_KMS("\n"); - - intel_dsi_prepare(encoder); - intel_enable_dsi_pll(encoder); - -} - static enum drm_connector_status intel_dsi_detect(struct drm_connector *connector, bool force) { @@ -1154,9 +1150,7 @@ void intel_dsi_init(struct drm_device *dev) drm_encoder_init(dev, encoder, &intel_dsi_funcs, DRM_MODE_ENCODER_DSI); - /* XXX: very likely not all of these are needed */ intel_encoder->compute_config = intel_dsi_compute_config; - intel_encoder->pre_pll_enable = intel_dsi_pre_pll_enable; intel_encoder->pre_enable = intel_dsi_pre_enable; intel_encoder->enable = intel_dsi_enable_nop; intel_encoder->disable = intel_dsi_pre_disable;
For DSI, the pre_pll_enable and the pre_enable hooks are called back-to-back on all platforms that support DSI. The distinction is artificial for DSI, for which we enable the DSI PLL in the encoder hooks. Do everything in pre_enable, and remove DSI pre_pll_enable hook. Signed-off-by: Jani Nikula <jani.nikula@intel.com> --- drivers/gpu/drm/i915/intel_dsi.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-)