Module Name: src Committed By: riastradh Date: Sun Dec 19 11:38:04 UTC 2021
Modified Files: src/sys/external/bsd/common/include/linux: list.h workqueue.h src/sys/external/bsd/common/linux: linux_work.c src/sys/external/bsd/drm2/dist/drm/i915: i915_reg.h intel_csr.c intel_sideband.h src/sys/external/bsd/drm2/dist/drm/i915/display: intel_acpi.c intel_atomic.c intel_atomic_plane.c intel_audio.c intel_bios.c intel_crt.h intel_display.c intel_display.h intel_display_power.c intel_dp.c intel_dp.h intel_lpe_audio.h intel_lvds.h intel_sdvo.h src/sys/external/bsd/drm2/dist/drm/i915/gt: intel_breadcrumbs.c intel_context.c src/sys/external/bsd/drm2/i915drm: files.i915drmkms vlv_dsi.c src/sys/external/bsd/drm2/include: i915_trace.h src/sys/external/bsd/drm2/include/drm: drm_mipi_dsi.h src/sys/external/bsd/drm2/include/linux: acpi.h bitfield.h hdmi.h ktime.h pci.h scatterlist.h smp.h uuid.h src/sys/external/bsd/drm2/linux: linux_pci.c linux_sg.c Log Message: i915: another whack at it To generate a diff of this commit: cvs rdiff -u -r1.30 -r1.31 src/sys/external/bsd/common/include/linux/list.h cvs rdiff -u -r1.23 -r1.24 \ src/sys/external/bsd/common/include/linux/workqueue.h cvs rdiff -u -r1.52 -r1.53 src/sys/external/bsd/common/linux/linux_work.c cvs rdiff -u -r1.17 -r1.18 src/sys/external/bsd/drm2/dist/drm/i915/i915_reg.h cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/dist/drm/i915/intel_csr.c cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/i915/intel_sideband.h cvs rdiff -u -r1.3 -r1.4 \ src/sys/external/bsd/drm2/dist/drm/i915/display/intel_acpi.c cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/i915/display/intel_atomic.c \ src/sys/external/bsd/drm2/dist/drm/i915/display/intel_atomic_plane.c \ src/sys/external/bsd/drm2/dist/drm/i915/display/intel_audio.c \ src/sys/external/bsd/drm2/dist/drm/i915/display/intel_bios.c \ src/sys/external/bsd/drm2/dist/drm/i915/display/intel_crt.h \ src/sys/external/bsd/drm2/dist/drm/i915/display/intel_display.c \ src/sys/external/bsd/drm2/dist/drm/i915/display/intel_display_power.c \ src/sys/external/bsd/drm2/dist/drm/i915/display/intel_dp.c \ src/sys/external/bsd/drm2/dist/drm/i915/display/intel_dp.h \ src/sys/external/bsd/drm2/dist/drm/i915/display/intel_lpe_audio.h \ src/sys/external/bsd/drm2/dist/drm/i915/display/intel_lvds.h \ src/sys/external/bsd/drm2/dist/drm/i915/display/intel_sdvo.h cvs rdiff -u -r1.4 -r1.5 \ src/sys/external/bsd/drm2/dist/drm/i915/display/intel_display.h cvs rdiff -u -r1.3 -r1.4 \ src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_breadcrumbs.c cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_context.c cvs rdiff -u -r1.73 -r1.74 src/sys/external/bsd/drm2/i915drm/files.i915drmkms cvs rdiff -u -r1.1 -r1.2 src/sys/external/bsd/drm2/i915drm/vlv_dsi.c cvs rdiff -u -r1.19 -r1.20 src/sys/external/bsd/drm2/include/i915_trace.h cvs rdiff -u -r1.1 -r1.2 src/sys/external/bsd/drm2/include/drm/drm_mipi_dsi.h cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/include/linux/acpi.h \ src/sys/external/bsd/drm2/include/linux/scatterlist.h cvs rdiff -u -r1.1 -r1.2 src/sys/external/bsd/drm2/include/linux/bitfield.h cvs rdiff -u -r1.9 -r1.10 src/sys/external/bsd/drm2/include/linux/hdmi.h cvs rdiff -u -r1.16 -r1.17 src/sys/external/bsd/drm2/include/linux/ktime.h cvs rdiff -u -r1.48 -r1.49 src/sys/external/bsd/drm2/include/linux/pci.h cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/include/linux/smp.h cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/include/linux/uuid.h cvs rdiff -u -r1.18 -r1.19 src/sys/external/bsd/drm2/linux/linux_pci.c cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/linux/linux_sg.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/common/include/linux/list.h diff -u src/sys/external/bsd/common/include/linux/list.h:1.30 src/sys/external/bsd/common/include/linux/list.h:1.31 --- src/sys/external/bsd/common/include/linux/list.h:1.30 Sun Dec 19 11:37:41 2021 +++ src/sys/external/bsd/common/include/linux/list.h Sun Dec 19 11:38:03 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: list.h,v 1.30 2021/12/19 11:37:41 riastradh Exp $ */ +/* $NetBSD: list.h,v 1.31 2021/12/19 11:38:03 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -283,6 +283,11 @@ list_del_init(struct list_head *node) (VAR) != (HEAD); \ (VAR) = list_next((VAR))) +#define list_for_each_prev(VAR, HEAD) \ + for ((VAR) = list_last((HEAD)); \ + (VAR) != (HEAD); \ + (VAR) = list_prev((VAR))) + #define list_for_each_safe(VAR, NEXT, HEAD) \ for ((VAR) = list_first((HEAD)); \ ((VAR) != (HEAD)) && ((NEXT) = list_next((VAR)), 1); \ Index: src/sys/external/bsd/common/include/linux/workqueue.h diff -u src/sys/external/bsd/common/include/linux/workqueue.h:1.23 src/sys/external/bsd/common/include/linux/workqueue.h:1.24 --- src/sys/external/bsd/common/include/linux/workqueue.h:1.23 Sun Dec 19 11:10:17 2021 +++ src/sys/external/bsd/common/include/linux/workqueue.h Sun Dec 19 11:38:03 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: workqueue.h,v 1.23 2021/12/19 11:10:17 riastradh Exp $ */ +/* $NetBSD: workqueue.h,v 1.24 2021/12/19 11:38:03 riastradh Exp $ */ /*- * Copyright (c) 2013, 2018 The NetBSD Foundation, Inc. @@ -59,6 +59,7 @@ #define queue_work linux_queue_work #define schedule_delayed_work linux_schedule_delayed_work #define schedule_work linux_schedule_work +#define system_highpri_wq linux_system_highpri_wq #define system_long_wq linux_system_long_wq #define system_power_efficient_wq linux_system_power_efficient_wq #define system_unbound_wq linux_system_unbound_wq @@ -95,16 +96,19 @@ struct rcu_work { #define WQ_MEM_RECLAIM __BIT(2) #define WQ_UNBOUND __BIT(3) +#define WQ_UNBOUND_MAX_ACTIVE 0 + static inline struct delayed_work * to_delayed_work(struct work_struct *work) { return container_of(work, struct delayed_work, work); } -extern struct workqueue_struct *system_wq; +extern struct workqueue_struct *system_highpri_wq; extern struct workqueue_struct *system_long_wq; extern struct workqueue_struct *system_power_efficient_wq; extern struct workqueue_struct *system_unbound_wq; +extern struct workqueue_struct *system_wq; int linux_workqueue_init(void); void linux_workqueue_fini(void); Index: src/sys/external/bsd/common/linux/linux_work.c diff -u src/sys/external/bsd/common/linux/linux_work.c:1.52 src/sys/external/bsd/common/linux/linux_work.c:1.53 --- src/sys/external/bsd/common/linux/linux_work.c:1.52 Sun Dec 19 01:51:02 2021 +++ src/sys/external/bsd/common/linux/linux_work.c Sun Dec 19 11:38:03 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: linux_work.c,v 1.52 2021/12/19 01:51:02 riastradh Exp $ */ +/* $NetBSD: linux_work.c,v 1.53 2021/12/19 11:38:03 riastradh Exp $ */ /*- * Copyright (c) 2018 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_work.c,v 1.52 2021/12/19 01:51:02 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_work.c,v 1.53 2021/12/19 11:38:03 riastradh Exp $"); #include <sys/types.h> #include <sys/atomic.h> @@ -117,10 +117,11 @@ SDT_PROBE_DEFINE1(sdt, linux, work, flus static specificdata_key_t workqueue_key __read_mostly; -struct workqueue_struct *system_wq __read_mostly; +struct workqueue_struct *system_highpri_wq __read_mostly; struct workqueue_struct *system_long_wq __read_mostly; struct workqueue_struct *system_power_efficient_wq __read_mostly; struct workqueue_struct *system_unbound_wq __read_mostly; +struct workqueue_struct *system_wq __read_mostly; static inline uintptr_t atomic_cas_uintptr(volatile uintptr_t *p, uintptr_t old, uintptr_t new) @@ -142,41 +143,56 @@ linux_workqueue_init0(void) error = lwp_specific_key_create(&workqueue_key, NULL); if (error) - goto fail0; + goto out; - system_wq = alloc_ordered_workqueue("lnxsyswq", 0); - if (system_wq == NULL) { + system_highpri_wq = alloc_ordered_workqueue("lnxhipwq", 0); + if (system_highpri_wq == NULL) { error = ENOMEM; - goto fail1; + goto out; } system_long_wq = alloc_ordered_workqueue("lnxlngwq", 0); if (system_long_wq == NULL) { error = ENOMEM; - goto fail2; + goto out; } system_power_efficient_wq = alloc_ordered_workqueue("lnxpwrwq", 0); if (system_power_efficient_wq == NULL) { error = ENOMEM; - goto fail3; + goto out; } system_unbound_wq = alloc_ordered_workqueue("lnxubdwq", 0); if (system_unbound_wq == NULL) { error = ENOMEM; - goto fail4; + goto out; } - return 0; + system_wq = alloc_ordered_workqueue("lnxsyswq", 0); + if (system_wq == NULL) { + error = ENOMEM; + goto out; + } + + /* Success! */ + error = 0; + +out: if (error) { + if (system_highpri_wq) + destroy_workqueue(system_highpri_wq); + if (system_long_wq) + destroy_workqueue(system_long_wq); + if (system_power_efficient_wq) + destroy_workqueue(system_power_efficient_wq); + if (system_unbound_wq) + destroy_workqueue(system_unbound_wq); + if (system_wq) + destroy_workqueue(system_wq); + if (workqueue_key) + lwp_specific_key_delete(workqueue_key); + } -fail5: __unused - destroy_workqueue(system_unbound_wq); -fail4: destroy_workqueue(system_power_efficient_wq); -fail3: destroy_workqueue(system_long_wq); -fail2: destroy_workqueue(system_wq); -fail1: lwp_specific_key_delete(workqueue_key); -fail0: KASSERT(error); return error; } Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_reg.h diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_reg.h:1.17 src/sys/external/bsd/drm2/dist/drm/i915/i915_reg.h:1.18 --- src/sys/external/bsd/drm2/dist/drm/i915/i915_reg.h:1.17 Sun Dec 19 11:14:16 2021 +++ src/sys/external/bsd/drm2/dist/drm/i915/i915_reg.h Sun Dec 19 11:38:04 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_reg.h,v 1.17 2021/12/19 11:14:16 riastradh Exp $ */ +/* $NetBSD: i915_reg.h,v 1.18 2021/12/19 11:38:04 riastradh Exp $ */ /* Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. * All Rights Reserved. @@ -29,6 +29,7 @@ #include <linux/bitfield.h> #include <linux/bits.h> +#include <linux/types.h> /** * DOC: The i915 register macro definition style guide Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_csr.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_csr.c:1.7 src/sys/external/bsd/drm2/dist/drm/i915/intel_csr.c:1.8 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_csr.c:1.7 Sat Dec 18 23:45:28 2021 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_csr.c Sun Dec 19 11:38:04 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_csr.c,v 1.7 2021/12/18 23:45:28 riastradh Exp $ */ +/* $NetBSD: intel_csr.c,v 1.8 2021/12/19 11:38:04 riastradh Exp $ */ /* * Copyright © 2014 Intel Corporation @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: intel_csr.c,v 1.7 2021/12/18 23:45:28 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_csr.c,v 1.8 2021/12/19 11:38:04 riastradh Exp $"); #include <linux/firmware.h> @@ -229,7 +229,7 @@ struct stepping_info { * Kabylake derivated from Skylake H0, so SKL H0 * is the right firmware for KBL A0 (revid 0). */ -static const struct stepping_info kbl_stepping_info[] = { +static const struct stepping_info kbl_stepping_info[] __unused = { {'H', '0'}, {'I', '0'} }; @@ -391,7 +391,7 @@ static u32 parse_csr_fw_dmc(struct intel unsigned int header_len_bytes, dmc_header_size, payload_size, i; const u32 *mmioaddr, *mmiodata; u32 mmio_count, mmio_count_max; - u8 *payload; + const u8 *payload; BUILD_BUG_ON(ARRAY_SIZE(csr->mmioaddr) < DMC_V3_MAX_MMIO_COUNT || ARRAY_SIZE(csr->mmioaddr) < DMC_V1_MAX_MMIO_COUNT); @@ -480,7 +480,7 @@ static u32 parse_csr_fw_dmc(struct intel return 0; } - payload = (u8 *)(dmc_header) + header_len_bytes; + payload = (const u8 *)(dmc_header) + header_len_bytes; memcpy(csr->dmc_payload, payload, payload_size); return header_len_bytes + payload_size; @@ -532,7 +532,7 @@ parse_csr_fw_package(struct intel_csr *c num_entries = max_entries; fw_info = (const struct intel_fw_info *) - ((u8 *)package_header + sizeof(*package_header)); + ((const u8 *)package_header + sizeof(*package_header)); dmc_offset = find_dmc_fw_offset(fw_info, num_entries, si, package_header->header_ver); if (dmc_offset == CSR_DEFAULT_FW_OFFSET) { @@ -642,7 +642,8 @@ static void csr_load_work_fn(struct work dev_priv = container_of(work, typeof(*dev_priv), csr.work); csr = &dev_priv->csr; - request_firmware(&fw, dev_priv->csr.fw_path, &dev_priv->drm.pdev->dev); + request_firmware(&fw, dev_priv->csr.fw_path, + pci_dev_dev(dev_priv->drm.pdev)); parse_csr_fw(dev_priv, fw); if (dev_priv->csr.dmc_payload) { Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_sideband.h diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_sideband.h:1.2 src/sys/external/bsd/drm2/dist/drm/i915/intel_sideband.h:1.3 --- src/sys/external/bsd/drm2/dist/drm/i915/intel_sideband.h:1.2 Sat Dec 18 23:45:29 2021 +++ src/sys/external/bsd/drm2/dist/drm/i915/intel_sideband.h Sun Dec 19 11:38:04 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_sideband.h,v 1.2 2021/12/18 23:45:29 riastradh Exp $ */ +/* $NetBSD: intel_sideband.h,v 1.3 2021/12/19 11:38:04 riastradh Exp $ */ /* SPDX-License-Identifier: MIT */ @@ -8,6 +8,9 @@ #include <linux/bitops.h> #include <linux/types.h> +#include <sys/file.h> +#define pipe pipe_drmhack /* see intel_display.h */ + struct drm_i915_private; enum pipe; Index: src/sys/external/bsd/drm2/dist/drm/i915/display/intel_acpi.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/display/intel_acpi.c:1.3 src/sys/external/bsd/drm2/dist/drm/i915/display/intel_acpi.c:1.4 --- src/sys/external/bsd/drm2/dist/drm/i915/display/intel_acpi.c:1.3 Sun Dec 19 10:25:15 2021 +++ src/sys/external/bsd/drm2/dist/drm/i915/display/intel_acpi.c Sun Dec 19 11:38:03 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_acpi.c,v 1.3 2021/12/19 10:25:15 riastradh Exp $ */ +/* $NetBSD: intel_acpi.c,v 1.4 2021/12/19 11:38:03 riastradh Exp $ */ // SPDX-License-Identifier: GPL-2.0 /* @@ -8,7 +8,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: intel_acpi.c,v 1.3 2021/12/19 10:25:15 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_acpi.c,v 1.4 2021/12/19 11:38:03 riastradh Exp $"); #include <linux/pci.h> #include <linux/acpi.h> @@ -22,15 +22,19 @@ __KERNEL_RCSID(0, "$NetBSD: intel_acpi.c #define _COMPONENT ACPI_BUTTON_COMPONENT ACPI_MODULE_NAME("acpi_intel_brightness") +#include <dev/acpi/acpi_pci.h> + #define acpi_handle ACPI_HANDLE #define buffer Buffer +#define count Count #define elements Elements #define integer Integer #define package Package +#define pointer Pointer #define value Value static ACPI_OBJECT * -acpi_evaluate_dsm(ACPI_HANDLE handle, const uint8_t *uuid, int rev, int func, +acpi_evaluate_dsm(ACPI_HANDLE handle, const guid_t *uuid, int rev, int func, ACPI_OBJECT *argv4) { ACPI_OBJECT_LIST arg; @@ -68,7 +72,7 @@ acpi_evaluate_dsm(ACPI_HANDLE handle, co } static inline ACPI_OBJECT * -acpi_evaluate_dsm_typed(ACPI_HANDLE handle, const uint8_t *uuid, int rev, +acpi_evaluate_dsm_typed(ACPI_HANDLE handle, const guid_t *uuid, int rev, int func, ACPI_OBJECT *argv4, ACPI_OBJECT_TYPE type) { ACPI_OBJECT *obj; @@ -89,7 +93,7 @@ acpi_evaluate_dsm_typed(ACPI_HANDLE hand } static bool -acpi_check_dsm(ACPI_HANDLE handle, const uint8_t *uuid, int rev, uint64_t funcs) +acpi_check_dsm(ACPI_HANDLE handle, const guid_t *uuid, int rev, uint64_t funcs) { ACPI_OBJECT *obj; uint64_t mask = 0; @@ -122,7 +126,7 @@ static const guid_t intel_dsm_guid = GUID_INIT(0x7ed873d3, 0xc2d0, 0x4e4f, 0xa8, 0x54, 0x0f, 0x13, 0x17, 0xb0, 0x1c, 0x2c); -static char *intel_dsm_port_name(u8 id) +static const char *intel_dsm_port_name(u8 id) { switch (id) { case 0: @@ -158,7 +162,7 @@ static char *intel_dsm_port_name(u8 id) } } -static char *intel_dsm_mux_type(u8 type) +static const char *intel_dsm_mux_type(u8 type) { switch (type) { case 0: @@ -220,7 +224,7 @@ static void intel_dsm_platform_mux_info( } #ifdef __NetBSD__ -static bool intel_dsm_pci_probe(ACPI_HANDLE dhandle) +static ACPI_HANDLE intel_dsm_pci_probe(ACPI_HANDLE dhandle) #else static acpi_handle intel_dsm_pci_probe(struct pci_dev *pdev) #endif @@ -247,7 +251,7 @@ static acpi_handle intel_dsm_pci_probe(s #ifdef __NetBSD__ static int vga_count; -static bool has_dsm; +static ACPI_HANDLE intel_dsm_handle; /* XXX from sys/dev/pci/vga_pcivar.h */ #define DEVICE_IS_VGA_PCI(class, id) \ @@ -266,8 +270,8 @@ intel_dsm_vga_match(const struct pci_att vga_count++; struct acpi_devnode *node = acpi_pcidev_find(0 /*XXX segment*/, pa->pa_bus, pa->pa_device, pa->pa_function); - if (node != NULL) - has_dsm |= intel_dsm_pci_probe(node->ad_handle); + if (node != NULL && intel_dsm_handle == NULL) + intel_dsm_handle = intel_dsm_pci_probe(node->ad_handle); return 0; } @@ -276,11 +280,10 @@ static bool intel_dsm_detect(struct drm_ char acpi_method_name[255] = { 0 }; vga_count = 0; - has_dsm = false; pci_find_device(&dev->pdev->pd_pa, intel_dsm_vga_match); - if (vga_count == 2 && has_dsm) { - const char *name = acpi_name(intel_dsm_priv.dhandle); + if (vga_count == 2 && intel_dsm_handle) { + const char *name = acpi_name(intel_dsm_handle); strlcpy(acpi_method_name, name, sizeof(acpi_method_name)); DRM_DEBUG_DRIVER("VGA switcheroo: detected DSM switching method %s handle\n", acpi_method_name); @@ -317,7 +320,7 @@ static bool intel_dsm_detect(void) #ifdef __NetBSD__ void intel_register_dsm_handler(struct drm_i915_private *i915) { - if (!intel_dsm_detect(i915->base.pdev)) + if (!intel_dsm_detect(&i915->drm)) return; } #else Index: src/sys/external/bsd/drm2/dist/drm/i915/display/intel_atomic.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/display/intel_atomic.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/display/intel_atomic.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/i915/display/intel_atomic.c:1.2 Sat Dec 18 23:45:29 2021 +++ src/sys/external/bsd/drm2/dist/drm/i915/display/intel_atomic.c Sun Dec 19 11:38:03 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_atomic.c,v 1.2 2021/12/18 23:45:29 riastradh Exp $ */ +/* $NetBSD: intel_atomic.c,v 1.3 2021/12/19 11:38:03 riastradh Exp $ */ /* * Copyright © 2015 Intel Corporation @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: intel_atomic.c,v 1.2 2021/12/18 23:45:29 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_atomic.c,v 1.3 2021/12/19 11:38:03 riastradh Exp $"); #include <drm/drm_atomic.h> #include <drm/drm_atomic_helper.h> @@ -61,8 +61,8 @@ int intel_digital_connector_atomic_get_p { struct drm_device *dev = connector->dev; struct drm_i915_private *dev_priv = to_i915(dev); - struct intel_digital_connector_state *intel_conn_state = - to_intel_digital_connector_state(state); + const struct intel_digital_connector_state *intel_conn_state = + const_container_of(state, struct intel_digital_connector_state, base); if (property == dev_priv->force_audio_property) *val = intel_conn_state->force_audio; Index: src/sys/external/bsd/drm2/dist/drm/i915/display/intel_atomic_plane.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/display/intel_atomic_plane.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/display/intel_atomic_plane.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/i915/display/intel_atomic_plane.c:1.2 Sat Dec 18 23:45:29 2021 +++ src/sys/external/bsd/drm2/dist/drm/i915/display/intel_atomic_plane.c Sun Dec 19 11:38:03 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_atomic_plane.c,v 1.2 2021/12/18 23:45:29 riastradh Exp $ */ +/* $NetBSD: intel_atomic_plane.c,v 1.3 2021/12/19 11:38:03 riastradh Exp $ */ /* * Copyright © 2014 Intel Corporation @@ -34,7 +34,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: intel_atomic_plane.c,v 1.2 2021/12/18 23:45:29 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_atomic_plane.c,v 1.3 2021/12/19 11:38:03 riastradh Exp $"); #include <drm/drm_atomic_helper.h> #include <drm/drm_fourcc.h> @@ -319,7 +319,7 @@ skl_next_plane_to_commit(struct intel_at { struct intel_crtc_state *crtc_state = intel_atomic_get_new_crtc_state(state, crtc); - struct intel_plane_state *plane_state; + struct intel_plane_state *plane_state __unused; struct intel_plane *plane; int i; Index: src/sys/external/bsd/drm2/dist/drm/i915/display/intel_audio.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/display/intel_audio.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/display/intel_audio.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/i915/display/intel_audio.c:1.2 Sat Dec 18 23:45:29 2021 +++ src/sys/external/bsd/drm2/dist/drm/i915/display/intel_audio.c Sun Dec 19 11:38:03 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_audio.c,v 1.2 2021/12/18 23:45:29 riastradh Exp $ */ +/* $NetBSD: intel_audio.c,v 1.3 2021/12/19 11:38:03 riastradh Exp $ */ /* * Copyright © 2014 Intel Corporation @@ -24,7 +24,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: intel_audio.c,v 1.2 2021/12/18 23:45:29 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_audio.c,v 1.3 2021/12/19 11:38:03 riastradh Exp $"); #include <linux/component.h> #include <linux/kernel.h> @@ -805,6 +805,8 @@ void intel_init_audio_hooks(struct drm_i } } +#ifndef __NetBSD__ /* XXX intel audio */ + static void glk_force_audio_cdclk(struct drm_i915_private *dev_priv, bool enable) { @@ -843,8 +845,6 @@ retry: drm_modeset_acquire_fini(&ctx); } -#ifndef __NetBSD__ /* XXX intel audio */ - static unsigned long i915_audio_component_get_power(struct device *kdev) { struct drm_i915_private *dev_priv = kdev_to_i915(kdev); Index: src/sys/external/bsd/drm2/dist/drm/i915/display/intel_bios.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/display/intel_bios.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/display/intel_bios.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/i915/display/intel_bios.c:1.2 Sat Dec 18 23:45:29 2021 +++ src/sys/external/bsd/drm2/dist/drm/i915/display/intel_bios.c Sun Dec 19 11:38:03 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_bios.c,v 1.2 2021/12/18 23:45:29 riastradh Exp $ */ +/* $NetBSD: intel_bios.c,v 1.3 2021/12/19 11:38:03 riastradh Exp $ */ /* * Copyright © 2006 Intel Corporation @@ -28,7 +28,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: intel_bios.c,v 1.2 2021/12/18 23:45:29 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_bios.c,v 1.3 2021/12/19 11:38:03 riastradh Exp $"); #include <drm/drm_dp_helper.h> #include <drm/i915_drm.h> @@ -1288,7 +1288,7 @@ static void fixup_mipi_sequences(struct DRM_DEBUG_KMS("Using init OTP fragment to deassert reset\n"); /* Copy the fragment, update seq byte and terminate it */ - init_otp = (u8 *)dev_priv->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP]; + init_otp = (u8 *)__UNCONST(dev_priv->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP]); dev_priv->vbt.dsi.deassert_seq = kmemdup(init_otp, len + 1, GFP_KERNEL); if (!dev_priv->vbt.dsi.deassert_seq) return; @@ -1980,7 +1980,18 @@ bool intel_bios_is_valid_vbt(const void #ifdef __NetBSD__ # define __iomem __pci_rom_iomem +# define ioread16 fake_ioread16 # define ioread32 fake_ioread32 +static inline uint16_t +fake_ioread16(const void __iomem *p) +{ + uint16_t v; + + v = *(const uint16_t __iomem *)p; + __insn_barrier(); + + return v; +} static inline uint32_t fake_ioread32(const void __iomem *p) { Index: src/sys/external/bsd/drm2/dist/drm/i915/display/intel_crt.h diff -u src/sys/external/bsd/drm2/dist/drm/i915/display/intel_crt.h:1.2 src/sys/external/bsd/drm2/dist/drm/i915/display/intel_crt.h:1.3 --- src/sys/external/bsd/drm2/dist/drm/i915/display/intel_crt.h:1.2 Sat Dec 18 23:45:29 2021 +++ src/sys/external/bsd/drm2/dist/drm/i915/display/intel_crt.h Sun Dec 19 11:38:03 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_crt.h,v 1.2 2021/12/18 23:45:29 riastradh Exp $ */ +/* $NetBSD: intel_crt.h,v 1.3 2021/12/19 11:38:03 riastradh Exp $ */ /* SPDX-License-Identifier: MIT */ /* @@ -10,6 +10,9 @@ #include "i915_reg.h" +#include <sys/file.h> +#define pipe pipe_drmhack /* see intel_display.h */ + enum pipe; struct drm_encoder; struct drm_i915_private; Index: src/sys/external/bsd/drm2/dist/drm/i915/display/intel_display.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/display/intel_display.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/display/intel_display.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/i915/display/intel_display.c:1.2 Sat Dec 18 23:45:29 2021 +++ src/sys/external/bsd/drm2/dist/drm/i915/display/intel_display.c Sun Dec 19 11:38:03 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_display.c,v 1.2 2021/12/18 23:45:29 riastradh Exp $ */ +/* $NetBSD: intel_display.c,v 1.3 2021/12/19 11:38:03 riastradh Exp $ */ /* * Copyright © 2006-2007 Intel Corporation @@ -27,7 +27,9 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: intel_display.c,v 1.2 2021/12/18 23:45:29 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_display.c,v 1.3 2021/12/19 11:38:03 riastradh Exp $"); + +#include "intel_display.h" /* for pipe_drmhack */ #include <linux/i2c.h> #include <linux/input.h> @@ -2127,7 +2129,7 @@ intel_fill_fb_ggtt_view(struct i915_ggtt view->type = I915_GGTT_VIEW_NORMAL; if (drm_rotation_90_or_270(rotation)) { view->type = I915_GGTT_VIEW_ROTATED; - view->rotated = to_intel_framebuffer(fb)->rot_info; + view->rotated = to_intel_framebuffer((struct drm_framebuffer *)__UNCONST(fb))->rot_info; } } @@ -2314,7 +2316,7 @@ static int intel_fb_pitch(const struct d unsigned int rotation) { if (drm_rotation_90_or_270(rotation)) - return to_intel_framebuffer(fb)->rotated[color_plane].pitch; + return to_intel_framebuffer((struct drm_framebuffer *)__UNCONST(fb))->rotated[color_plane].pitch; else return fb->pitches[color_plane]; } @@ -3118,7 +3120,7 @@ intel_fill_fb_info(struct drm_i915_priva } if (mul_u32_u32(max_size, tile_size) > obj->base.size) { - DRM_DEBUG_KMS("fb too big for bo (need %llu bytes, have %zu bytes)\n", + DRM_DEBUG_KMS("fb too big for bo (need %"PRIu64" bytes, have %zu bytes)\n", mul_u32_u32(max_size, tile_size), obj->base.size); return -EINVAL; } @@ -3415,7 +3417,7 @@ intel_alloc_initial_plane_obj(struct int case I915_FORMAT_MOD_Y_TILED: break; default: - DRM_DEBUG_DRIVER("Unsupported modifier for initial FB: 0x%llx\n", + DRM_DEBUG_DRIVER("Unsupported modifier for initial FB: 0x%"PRIx64"\n", fb->modifier); return false; } @@ -8316,7 +8318,7 @@ static void chv_prepare_pll(struct intel enum pipe pipe = crtc->pipe; enum dpio_channel port = vlv_pipe_to_channel(pipe); u32 loopfilter, tribuf_calcntr; - u32 bestn, bestm1, bestm2, bestp1, bestp2, bestm2_frac; + u32 bestn __unused, bestm1 __unused, bestm2, bestp1, bestp2, bestm2_frac; u32 dpio_val; int vco; @@ -9085,7 +9087,7 @@ i9xx_get_initial_plane_config(struct int struct intel_plane *plane = to_intel_plane(crtc->base.primary); enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; enum pipe pipe; - u32 val, base, offset; + u32 val, base, offset __unused; int fourcc, pixel_format; unsigned int aligned_height; struct drm_framebuffer *fb; @@ -10282,7 +10284,7 @@ skl_get_initial_plane_config(struct inte struct intel_plane *plane = to_intel_plane(crtc->base.primary); enum plane_id plane_id = plane->id; enum pipe pipe; - u32 val, base, offset, stride_mult, tiling, alpha; + u32 val, base, offset __unused, stride_mult, tiling, alpha; int fourcc, pixel_format; unsigned int aligned_height; struct drm_framebuffer *fb; @@ -14410,7 +14412,7 @@ static int intel_atomic_check_planes(str { struct drm_i915_private *dev_priv = to_i915(state->base.dev); struct intel_crtc_state *old_crtc_state, *new_crtc_state; - struct intel_plane_state *plane_state; + struct intel_plane_state *plane_state __unused; struct intel_plane *plane; struct intel_crtc *crtc; int i, ret; @@ -14468,7 +14470,7 @@ static int intel_atomic_check_planes(str static int intel_atomic_check_crtcs(struct intel_atomic_state *state) { - struct intel_crtc_state *crtc_state; + struct intel_crtc_state *crtc_state __unused; struct intel_crtc *crtc; int i; @@ -14549,7 +14551,7 @@ intel_atomic_check_tiled_conns(struct in { struct drm_i915_private *dev_priv = to_i915(state->base.dev); struct drm_connector *connector; - struct drm_connector_state *old_conn_state, *new_conn_state; + struct drm_connector_state *old_conn_state __unused, *new_conn_state __unused; int i, ret; if (INTEL_GEN(dev_priv) < 11) @@ -15271,6 +15273,9 @@ static void intel_atomic_helper_free_sta static void intel_atomic_commit_fence_wait(struct intel_atomic_state *intel_state) { +#ifdef __NetBSD__ + panic("NYI"); +#else struct wait_queue_entry wait_fence, wait_reset; struct drm_i915_private *dev_priv = to_i915(intel_state->base.dev); @@ -15294,6 +15299,7 @@ static void intel_atomic_commit_fence_wa finish_wait(bit_waitqueue(&dev_priv->gt.reset.flags, I915_RESET_MODESET), &wait_reset); +#endif } static void intel_atomic_cleanup_work(struct work_struct *work) @@ -15628,6 +15634,12 @@ static int intel_atomic_commit(struct dr return 0; } +#ifdef __NetBSD__ + +/* XXX */ + +#else + struct wait_rps_boost { struct wait_queue_entry wait; @@ -15657,6 +15669,8 @@ static int do_rps_boost(struct wait_queu return 1; } +#endif + static void add_rps_boost_after_vblank(struct drm_crtc *crtc, struct dma_fence *fence) { @@ -15671,6 +15685,9 @@ static void add_rps_boost_after_vblank(s if (drm_crtc_vblank_get(crtc)) return; +#ifdef __NetBSD__ + panic("NYI %p", &wait); +#else wait = kmalloc(sizeof(*wait), GFP_KERNEL); if (!wait) { drm_crtc_vblank_put(crtc); @@ -15684,6 +15701,7 @@ static void add_rps_boost_after_vblank(s wait->wait.flags = 0; add_wait_queue(drm_crtc_vblank_waitqueue(crtc), &wait->wait); +#endif } static int intel_plane_pin_fb(struct intel_plane_state *plane_state) @@ -16944,7 +16962,7 @@ static int intel_framebuffer_init(struct mode_cmd->modifier[0])) { struct drm_format_name_buf format_name; - DRM_DEBUG_KMS("unsupported pixel format %s / modifier 0x%llx\n", + DRM_DEBUG_KMS("unsupported pixel format %s / modifier 0x%"PRIx64"\n", drm_get_format_name(mode_cmd->pixel_format, &format_name), mode_cmd->modifier[0]); Index: src/sys/external/bsd/drm2/dist/drm/i915/display/intel_display_power.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/display/intel_display_power.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/display/intel_display_power.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/i915/display/intel_display_power.c:1.2 Sat Dec 18 23:45:29 2021 +++ src/sys/external/bsd/drm2/dist/drm/i915/display/intel_display_power.c Sun Dec 19 11:38:03 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_display_power.c,v 1.2 2021/12/18 23:45:29 riastradh Exp $ */ +/* $NetBSD: intel_display_power.c,v 1.3 2021/12/19 11:38:03 riastradh Exp $ */ /* SPDX-License-Identifier: MIT */ /* @@ -6,7 +6,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: intel_display_power.c,v 1.2 2021/12/18 23:45:29 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_display_power.c,v 1.3 2021/12/19 11:38:03 riastradh Exp $"); #include "display/intel_crt.h" #include "display/intel_dp.h" @@ -24,6 +24,8 @@ __KERNEL_RCSID(0, "$NetBSD: intel_displa #include "intel_tc.h" #include "intel_vga.h" +#include <linux/nbsd-namespace.h> + bool intel_display_power_well_is_enabled(struct drm_i915_private *dev_priv, enum i915_power_well_id power_well_id); @@ -1314,7 +1316,11 @@ static void vlv_display_power_well_deini intel_power_sequencer_reset(dev_priv); /* Prevent us from re-enabling polling on accident in late suspend */ +#ifdef __NetBSD__ + if (device_activation(dev_priv->drm.dev, DEVACT_LEVEL_FULL)) +#else if (!dev_priv->drm.dev->power.is_suspended) +#endif intel_hpd_poll_init(dev_priv); } Index: src/sys/external/bsd/drm2/dist/drm/i915/display/intel_dp.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/display/intel_dp.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/display/intel_dp.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/i915/display/intel_dp.c:1.2 Sat Dec 18 23:45:30 2021 +++ src/sys/external/bsd/drm2/dist/drm/i915/display/intel_dp.c Sun Dec 19 11:38:03 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_dp.c,v 1.2 2021/12/18 23:45:30 riastradh Exp $ */ +/* $NetBSD: intel_dp.c,v 1.3 2021/12/19 11:38:03 riastradh Exp $ */ /* * Copyright © 2008 Intel Corporation @@ -28,7 +28,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: intel_dp.c,v 1.2 2021/12/18 23:45:30 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_dp.c,v 1.3 2021/12/19 11:38:03 riastradh Exp $"); #include <linux/export.h> #include <linux/i2c.h> @@ -1730,7 +1730,7 @@ static i915_reg_t skl_aux_data_reg(struc static void intel_dp_aux_fini(struct intel_dp *intel_dp) { - kfree(intel_dp->aux.name); + kfree(__UNCONST(intel_dp->aux.name)); } static void @@ -2345,7 +2345,7 @@ bool intel_dp_limited_color_range(const const struct drm_connector_state *conn_state) { const struct intel_digital_connector_state *intel_conn_state = - to_intel_digital_connector_state(conn_state); + const_container_of(conn_state, struct intel_digital_connector_state, base); const struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode; @@ -2847,7 +2847,7 @@ static void edp_panel_vdd_schedule_off(s */ static void edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync) { - struct drm_i915_private *dev_priv = dp_to_i915(intel_dp); + struct drm_i915_private *dev_priv __lockdep_used = dp_to_i915(intel_dp); lockdep_assert_held(&dev_priv->pps_mutex); Index: src/sys/external/bsd/drm2/dist/drm/i915/display/intel_dp.h diff -u src/sys/external/bsd/drm2/dist/drm/i915/display/intel_dp.h:1.2 src/sys/external/bsd/drm2/dist/drm/i915/display/intel_dp.h:1.3 --- src/sys/external/bsd/drm2/dist/drm/i915/display/intel_dp.h:1.2 Sat Dec 18 23:45:30 2021 +++ src/sys/external/bsd/drm2/dist/drm/i915/display/intel_dp.h Sun Dec 19 11:38:03 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_dp.h,v 1.2 2021/12/18 23:45:30 riastradh Exp $ */ +/* $NetBSD: intel_dp.h,v 1.3 2021/12/19 11:38:03 riastradh Exp $ */ /* SPDX-License-Identifier: MIT */ /* @@ -14,6 +14,9 @@ #include "i915_reg.h" +#include <sys/file.h> +#define pipe pipe_drmhack /* see intel_display.h */ + enum pipe; enum port; struct drm_connector_state; Index: src/sys/external/bsd/drm2/dist/drm/i915/display/intel_lpe_audio.h diff -u src/sys/external/bsd/drm2/dist/drm/i915/display/intel_lpe_audio.h:1.2 src/sys/external/bsd/drm2/dist/drm/i915/display/intel_lpe_audio.h:1.3 --- src/sys/external/bsd/drm2/dist/drm/i915/display/intel_lpe_audio.h:1.2 Sat Dec 18 23:45:30 2021 +++ src/sys/external/bsd/drm2/dist/drm/i915/display/intel_lpe_audio.h Sun Dec 19 11:38:03 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_lpe_audio.h,v 1.2 2021/12/18 23:45:30 riastradh Exp $ */ +/* $NetBSD: intel_lpe_audio.h,v 1.3 2021/12/19 11:38:03 riastradh Exp $ */ /* SPDX-License-Identifier: MIT */ /* @@ -10,6 +10,9 @@ #include <linux/types.h> +#include <sys/file.h> +#define pipe pipe_drmhack /* see intel_display.h */ + enum pipe; enum port; struct drm_i915_private; Index: src/sys/external/bsd/drm2/dist/drm/i915/display/intel_lvds.h diff -u src/sys/external/bsd/drm2/dist/drm/i915/display/intel_lvds.h:1.2 src/sys/external/bsd/drm2/dist/drm/i915/display/intel_lvds.h:1.3 --- src/sys/external/bsd/drm2/dist/drm/i915/display/intel_lvds.h:1.2 Sat Dec 18 23:45:30 2021 +++ src/sys/external/bsd/drm2/dist/drm/i915/display/intel_lvds.h Sun Dec 19 11:38:03 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_lvds.h,v 1.2 2021/12/18 23:45:30 riastradh Exp $ */ +/* $NetBSD: intel_lvds.h,v 1.3 2021/12/19 11:38:03 riastradh Exp $ */ /* SPDX-License-Identifier: MIT */ /* @@ -12,6 +12,9 @@ #include "i915_reg.h" +#include <sys/file.h> +#define pipe pipe_drmhack /* see intel_display.h */ + enum pipe; struct drm_i915_private; Index: src/sys/external/bsd/drm2/dist/drm/i915/display/intel_sdvo.h diff -u src/sys/external/bsd/drm2/dist/drm/i915/display/intel_sdvo.h:1.2 src/sys/external/bsd/drm2/dist/drm/i915/display/intel_sdvo.h:1.3 --- src/sys/external/bsd/drm2/dist/drm/i915/display/intel_sdvo.h:1.2 Sat Dec 18 23:45:30 2021 +++ src/sys/external/bsd/drm2/dist/drm/i915/display/intel_sdvo.h Sun Dec 19 11:38:03 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_sdvo.h,v 1.2 2021/12/18 23:45:30 riastradh Exp $ */ +/* $NetBSD: intel_sdvo.h,v 1.3 2021/12/19 11:38:03 riastradh Exp $ */ /* SPDX-License-Identifier: MIT */ /* @@ -14,6 +14,9 @@ #include "i915_reg.h" +#include <sys/file.h> +#define pipe pipe_drmhack /* see intel_display.h */ + struct drm_i915_private; enum pipe; enum port; Index: src/sys/external/bsd/drm2/dist/drm/i915/display/intel_display.h diff -u src/sys/external/bsd/drm2/dist/drm/i915/display/intel_display.h:1.4 src/sys/external/bsd/drm2/dist/drm/i915/display/intel_display.h:1.5 --- src/sys/external/bsd/drm2/dist/drm/i915/display/intel_display.h:1.4 Sun Dec 19 11:12:29 2021 +++ src/sys/external/bsd/drm2/dist/drm/i915/display/intel_display.h Sun Dec 19 11:38:03 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_display.h,v 1.4 2021/12/19 11:12:29 riastradh Exp $ */ +/* $NetBSD: intel_display.h,v 1.5 2021/12/19 11:38:03 riastradh Exp $ */ /* * Copyright © 2006-2019 Intel Corporation @@ -27,6 +27,26 @@ #ifndef _INTEL_DISPLAY_H_ #define _INTEL_DISPLAY_H_ +/* + * NetBSD already has struct pipe, and according to C99 6.2.3 there's + * only one namespace for struct, union, and enum tags, but the i915 + * driver wants a type called enum pipe. + * + * So rename it to avoid conflicts which confuse tools like ctfmerge -- + * but make sure we include <sys/file.h> first to avoid having two + * different versions of struct file, one with a pointer to struct pipe + * and another with a pointer to struct i915_pipe. + * + * This will cause trouble if we ever have an API that involves `pipe' + * as a member which we need to reference from within drm code. But + * for now that is not the case. + * + * XXX Yes, this is disgusting. Sorry. + */ +#include <sys/types.h> +#include <sys/file.h> +#define pipe pipe_drmhack + #include <drm/drm_util.h> #include <drm/i915_drm.h> @@ -77,24 +97,6 @@ enum i915_gpio { }; /* - * NetBSD already has struct pipe, and according to C99 6.2.3 there's - * only one namespace for struct, union, and enum tags, but the i915 - * driver wants a type called enum pipe. - * - * So rename it to avoid conflicts which confuse tools like ctfmerge -- - * but make sure we include <sys/file.h> first to avoid having two - * different versions of struct file, one with a pointer to struct pipe - * and another with a pointer to struct i915_pipe. - * - * This will cause trouble if we ever have an API that involves `pipe' - * as a member which we need to reference from within drm code. But - * for now that is not the case. - * - * XXX Yes, this is disgusting. Sorry. - */ -#include <sys/file.h> -#define pipe pipe_drmhack -/* * Keep the pipe enum values fixed: the code assumes that PIPE_A=0, the * rest have consecutive values and match the enum values of transcoders * with a 1:1 transcoder -> pipe mapping. Index: src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_breadcrumbs.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_breadcrumbs.c:1.3 src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_breadcrumbs.c:1.4 --- src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_breadcrumbs.c:1.3 Sun Dec 19 11:03:57 2021 +++ src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_breadcrumbs.c Sun Dec 19 11:38:04 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_breadcrumbs.c,v 1.3 2021/12/19 11:03:57 riastradh Exp $ */ +/* $NetBSD: intel_breadcrumbs.c,v 1.4 2021/12/19 11:38:04 riastradh Exp $ */ /* * Copyright © 2015 Intel Corporation @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: intel_breadcrumbs.c,v 1.3 2021/12/19 11:03:57 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_breadcrumbs.c,v 1.4 2021/12/19 11:38:04 riastradh Exp $"); #include <linux/kthread.h> #include <trace/events/dma_fence.h> @@ -36,6 +36,8 @@ __KERNEL_RCSID(0, "$NetBSD: intel_breadc #include "intel_gt_pm.h" #include "intel_gt_requests.h" +#include <linux/nbsd-namespace.h> + static void irq_enable(struct intel_engine_cs *engine) { if (!engine->irq_enable) @@ -380,8 +382,9 @@ void intel_engine_print_breadcrumbs(stru spin_lock_irq(&b->irq_lock); list_for_each_entry(ce, &b->signalers, signal_link) { list_for_each_entry(rq, &ce->signals, signal_link) { - drm_printf(p, "\t[%llx:%llx%s] @ %dms\n", - rq->fence.context, rq->fence.seqno, + drm_printf(p, "\t[%"PRIx64":%"PRIx64"%s] @ %dms\n", + (uint64_t)rq->fence.context, + (uint64_t)rq->fence.seqno, i915_request_completed(rq) ? "!" : i915_request_started(rq) ? "*" : "", Index: src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_context.c diff -u src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_context.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_context.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_context.c:1.2 Sat Dec 18 23:45:30 2021 +++ src/sys/external/bsd/drm2/dist/drm/i915/gt/intel_context.c Sun Dec 19 11:38:04 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: intel_context.c,v 1.2 2021/12/18 23:45:30 riastradh Exp $ */ +/* $NetBSD: intel_context.c,v 1.3 2021/12/19 11:38:04 riastradh Exp $ */ /* * SPDX-License-Identifier: MIT @@ -7,7 +7,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: intel_context.c,v 1.2 2021/12/18 23:45:30 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: intel_context.c,v 1.3 2021/12/19 11:38:04 riastradh Exp $"); #include "gem/i915_gem_context.h" #include "gem/i915_gem_pm.h" @@ -20,6 +20,8 @@ __KERNEL_RCSID(0, "$NetBSD: intel_contex #include "intel_engine_pm.h" #include "intel_ring.h" +#include <linux/nbsd-namespace.h> + static struct i915_global_context { struct i915_global base; struct kmem_cache *slab_ce; Index: src/sys/external/bsd/drm2/i915drm/files.i915drmkms diff -u src/sys/external/bsd/drm2/i915drm/files.i915drmkms:1.73 src/sys/external/bsd/drm2/i915drm/files.i915drmkms:1.74 --- src/sys/external/bsd/drm2/i915drm/files.i915drmkms:1.73 Sun Dec 19 11:37:41 2021 +++ src/sys/external/bsd/drm2/i915drm/files.i915drmkms Sun Dec 19 11:38:04 2021 @@ -1,4 +1,4 @@ -# $NetBSD: files.i915drmkms,v 1.73 2021/12/19 11:37:41 riastradh Exp $ +# $NetBSD: files.i915drmkms,v 1.74 2021/12/19 11:38:04 riastradh Exp $ version 20180827 @@ -54,6 +54,7 @@ file external/bsd/drm2/i915drm/i915_pci_ file external/bsd/drm2/i915drm/i915_perf.c i915drmkms file external/bsd/drm2/i915drm/i915_sysfs.c i915drmkms file external/bsd/drm2/i915drm/i915_switcheroo.c i915drmkms +file external/bsd/drm2/i915drm/icl_dsi.c i915drmkms file external/bsd/drm2/i915drm/intel_gtt.c i915drmkms file external/bsd/drm2/i915drm/intelfb.c intelfb file external/bsd/drm2/i915drm/vlv_dsi.c i915drmkms @@ -65,7 +66,7 @@ file external/bsd/drm2/dist/drm/i915/dis file external/bsd/drm2/dist/drm/i915/display/dvo_ns2501.c i915drmkms file external/bsd/drm2/dist/drm/i915/display/dvo_sil164.c i915drmkms file external/bsd/drm2/dist/drm/i915/display/dvo_tfp410.c i915drmkms -file external/bsd/drm2/dist/drm/i915/display/icl_dsi.c i915drmkms +#file external/bsd/drm2/dist/drm/i915/display/icl_dsi.c i915drmkms file external/bsd/drm2/dist/drm/i915/display/intel_acpi.c i915drmkms file external/bsd/drm2/dist/drm/i915/display/intel_atomic.c i915drmkms file external/bsd/drm2/dist/drm/i915/display/intel_atomic_plane.c i915drmkms Index: src/sys/external/bsd/drm2/i915drm/vlv_dsi.c diff -u src/sys/external/bsd/drm2/i915drm/vlv_dsi.c:1.1 src/sys/external/bsd/drm2/i915drm/vlv_dsi.c:1.2 --- src/sys/external/bsd/drm2/i915drm/vlv_dsi.c:1.1 Sun Dec 19 00:57:42 2021 +++ src/sys/external/bsd/drm2/i915drm/vlv_dsi.c Sun Dec 19 11:38:04 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: vlv_dsi.c,v 1.1 2021/12/19 00:57:42 riastradh Exp $ */ +/* $NetBSD: vlv_dsi.c,v 1.2 2021/12/19 11:38:04 riastradh Exp $ */ /*- * Copyright (c) 2018 The NetBSD Foundation, Inc. @@ -30,9 +30,9 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: vlv_dsi.c,v 1.1 2021/12/19 00:57:42 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: vlv_dsi.c,v 1.2 2021/12/19 11:38:04 riastradh Exp $"); -#include "intel_drv.h" +#include "display/intel_dsi.h" void vlv_dsi_init(struct drm_i915_private *dev_priv) Index: src/sys/external/bsd/drm2/include/i915_trace.h diff -u src/sys/external/bsd/drm2/include/i915_trace.h:1.19 src/sys/external/bsd/drm2/include/i915_trace.h:1.20 --- src/sys/external/bsd/drm2/include/i915_trace.h:1.19 Sun Dec 19 11:36:17 2021 +++ src/sys/external/bsd/drm2/include/i915_trace.h Sun Dec 19 11:38:04 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: i915_trace.h,v 1.19 2021/12/19 11:36:17 riastradh Exp $ */ +/* $NetBSD: i915_trace.h,v 1.20 2021/12/19 11:38:04 riastradh Exp $ */ /*- * Copyright (c) 2013, 2018 The NetBSD Foundation, Inc. @@ -474,4 +474,42 @@ trace_i915_pipe_update_end(struct intel_ TRACE3(i915,, pipe__update__end, crtc->pipe, frame, scanline); } +DEFINE_TRACE2(i915,, update__plane, + "struct drm_plane *"/*plane*/, + "struct intel_crtc *"/*crtc*/); + +static inline void +trace_intel_update_plane(struct drm_plane *plane, struct intel_crtc *crtc) +{ + TRACE2(i915,, update__plane, plane, crtc); +} + +DEFINE_TRACE2(i915,, disable__plane, + "struct drm_plane *"/*plane*/, + "struct intel_crtc *"/*crtc*/); + +static inline void +trace_intel_disable_plane(struct drm_plane *plane, struct intel_crtc *crtc) +{ + TRACE2(i915,, disable__plane, plane, crtc); +} + +DEFINE_TRACE1(i915,, pipe__enable, + "struct intel_crtc *"/*crtc*/); + +static inline void +trace_intel_pipe_enable(struct intel_crtc *crtc) +{ + TRACE1(i915,, pipe__enable, crtc); +} + +DEFINE_TRACE1(i915,, pipe__disable, + "struct intel_crtc *"/*crtc*/); + +static inline void +trace_intel_pipe_disable(struct intel_crtc *crtc) +{ + TRACE1(i915,, pipe__disable, crtc); +} + #endif /* _I915_TRACE_H_ */ Index: src/sys/external/bsd/drm2/include/drm/drm_mipi_dsi.h diff -u src/sys/external/bsd/drm2/include/drm/drm_mipi_dsi.h:1.1 src/sys/external/bsd/drm2/include/drm/drm_mipi_dsi.h:1.2 --- src/sys/external/bsd/drm2/include/drm/drm_mipi_dsi.h:1.1 Mon Aug 27 06:33:57 2018 +++ src/sys/external/bsd/drm2/include/drm/drm_mipi_dsi.h Sun Dec 19 11:38:04 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: drm_mipi_dsi.h,v 1.1 2018/08/27 06:33:57 riastradh Exp $ */ +/* $NetBSD: drm_mipi_dsi.h,v 1.2 2021/12/19 11:38:04 riastradh Exp $ */ /*- * Copyright (c) 2018 The NetBSD Foundation, Inc. @@ -32,4 +32,14 @@ #ifndef _DRM_MIPI_DSI_H_ #define _DRM_MIPI_DSI_H_ +struct mipi_dsi_host_ops; + +enum mipi_dsi_pixel_format { + MIPI_DSI_PIXEL_NFORMATS, +}; + +struct mipi_dsi_host { + char dummy; +}; + #endif /*_DRM_MIPI_DSI_H_*/ Index: src/sys/external/bsd/drm2/include/linux/acpi.h diff -u src/sys/external/bsd/drm2/include/linux/acpi.h:1.5 src/sys/external/bsd/drm2/include/linux/acpi.h:1.6 --- src/sys/external/bsd/drm2/include/linux/acpi.h:1.5 Sat Jan 18 03:00:04 2020 +++ src/sys/external/bsd/drm2/include/linux/acpi.h Sun Dec 19 11:38:04 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: acpi.h,v 1.5 2020/01/18 03:00:04 jmcneill Exp $ */ +/* $NetBSD: acpi.h,v 1.6 2021/12/19 11:38:04 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -44,4 +44,6 @@ #include <dev/acpi/acpivar.h> #endif +#include <linux/uuid.h> + #endif /* _LINUX_ACPI_H_ */ Index: src/sys/external/bsd/drm2/include/linux/scatterlist.h diff -u src/sys/external/bsd/drm2/include/linux/scatterlist.h:1.5 src/sys/external/bsd/drm2/include/linux/scatterlist.h:1.6 --- src/sys/external/bsd/drm2/include/linux/scatterlist.h:1.5 Sun Dec 19 11:33:49 2021 +++ src/sys/external/bsd/drm2/include/linux/scatterlist.h Sun Dec 19 11:38:04 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: scatterlist.h,v 1.5 2021/12/19 11:33:49 riastradh Exp $ */ +/* $NetBSD: scatterlist.h,v 1.6 2021/12/19 11:38:04 riastradh Exp $ */ /*- * Copyright (c) 2018 The NetBSD Foundation, Inc. @@ -48,6 +48,8 @@ #define sg_alloc_table linux_sg_alloc_table #define sg_alloc_table_from_bus_dmamem linux_sg_alloc_table_from_bus_dmamem #define sg_alloc_table_from_pages linux_sg_alloc_table_from_pages +#define sg_dma_address linux_sg_dma_address +#define sg_dma_len linux_sg_dma_len #define sg_free_table linux_sg_free_table struct page; @@ -70,6 +72,9 @@ int sg_alloc_table_from_bus_dmamem(struc const bus_dma_segment_t *, int, gfp_t); void sg_free_table(struct sg_table *); +bus_addr_t sg_dma_address(const struct scatterlist *); +bus_size_t sg_dma_len(const struct scatterlist *); + int dma_map_sg(bus_dma_tag_t, struct scatterlist *, int, int); int dma_map_sg_attrs(bus_dma_tag_t, struct scatterlist *, int, int, int); void dma_unmap_sg(bus_dma_tag_t, struct scatterlist *, int, int); Index: src/sys/external/bsd/drm2/include/linux/bitfield.h diff -u src/sys/external/bsd/drm2/include/linux/bitfield.h:1.1 src/sys/external/bsd/drm2/include/linux/bitfield.h:1.2 --- src/sys/external/bsd/drm2/include/linux/bitfield.h:1.1 Sun Dec 19 01:53:29 2021 +++ src/sys/external/bsd/drm2/include/linux/bitfield.h Sun Dec 19 11:38:04 2021 @@ -0,0 +1,38 @@ +/* $NetBSD: bitfield.h,v 1.2 2021/12/19 11:38:04 riastradh Exp $ */ + +/*- + * Copyright (c) 2021 The NetBSD Foundation, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _LINUX_BITFIELD_H_ +#define _LINUX_BITFIELD_H_ + +#include <sys/cdefs.h> + +#define FIELD_GET(MASK, VAR) __SHIFTOUT(VAR, MASK) + +#define __bf_shf(X) (__builtin_ffsll(X) - 1) + +#endif /* _LINUX_BITFIELD_H_ */ Index: src/sys/external/bsd/drm2/include/linux/hdmi.h diff -u src/sys/external/bsd/drm2/include/linux/hdmi.h:1.9 src/sys/external/bsd/drm2/include/linux/hdmi.h:1.10 --- src/sys/external/bsd/drm2/include/linux/hdmi.h:1.9 Sun Dec 19 09:46:24 2021 +++ src/sys/external/bsd/drm2/include/linux/hdmi.h Sun Dec 19 11:38:04 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: hdmi.h,v 1.9 2021/12/19 09:46:24 riastradh Exp $ */ +/* $NetBSD: hdmi.h,v 1.10 2021/12/19 11:38:04 riastradh Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -166,11 +166,26 @@ enum hdmi_ycc_quantization_range { HDMI_YCC_QUANTIZATION_RANGE_FULL = 1, }; +enum hdmi_packet_type { + HDMI_PACKET_TYPE_NULL = 0x00, + HDMI_PACKET_TYPE_AUDIO_CLOCK_REGEN = 0x01, + HDMI_PACKET_TYPE_AUDIO_SAMPLE = 0x02, + HDMI_PACKET_TYPE_GENERAL_CONTROL = 0x03, + HDMI_PACKET_TYPE_ACP = 0x04, + HDMI_PACKET_TYPE_ISRC1 = 0x05, + HDMI_PACKET_TYPE_ISRC2 = 0x06, + HDMI_PACKET_TYPE_ONE_BIT_AUDIO_SAMPLE = 0x07, + HDMI_PACKET_TYPE_DST_AUDIO = 0x08, + HDMI_PACKET_TYPE_HBR_AUDIO_STREAM = 0x09, + HDMI_PACKET_TYPE_GAMUT_METADATA = 0x0a, +}; + enum hdmi_infoframe_type { HDMI_INFOFRAME_TYPE_VENDOR = 0x81, HDMI_INFOFRAME_TYPE_AVI = 0x82, HDMI_INFOFRAME_TYPE_SPD = 0x83, HDMI_INFOFRAME_TYPE_AUDIO = 0x84, + HDMI_INFOFRAME_TYPE_DRM = 0x87, }; enum hdmi_eotf { @@ -599,4 +614,11 @@ hdmi_drm_infoframe_init(struct hdmi_drm_ return 0; } +static inline void +hdmi_infoframe_log(const char *level, struct device *device, + const union hdmi_infoframe *frame) +{ + /* XXX */ +} + #endif /* _LINUX_HDMI_H_ */ Index: src/sys/external/bsd/drm2/include/linux/ktime.h diff -u src/sys/external/bsd/drm2/include/linux/ktime.h:1.16 src/sys/external/bsd/drm2/include/linux/ktime.h:1.17 --- src/sys/external/bsd/drm2/include/linux/ktime.h:1.16 Sun Dec 19 11:33:49 2021 +++ src/sys/external/bsd/drm2/include/linux/ktime.h Sun Dec 19 11:38:04 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: ktime.h,v 1.16 2021/12/19 11:33:49 riastradh Exp $ */ +/* $NetBSD: ktime.h,v 1.17 2021/12/19 11:38:04 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -132,6 +132,13 @@ ktime_get_real(void) } static inline ktime_t +ktime_get_boottime(void) +{ + /* XXX include time spent in suspend */ + return ktime_get(); +} + +static inline ktime_t ktime_get_raw(void) { /* XXX */ Index: src/sys/external/bsd/drm2/include/linux/pci.h diff -u src/sys/external/bsd/drm2/include/linux/pci.h:1.48 src/sys/external/bsd/drm2/include/linux/pci.h:1.49 --- src/sys/external/bsd/drm2/include/linux/pci.h:1.48 Sun Dec 19 11:09:47 2021 +++ src/sys/external/bsd/drm2/include/linux/pci.h Sun Dec 19 11:38:04 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: pci.h,v 1.48 2021/12/19 11:09:47 riastradh Exp $ */ +/* $NetBSD: pci.h,v 1.49 2021/12/19 11:38:04 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -84,6 +84,10 @@ struct pci_device_id { unsigned long driver_data; }; +#define PCI_DEVICE(VENDOR, DEVICE) \ + .vendor = (VENDOR), \ + .device = (DEVICE) + #define PCI_ANY_ID (~0) #define PCI_BASE_CLASS_DISPLAY PCI_CLASS_DISPLAY @@ -196,6 +200,7 @@ enum pci_bus_speed { #define pci_bus_write_config_word linux_pci_bus_write_config_word #define pci_clear_master linux_pci_clear_master #define pci_dev_dev linux_pci_dev_dev +#define pci_dev_present linux_pci_dev_present #define pci_dev_put linux_pci_dev_put #define pci_disable_msi linux_pci_disable_msi #define pci_disable_rom linux_pci_disable_rom @@ -287,6 +292,7 @@ int pci_bus_alloc_resource(struct pci_b /* XXX Kludges only -- do not use without checking the implementation! */ struct pci_dev *pci_get_domain_bus_and_slot(int, int, int); struct pci_dev *pci_get_class(uint32_t, struct pci_dev *); /* i915 kludge */ +int pci_dev_present(const struct pci_device_id *); void pci_dev_put(struct pci_dev *); void __pci_rom_iomem * Index: src/sys/external/bsd/drm2/include/linux/smp.h diff -u src/sys/external/bsd/drm2/include/linux/smp.h:1.2 src/sys/external/bsd/drm2/include/linux/smp.h:1.3 --- src/sys/external/bsd/drm2/include/linux/smp.h:1.2 Sun Dec 19 09:58:50 2021 +++ src/sys/external/bsd/drm2/include/linux/smp.h Sun Dec 19 11:38:04 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: smp.h,v 1.2 2021/12/19 09:58:50 riastradh Exp $ */ +/* $NetBSD: smp.h,v 1.3 2021/12/19 11:38:04 riastradh Exp $ */ /*- * Copyright (c) 2018 The NetBSD Foundation, Inc. @@ -35,6 +35,8 @@ #include <sys/systm.h> #include <sys/cpu.h> +#define smp_processor_id() cpu_number() + static inline int get_cpu(void) { Index: src/sys/external/bsd/drm2/include/linux/uuid.h diff -u src/sys/external/bsd/drm2/include/linux/uuid.h:1.3 src/sys/external/bsd/drm2/include/linux/uuid.h:1.4 --- src/sys/external/bsd/drm2/include/linux/uuid.h:1.3 Sun Dec 19 11:36:57 2021 +++ src/sys/external/bsd/drm2/include/linux/uuid.h Sun Dec 19 11:38:04 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: uuid.h,v 1.3 2021/12/19 11:36:57 riastradh Exp $ */ +/* $NetBSD: uuid.h,v 1.4 2021/12/19 11:38:04 riastradh Exp $ */ /*- * Copyright (c) 2018 The NetBSD Foundation, Inc. @@ -32,6 +32,32 @@ #ifndef _LINUX_UUID_H_ #define _LINUX_UUID_H_ +typedef struct { + unsigned char guid_bytes[16]; +} guid_t; + +#define GUID_INIT(x, y, z, v0, v1, v2, v3, v4, v5, v6, v7) ((guid_t) \ +{ \ + .guid_bytes = { \ + [0] = (x) & 0xff, \ + [1] = ((x) >> 8) & 0xff, \ + [2] = ((x) >> 16) & 0xff, \ + [3] = ((x) >> 24) & 0xff, \ + [4] = (y) & 0xff, \ + [5] = ((y) >> 8) & 0xff, \ + [6] = (z) & 0xff, \ + [7] = ((z) >> 8) & 0xff, \ + [8] = (v0), \ + [9] = (v1), \ + [10] = (v2), \ + [11] = (v3), \ + [12] = (v4), \ + [13] = (v5), \ + [14] = (v6), \ + [15] = (v7), \ + } \ +}) + #define UUID_STRING_LEN 36 static inline int Index: src/sys/external/bsd/drm2/linux/linux_pci.c diff -u src/sys/external/bsd/drm2/linux/linux_pci.c:1.18 src/sys/external/bsd/drm2/linux/linux_pci.c:1.19 --- src/sys/external/bsd/drm2/linux/linux_pci.c:1.18 Sun Dec 19 11:09:48 2021 +++ src/sys/external/bsd/drm2/linux/linux_pci.c Sun Dec 19 11:38:04 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: linux_pci.c,v 1.18 2021/12/19 11:09:48 riastradh Exp $ */ +/* $NetBSD: linux_pci.c,v 1.19 2021/12/19 11:38:04 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -35,7 +35,7 @@ #endif #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_pci.c,v 1.18 2021/12/19 11:09:48 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_pci.c,v 1.19 2021/12/19 11:38:04 riastradh Exp $"); #if NACPICA > 0 #include <dev/acpi/acpivar.h> @@ -449,6 +449,14 @@ pci_get_class(uint32_t class_subclass_sh return pdev; } +int +pci_dev_present(const struct pci_device_id *ids) +{ + + /* XXX implement me -- pci_find_device doesn't pass a cookie */ + return 0; +} + void pci_unmap_rom(struct pci_dev *pdev, void __pci_rom_iomem *vaddr __unused) { Index: src/sys/external/bsd/drm2/linux/linux_sg.c diff -u src/sys/external/bsd/drm2/linux/linux_sg.c:1.2 src/sys/external/bsd/drm2/linux/linux_sg.c:1.3 --- src/sys/external/bsd/drm2/linux/linux_sg.c:1.2 Sun Dec 19 11:33:50 2021 +++ src/sys/external/bsd/drm2/linux/linux_sg.c Sun Dec 19 11:38:04 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: linux_sg.c,v 1.2 2021/12/19 11:33:50 riastradh Exp $ */ +/* $NetBSD: linux_sg.c,v 1.3 2021/12/19 11:38:04 riastradh Exp $ */ /*- * Copyright (c) 2021 The NetBSD Foundation, Inc. @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_sg.c,v 1.2 2021/12/19 11:33:50 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_sg.c,v 1.3 2021/12/19 11:38:04 riastradh Exp $"); #include <sys/bus.h> #include <sys/errno.h> @@ -195,3 +195,19 @@ dma_unmap_sg_attrs(bus_dma_tag_t dmat, s bus_dmamap_destroy(dmat, sg->sg_dmamap); sg->sg_dmamap = NULL; } + +bus_addr_t +sg_dma_address(const struct scatterlist *sg) +{ + + KASSERT(sg->sg_dmamap->dm_nsegs == 1); + return sg->sg_dmamap->dm_segs[0].ds_addr; +} + +bus_size_t +sg_dma_len(const struct scatterlist *sg) +{ + + KASSERT(sg->sg_dmamap->dm_nsegs == 1); + return sg->sg_dmamap->dm_segs[0].ds_len; +}