All of lore.kernel.org
 help / color / mirror / Atom feed
From: Radhakrishna Sripada <radhakrishna.sripada@intel.com>
To: intel-gfx@lists.freedesktop.org
Subject: [RFC 09/15] drm/i915: Move vbt load from opregion to bios init
Date: Mon,  8 Jan 2024 15:05:11 -0800	[thread overview]
Message-ID: <20240108230517.1497504-10-radhakrishna.sripada@intel.com> (raw)
In-Reply-To: <20240108230517.1497504-1-radhakrishna.sripada@intel.com>

Opregion is probed early during the driver bring up and if present,
vbt is extracted. Move vbt loading to a more appropriate place during
bios init where the vbt is parsed. While at it remove the empty return.

Signed-off-by: Radhakrishna Sripada <radhakrishna.sripada@intel.com>
---
 drivers/gpu/drm/i915/display/intel_bios.c     |  4 ++++
 drivers/gpu/drm/i915/display/intel_opregion.c | 18 +++++++-----------
 drivers/gpu/drm/i915/display/intel_opregion.h |  9 +++++++++
 3 files changed, 20 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
index bde58a1ceadb..5d2a56df029d 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -34,6 +34,7 @@
 #include "intel_display.h"
 #include "intel_display_types.h"
 #include "intel_gmbus.h"
+#include "intel_opregion.h"
 
 #define _INTEL_BIOS_PRIVATE
 #include "intel_vbt_defs.h"
@@ -3082,6 +3083,7 @@ static struct vbt_header *oprom_get_vbt(struct drm_i915_private *i915)
 void intel_bios_init(struct drm_i915_private *i915)
 {
 	struct intel_vbt *vbt = &i915->display.vbt;
+	struct intel_opregion *opregion = &i915->display.opregion;
 	struct vbt_header *oprom_vbt = NULL;
 	struct vbt_header *header = NULL;
 	const struct bdb_header *bdb;
@@ -3104,6 +3106,8 @@ void intel_bios_init(struct drm_i915_private *i915)
 
 	init_vbt_defaults(i915);
 
+	if (opregion->asls)
+		intel_load_opregion_vbt(i915, opregion, vbt);
 	/*
 	 * If the OpRegion does not have VBT, look in SPI flash through MMIO or
 	 * PCI mapping
diff --git a/drivers/gpu/drm/i915/display/intel_opregion.c b/drivers/gpu/drm/i915/display/intel_opregion.c
index b879e89d0fb6..5ff6466548a3 100644
--- a/drivers/gpu/drm/i915/display/intel_opregion.c
+++ b/drivers/gpu/drm/i915/display/intel_opregion.c
@@ -878,19 +878,19 @@ static int intel_load_vbt_firmware(struct drm_i915_private *dev_priv)
 	return ret;
 }
 
-static int intel_load_opregion_vbt(struct drm_i915_private *i915,
-				   struct intel_opregion *opregion,
-				   struct intel_vbt *vbt)
+void intel_load_opregion_vbt(struct drm_i915_private *i915,
+			     struct intel_opregion *opregion,
+			     struct intel_vbt *vbt)
 {
 	const void *vbt_data;
 	u32 vbt_size;
 	void *base = opregion->header;
 
 	if (intel_load_vbt_firmware(i915) == 0)
-		goto out;
+		return;
 
 	if (dmi_check_system(intel_no_opregion_vbt))
-		goto out;
+		return;
 
 	if (opregion->header->over.major >= 2 && opregion->asle &&
 	    opregion->asle->rvda && opregion->asle->rvds) {
@@ -920,7 +920,7 @@ static int intel_load_opregion_vbt(struct drm_i915_private *i915,
 			vbt->vbt = vbt_data;
 			vbt->vbt_size = vbt_size;
 			vbt->type = I915_VBT_OPREGION;
-			goto out;
+			return;
 		} else {
 			drm_dbg_kms(&i915->drm,
 				    "Invalid VBT in ACPI OpRegion (RVDA)\n");
@@ -950,15 +950,11 @@ static int intel_load_opregion_vbt(struct drm_i915_private *i915,
 		drm_dbg_kms(&i915->drm,
 			    "Invalid VBT in ACPI OpRegion (Mailbox #4)\n");
 	}
-
-out:
-	return 0;
 }
 
 int intel_opregion_setup(struct drm_i915_private *dev_priv)
 {
 	struct intel_opregion *opregion = &dev_priv->display.opregion;
-	struct intel_vbt *vbt = &dev_priv->display.vbt;
 	struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev);
 	u32 asls, mboxes;
 	char buf[sizeof(OPREGION_SIGNATURE)];
@@ -1044,7 +1040,7 @@ int intel_opregion_setup(struct drm_i915_private *dev_priv)
 		drm_dbg(&dev_priv->drm, "Mailbox #2 for backlight present\n");
 	}
 
-	return intel_load_opregion_vbt(dev_priv, opregion, vbt);
+	return 0;
 
 err_out:
 	memunmap(base);
diff --git a/drivers/gpu/drm/i915/display/intel_opregion.h b/drivers/gpu/drm/i915/display/intel_opregion.h
index 03838fa39d0d..5a46a4b1805a 100644
--- a/drivers/gpu/drm/i915/display/intel_opregion.h
+++ b/drivers/gpu/drm/i915/display/intel_opregion.h
@@ -31,6 +31,7 @@
 struct drm_i915_private;
 struct intel_connector;
 struct intel_encoder;
+struct intel_vbt;
 
 struct opregion_header;
 struct opregion_acpi;
@@ -77,6 +78,9 @@ const struct drm_edid *intel_opregion_get_edid(struct intel_connector *connector
 
 bool intel_opregion_headless_sku(struct drm_i915_private *i915);
 
+void intel_load_opregion_vbt(struct drm_i915_private *i915,
+			     struct intel_opregion *opregion,
+			     struct intel_vbt *vbt);
 #else /* CONFIG_ACPI*/
 
 static inline int intel_opregion_setup(struct drm_i915_private *dev_priv)
@@ -137,6 +141,11 @@ static inline bool intel_opregion_headless_sku(struct drm_i915_private *i915)
 	return false;
 }
 
+static inline void intel_load_opregion_vbt(struct drm_i915_private *i915,
+					   struct intel_opregion *opregion,
+					   struct intel_vbt *vbt)
+{
+}
 #endif /* CONFIG_ACPI */
 
 #endif
-- 
2.34.1


  parent reply	other threads:[~2024-01-08 23:07 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-08 23:05 [RFC 00/15] VBT read Cleanup Radhakrishna Sripada
2024-01-08 23:05 ` [RFC 01/15] drm/i915: Extract display->vbt_data to a new vbt structure Radhakrishna Sripada
2024-01-08 23:05 ` [RFC 02/15] drm/i915: Move vbt fields from opregion to its own structure Radhakrishna Sripada
2024-01-08 23:05 ` [RFC 03/15] drm/i915: Cache opregion asls pointer Radhakrishna Sripada
2024-01-08 23:05 ` [RFC 04/15] drm/i915: Extract opregion vbt capture to its own function Radhakrishna Sripada
2024-01-08 23:05 ` [RFC 05/15] drm/i915: Init vbt fields when read from oprom/spi Radhakrishna Sripada
2024-01-08 23:05 ` [RFC 06/15] drm/i915: Classify vbt type based on its residence Radhakrishna Sripada
2024-01-08 23:05 ` [RFC 07/15] drm/i915: Collate vbt cleanup for different types Radhakrishna Sripada
2024-01-08 23:05 ` [RFC 08/15] drm/i915: Make intel_bios_init operate on intel_vbt Radhakrishna Sripada
2024-01-08 23:05 ` Radhakrishna Sripada [this message]
2024-01-08 23:05 ` [RFC 10/15] drm/i915: Move vbt firmware load into intel_bios_init Radhakrishna Sripada
2024-01-08 23:05 ` [RFC 11/15] drm/i915: Make oprom_get_vbt operate on intel_vbt Radhakrishna Sripada
2024-01-08 23:05 ` [RFC 12/15] drm/i915: Make spi_oprom_get_vbt " Radhakrishna Sripada
2024-01-08 23:05 ` [RFC 13/15] drm/i915: Make intel_load_vbt_firmware " Radhakrishna Sripada
2024-01-08 23:05 ` [RFC 14/15] drm/i915: Kill reduntant vbt_firmware from intel_vbt Radhakrishna Sripada
2024-01-08 23:05 ` [RFC 15/15] drm/i915: Use vbt type to determine its validity Radhakrishna Sripada
2024-01-09  1:58 ` ✗ Fi.CI.SPARSE: warning for VBT read Cleanup Patchwork
2024-01-09  2:17 ` ✓ Fi.CI.BAT: success " Patchwork
2024-01-09 11:57 ` ✗ Fi.CI.IGT: failure " Patchwork
2024-01-10 12:33 ` [RFC 00/15] " Jani Nikula
2024-01-11 22:46   ` Sripada, Radhakrishna

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240108230517.1497504-10-radhakrishna.sripada@intel.com \
    --to=radhakrishna.sripada@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.