Loading drivers/gpu/drm/nouveau/include/nvkm/core/device.h +2 −2 Original line number Diff line number Diff line Loading @@ -155,7 +155,7 @@ struct nvkm_device { struct nvkm_engine *msppp; struct nvkm_engine *msvld; struct nvkm_engine *nvenc[3]; struct nvkm_engine *nvdec; struct nvkm_nvdec *nvdec; struct nvkm_pm *pm; struct nvkm_engine *sec; struct nvkm_sw *sw; Loading Loading @@ -225,7 +225,7 @@ struct nvkm_device_chip { int (*msppp )(struct nvkm_device *, int idx, struct nvkm_engine **); int (*msvld )(struct nvkm_device *, int idx, struct nvkm_engine **); int (*nvenc[3])(struct nvkm_device *, int idx, struct nvkm_engine **); int (*nvdec )(struct nvkm_device *, int idx, struct nvkm_engine **); int (*nvdec )(struct nvkm_device *, int idx, struct nvkm_nvdec **); int (*pm )(struct nvkm_device *, int idx, struct nvkm_pm **); int (*sec )(struct nvkm_device *, int idx, struct nvkm_engine **); int (*sw )(struct nvkm_device *, int idx, struct nvkm_sw **); Loading drivers/gpu/drm/nouveau/include/nvkm/engine/nvdec.h +8 −0 Original line number Diff line number Diff line #ifndef __NVKM_NVDEC_H__ #define __NVKM_NVDEC_H__ #define nvkm_nvdec(p) container_of((p), struct nvkm_nvdec, engine) #include <core/engine.h> struct nvkm_nvdec { struct nvkm_engine engine; struct nvkm_falcon *falcon; }; int gp102_nvdec_new(struct nvkm_device *, int, struct nvkm_nvdec **); #endif drivers/gpu/drm/nouveau/nvkm/engine/device/base.c +1 −1 Original line number Diff line number Diff line Loading @@ -2362,7 +2362,7 @@ nvkm_device_engine(struct nvkm_device *device, int index) _(NVENC0 , device->nvenc[0], device->nvenc[0]); _(NVENC1 , device->nvenc[1], device->nvenc[1]); _(NVENC2 , device->nvenc[2], device->nvenc[2]); _(NVDEC , device->nvdec , device->nvdec); _(NVDEC , device->nvdec , &device->nvdec->engine); _(PM , device->pm , &device->pm->engine); _(SEC , device->sec , device->sec); _(SW , device->sw , &device->sw->engine); Loading drivers/gpu/drm/nouveau/nvkm/engine/nvdec/Kbuild +2 −1 Original line number Diff line number Diff line #nvkm-y += nvkm/engine/nvdec/base.o nvkm-y += nvkm/engine/nvdec/base.o nvkm-y += nvkm/engine/nvdec/gp102.o drivers/gpu/drm/nouveau/nvkm/engine/nvdec/base.c 0 → 100644 +59 −0 Original line number Diff line number Diff line /* * Copyright (c) 2017, NVIDIA CORPORATION. All rights reserved. * * 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 AUTHORS OR COPYRIGHT HOLDERS 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. */ #include "priv.h" #include <engine/falcon.h> static int nvkm_nvdec_oneinit(struct nvkm_engine *engine) { struct nvkm_nvdec *nvdec = nvkm_nvdec(engine); return nvkm_falcon_v1_new(&nvdec->engine.subdev, "NVDEC", 0x84000, &nvdec->falcon); } static void * nvkm_nvdec_dtor(struct nvkm_engine *engine) { struct nvkm_nvdec *nvdec = nvkm_nvdec(engine); nvkm_falcon_del(&nvdec->falcon); return nvdec; } static const struct nvkm_engine_func nvkm_nvdec = { .dtor = nvkm_nvdec_dtor, .oneinit = nvkm_nvdec_oneinit, }; int nvkm_nvdec_new_(struct nvkm_device *device, int index, struct nvkm_nvdec **pnvdec) { struct nvkm_nvdec *nvdec; if (!(nvdec = *pnvdec = kzalloc(sizeof(*nvdec), GFP_KERNEL))) return -ENOMEM; return nvkm_engine_ctor(&nvkm_nvdec, device, index, true, &nvdec->engine); }; Loading
drivers/gpu/drm/nouveau/include/nvkm/core/device.h +2 −2 Original line number Diff line number Diff line Loading @@ -155,7 +155,7 @@ struct nvkm_device { struct nvkm_engine *msppp; struct nvkm_engine *msvld; struct nvkm_engine *nvenc[3]; struct nvkm_engine *nvdec; struct nvkm_nvdec *nvdec; struct nvkm_pm *pm; struct nvkm_engine *sec; struct nvkm_sw *sw; Loading Loading @@ -225,7 +225,7 @@ struct nvkm_device_chip { int (*msppp )(struct nvkm_device *, int idx, struct nvkm_engine **); int (*msvld )(struct nvkm_device *, int idx, struct nvkm_engine **); int (*nvenc[3])(struct nvkm_device *, int idx, struct nvkm_engine **); int (*nvdec )(struct nvkm_device *, int idx, struct nvkm_engine **); int (*nvdec )(struct nvkm_device *, int idx, struct nvkm_nvdec **); int (*pm )(struct nvkm_device *, int idx, struct nvkm_pm **); int (*sec )(struct nvkm_device *, int idx, struct nvkm_engine **); int (*sw )(struct nvkm_device *, int idx, struct nvkm_sw **); Loading
drivers/gpu/drm/nouveau/include/nvkm/engine/nvdec.h +8 −0 Original line number Diff line number Diff line #ifndef __NVKM_NVDEC_H__ #define __NVKM_NVDEC_H__ #define nvkm_nvdec(p) container_of((p), struct nvkm_nvdec, engine) #include <core/engine.h> struct nvkm_nvdec { struct nvkm_engine engine; struct nvkm_falcon *falcon; }; int gp102_nvdec_new(struct nvkm_device *, int, struct nvkm_nvdec **); #endif
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c +1 −1 Original line number Diff line number Diff line Loading @@ -2362,7 +2362,7 @@ nvkm_device_engine(struct nvkm_device *device, int index) _(NVENC0 , device->nvenc[0], device->nvenc[0]); _(NVENC1 , device->nvenc[1], device->nvenc[1]); _(NVENC2 , device->nvenc[2], device->nvenc[2]); _(NVDEC , device->nvdec , device->nvdec); _(NVDEC , device->nvdec , &device->nvdec->engine); _(PM , device->pm , &device->pm->engine); _(SEC , device->sec , device->sec); _(SW , device->sw , &device->sw->engine); Loading
drivers/gpu/drm/nouveau/nvkm/engine/nvdec/Kbuild +2 −1 Original line number Diff line number Diff line #nvkm-y += nvkm/engine/nvdec/base.o nvkm-y += nvkm/engine/nvdec/base.o nvkm-y += nvkm/engine/nvdec/gp102.o
drivers/gpu/drm/nouveau/nvkm/engine/nvdec/base.c 0 → 100644 +59 −0 Original line number Diff line number Diff line /* * Copyright (c) 2017, NVIDIA CORPORATION. All rights reserved. * * 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 AUTHORS OR COPYRIGHT HOLDERS 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. */ #include "priv.h" #include <engine/falcon.h> static int nvkm_nvdec_oneinit(struct nvkm_engine *engine) { struct nvkm_nvdec *nvdec = nvkm_nvdec(engine); return nvkm_falcon_v1_new(&nvdec->engine.subdev, "NVDEC", 0x84000, &nvdec->falcon); } static void * nvkm_nvdec_dtor(struct nvkm_engine *engine) { struct nvkm_nvdec *nvdec = nvkm_nvdec(engine); nvkm_falcon_del(&nvdec->falcon); return nvdec; } static const struct nvkm_engine_func nvkm_nvdec = { .dtor = nvkm_nvdec_dtor, .oneinit = nvkm_nvdec_oneinit, }; int nvkm_nvdec_new_(struct nvkm_device *device, int index, struct nvkm_nvdec **pnvdec) { struct nvkm_nvdec *nvdec; if (!(nvdec = *pnvdec = kzalloc(sizeof(*nvdec), GFP_KERNEL))) return -ENOMEM; return nvkm_engine_ctor(&nvkm_nvdec, device, index, true, &nvdec->engine); };