[Intel-gfx] [PATCH] drm/i915: Introduce intel_hdp_pin.
Pandiyan, Dhinakaran
dhinakaran.pandiyan at intel.com
Thu Aug 10 23:24:14 UTC 2017
On Thu, 2017-08-10 at 14:23 -0700, Rodrigo Vivi wrote:
> On Wed, Aug 9, 2017 at 9:44 PM, Pandiyan, Dhinakaran
> <dhinakaran.pandiyan at intel.com> wrote:
> > On Wed, 2017-08-02 at 12:26 -0700, Rodrigo Vivi wrote:
> >> The idea is to have an unique place to decide the pin-port
> >> per platform.
> >>
> >> So let's create this function now without any functional
> >> change.
> >
> > This seems to change the behavior when port A is not eDP.
> >
> >> Just adding together code from hdmi and dp together.
> >>
> >> v2: Add missing pin for port A.
> >>
> >> Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
> >> Signed-off-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
> >> ---
> >> drivers/gpu/drm/i915/i915_drv.h | 1 +
> >> drivers/gpu/drm/i915/intel_dp.c | 8 ++------
> >> drivers/gpu/drm/i915/intel_hdmi.c | 19 +------------------
> >> drivers/gpu/drm/i915/intel_hotplug.c | 26 ++++++++++++++++++++++++++
> >> 4 files changed, 30 insertions(+), 24 deletions(-)
> >>
> >> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> >> index 5c2c7a677e96..c038717ad739 100644
> >> --- a/drivers/gpu/drm/i915/i915_drv.h
> >> +++ b/drivers/gpu/drm/i915/i915_drv.h
> >> @@ -3148,6 +3148,7 @@ void intel_hpd_init(struct drm_i915_private *dev_priv);
> >> void intel_hpd_init_work(struct drm_i915_private *dev_priv);
> >> void intel_hpd_cancel_work(struct drm_i915_private *dev_priv);
> >> enum port intel_hpd_port(enum hpd_pin pin);
> >> +enum hpd_pin intel_hpd_pin(enum port port);
> >> bool intel_hpd_disable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
> >> void intel_hpd_enable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
> >>
> >> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> >> index d4e6128f3b3a..126783752c6d 100644
> >> --- a/drivers/gpu/drm/i915/intel_dp.c
> >> +++ b/drivers/gpu/drm/i915/intel_dp.c
> >> @@ -5906,26 +5906,22 @@ intel_dp_init_connector_port_info(struct intel_digital_port *intel_dig_port)
> >> struct intel_encoder *encoder = &intel_dig_port->base;
> >> struct intel_dp *intel_dp = &intel_dig_port->dp;
> >>
> >> + encoder->hpd_pin = intel_hpd_pin(intel_dig_port->port);
> >> +
> >> switch (intel_dig_port->port) {
> >> case PORT_A:
> >> - encoder->hpd_pin = HPD_PORT_A;
> >> intel_dp->aux_power_domain = POWER_DOMAIN_AUX_A;
> >> break;
> >> case PORT_B:
> >> - encoder->hpd_pin = HPD_PORT_B;
> >> intel_dp->aux_power_domain = POWER_DOMAIN_AUX_B;
> >> break;
> >> case PORT_C:
> >> - encoder->hpd_pin = HPD_PORT_C;
> >> intel_dp->aux_power_domain = POWER_DOMAIN_AUX_C;
> >> break;
> >> case PORT_D:
> >> - encoder->hpd_pin = HPD_PORT_D;
> >> intel_dp->aux_power_domain = POWER_DOMAIN_AUX_D;
> >> break;
> >> case PORT_E:
> >> - encoder->hpd_pin = HPD_PORT_E;
> >> -
> >> /* FIXME: Check VBT for actual wiring of PORT E */
> >> intel_dp->aux_power_domain = POWER_DOMAIN_AUX_D;
> >> break;
> >> diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
> >> index 5609976539bf..dcd14c71a989 100644
> >> --- a/drivers/gpu/drm/i915/intel_hdmi.c
> >> +++ b/drivers/gpu/drm/i915/intel_hdmi.c
> >> @@ -1921,24 +1921,7 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
> >> connector->ycbcr_420_allowed = true;
> >>
> >> intel_hdmi->ddc_bus = intel_hdmi_ddc_pin(dev_priv, port);
> >> -
> >> - switch (port) {
> >> - case PORT_B:
> >> - intel_encoder->hpd_pin = HPD_PORT_B;
> >> - break;
> >> - case PORT_C:
> >> - intel_encoder->hpd_pin = HPD_PORT_C;
> >> - break;
> >> - case PORT_D:
> >> - intel_encoder->hpd_pin = HPD_PORT_D;
> >> - break;
> >> - case PORT_E:
> >> - intel_encoder->hpd_pin = HPD_PORT_E;
> >> - break;
> >> - default:
> >> - MISSING_CASE(port);
> >> - return;
> >> - }
> >> + intel_encoder->hpd_pin = intel_hpd_pin(port);
> >
> > Instead of returning early for port A, this will go ahead and attach the
> > HDMI encoder to the connector.
>
> hmm! indeed!
> this also explains how I end up forgetting the PORT_A on v1...
>
> > However, I don't know likely we'll have
> > a vbt that says port A supports both DP and HDMI but not eDP.
>
> If we have a VBT stating that or it is a current bug we have or if
> we have a VBT that lies to that point we have probably bigger issues,
> but I understand that so far this option is working stable out there and
> we don't want to take the risk, so what about a"
>
> + if(WARN_ON(port == PORT_A)) return;
> + intel_encoder->hpd_pin = intel_hpd_pin(port);
>
Looks good to me with this change
Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan at intel.com>
> ?
> or just change the commit message explaining this case?
>
> >
> >>
> >> if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
> >> intel_hdmi->write_infoframe = vlv_write_infoframe;
> >> diff --git a/drivers/gpu/drm/i915/intel_hotplug.c b/drivers/gpu/drm/i915/intel_hotplug.c
> >> index 5982c47586e7..7b1cf30a3e9b 100644
> >> --- a/drivers/gpu/drm/i915/intel_hotplug.c
> >> +++ b/drivers/gpu/drm/i915/intel_hotplug.c
> >> @@ -101,6 +101,32 @@ enum port intel_hpd_port(enum hpd_pin pin)
> >> }
> >> }
> >>
> >> +/**
> >> + * intel_hpd_pin - return pin hard associated with certain port.
> >> + * @port: the hpd port to get associated pin
> >> + *
> >> + * Return pin that is associatade with @port and HDP_NONE if no pin is
> >> + * hard associated with that @port.
> >> + */
> >> +enum hpd_pin intel_hpd_pin(enum port port)
> >> +{
> >> + switch (port) {
> >> + case PORT_A:
> >> + return HPD_PORT_A;
> >> + case PORT_B:
> >> + return HPD_PORT_B;
> >> + case PORT_C:
> >> + return HPD_PORT_C;
> >> + case PORT_D:
> >> + return HPD_PORT_D;
> >> + case PORT_E:
> >> + return HPD_PORT_E;
> >> + default:
> >> + MISSING_CASE(port);
> >> + return HPD_NONE;
> >> + }
> >> +}
> >> +
> >> #define HPD_STORM_DETECT_PERIOD 1000
> >> #define HPD_STORM_REENABLE_DELAY (2 * 60 * 1000)
> >>
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
>
>
>
More information about the Intel-gfx
mailing list