[Intel-gfx] [PATCH RESEND 1/4] drm/i915/opregion: bail out early for systems with no opregion VBT

Bob Paauwe bob.j.paauwe at intel.com
Wed Mar 29 17:51:15 UTC 2017


On Wed, 29 Mar 2017 13:32:55 +0300
Jani Nikula <jani.nikula at intel.com> wrote:

> Reduce indent. No functional changes.
> 
> Signed-off-by: Jani Nikula <jani.nikula at intel.com>

Reviewed-by: Bob Paauwe <bob.j.paauwe at intel.com>

> ---
>  drivers/gpu/drm/i915/intel_opregion.c | 64 +++++++++++++++++------------------
>  1 file changed, 32 insertions(+), 32 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_opregion.c b/drivers/gpu/drm/i915/intel_opregion.c
> index 441c01466384..76a39ee6d005 100644
> --- a/drivers/gpu/drm/i915/intel_opregion.c
> +++ b/drivers/gpu/drm/i915/intel_opregion.c
> @@ -920,6 +920,8 @@ int intel_opregion_setup(struct drm_i915_private *dev_priv)
>  	char buf[sizeof(OPREGION_SIGNATURE)];
>  	int err = 0;
>  	void *base;
> +	const void *vbt = NULL;
> +	u32 vbt_size = 0;
>  
>  	BUILD_BUG_ON(sizeof(struct opregion_header) != 0x100);
>  	BUILD_BUG_ON(sizeof(struct opregion_acpi) != 0x100);
> @@ -972,45 +974,43 @@ int intel_opregion_setup(struct drm_i915_private *dev_priv)
>  	if (mboxes & MBOX_ASLE_EXT)
>  		DRM_DEBUG_DRIVER("ASLE extension supported\n");
>  
> -	if (!dmi_check_system(intel_no_opregion_vbt)) {
> -		const void *vbt = NULL;
> -		u32 vbt_size = 0;
> -
> -		if (opregion->header->opregion_ver >= 2 && opregion->asle &&
> -		    opregion->asle->rvda && opregion->asle->rvds) {
> -			opregion->rvda = memremap(opregion->asle->rvda,
> -						  opregion->asle->rvds,
> -						  MEMREMAP_WB);
> -			vbt = opregion->rvda;
> -			vbt_size = opregion->asle->rvds;
> -		}
> +	if (dmi_check_system(intel_no_opregion_vbt))
> +		goto out;
> +
> +	if (opregion->header->opregion_ver >= 2 && opregion->asle &&
> +	    opregion->asle->rvda && opregion->asle->rvds) {
> +		opregion->rvda = memremap(opregion->asle->rvda,
> +					  opregion->asle->rvds,
> +					  MEMREMAP_WB);
> +		vbt = opregion->rvda;
> +		vbt_size = opregion->asle->rvds;
> +	}
>  
> +	if (intel_bios_is_valid_vbt(vbt, vbt_size)) {
> +		DRM_DEBUG_KMS("Found valid VBT in ACPI OpRegion (RVDA)\n");
> +		opregion->vbt = vbt;
> +		opregion->vbt_size = vbt_size;
> +	} else {
> +		vbt = base + OPREGION_VBT_OFFSET;
> +		/*
> +		 * The VBT specification says that if the ASLE ext mailbox is
> +		 * not used its area is reserved, but on some CHT boards the VBT
> +		 * extends into the ASLE ext area. Allow this even though it is
> +		 * against the spec, so we do not end up rejecting the VBT on
> +		 * those boards (and end up not finding the LCD panel because of
> +		 * this).
> +		 */
> +		vbt_size = (mboxes & MBOX_ASLE_EXT) ?
> +			OPREGION_ASLE_EXT_OFFSET : OPREGION_SIZE;
> +		vbt_size -= OPREGION_VBT_OFFSET;
>  		if (intel_bios_is_valid_vbt(vbt, vbt_size)) {
> -			DRM_DEBUG_KMS("Found valid VBT in ACPI OpRegion (RVDA)\n");
> +			DRM_DEBUG_KMS("Found valid VBT in ACPI OpRegion (Mailbox #4)\n");
>  			opregion->vbt = vbt;
>  			opregion->vbt_size = vbt_size;
> -		} else {
> -			vbt = base + OPREGION_VBT_OFFSET;
> -			/*
> -			 * The VBT specification says that if the ASLE ext
> -			 * mailbox is not used its area is reserved, but
> -			 * on some CHT boards the VBT extends into the
> -			 * ASLE ext area. Allow this even though it is
> -			 * against the spec, so we do not end up rejecting
> -			 * the VBT on those boards (and end up not finding the
> -			 * LCD panel because of this).
> -			 */
> -			vbt_size = (mboxes & MBOX_ASLE_EXT) ?
> -				OPREGION_ASLE_EXT_OFFSET : OPREGION_SIZE;
> -			vbt_size -= OPREGION_VBT_OFFSET;
> -			if (intel_bios_is_valid_vbt(vbt, vbt_size)) {
> -				DRM_DEBUG_KMS("Found valid VBT in ACPI OpRegion (Mailbox #4)\n");
> -				opregion->vbt = vbt;
> -				opregion->vbt_size = vbt_size;
> -			}
>  		}
>  	}
>  
> +out:
>  	return 0;
>  
>  err_out:



-- 
--
Bob Paauwe                  
Bob.J.Paauwe at intel.com
IOTG / PED Software Organization
Intel Corp.  Folsom, CA
(916) 356-6193    



More information about the Intel-gfx mailing list