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 =