On Tue, Dec 15, 2015 at 05:33:33PM +0200, Jani Nikula wrote: > Signed-off-by: Jani Nikula <jani.nikula@xxxxxxxxx> > --- > drivers/gpu/drm/i915/i915_drv.h | 1 + > drivers/gpu/drm/i915/intel_bios.c | 38 ++++++++++++++++++++++++++++++++++ > drivers/gpu/drm/i915/intel_tv.c | 43 +-------------------------------------- > 3 files changed, 40 insertions(+), 42 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h > index b2cf3b2c127f..a748b2c0d168 100644 > --- a/drivers/gpu/drm/i915/i915_drv.h > +++ b/drivers/gpu/drm/i915/i915_drv.h > @@ -3358,6 +3358,7 @@ extern void intel_i2c_reset(struct drm_device *dev); > /* intel_bios.c */ > int intel_bios_init(struct drm_device *dev); > bool intel_bios_is_valid_vbt(const void *buf, size_t size); > +bool intel_bios_is_tv_present(struct drm_i915_private *dev_priv); > > /* intel_opregion.c */ > #ifdef CONFIG_ACPI > diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c > index dc3a0fb1946c..6e3e647834af 100644 > --- a/drivers/gpu/drm/i915/intel_bios.c > +++ b/drivers/gpu/drm/i915/intel_bios.c > @@ -1348,3 +1348,41 @@ intel_bios_init(struct drm_device *dev) > > return 0; > } > + > +/** > + * intel_bios_is_tv_present - is integrated TV present in VBT > + * @dev_priv: i915 device instance > + * > + * Return true if TV is present. If no child devices were parsed from VBT, > + * assume TV is present. > + */ kerneldoc is pretty but isn't validated by 0day nor included into our docs without a stanza/section in gpu.tmpl. At least I didn't spot it, and I think it'd be good to start with that. -Daniel > +bool intel_bios_is_tv_present(struct drm_i915_private *dev_priv) > +{ > + union child_device_config *p_child; > + int i; > + > + if (!dev_priv->vbt.child_dev_num) > + return true; > + > + for (i = 0; i < dev_priv->vbt.child_dev_num; i++) { > + p_child = dev_priv->vbt.child_dev + i; > + /* > + * If the device type is not TV, continue. > + */ > + switch (p_child->old.device_type) { > + case DEVICE_TYPE_INT_TV: > + case DEVICE_TYPE_TV: > + case DEVICE_TYPE_TV_SVIDEO_COMPOSITE: > + break; > + default: > + continue; > + } > + /* Only when the addin_offset is non-zero, it is regarded > + * as present. > + */ > + if (p_child->old.addin_offset) > + return true; > + } > + > + return false; > +} > diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c > index 948cbff6c62e..29e68859b9b7 100644 > --- a/drivers/gpu/drm/i915/intel_tv.c > +++ b/drivers/gpu/drm/i915/intel_tv.c > @@ -1529,47 +1529,6 @@ static const struct drm_encoder_funcs intel_tv_enc_funcs = { > .destroy = intel_encoder_destroy, > }; > > -/* > - * Enumerate the child dev array parsed from VBT to check whether > - * the integrated TV is present. > - * If it is present, return 1. > - * If it is not present, return false. > - * If no child dev is parsed from VBT, it assumes that the TV is present. > - */ > -static int tv_is_present_in_vbt(struct drm_device *dev) > -{ > - struct drm_i915_private *dev_priv = dev->dev_private; > - union child_device_config *p_child; > - int i, ret; > - > - if (!dev_priv->vbt.child_dev_num) > - return 1; > - > - ret = 0; > - for (i = 0; i < dev_priv->vbt.child_dev_num; i++) { > - p_child = dev_priv->vbt.child_dev + i; > - /* > - * If the device type is not TV, continue. > - */ > - switch (p_child->old.device_type) { > - case DEVICE_TYPE_INT_TV: > - case DEVICE_TYPE_TV: > - case DEVICE_TYPE_TV_SVIDEO_COMPOSITE: > - break; > - default: > - continue; > - } > - /* Only when the addin_offset is non-zero, it is regarded > - * as present. > - */ > - if (p_child->old.addin_offset) { > - ret = 1; > - break; > - } > - } > - return ret; > -} > - > void > intel_tv_init(struct drm_device *dev) > { > @@ -1585,7 +1544,7 @@ intel_tv_init(struct drm_device *dev) > if ((I915_READ(TV_CTL) & TV_FUSE_STATE_MASK) == TV_FUSE_STATE_DISABLED) > return; > > - if (!tv_is_present_in_vbt(dev)) { > + if (!intel_bios_is_tv_present(dev_priv)) { > DRM_DEBUG_KMS("Integrated TV is not present.\n"); > return; > } > -- > 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