Commit e73d371a authored by Ben Skeggs's avatar Ben Skeggs

drm/nouveau/pm: switch to instanced constructor

Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
Reviewed-by: default avatarLyude Paul <lyude@redhat.com>
parent ee532a8d
...@@ -60,7 +60,6 @@ struct nvkm_device { ...@@ -60,7 +60,6 @@ struct nvkm_device {
struct notifier_block nb; struct notifier_block nb;
} acpi; } acpi;
struct nvkm_pm *pm;
struct nvkm_engine *sec; struct nvkm_engine *sec;
struct nvkm_sec2 *sec2; struct nvkm_sec2 *sec2;
struct nvkm_sw *sw; struct nvkm_sw *sw;
...@@ -106,7 +105,6 @@ struct nvkm_device_chip { ...@@ -106,7 +105,6 @@ struct nvkm_device_chip {
#undef NVKM_LAYOUT_INST #undef NVKM_LAYOUT_INST
#undef NVKM_LAYOUT_ONCE #undef NVKM_LAYOUT_ONCE
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 **);
int (*sw )(struct nvkm_device *, int idx, struct nvkm_sw **); int (*sw )(struct nvkm_device *, int idx, struct nvkm_sw **);
......
...@@ -41,4 +41,5 @@ NVKM_LAYOUT_ONCE(NVKM_ENGINE_MSPPP , struct nvkm_engine , msppp) ...@@ -41,4 +41,5 @@ 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_INST(NVKM_ENGINE_NVDEC , struct nvkm_nvdec , nvdec, 3)
NVKM_LAYOUT_INST(NVKM_ENGINE_NVENC , struct nvkm_nvenc , nvenc, 3) NVKM_LAYOUT_INST(NVKM_ENGINE_NVENC , struct nvkm_nvenc , nvenc, 3)
NVKM_LAYOUT_ONCE(NVKM_ENGINE_PM , struct nvkm_pm , pm)
NVKM_LAYOUT_ONCE(NVKM_ENGINE_VP , struct nvkm_engine , vp) NVKM_LAYOUT_ONCE(NVKM_ENGINE_VP , struct nvkm_engine , vp)
...@@ -17,13 +17,13 @@ struct nvkm_pm { ...@@ -17,13 +17,13 @@ struct nvkm_pm {
u32 sequence; u32 sequence;
}; };
int nv40_pm_new(struct nvkm_device *, int, struct nvkm_pm **); int nv40_pm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_pm **);
int nv50_pm_new(struct nvkm_device *, int, struct nvkm_pm **); int nv50_pm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_pm **);
int g84_pm_new(struct nvkm_device *, int, struct nvkm_pm **); int g84_pm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_pm **);
int gt200_pm_new(struct nvkm_device *, int, struct nvkm_pm **); int gt200_pm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_pm **);
int gt215_pm_new(struct nvkm_device *, int, struct nvkm_pm **); int gt215_pm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_pm **);
int gf100_pm_new(struct nvkm_device *, int, struct nvkm_pm **); int gf100_pm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_pm **);
int gf108_pm_new(struct nvkm_device *, int, struct nvkm_pm **); int gf108_pm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_pm **);
int gf117_pm_new(struct nvkm_device *, int, struct nvkm_pm **); int gf117_pm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_pm **);
int gk104_pm_new(struct nvkm_device *, int, struct nvkm_pm **); int gk104_pm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_pm **);
#endif #endif
...@@ -33,7 +33,6 @@ nvkm_subdev_type[NVKM_SUBDEV_NR] = { ...@@ -33,7 +33,6 @@ nvkm_subdev_type[NVKM_SUBDEV_NR] = {
#include <core/layout.h> #include <core/layout.h>
#undef NVKM_LAYOUT_ONCE #undef NVKM_LAYOUT_ONCE
#undef NVKM_LAYOUT_INST #undef NVKM_LAYOUT_INST
[NVKM_ENGINE_PM ] = "pm",
[NVKM_ENGINE_SEC ] = "sec", [NVKM_ENGINE_SEC ] = "sec",
[NVKM_ENGINE_SEC2 ] = "sec2", [NVKM_ENGINE_SEC2 ] = "sec2",
[NVKM_ENGINE_SW ] = "sw", [NVKM_ENGINE_SW ] = "sw",
......
...@@ -858,11 +858,11 @@ nvkm_pm = { ...@@ -858,11 +858,11 @@ nvkm_pm = {
int int
nvkm_pm_ctor(const struct nvkm_pm_func *func, struct nvkm_device *device, nvkm_pm_ctor(const struct nvkm_pm_func *func, struct nvkm_device *device,
int index, struct nvkm_pm *pm) enum nvkm_subdev_type type, int inst, struct nvkm_pm *pm)
{ {
pm->func = func; pm->func = func;
INIT_LIST_HEAD(&pm->domains); INIT_LIST_HEAD(&pm->domains);
INIT_LIST_HEAD(&pm->sources); INIT_LIST_HEAD(&pm->sources);
spin_lock_init(&pm->client.lock); spin_lock_init(&pm->client.lock);
return nvkm_engine_ctor(&nvkm_pm, device, index, true, &pm->engine); return nvkm_engine_ctor(&nvkm_pm, device, type, inst, true, &pm->engine);
} }
...@@ -159,7 +159,7 @@ g84_pm[] = { ...@@ -159,7 +159,7 @@ g84_pm[] = {
}; };
int int
g84_pm_new(struct nvkm_device *device, int index, struct nvkm_pm **ppm) g84_pm_new(struct nvkm_device *device, enum nvkm_subdev_type type, int inst, struct nvkm_pm **ppm)
{ {
return nv40_pm_new_(g84_pm, device, index, ppm); return nv40_pm_new_(g84_pm, device, type, inst, ppm);
} }
...@@ -187,7 +187,7 @@ gf100_pm_ = { ...@@ -187,7 +187,7 @@ gf100_pm_ = {
int int
gf100_pm_new_(const struct gf100_pm_func *func, struct nvkm_device *device, gf100_pm_new_(const struct gf100_pm_func *func, struct nvkm_device *device,
int index, struct nvkm_pm **ppm) enum nvkm_subdev_type type, int inst, struct nvkm_pm **ppm)
{ {
struct nvkm_pm *pm; struct nvkm_pm *pm;
u32 mask; u32 mask;
...@@ -196,7 +196,7 @@ gf100_pm_new_(const struct gf100_pm_func *func, struct nvkm_device *device, ...@@ -196,7 +196,7 @@ gf100_pm_new_(const struct gf100_pm_func *func, struct nvkm_device *device,
if (!(pm = *ppm = kzalloc(sizeof(*pm), GFP_KERNEL))) if (!(pm = *ppm = kzalloc(sizeof(*pm), GFP_KERNEL)))
return -ENOMEM; return -ENOMEM;
ret = nvkm_pm_ctor(&gf100_pm_, device, index, pm); ret = nvkm_pm_ctor(&gf100_pm_, device, type, inst, pm);
if (ret) if (ret)
return ret; return ret;
...@@ -237,7 +237,7 @@ gf100_pm = { ...@@ -237,7 +237,7 @@ gf100_pm = {
}; };
int int
gf100_pm_new(struct nvkm_device *device, int index, struct nvkm_pm **ppm) gf100_pm_new(struct nvkm_device *device, enum nvkm_subdev_type type, int inst, struct nvkm_pm **ppm)
{ {
return gf100_pm_new_(&gf100_pm, device, index, ppm); return gf100_pm_new_(&gf100_pm, device, type, inst, ppm);
} }
...@@ -9,8 +9,8 @@ struct gf100_pm_func { ...@@ -9,8 +9,8 @@ struct gf100_pm_func {
const struct nvkm_specdom *doms_part; const struct nvkm_specdom *doms_part;
}; };
int gf100_pm_new_(const struct gf100_pm_func *, struct nvkm_device *, int gf100_pm_new_(const struct gf100_pm_func *, struct nvkm_device *, enum nvkm_subdev_type, int,
int index, struct nvkm_pm **); struct nvkm_pm **);
extern const struct nvkm_funcdom gf100_perfctr_func; extern const struct nvkm_funcdom gf100_perfctr_func;
extern const struct nvkm_specdom gf100_pm_gpc[]; extern const struct nvkm_specdom gf100_pm_gpc[];
......
...@@ -60,7 +60,7 @@ gf108_pm = { ...@@ -60,7 +60,7 @@ gf108_pm = {
}; };
int int
gf108_pm_new(struct nvkm_device *device, int index, struct nvkm_pm **ppm) gf108_pm_new(struct nvkm_device *device, enum nvkm_subdev_type type, int inst, struct nvkm_pm **ppm)
{ {
return gf100_pm_new_(&gf108_pm, device, index, ppm); return gf100_pm_new_(&gf108_pm, device, type, inst, ppm);
} }
...@@ -74,7 +74,7 @@ gf117_pm = { ...@@ -74,7 +74,7 @@ gf117_pm = {
}; };
int int
gf117_pm_new(struct nvkm_device *device, int index, struct nvkm_pm **ppm) gf117_pm_new(struct nvkm_device *device, enum nvkm_subdev_type type, int inst, struct nvkm_pm **ppm)
{ {
return gf100_pm_new_(&gf117_pm, device, index, ppm); return gf100_pm_new_(&gf117_pm, device, type, inst, ppm);
} }
...@@ -178,7 +178,7 @@ gk104_pm = { ...@@ -178,7 +178,7 @@ gk104_pm = {
}; };
int int
gk104_pm_new(struct nvkm_device *device, int index, struct nvkm_pm **ppm) gk104_pm_new(struct nvkm_device *device, enum nvkm_subdev_type type, int inst, struct nvkm_pm **ppm)
{ {
return gf100_pm_new_(&gk104_pm, device, index, ppm); return gf100_pm_new_(&gk104_pm, device, type, inst, ppm);
} }
...@@ -151,7 +151,7 @@ gt200_pm[] = { ...@@ -151,7 +151,7 @@ gt200_pm[] = {
}; };
int int
gt200_pm_new(struct nvkm_device *device, int index, struct nvkm_pm **ppm) gt200_pm_new(struct nvkm_device *device, enum nvkm_subdev_type type, int inst, struct nvkm_pm **ppm)
{ {
return nv40_pm_new_(gt200_pm, device, index, ppm); return nv40_pm_new_(gt200_pm, device, type, inst, ppm);
} }
...@@ -132,7 +132,7 @@ gt215_pm[] = { ...@@ -132,7 +132,7 @@ gt215_pm[] = {
}; };
int int
gt215_pm_new(struct nvkm_device *device, int index, struct nvkm_pm **ppm) gt215_pm_new(struct nvkm_device *device, enum nvkm_subdev_type type, int inst, struct nvkm_pm **ppm)
{ {
return nv40_pm_new_(gt215_pm, device, index, ppm); return nv40_pm_new_(gt215_pm, device, type, inst, ppm);
} }
...@@ -80,7 +80,7 @@ nv40_pm_ = { ...@@ -80,7 +80,7 @@ nv40_pm_ = {
int int
nv40_pm_new_(const struct nvkm_specdom *doms, struct nvkm_device *device, nv40_pm_new_(const struct nvkm_specdom *doms, struct nvkm_device *device,
int index, struct nvkm_pm **ppm) enum nvkm_subdev_type type, int inst, struct nvkm_pm **ppm)
{ {
struct nv40_pm *pm; struct nv40_pm *pm;
int ret; int ret;
...@@ -89,7 +89,7 @@ nv40_pm_new_(const struct nvkm_specdom *doms, struct nvkm_device *device, ...@@ -89,7 +89,7 @@ nv40_pm_new_(const struct nvkm_specdom *doms, struct nvkm_device *device,
return -ENOMEM; return -ENOMEM;
*ppm = &pm->base; *ppm = &pm->base;
ret = nvkm_pm_ctor(&nv40_pm_, device, index, &pm->base); ret = nvkm_pm_ctor(&nv40_pm_, device, type, inst, &pm->base);
if (ret) if (ret)
return ret; return ret;
...@@ -117,7 +117,7 @@ nv40_pm[] = { ...@@ -117,7 +117,7 @@ nv40_pm[] = {
}; };
int int
nv40_pm_new(struct nvkm_device *device, int index, struct nvkm_pm **ppm) nv40_pm_new(struct nvkm_device *device, enum nvkm_subdev_type type, int inst, struct nvkm_pm **ppm)
{ {
return nv40_pm_new_(nv40_pm, device, index, ppm); return nv40_pm_new_(nv40_pm, device, type, inst, ppm);
} }
...@@ -9,7 +9,7 @@ struct nv40_pm { ...@@ -9,7 +9,7 @@ struct nv40_pm {
u32 sequence; u32 sequence;
}; };
int nv40_pm_new_(const struct nvkm_specdom *, struct nvkm_device *, int nv40_pm_new_(const struct nvkm_specdom *, struct nvkm_device *, enum nvkm_subdev_type, int,
int index, struct nvkm_pm **); struct nvkm_pm **);
extern const struct nvkm_funcdom nv40_perfctr_func; extern const struct nvkm_funcdom nv40_perfctr_func;
#endif #endif
...@@ -169,7 +169,7 @@ nv50_pm[] = { ...@@ -169,7 +169,7 @@ nv50_pm[] = {
}; };
int int
nv50_pm_new(struct nvkm_device *device, int index, struct nvkm_pm **ppm) nv50_pm_new(struct nvkm_device *device, enum nvkm_subdev_type type, int inst, struct nvkm_pm **ppm)
{ {
return nv40_pm_new_(nv50_pm, device, index, ppm); return nv40_pm_new_(nv50_pm, device, type, inst, ppm);
} }
...@@ -4,8 +4,8 @@ ...@@ -4,8 +4,8 @@
#define nvkm_pm(p) container_of((p), struct nvkm_pm, engine) #define nvkm_pm(p) container_of((p), struct nvkm_pm, engine)
#include <engine/pm.h> #include <engine/pm.h>
int nvkm_pm_ctor(const struct nvkm_pm_func *, struct nvkm_device *, int nvkm_pm_ctor(const struct nvkm_pm_func *, struct nvkm_device *, enum nvkm_subdev_type, int,
int index, struct nvkm_pm *); struct nvkm_pm *);
struct nvkm_pm_func { struct nvkm_pm_func {
void (*fini)(struct nvkm_pm *); void (*fini)(struct nvkm_pm *);
......
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