[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