Commit f8aeb133 authored by Ben Skeggs's avatar Ben Skeggs

drm/nouveau/nvdec: switch to instanced constructor

Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
Reviewed-by: default avatarLyude Paul <lyude@redhat.com>
parent b15147bd
...@@ -61,7 +61,6 @@ struct nvkm_device { ...@@ -61,7 +61,6 @@ struct nvkm_device {
} acpi; } acpi;
struct nvkm_nvenc *nvenc[3]; struct nvkm_nvenc *nvenc[3];
struct nvkm_nvdec *nvdec[3];
struct nvkm_pm *pm; struct nvkm_pm *pm;
struct nvkm_engine *sec; struct nvkm_engine *sec;
struct nvkm_sec2 *sec2; struct nvkm_sec2 *sec2;
...@@ -109,7 +108,6 @@ struct nvkm_device_chip { ...@@ -109,7 +108,6 @@ struct nvkm_device_chip {
#undef NVKM_LAYOUT_ONCE #undef NVKM_LAYOUT_ONCE
int (*nvenc[3])(struct nvkm_device *, int idx, struct nvkm_nvenc **); int (*nvenc[3])(struct nvkm_device *, int idx, struct nvkm_nvenc **);
int (*nvdec[3])(struct nvkm_device *, int idx, struct nvkm_nvdec **);
int (*pm )(struct nvkm_device *, int idx, struct nvkm_pm **); int (*pm )(struct nvkm_device *, int idx, struct nvkm_pm **);
int (*sec )(struct nvkm_device *, int idx, struct nvkm_engine **); int (*sec )(struct nvkm_device *, int idx, struct nvkm_engine **);
int (*sec2 )(struct nvkm_device *, int idx, struct nvkm_sec2 **); int (*sec2 )(struct nvkm_device *, int idx, struct nvkm_sec2 **);
......
...@@ -39,4 +39,5 @@ NVKM_LAYOUT_ONCE(NVKM_ENGINE_MSENC , struct nvkm_engine , msenc) ...@@ -39,4 +39,5 @@ NVKM_LAYOUT_ONCE(NVKM_ENGINE_MSENC , struct nvkm_engine , msenc)
NVKM_LAYOUT_ONCE(NVKM_ENGINE_MSPDEC , struct nvkm_engine , mspdec) NVKM_LAYOUT_ONCE(NVKM_ENGINE_MSPDEC , struct nvkm_engine , mspdec)
NVKM_LAYOUT_ONCE(NVKM_ENGINE_MSPPP , struct nvkm_engine , msppp) NVKM_LAYOUT_ONCE(NVKM_ENGINE_MSPPP , struct nvkm_engine , msppp)
NVKM_LAYOUT_ONCE(NVKM_ENGINE_MSVLD , struct nvkm_engine , msvld) NVKM_LAYOUT_ONCE(NVKM_ENGINE_MSVLD , struct nvkm_engine , msvld)
NVKM_LAYOUT_INST(NVKM_ENGINE_NVDEC , struct nvkm_nvdec , nvdec, 3)
NVKM_LAYOUT_ONCE(NVKM_ENGINE_VP , struct nvkm_engine , vp) NVKM_LAYOUT_ONCE(NVKM_ENGINE_VP , struct nvkm_engine , vp)
...@@ -11,5 +11,5 @@ struct nvkm_nvdec { ...@@ -11,5 +11,5 @@ struct nvkm_nvdec {
struct nvkm_falcon falcon; struct nvkm_falcon falcon;
}; };
int gm107_nvdec_new(struct nvkm_device *, int, struct nvkm_nvdec **); int gm107_nvdec_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_nvdec **);
#endif #endif
...@@ -36,9 +36,6 @@ nvkm_subdev_type[NVKM_SUBDEV_NR] = { ...@@ -36,9 +36,6 @@ nvkm_subdev_type[NVKM_SUBDEV_NR] = {
[NVKM_ENGINE_NVENC0 ] = "nvenc0", [NVKM_ENGINE_NVENC0 ] = "nvenc0",
[NVKM_ENGINE_NVENC1 ] = "nvenc1", [NVKM_ENGINE_NVENC1 ] = "nvenc1",
[NVKM_ENGINE_NVENC2 ] = "nvenc2", [NVKM_ENGINE_NVENC2 ] = "nvenc2",
[NVKM_ENGINE_NVDEC0 ] = "nvdec0",
[NVKM_ENGINE_NVDEC1 ] = "nvdec1",
[NVKM_ENGINE_NVDEC2 ] = "nvdec2",
[NVKM_ENGINE_PM ] = "pm", [NVKM_ENGINE_PM ] = "pm",
[NVKM_ENGINE_SEC ] = "sec", [NVKM_ENGINE_SEC ] = "sec",
[NVKM_ENGINE_SEC2 ] = "sec2", [NVKM_ENGINE_SEC2 ] = "sec2",
...@@ -194,10 +191,6 @@ nvkm_subdev_ctor_(const struct nvkm_subdev_func *func, bool old, ...@@ -194,10 +191,6 @@ nvkm_subdev_ctor_(const struct nvkm_subdev_func *func, bool old,
subdev->type = NVKM_ENGINE_NVENC; subdev->type = NVKM_ENGINE_NVENC;
subdev->inst = subdev->index - NVKM_ENGINE_NVENC0; subdev->inst = subdev->index - NVKM_ENGINE_NVENC0;
break; break;
case NVKM_ENGINE_NVDEC0 ... NVKM_ENGINE_NVDEC_LAST:
subdev->type = NVKM_ENGINE_NVDEC;
subdev->inst = subdev->index - NVKM_ENGINE_NVDEC0;
break;
default: default:
break; break;
} }
......
...@@ -1968,7 +1968,7 @@ nv117_chipset = { ...@@ -1968,7 +1968,7 @@ nv117_chipset = {
.dma = { 0x00000001, gf119_dma_new }, .dma = { 0x00000001, gf119_dma_new },
.fifo = { 0x00000001, gm107_fifo_new }, .fifo = { 0x00000001, gm107_fifo_new },
.gr = { 0x00000001, gm107_gr_new }, .gr = { 0x00000001, gm107_gr_new },
.nvdec[0] = gm107_nvdec_new, .nvdec = { 0x00000001, gm107_nvdec_new },
.nvenc[0] = gm107_nvenc_new, .nvenc[0] = gm107_nvenc_new,
.sw = gf100_sw_new, .sw = gf100_sw_new,
}; };
...@@ -2036,7 +2036,7 @@ nv120_chipset = { ...@@ -2036,7 +2036,7 @@ nv120_chipset = {
.dma = { 0x00000001, gf119_dma_new }, .dma = { 0x00000001, gf119_dma_new },
.fifo = { 0x00000001, gm200_fifo_new }, .fifo = { 0x00000001, gm200_fifo_new },
.gr = { 0x00000001, gm200_gr_new }, .gr = { 0x00000001, gm200_gr_new },
.nvdec[0] = gm107_nvdec_new, .nvdec = { 0x00000001, gm107_nvdec_new },
.nvenc[0] = gm107_nvenc_new, .nvenc[0] = gm107_nvenc_new,
.nvenc[1] = gm107_nvenc_new, .nvenc[1] = gm107_nvenc_new,
.sw = gf100_sw_new, .sw = gf100_sw_new,
...@@ -2072,7 +2072,7 @@ nv124_chipset = { ...@@ -2072,7 +2072,7 @@ nv124_chipset = {
.dma = { 0x00000001, gf119_dma_new }, .dma = { 0x00000001, gf119_dma_new },
.fifo = { 0x00000001, gm200_fifo_new }, .fifo = { 0x00000001, gm200_fifo_new },
.gr = { 0x00000001, gm200_gr_new }, .gr = { 0x00000001, gm200_gr_new },
.nvdec[0] = gm107_nvdec_new, .nvdec = { 0x00000001, gm107_nvdec_new },
.nvenc[0] = gm107_nvenc_new, .nvenc[0] = gm107_nvenc_new,
.nvenc[1] = gm107_nvenc_new, .nvenc[1] = gm107_nvenc_new,
.sw = gf100_sw_new, .sw = gf100_sw_new,
...@@ -2108,7 +2108,7 @@ nv126_chipset = { ...@@ -2108,7 +2108,7 @@ nv126_chipset = {
.dma = { 0x00000001, gf119_dma_new }, .dma = { 0x00000001, gf119_dma_new },
.fifo = { 0x00000001, gm200_fifo_new }, .fifo = { 0x00000001, gm200_fifo_new },
.gr = { 0x00000001, gm200_gr_new }, .gr = { 0x00000001, gm200_gr_new },
.nvdec[0] = gm107_nvdec_new, .nvdec = { 0x00000001, gm107_nvdec_new },
.nvenc[0] = gm107_nvenc_new, .nvenc[0] = gm107_nvenc_new,
.sw = gf100_sw_new, .sw = gf100_sw_new,
}; };
...@@ -2166,7 +2166,7 @@ nv130_chipset = { ...@@ -2166,7 +2166,7 @@ nv130_chipset = {
.disp = { 0x00000001, gp100_disp_new }, .disp = { 0x00000001, gp100_disp_new },
.fifo = { 0x00000001, gp100_fifo_new }, .fifo = { 0x00000001, gp100_fifo_new },
.gr = { 0x00000001, gp100_gr_new }, .gr = { 0x00000001, gp100_gr_new },
.nvdec[0] = gm107_nvdec_new, .nvdec = { 0x00000001, gm107_nvdec_new },
.nvenc[0] = gm107_nvenc_new, .nvenc[0] = gm107_nvenc_new,
.nvenc[1] = gm107_nvenc_new, .nvenc[1] = gm107_nvenc_new,
.nvenc[2] = gm107_nvenc_new, .nvenc[2] = gm107_nvenc_new,
...@@ -2201,7 +2201,7 @@ nv132_chipset = { ...@@ -2201,7 +2201,7 @@ nv132_chipset = {
.dma = { 0x00000001, gf119_dma_new }, .dma = { 0x00000001, gf119_dma_new },
.fifo = { 0x00000001, gp100_fifo_new }, .fifo = { 0x00000001, gp100_fifo_new },
.gr = { 0x00000001, gp102_gr_new }, .gr = { 0x00000001, gp102_gr_new },
.nvdec[0] = gm107_nvdec_new, .nvdec = { 0x00000001, gm107_nvdec_new },
.nvenc[0] = gm107_nvenc_new, .nvenc[0] = gm107_nvenc_new,
.nvenc[1] = gm107_nvenc_new, .nvenc[1] = gm107_nvenc_new,
.sec2 = gp102_sec2_new, .sec2 = gp102_sec2_new,
...@@ -2236,7 +2236,7 @@ nv134_chipset = { ...@@ -2236,7 +2236,7 @@ nv134_chipset = {
.dma = { 0x00000001, gf119_dma_new }, .dma = { 0x00000001, gf119_dma_new },
.fifo = { 0x00000001, gp100_fifo_new }, .fifo = { 0x00000001, gp100_fifo_new },
.gr = { 0x00000001, gp104_gr_new }, .gr = { 0x00000001, gp104_gr_new },
.nvdec[0] = gm107_nvdec_new, .nvdec = { 0x00000001, gm107_nvdec_new },
.nvenc[0] = gm107_nvenc_new, .nvenc[0] = gm107_nvenc_new,
.nvenc[1] = gm107_nvenc_new, .nvenc[1] = gm107_nvenc_new,
.sec2 = gp102_sec2_new, .sec2 = gp102_sec2_new,
...@@ -2271,7 +2271,7 @@ nv136_chipset = { ...@@ -2271,7 +2271,7 @@ nv136_chipset = {
.dma = { 0x00000001, gf119_dma_new }, .dma = { 0x00000001, gf119_dma_new },
.fifo = { 0x00000001, gp100_fifo_new }, .fifo = { 0x00000001, gp100_fifo_new },
.gr = { 0x00000001, gp104_gr_new }, .gr = { 0x00000001, gp104_gr_new },
.nvdec[0] = gm107_nvdec_new, .nvdec = { 0x00000001, gm107_nvdec_new },
.nvenc[0] = gm107_nvenc_new, .nvenc[0] = gm107_nvenc_new,
.sec2 = gp102_sec2_new, .sec2 = gp102_sec2_new,
.sw = gf100_sw_new, .sw = gf100_sw_new,
...@@ -2305,7 +2305,7 @@ nv137_chipset = { ...@@ -2305,7 +2305,7 @@ nv137_chipset = {
.dma = { 0x00000001, gf119_dma_new }, .dma = { 0x00000001, gf119_dma_new },
.fifo = { 0x00000001, gp100_fifo_new }, .fifo = { 0x00000001, gp100_fifo_new },
.gr = { 0x00000001, gp107_gr_new }, .gr = { 0x00000001, gp107_gr_new },
.nvdec[0] = gm107_nvdec_new, .nvdec = { 0x00000001, gm107_nvdec_new },
.nvenc[0] = gm107_nvenc_new, .nvenc[0] = gm107_nvenc_new,
.nvenc[1] = gm107_nvenc_new, .nvenc[1] = gm107_nvenc_new,
.sec2 = gp102_sec2_new, .sec2 = gp102_sec2_new,
...@@ -2340,7 +2340,7 @@ nv138_chipset = { ...@@ -2340,7 +2340,7 @@ nv138_chipset = {
.dma = { 0x00000001, gf119_dma_new }, .dma = { 0x00000001, gf119_dma_new },
.fifo = { 0x00000001, gp100_fifo_new }, .fifo = { 0x00000001, gp100_fifo_new },
.gr = { 0x00000001, gp108_gr_new }, .gr = { 0x00000001, gp108_gr_new },
.nvdec[0] = gm107_nvdec_new, .nvdec = { 0x00000001, gm107_nvdec_new },
.sec2 = gp108_sec2_new, .sec2 = gp108_sec2_new,
.sw = gf100_sw_new, .sw = gf100_sw_new,
}; };
...@@ -2398,7 +2398,7 @@ nv140_chipset = { ...@@ -2398,7 +2398,7 @@ nv140_chipset = {
.dma = { 0x00000001, gv100_dma_new }, .dma = { 0x00000001, gv100_dma_new },
.fifo = { 0x00000001, gv100_fifo_new }, .fifo = { 0x00000001, gv100_fifo_new },
.gr = { 0x00000001, gv100_gr_new }, .gr = { 0x00000001, gv100_gr_new },
.nvdec[0] = gm107_nvdec_new, .nvdec = { 0x00000001, gm107_nvdec_new },
.nvenc[0] = gm107_nvenc_new, .nvenc[0] = gm107_nvenc_new,
.nvenc[1] = gm107_nvenc_new, .nvenc[1] = gm107_nvenc_new,
.nvenc[2] = gm107_nvenc_new, .nvenc[2] = gm107_nvenc_new,
...@@ -2434,7 +2434,7 @@ nv162_chipset = { ...@@ -2434,7 +2434,7 @@ nv162_chipset = {
.dma = { 0x00000001, gv100_dma_new }, .dma = { 0x00000001, gv100_dma_new },
.fifo = { 0x00000001, tu102_fifo_new }, .fifo = { 0x00000001, tu102_fifo_new },
.gr = { 0x00000001, tu102_gr_new }, .gr = { 0x00000001, tu102_gr_new },
.nvdec[0] = gm107_nvdec_new, .nvdec = { 0x00000001, gm107_nvdec_new },
.nvenc[0] = gm107_nvenc_new, .nvenc[0] = gm107_nvenc_new,
.sec2 = tu102_sec2_new, .sec2 = tu102_sec2_new,
}; };
...@@ -2468,8 +2468,7 @@ nv164_chipset = { ...@@ -2468,8 +2468,7 @@ nv164_chipset = {
.dma = { 0x00000001, gv100_dma_new }, .dma = { 0x00000001, gv100_dma_new },
.fifo = { 0x00000001, tu102_fifo_new }, .fifo = { 0x00000001, tu102_fifo_new },
.gr = { 0x00000001, tu102_gr_new }, .gr = { 0x00000001, tu102_gr_new },
.nvdec[0] = gm107_nvdec_new, .nvdec = { 0x00000003, gm107_nvdec_new },
.nvdec[1] = gm107_nvdec_new,
.nvenc[0] = gm107_nvenc_new, .nvenc[0] = gm107_nvenc_new,
.sec2 = tu102_sec2_new, .sec2 = tu102_sec2_new,
}; };
...@@ -2503,9 +2502,7 @@ nv166_chipset = { ...@@ -2503,9 +2502,7 @@ nv166_chipset = {
.dma = { 0x00000001, gv100_dma_new }, .dma = { 0x00000001, gv100_dma_new },
.fifo = { 0x00000001, tu102_fifo_new }, .fifo = { 0x00000001, tu102_fifo_new },
.gr = { 0x00000001, tu102_gr_new }, .gr = { 0x00000001, tu102_gr_new },
.nvdec[0] = gm107_nvdec_new, .nvdec = { 0x00000007, gm107_nvdec_new },
.nvdec[1] = gm107_nvdec_new,
.nvdec[2] = gm107_nvdec_new,
.nvenc[0] = gm107_nvenc_new, .nvenc[0] = gm107_nvenc_new,
.sec2 = tu102_sec2_new, .sec2 = tu102_sec2_new,
}; };
...@@ -2539,7 +2536,7 @@ nv167_chipset = { ...@@ -2539,7 +2536,7 @@ nv167_chipset = {
.dma = { 0x00000001, gv100_dma_new }, .dma = { 0x00000001, gv100_dma_new },
.fifo = { 0x00000001, tu102_fifo_new }, .fifo = { 0x00000001, tu102_fifo_new },
.gr = { 0x00000001, tu102_gr_new }, .gr = { 0x00000001, tu102_gr_new },
.nvdec[0] = gm107_nvdec_new, .nvdec = { 0x00000001, gm107_nvdec_new },
.nvenc[0] = gm107_nvenc_new, .nvenc[0] = gm107_nvenc_new,
.sec2 = tu102_sec2_new, .sec2 = tu102_sec2_new,
}; };
...@@ -2573,7 +2570,7 @@ nv168_chipset = { ...@@ -2573,7 +2570,7 @@ nv168_chipset = {
.dma = { 0x00000001, gv100_dma_new }, .dma = { 0x00000001, gv100_dma_new },
.fifo = { 0x00000001, tu102_fifo_new }, .fifo = { 0x00000001, tu102_fifo_new },
.gr = { 0x00000001, tu102_gr_new }, .gr = { 0x00000001, tu102_gr_new },
.nvdec[0] = gm107_nvdec_new, .nvdec = { 0x00000001, gm107_nvdec_new },
.nvenc[0] = gm107_nvenc_new, .nvenc[0] = gm107_nvenc_new,
.sec2 = tu102_sec2_new, .sec2 = tu102_sec2_new,
}; };
...@@ -3177,9 +3174,6 @@ nvkm_device_ctor(const struct nvkm_device_func *func, ...@@ -3177,9 +3174,6 @@ nvkm_device_ctor(const struct nvkm_device_func *func,
_(NVKM_ENGINE_NVENC0 , nvenc[0]); _(NVKM_ENGINE_NVENC0 , nvenc[0]);
_(NVKM_ENGINE_NVENC1 , nvenc[1]); _(NVKM_ENGINE_NVENC1 , nvenc[1]);
_(NVKM_ENGINE_NVENC2 , nvenc[2]); _(NVKM_ENGINE_NVENC2 , nvenc[2]);
_(NVKM_ENGINE_NVDEC0 , nvdec[0]);
_(NVKM_ENGINE_NVDEC1 , nvdec[1]);
_(NVKM_ENGINE_NVDEC2 , nvdec[2]);
_(NVKM_ENGINE_PM , pm); _(NVKM_ENGINE_PM , pm);
_(NVKM_ENGINE_SEC , sec); _(NVKM_ENGINE_SEC , sec);
_(NVKM_ENGINE_SEC2 , sec2); _(NVKM_ENGINE_SEC2 , sec2);
...@@ -3193,6 +3187,8 @@ nvkm_device_ctor(const struct nvkm_device_func *func, ...@@ -3193,6 +3187,8 @@ nvkm_device_ctor(const struct nvkm_device_func *func,
case NVKM_ENGINE_CE6: case NVKM_ENGINE_CE6:
case NVKM_ENGINE_CE7: case NVKM_ENGINE_CE7:
case NVKM_ENGINE_CE8: case NVKM_ENGINE_CE8:
case NVKM_ENGINE_NVDEC1:
case NVKM_ENGINE_NVDEC2:
break; break;
default: default:
WARN_ON(1); WARN_ON(1);
......
...@@ -37,7 +37,7 @@ nvkm_nvdec = { ...@@ -37,7 +37,7 @@ nvkm_nvdec = {
int int
nvkm_nvdec_new_(const struct nvkm_nvdec_fwif *fwif, struct nvkm_device *device, nvkm_nvdec_new_(const struct nvkm_nvdec_fwif *fwif, struct nvkm_device *device,
int index, struct nvkm_nvdec **pnvdec) enum nvkm_subdev_type type, int inst, struct nvkm_nvdec **pnvdec)
{ {
struct nvkm_nvdec *nvdec; struct nvkm_nvdec *nvdec;
int ret; int ret;
...@@ -45,7 +45,7 @@ nvkm_nvdec_new_(const struct nvkm_nvdec_fwif *fwif, struct nvkm_device *device, ...@@ -45,7 +45,7 @@ nvkm_nvdec_new_(const struct nvkm_nvdec_fwif *fwif, struct nvkm_device *device,
if (!(nvdec = *pnvdec = kzalloc(sizeof(*nvdec), GFP_KERNEL))) if (!(nvdec = *pnvdec = kzalloc(sizeof(*nvdec), GFP_KERNEL)))
return -ENOMEM; return -ENOMEM;
ret = nvkm_engine_ctor(&nvkm_nvdec, device, index, true, ret = nvkm_engine_ctor(&nvkm_nvdec, device, type, inst, true,
&nvdec->engine); &nvdec->engine);
if (ret) if (ret)
return ret; return ret;
......
...@@ -56,8 +56,8 @@ gm107_nvdec_fwif[] = { ...@@ -56,8 +56,8 @@ gm107_nvdec_fwif[] = {
}; };
int int
gm107_nvdec_new(struct nvkm_device *device, int index, gm107_nvdec_new(struct nvkm_device *device, enum nvkm_subdev_type type, int inst,
struct nvkm_nvdec **pnvdec) struct nvkm_nvdec **pnvdec)
{ {
return nvkm_nvdec_new_(gm107_nvdec_fwif, device, index, pnvdec); return nvkm_nvdec_new_(gm107_nvdec_fwif, device, type, inst, pnvdec);
} }
...@@ -14,6 +14,6 @@ struct nvkm_nvdec_fwif { ...@@ -14,6 +14,6 @@ struct nvkm_nvdec_fwif {
const struct nvkm_nvdec_func *func; const struct nvkm_nvdec_func *func;
}; };
int nvkm_nvdec_new_(const struct nvkm_nvdec_fwif *fwif, int nvkm_nvdec_new_(const struct nvkm_nvdec_fwif *fwif, struct nvkm_device *,
struct nvkm_device *, int, struct nvkm_nvdec **); enum nvkm_subdev_type, int, struct nvkm_nvdec **);
#endif #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment