nvkm_sw
NVKM_LAYOUT_ONCE(NVKM_ENGINE_SW , struct nvkm_sw , sw)
bool nvkm_sw_mthd(struct nvkm_sw *sw, int chid, int subc, u32 mthd, u32 data);
int nv04_sw_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_sw **);
int nv10_sw_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_sw **);
int nv50_sw_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_sw **);
int gf100_sw_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_sw **);
struct nvkm_sw *sw = device->sw;
struct nvkm_sw *sw;
return nvkm_engine_ctor(&nvkm_sw, device, type, inst, true, &sw->engine);
nvkm_sw_mthd(struct nvkm_sw *sw, int chid, int subc, u32 mthd, u32 data)
struct nvkm_sw *sw = nvkm_sw(oclass->engine);
struct nvkm_sw *sw = nvkm_sw(oclass->engine);
return nvkm_sw(engine);
nvkm_sw = {
enum nvkm_subdev_type type, int inst, struct nvkm_sw **psw)
struct nvkm_sw *sw = chan->sw;
nvkm_sw_chan_ctor(const struct nvkm_sw_chan_func *func, struct nvkm_sw *sw,
struct nvkm_sw *sw;
int nvkm_sw_chan_ctor(const struct nvkm_sw_chan_func *, struct nvkm_sw *,
gf100_sw_chan_new(struct nvkm_sw *sw, struct nvkm_chan *fifoch,
gf100_sw_new(struct nvkm_device *device, enum nvkm_subdev_type type, int inst, struct nvkm_sw **psw)
struct nvkm_sw *sw = chan->base.sw;
nv04_sw_chan_new(struct nvkm_sw *sw, struct nvkm_chan *fifo,
nv04_sw_new(struct nvkm_device *device, enum nvkm_subdev_type type, int inst, struct nvkm_sw **psw)
nv10_sw_chan_new(struct nvkm_sw *sw, struct nvkm_chan *fifo,
nv10_sw_new(struct nvkm_device *device, enum nvkm_subdev_type type, int inst, struct nvkm_sw **psw)
nv50_sw_chan_new(struct nvkm_sw *sw, struct nvkm_chan *fifoch,
nv50_sw_new(struct nvkm_device *device, enum nvkm_subdev_type type, int inst, struct nvkm_sw **psw)
struct nvkm_sw *sw = chan->base.sw;
int (*chan_new)(struct nvkm_sw *, struct nvkm_chan *,
#define nvkm_sw(p) container_of((p), struct nvkm_sw, engine)
struct nvkm_sw **);