Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/external/bsd/drm2 Add some amdgpu goo.
details: https://anonhg.NetBSD.org/src/rev/14e7e45adfb5
branches: trunk
changeset: 366227:14e7e45adfb5
user: riastradh <riastradh%NetBSD.org@localhost>
date: Mon Aug 27 14:02:32 2018 +0000
description:
Add some amdgpu goo.
diffstat:
sys/external/bsd/drm2/amdgpu/amdgpu2netbsd | 26 ++
sys/external/bsd/drm2/amdgpu/amdgpu_module.c | 161 +++++++++++++
sys/external/bsd/drm2/amdgpu/amdgpu_pci.c | 290 ++++++++++++++++++++++++
sys/external/bsd/drm2/amdgpu/amdgpu_task.h | 55 ++++
sys/external/bsd/drm2/amdgpu/amdgpufb.c | 198 ++++++++++++++++
sys/external/bsd/drm2/amdgpu/files.amdgpu | 98 ++++++++
sys/external/bsd/drm2/include/amdgpu_trace.h | 114 +++++++++
sys/external/bsd/drm2/include/amdgpufb.h | 48 +++
sys/external/bsd/drm2/include/gpu_sched_trace.h | 45 +++
sys/external/bsd/drm2/pci/files.drmkms_pci | 3 +-
10 files changed, 1037 insertions(+), 1 deletions(-)
diffs (truncated from 1088 to 300 lines):
diff -r 0190191cdd81 -r 14e7e45adfb5 sys/external/bsd/drm2/amdgpu/amdgpu2netbsd
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/external/bsd/drm2/amdgpu/amdgpu2netbsd Mon Aug 27 14:02:32 2018 +0000
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+# $NetBSD: amdgpu2netbsd,v 1.1 2018/08/27 14:02:32 riastradh Exp $
+#
+# $ /path/to/amdgpu2netbsd > /path/to/files.amdgpu.new
+#
+# Run from the top-level amd/amdgpu source directory.
+
+set -Ceu
+
+# Location of the amdgpu sources relative to $NETBSDSRCDIR.
+amdgpu_top=external/bsd/drm2/dist/drm/amd/amdgpu
+
+# config(5) flag for the amdgpu driver.
+amdgpu_flag=amdgpu
+
+env CONFIG_ACPI=y \
+env src=. \
+make -f Makefile -V '$(amdgpu-y)' \
+| tr ' ' '\n' \
+| grep -v '^$' \
+| sed -e 's,\.o$,.c,' \
+| sort -u \
+| while read f; do
+ printf 'file\t%s\t%s\n' "$amdgpu_top/$f" "$amdgpu_flag"
+done
diff -r 0190191cdd81 -r 14e7e45adfb5 sys/external/bsd/drm2/amdgpu/amdgpu_module.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/external/bsd/drm2/amdgpu/amdgpu_module.c Mon Aug 27 14:02:32 2018 +0000
@@ -0,0 +1,161 @@
+/* $NetBSD: amdgpu_module.c,v 1.1 2018/08/27 14:02:32 riastradh Exp $ */
+
+/*-
+ * Copyright (c) 2018 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Taylor R. Campbell.
+ *
+ * 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.
+ */
+
+#include <sys/cdefs.h>
+__KERNEL_RCSID(0, "$NetBSD: amdgpu_module.c,v 1.1 2018/08/27 14:02:32 riastradh Exp $");
+
+#include <sys/types.h>
+#include <sys/module.h>
+#ifndef _MODULE
+#include <sys/once.h>
+#endif
+#include <sys/systm.h>
+
+#include <drm/drmP.h>
+#include <drm/drm_sysctl.h>
+
+#include "amdgpu_amdkfd.h"
+#include "amdgpu_drv.h"
+
+MODULE(MODULE_CLASS_DRIVER, amdgpu, "amdgpu,drmkms_pci"); /* XXX drmkms_i2c, drmkms_ttm */
+
+#ifdef _MODULE
+#include "ioconf.c"
+#endif
+
+/* XXX Kludge to get these from amdgpu_drv.c. */
+extern struct drm_driver *const amdgpu_drm_driver;
+extern int amdgpu_max_kms_ioctl;
+
+struct drm_sysctl_def amdgpu_def = DRM_SYSCTL_INIT();
+
+static int
+amdgpu_init(void)
+{
+ extern int drm_guarantee_initialized(void);
+ int error;
+
+ error = drm_guarantee_initialized();
+ if (error)
+ return error;
+
+ amdgpu_drm_driver->num_ioctls = amdgpu_max_kms_ioctl;
+ amdgpu_drm_driver->driver_features |= DRIVER_MODESET;
+
+#if notyet /* XXX amdgpu acpi */
+ amdgpu_register_atpx_handler();
+#endif
+
+ amdgpu_amdkfd_init();
+
+ error = drm_pci_init(amdgpu_drm_driver, NULL);
+ if (error) {
+ aprint_error("amdgpu: failed to init pci: %d\n",
+ error);
+ return error;
+ }
+ drm_sysctl_init(&amdgpu_def);
+
+ return 0;
+}
+
+int amdgpu_guarantee_initialized(void); /* XXX */
+int
+amdgpu_guarantee_initialized(void)
+{
+#ifdef _MODULE
+ return 0;
+#else
+ static ONCE_DECL(amdgpu_init_once);
+
+ return RUN_ONCE(&amdgpu_init_once, &amdgpu_init);
+#endif
+}
+
+static void
+amdgpu_fini(void)
+{
+
+ drm_sysctl_fini(&amdgpu_def);
+ drm_pci_exit(amdgpu_drm_driver, NULL);
+ amdgpu_amdkfd_fini();
+#if notyet /* XXX amdgpu acpi */
+ amdgpu_unregister_atpx_handler();
+#endif
+}
+
+static int
+amdgpu_modcmd(modcmd_t cmd, void *arg __unused)
+{
+ int error;
+
+ switch (cmd) {
+ case MODULE_CMD_INIT:
+ /* XXX Kludge it up... Must happen before attachment. */
+#ifdef _MODULE
+ error = amdgpu_init();
+#else
+ error = amdgpu_guarantee_initialized();
+#endif
+ if (error) {
+ aprint_error("amdgpu: failed to initialize: %d\n",
+ error);
+ return error;
+ }
+#ifdef _MODULE
+ error = config_init_component(cfdriver_ioconf_amdgpu,
+ cfattach_ioconf_amdgpu, cfdata_ioconf_amdgpu);
+ if (error) {
+ aprint_error("amdgpu: failed to init component"
+ ": %d\n", error);
+ amdgpu_fini();
+ return error;
+ }
+#endif
+ return 0;
+
+ case MODULE_CMD_FINI:
+#ifdef _MODULE
+ error = config_fini_component(cfdriver_ioconf_amdgpu,
+ cfattach_ioconf_amdgpu, cfdata_ioconf_amdgpu);
+ if (error) {
+ aprint_error("amdgpu: failed to fini component"
+ ": %d\n", error);
+ return error;
+ }
+#endif
+ amdgpu_fini();
+ return 0;
+
+ default:
+ return ENOTTY;
+ }
+}
diff -r 0190191cdd81 -r 14e7e45adfb5 sys/external/bsd/drm2/amdgpu/amdgpu_pci.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/external/bsd/drm2/amdgpu/amdgpu_pci.c Mon Aug 27 14:02:32 2018 +0000
@@ -0,0 +1,290 @@
+/* $NetBSD: amdgpu_pci.c,v 1.1 2018/08/27 14:02:32 riastradh Exp $ */
+
+/*-
+ * Copyright (c) 2018 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Taylor R. Campbell.
+ *
+ * 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.
+ */
+
+#include <sys/cdefs.h>
+__KERNEL_RCSID(0, "$NetBSD: amdgpu_pci.c,v 1.1 2018/08/27 14:02:32 riastradh Exp $");
+
+#include <sys/types.h>
+#include <sys/queue.h>
+#include <sys/systm.h>
+#include <sys/workqueue.h>
+
+#include <drm/drmP.h>
+
+#include <amdgpu.h>
+#include "amdgpu_drv.h"
+#include "amdgpu_task.h"
+
+SIMPLEQ_HEAD(amdgpu_task_head, amdgpu_task);
+
+struct amdgpu_softc {
+ device_t sc_dev;
+ struct pci_attach_args sc_pa;
+ enum {
+ AMDGPU_TASK_ATTACH,
+ AMDGPU_TASK_WORKQUEUE,
+ } sc_task_state;
+ union {
+ struct workqueue *workqueue;
+ struct amdgpu_task_head attach;
+ } sc_task_u;
+ struct drm_device *sc_drm_dev;
+ struct pci_dev sc_pci_dev;
+};
+
+static bool amdgpu_pci_lookup(const struct pci_attach_args *,
+ unsigned long *);
+
+static int amdgpu_match(device_t, cfdata_t, void *);
+static void amdgpu_attach(device_t, device_t, void *);
+static void amdgpu_attach_real(device_t);
+static int amdgpu_detach(device_t, int);
+static bool amdgpu_do_suspend(device_t, const pmf_qual_t *);
+static bool amdgpu_do_resume(device_t, const pmf_qual_t *);
+
+static void amdgpu_task_work(struct work *, void *);
+
+CFATTACH_DECL_NEW(amdgpu, sizeof(struct amdgpu_softc),
+ amdgpu_match, amdgpu_attach, amdgpu_detach, NULL);
+
+/* XXX Kludge to get these from amdgpu_drv.c. */
+extern struct drm_driver *const amdgpu_drm_driver;
+extern const struct pci_device_id *const amdgpu_device_ids;
+extern const size_t amdgpu_n_device_ids;
+
+static bool
+amdgpu_pci_lookup(const struct pci_attach_args *pa, unsigned long *flags)
+{
+ size_t i;
+
+ for (i = 0; i < amdgpu_n_device_ids; i++) {
+ if ((PCI_VENDOR(pa->pa_id) == amdgpu_device_ids[i].vendor) &&
+ (PCI_PRODUCT(pa->pa_id) == amdgpu_device_ids[i].device))
+ break;
+ }
+
+ /* Did we find it? */
+ if (i == amdgpu_n_device_ids)
+ return false;
+
+ if (flags)
+ *flags = amdgpu_device_ids[i].driver_data;
+ return true;
+}
Home |
Main Index |
Thread Index |
Old Index