Module Name:    src
Committed By:   riastradh
Date:           Fri Dec 24 15:08:09 UTC 2021

Modified Files:
        src/sys/external/bsd/drm2/dist/drm/i915/display: intel_opregion.c
            intel_opregion.h

Log Message:
i915: Use AcpiOsMapMemory, not bus_space_map, for opregion.

Needed because this appears in firmware-type memory mappings, which
are excluded from bus_space_map.

XXX pullup-9 (via manual patch since the code has changed a bit)


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 \
    src/sys/external/bsd/drm2/dist/drm/i915/display/intel_opregion.c
cvs rdiff -u -r1.3 -r1.4 \
    src/sys/external/bsd/drm2/dist/drm/i915/display/intel_opregion.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/i915/display/intel_opregion.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/display/intel_opregion.c:1.4 src/sys/external/bsd/drm2/dist/drm/i915/display/intel_opregion.c:1.5
--- src/sys/external/bsd/drm2/dist/drm/i915/display/intel_opregion.c:1.4	Sun Dec 19 11:49:11 2021
+++ src/sys/external/bsd/drm2/dist/drm/i915/display/intel_opregion.c	Fri Dec 24 15:08:09 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_opregion.c,v 1.4 2021/12/19 11:49:11 riastradh Exp $	*/
+/*	$NetBSD: intel_opregion.c,v 1.5 2021/12/24 15:08:09 riastradh Exp $	*/
 
 /*
  * Copyright 2008 Intel Corporation <hong....@intel.com>
@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: intel_opregion.c,v 1.4 2021/12/19 11:49:11 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_opregion.c,v 1.5 2021/12/24 15:08:09 riastradh Exp $");
 
 #include <linux/acpi.h>
 #include <linux/dmi.h>
@@ -952,15 +952,7 @@ int intel_opregion_setup(struct drm_i915
 	INIT_WORK(&opregion->asle_work, asle_work);
 
 #ifdef __NetBSD__
-	opregion->bst = pdev->pd_pa.pa_memt;
-	err = -bus_space_map(opregion->bst, asls, OPREGION_SIZE,
-	    BUS_SPACE_MAP_LINEAR|BUS_SPACE_MAP_CACHEABLE,
-	    &opregion->asls_bsh);
-	if (err) {
-		DRM_DEBUG_DRIVER("Failed to map opregion: %d\n", err);
-		return err;
-	}
-	base = bus_space_vaddr(opregion->bst, opregion->asls_bsh);
+	base = AcpiOsMapMemory(asls, OPREGION_SIZE);
 #else
 	base = memremap(asls, OPREGION_SIZE, MEMREMAP_WB);
 #endif
@@ -1035,14 +1027,7 @@ int intel_opregion_setup(struct drm_i915
 		}
 
 #ifdef __NetBSD__
-		if (bus_space_map(opregion->bst, rvda,
-			opregion->asle->rvds,
-			BUS_SPACE_MAP_LINEAR|BUS_SPACE_MAP_CACHEABLE,
-			&opregion->rvda_bsh))
-			opregion->rvda = NULL;
-		else
-			opregion->rvda = bus_space_vaddr(opregion->bst,
-			    opregion->rvda_bsh);
+		opregion->rvda = AcpiOsMapMemory(rvda, opregion->asle->rvds);
 #else
 		opregion->rvda = memremap(rvda, opregion->asle->rvds,
 					  MEMREMAP_WB);
@@ -1058,11 +1043,8 @@ int intel_opregion_setup(struct drm_i915
 		} else {
 			DRM_DEBUG_KMS("Invalid VBT in ACPI OpRegion (RVDA)\n");
 #ifdef __NetBSD__
-			if (opregion->rvda) {
-				bus_space_unmap(opregion->bst,
-				    opregion->rvda_bsh,
-				    opregion->asle->rvds);
-			}
+			AcpiOsUnmapMemory(opregion->rvda,
+			    opregion->asle->rvds);
 #else
 			memunmap(opregion->rvda);
 #endif
@@ -1094,7 +1076,7 @@ out:
 
 err_out:
 #ifdef __NetBSD__
-	bus_space_unmap(opregion->bst, opregion->asls_bsh, OPREGION_SIZE);
+	AcpiOsUnmapMemory(base, OPREGION_SIZE);
 #else
 	memunmap(base);
 #endif
@@ -1251,14 +1233,14 @@ void intel_opregion_unregister(struct dr
 
 	/* just clear all opregion memory pointers now */
 #ifdef __NetBSD__
-	bus_space_unmap(opregion->bst, opregion->asls_bsh, OPREGION_SIZE);
+	size_t rvds = opregion->asle->rvds;
+	AcpiOsUnmapMemory(opregion->header, OPREGION_SIZE);
 #else
 	memunmap(opregion->header);
 #endif
 	if (opregion->rvda) {
 #ifdef __NetBSD__
-		bus_space_unmap(opregion->bst, opregion->rvda_bsh,
-		    opregion->asle->rvds);
+		AcpiOsUnmapMemory(opregion->rvda, rvds);
 #else
 		memunmap(opregion->rvda);
 #endif

Index: src/sys/external/bsd/drm2/dist/drm/i915/display/intel_opregion.h
diff -u src/sys/external/bsd/drm2/dist/drm/i915/display/intel_opregion.h:1.3 src/sys/external/bsd/drm2/dist/drm/i915/display/intel_opregion.h:1.4
--- src/sys/external/bsd/drm2/dist/drm/i915/display/intel_opregion.h:1.3	Sun Dec 19 11:49:11 2021
+++ src/sys/external/bsd/drm2/dist/drm/i915/display/intel_opregion.h	Fri Dec 24 15:08:09 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_opregion.h,v 1.3 2021/12/19 11:49:11 riastradh Exp $	*/
+/*	$NetBSD: intel_opregion.h,v 1.4 2021/12/24 15:08:09 riastradh Exp $	*/
 
 /*
  * Copyright © 2008-2017 Intel Corporation
@@ -38,17 +38,7 @@ struct opregion_acpi;
 struct opregion_swsci;
 struct opregion_asle;
 
-#ifdef __NetBSD__		/* XXX acpi iomem */
-#  include <linux/acpi_io.h>
-#  define	__iomem		__acpi_iomem
-#endif
-
 struct intel_opregion {
-#ifdef __NetBSD__
-	bus_space_tag_t bst;
-	bus_space_handle_t asls_bsh;
-	bus_space_handle_t rvda_bsh;
-#endif
 	struct opregion_header *header;
 	struct opregion_acpi *acpi;
 	struct opregion_swsci *swsci;
@@ -66,10 +56,6 @@ struct intel_opregion {
 
 #define OPREGION_SIZE            (8 * 1024)
 
-#ifdef __NetBSD__		/* XXX acpi iomem */
-#  undef	__iomem
-#endif
-
 #ifdef CONFIG_ACPI
 
 int intel_opregion_setup(struct drm_i915_private *dev_priv);

Reply via email to