Module Name:    src
Committed By:   riastradh
Date:           Sun Dec 19 11:46:47 UTC 2021

Modified Files:
        src/sys/external/bsd/drm2/dist/drm/i915/gt: intel_engine_types.h
            intel_lrc.c

Log Message:
Bus-space-ify

Author: Maya Rashish <m...@netbsd.org>
Committer: Taylor R Campbell <riastr...@netbsd.org>


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

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/gt/intel_engine_types.h
diff -u src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_engine_types.h:1.5 src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_engine_types.h:1.6
--- src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_engine_types.h:1.5	Sun Dec 19 11:13:22 2021
+++ src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_engine_types.h	Sun Dec 19 11:46:47 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_engine_types.h,v 1.5 2021/12/19 11:13:22 riastradh Exp $	*/
+/*	$NetBSD: intel_engine_types.h,v 1.6 2021/12/19 11:46:47 riastradh Exp $	*/
 
 /*
  * SPDX-License-Identifier: MIT
@@ -166,9 +166,11 @@ struct intel_engine_execlists {
 	bool no_priolist;
 
 #ifdef __NetBSD__
-#  define	__iomem
-#endif
-
+	bus_space_tag_t bst;
+	bus_space_handle_t bsh;
+	bus_size_t submit_reg;
+	bus_size_t ctrl_reg;
+#else
 	/**
 	 * @submit_reg: gen-specific execlist submission register
 	 * set to the ExecList Submission Port (elsp) register pre-Gen11 and to
@@ -181,9 +183,6 @@ struct intel_engine_execlists {
 	 * submit queue on the HW and to request preemptions to idle
 	 */
 	u32 __iomem *ctrl_reg;
-
-#ifdef __NetBSD__
-#  undef	__iomem
 #endif
 
 #define EXECLIST_MAX_PORTS 2

Index: src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_lrc.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_lrc.c:1.3 src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_lrc.c:1.4
--- src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_lrc.c:1.3	Sun Dec 19 11:37:50 2021
+++ src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_lrc.c	Sun Dec 19 11:46:47 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_lrc.c,v 1.3 2021/12/19 11:37:50 riastradh Exp $	*/
+/*	$NetBSD: intel_lrc.c,v 1.4 2021/12/19 11:46:47 riastradh Exp $	*/
 
 /*
  * Copyright © 2014 Intel Corporation
@@ -134,7 +134,7 @@
  *
  */
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: intel_lrc.c,v 1.3 2021/12/19 11:37:50 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_lrc.c,v 1.4 2021/12/19 11:46:47 riastradh Exp $");
 
 #include <linux/interrupt.h>
 
@@ -1370,6 +1370,15 @@ static u64 execlists_update_context(stru
 
 static inline void write_desc(struct intel_engine_execlists *execlists, u64 desc, u32 port)
 {
+#ifdef __NetBSD__
+	if (execlists->ctrl_reg) {
+		bus_space_write_4(execlists->bst, execlists->bsh, execlists->submit_reg + port * 2, lower_32_bits(desc));
+		bus_space_write_4(execlists->bst, execlists->bsh, execlists->submit_reg + port * 2 + 1, upper_32_bits(desc));
+	} else {
+		bus_space_write_4(execlists->bst, execlists->bsh, execlists->submit_reg, upper_32_bits(desc));
+		bus_space_write_4(execlists->bst, execlists->bsh, execlists->submit_reg, lower_32_bits(desc));
+	}
+#else
 	if (execlists->ctrl_reg) {
 		writel(lower_32_bits(desc), execlists->submit_reg + port * 2);
 		writel(upper_32_bits(desc), execlists->submit_reg + port * 2 + 1);
@@ -1377,6 +1386,7 @@ static inline void write_desc(struct int
 		writel(upper_32_bits(desc), execlists->submit_reg);
 		writel(lower_32_bits(desc), execlists->submit_reg);
 	}
+#endif
 }
 
 static __maybe_unused void
@@ -4348,13 +4358,26 @@ int intel_execlists_submission_setup(str
 		DRM_ERROR("WA batch buffer initialization failed\n");
 
 	if (HAS_LOGICAL_RING_ELSQ(i915)) {
+#ifdef __NetBSD__
+		execlists->submit_reg = i915_mmio_reg_offset(RING_EXECLIST_SQ_CONTENTS(base));
+		execlists->ctrl_reg = i915_mmio_reg_offset(RING_EXECLIST_CONTROL(base));
+		execlists->bsh = uncore->regs_bsh;
+		execlists->bst = uncore->regs_bst;
+#else
 		execlists->submit_reg = uncore->regs +
 			i915_mmio_reg_offset(RING_EXECLIST_SQ_CONTENTS(base));
 		execlists->ctrl_reg = uncore->regs +
 			i915_mmio_reg_offset(RING_EXECLIST_CONTROL(base));
+#endif
 	} else {
+#ifdef __NetBSD__
+		execlists->submit_reg = i915_mmio_reg_offset(RING_ELSP(base));
+		execlists->bsh = uncore->regs_bsh;
+		execlists->bst = uncore->regs_bst;
+#else
 		execlists->submit_reg = uncore->regs +
 			i915_mmio_reg_offset(RING_ELSP(base));
+#endif
 	}
 
 	execlists->csb_status =

Reply via email to