diff options
author | Sentry <sentry@Sentry-Desktop-Fedora.local> | 2020-07-14 15:58:43 +0200 |
---|---|---|
committer | Jan200101 <sentrycraft123@gmail.com> | 2020-12-05 19:40:07 +0100 |
commit | 391fe055c943e33e9c191dbeeb21995c0d54ccd9 (patch) | |
tree | 04bbfbe91a73cc0d47c2d70235c8ca365eaa9c3d /SOURCES/0001-disp-gv100-expose-capabilities-class.patch | |
download | kernel-fsync-391fe055c943e33e9c191dbeeb21995c0d54ccd9.tar.gz kernel-fsync-391fe055c943e33e9c191dbeeb21995c0d54ccd9.zip |
kernel 5.7.8
Diffstat (limited to 'SOURCES/0001-disp-gv100-expose-capabilities-class.patch')
-rw-r--r-- | SOURCES/0001-disp-gv100-expose-capabilities-class.patch | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/SOURCES/0001-disp-gv100-expose-capabilities-class.patch b/SOURCES/0001-disp-gv100-expose-capabilities-class.patch new file mode 100644 index 0000000..6029379 --- /dev/null +++ b/SOURCES/0001-disp-gv100-expose-capabilities-class.patch @@ -0,0 +1,149 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ben Skeggs <bskeggs@redhat.com> +Date: Thu, 13 Feb 2020 09:39:34 +1000 +Subject: [PATCH] disp/gv100-: expose capabilities class + +Signed-off-by: Ben Skeggs <bskeggs@redhat.com> +--- + drivers/gpu/drm/nouveau/include/nvif/class.h | 2 + + .../gpu/drm/nouveau/nvkm/engine/disp/Kbuild | 2 + + .../drm/nouveau/nvkm/engine/disp/capsgv100.c | 60 +++++++++++++++++++ + .../drm/nouveau/nvkm/engine/disp/rootgv100.c | 1 + + .../drm/nouveau/nvkm/engine/disp/rootnv50.h | 3 + + .../drm/nouveau/nvkm/engine/disp/roottu102.c | 1 + + 6 files changed, 69 insertions(+) + create mode 100644 drivers/gpu/drm/nouveau/nvkm/engine/disp/capsgv100.c + +diff --git a/drivers/gpu/drm/nouveau/include/nvif/class.h b/drivers/gpu/drm/nouveau/include/nvif/class.h +index 30659747ffe8..2c79beb41126 100644 +--- a/drivers/gpu/drm/nouveau/include/nvif/class.h ++++ b/drivers/gpu/drm/nouveau/include/nvif/class.h +@@ -89,6 +89,8 @@ + #define GV100_DISP /* cl5070.h */ 0x0000c370 + #define TU102_DISP /* cl5070.h */ 0x0000c570 + ++#define GV100_DISP_CAPS 0x0000c373 ++ + #define NV31_MPEG 0x00003174 + #define G82_MPEG 0x00008274 + +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/Kbuild b/drivers/gpu/drm/nouveau/nvkm/engine/disp/Kbuild +index 0d584d0da59c..f7af648e0c17 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/Kbuild ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/Kbuild +@@ -74,6 +74,8 @@ nvkm-y += nvkm/engine/disp/rootgp102.o + nvkm-y += nvkm/engine/disp/rootgv100.o + nvkm-y += nvkm/engine/disp/roottu102.o + ++nvkm-y += nvkm/engine/disp/capsgv100.o ++ + nvkm-y += nvkm/engine/disp/channv50.o + nvkm-y += nvkm/engine/disp/changf119.o + nvkm-y += nvkm/engine/disp/changv100.o +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/capsgv100.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/capsgv100.c +new file mode 100644 +index 000000000000..5026e530f4bb +--- /dev/null ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/capsgv100.c +@@ -0,0 +1,60 @@ ++/* ++ * Copyright 2020 Red Hat Inc. ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining a ++ * copy of this software and associated documentation files (the "Software"), ++ * to deal in the Software without restriction, including without limitation ++ * the rights to use, copy, modify, merge, publish, distribute, sublicense, ++ * and/or sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following conditions: ++ * ++ * The above copyright notice and this permission notice shall be included in ++ * all copies or substantial portions of the Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ++ * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR ++ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ++ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR ++ * OTHER DEALINGS IN THE SOFTWARE. ++ */ ++#define gv100_disp_caps(p) container_of((p), struct gv100_disp_caps, object) ++#include "rootnv50.h" ++ ++struct gv100_disp_caps { ++ struct nvkm_object object; ++ struct nv50_disp *disp; ++}; ++ ++static int ++gv100_disp_caps_map(struct nvkm_object *object, void *argv, u32 argc, ++ enum nvkm_object_map *type, u64 *addr, u64 *size) ++{ ++ struct gv100_disp_caps *caps = gv100_disp_caps(object); ++ struct nvkm_device *device = caps->disp->base.engine.subdev.device; ++ *type = NVKM_OBJECT_MAP_IO; ++ *addr = 0x640000 + device->func->resource_addr(device, 0); ++ *size = 0x1000; ++ return 0; ++} ++ ++static const struct nvkm_object_func ++gv100_disp_caps = { ++ .map = gv100_disp_caps_map, ++}; ++ ++int ++gv100_disp_caps_new(const struct nvkm_oclass *oclass, void *argv, u32 argc, ++ struct nv50_disp *disp, struct nvkm_object **pobject) ++{ ++ struct gv100_disp_caps *caps; ++ ++ if (!(caps = kzalloc(sizeof(*caps), GFP_KERNEL))) ++ return -ENOMEM; ++ *pobject = &caps->object; ++ ++ nvkm_object_ctor(&gv100_disp_caps, oclass, &caps->object); ++ caps->disp = disp; ++ return 0; ++} +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/rootgv100.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/rootgv100.c +index 9c658d632d37..47efb48d769a 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/rootgv100.c ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/rootgv100.c +@@ -27,6 +27,7 @@ + static const struct nv50_disp_root_func + gv100_disp_root = { + .user = { ++ {{-1,-1,GV100_DISP_CAPS }, gv100_disp_caps_new }, + {{0,0,GV100_DISP_CURSOR }, gv100_disp_curs_new }, + {{0,0,GV100_DISP_WINDOW_IMM_CHANNEL_DMA}, gv100_disp_wimm_new }, + {{0,0,GV100_DISP_CORE_CHANNEL_DMA }, gv100_disp_core_new }, +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/rootnv50.h b/drivers/gpu/drm/nouveau/nvkm/engine/disp/rootnv50.h +index a1f942793f98..7070f5408d92 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/rootnv50.h ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/rootnv50.h +@@ -24,6 +24,9 @@ int nv50_disp_root_new_(const struct nv50_disp_root_func *, struct nvkm_disp *, + const struct nvkm_oclass *, void *data, u32 size, + struct nvkm_object **); + ++int gv100_disp_caps_new(const struct nvkm_oclass *, void *, u32, ++ struct nv50_disp *, struct nvkm_object **); ++ + extern const struct nvkm_disp_oclass nv50_disp_root_oclass; + extern const struct nvkm_disp_oclass g84_disp_root_oclass; + extern const struct nvkm_disp_oclass g94_disp_root_oclass; +diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/roottu102.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/roottu102.c +index 579a5d02308a..d8719d38b98a 100644 +--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/roottu102.c ++++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/roottu102.c +@@ -27,6 +27,7 @@ + static const struct nv50_disp_root_func + tu102_disp_root = { + .user = { ++ {{-1,-1,GV100_DISP_CAPS }, gv100_disp_caps_new }, + {{0,0,TU102_DISP_CURSOR }, gv100_disp_curs_new }, + {{0,0,TU102_DISP_WINDOW_IMM_CHANNEL_DMA}, gv100_disp_wimm_new }, + {{0,0,TU102_DISP_CORE_CHANNEL_DMA }, gv100_disp_core_new }, +-- +2.26.2 + |