Loading drivers/gpu/drm/nouveau/include/nvkm/core/engine.h +3 −1 Original line number Original line Diff line number Diff line Loading @@ -3,6 +3,7 @@ #include <core/subdev.h> #include <core/subdev.h> struct nvkm_device_oclass; /*XXX: DEV!ENG */ struct nvkm_device_oclass; /*XXX: DEV!ENG */ struct nvkm_fifo_chan; struct nvkm_fifo_chan; struct nvkm_fb_tile; #define NV_ENGINE_(eng,var) (((var) << 8) | (eng)) #define NV_ENGINE_(eng,var) (((var) << 8) | (eng)) #define NV_ENGINE(name,var) NV_ENGINE_(NVDEV_ENGINE_##name, (var)) #define NV_ENGINE(name,var) NV_ENGINE_(NVDEV_ENGINE_##name, (var)) Loading @@ -20,7 +21,6 @@ struct nvkm_engine { spinlock_t lock; spinlock_t lock; void (*tile_prog)(struct nvkm_engine *, int region); void (*tile_prog)(struct nvkm_engine *, int region); int (*tlb_flush)(struct nvkm_engine *); }; }; struct nvkm_engine_func { struct nvkm_engine_func { Loading @@ -29,6 +29,7 @@ struct nvkm_engine_func { int (*init)(struct nvkm_engine *); int (*init)(struct nvkm_engine *); int (*fini)(struct nvkm_engine *, bool suspend); int (*fini)(struct nvkm_engine *, bool suspend); void (*intr)(struct nvkm_engine *); void (*intr)(struct nvkm_engine *); void (*tile)(struct nvkm_engine *, int region, struct nvkm_fb_tile *); struct { struct { int (*sclass)(struct nvkm_oclass *, int index, int (*sclass)(struct nvkm_oclass *, int index, Loading @@ -54,6 +55,7 @@ int nvkm_engine_new_(const struct nvkm_engine_func *, struct nvkm_device *, struct nvkm_engine **); struct nvkm_engine **); struct nvkm_engine *nvkm_engine_ref(struct nvkm_engine *); struct nvkm_engine *nvkm_engine_ref(struct nvkm_engine *); void nvkm_engine_unref(struct nvkm_engine **); void nvkm_engine_unref(struct nvkm_engine **); void nvkm_engine_tile(struct nvkm_engine *, int region); static inline struct nvkm_engine * static inline struct nvkm_engine * nv_engine(void *obj) nv_engine(void *obj) Loading drivers/gpu/drm/nouveau/include/nvkm/engine/gr.h +37 −57 Original line number Original line Diff line number Diff line Loading @@ -3,64 +3,44 @@ #include <core/engine.h> #include <core/engine.h> struct nvkm_gr { struct nvkm_gr { struct nvkm_engine engine; const struct nvkm_gr_func *func; const struct nvkm_gr_func *func; struct nvkm_engine engine; /* Returns chipset-specific counts of units packed into an u64. */ u64 (*units)(struct nvkm_gr *); }; }; #define nvkm_gr_create(p,e,c,y,d) \ u64 nvkm_gr_units(struct nvkm_gr *); nvkm_gr_create_((p), (e), (c), (y), sizeof(**d), (void **)(d)) int nvkm_gr_tlb_flush(struct nvkm_gr *); int nvkm_gr_create_(struct nvkm_object *parent, struct nvkm_object *engine, int nv04_gr_new(struct nvkm_device *, int, struct nvkm_gr **); struct nvkm_oclass *oclass, bool enable, int nv10_gr_new(struct nvkm_device *, int, struct nvkm_gr **); int length, void **pobject); int nv15_gr_new(struct nvkm_device *, int, struct nvkm_gr **); #define nvkm_gr_destroy(d) \ int nv17_gr_new(struct nvkm_device *, int, struct nvkm_gr **); nvkm_engine_destroy(&(d)->engine) int nv20_gr_new(struct nvkm_device *, int, struct nvkm_gr **); #define nvkm_gr_init(d) \ int nv25_gr_new(struct nvkm_device *, int, struct nvkm_gr **); nvkm_engine_init_old(&(d)->engine) int nv2a_gr_new(struct nvkm_device *, int, struct nvkm_gr **); #define nvkm_gr_fini(d,s) \ int nv30_gr_new(struct nvkm_device *, int, struct nvkm_gr **); nvkm_engine_fini_old(&(d)->engine, (s)) int nv34_gr_new(struct nvkm_device *, int, struct nvkm_gr **); int nv35_gr_new(struct nvkm_device *, int, struct nvkm_gr **); #define _nvkm_gr_dtor _nvkm_engine_dtor int nv40_gr_new(struct nvkm_device *, int, struct nvkm_gr **); #define _nvkm_gr_init _nvkm_engine_init int nv44_gr_new(struct nvkm_device *, int, struct nvkm_gr **); #define _nvkm_gr_fini _nvkm_engine_fini int nv50_gr_new(struct nvkm_device *, int, struct nvkm_gr **); int g84_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass nv04_gr_oclass; int gt200_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass nv10_gr_oclass; int mcp79_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass nv20_gr_oclass; int gt215_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass nv25_gr_oclass; int mcp89_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass nv2a_gr_oclass; int gf100_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass nv30_gr_oclass; int gf104_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass nv34_gr_oclass; int gf108_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass nv35_gr_oclass; int gf110_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass nv40_gr_oclass; int gf117_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass nv50_gr_oclass; int gf119_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass *gf100_gr_oclass; int gk104_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass *gf108_gr_oclass; int gk110_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass *gf104_gr_oclass; int gk110b_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass *gf110_gr_oclass; int gk208_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass *gf117_gr_oclass; int gk20a_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass *gf119_gr_oclass; int gm107_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass *gk104_gr_oclass; int gm204_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass *gk20a_gr_oclass; int gm206_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass *gk110_gr_oclass; int gm20b_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass *gk110b_gr_oclass; extern struct nvkm_oclass *gk208_gr_oclass; extern struct nvkm_oclass *gm107_gr_oclass; extern struct nvkm_oclass *gm204_gr_oclass; extern struct nvkm_oclass *gm206_gr_oclass; extern struct nvkm_oclass *gm20b_gr_oclass; #include <core/enum.h> extern const struct nvkm_bitfield nv04_gr_nsource[]; bool nv04_gr_idle(struct nvkm_gr *); extern const struct nvkm_bitfield nv10_gr_intr_name[]; extern const struct nvkm_bitfield nv10_gr_nstatus[]; extern const struct nvkm_enum nv50_data_error_names[]; #endif #endif drivers/gpu/drm/nouveau/nouveau_abi16.c +1 −1 Original line number Original line Diff line number Diff line Loading @@ -215,7 +215,7 @@ nouveau_abi16_ioctl_getparam(ABI16_IOCTL_ARGS) getparam->value = 1; getparam->value = 1; break; break; case NOUVEAU_GETPARAM_GRAPH_UNITS: case NOUVEAU_GETPARAM_GRAPH_UNITS: getparam->value = gr->units ? gr->units(gr) : 0; getparam->value = nvkm_gr_units(gr); break; break; default: default: NV_PRINTK(dbg, cli, "unknown parameter %lld\n", getparam->param); NV_PRINTK(dbg, cli, "unknown parameter %lld\n", getparam->param); Loading drivers/gpu/drm/nouveau/nouveau_bo.c +2 −1 Original line number Original line Diff line number Diff line Loading @@ -48,7 +48,8 @@ nv10_bo_update_tile_region(struct drm_device *dev, struct nouveau_drm_tile *reg, { { struct nouveau_drm *drm = nouveau_drm(dev); struct nouveau_drm *drm = nouveau_drm(dev); int i = reg - drm->tile.reg; int i = reg - drm->tile.reg; struct nvkm_fb *fb = nvxx_fb(&drm->device); struct nvkm_device *device = nvxx_device(&drm->device); struct nvkm_fb *fb = device->fb; struct nvkm_fb_tile *tile = &fb->tile.region[i]; struct nvkm_fb_tile *tile = &fb->tile.region[i]; nouveau_fence_unref(®->fence); nouveau_fence_unref(®->fence); Loading drivers/gpu/drm/nouveau/nvkm/core/engine.c +14 −1 Original line number Original line Diff line number Diff line Loading @@ -25,6 +25,8 @@ #include <core/device.h> #include <core/device.h> #include <core/option.h> #include <core/option.h> #include <subdev/fb.h> void void nvkm_engine_unref(struct nvkm_engine **pengine) nvkm_engine_unref(struct nvkm_engine **pengine) { { Loading Loading @@ -56,6 +58,14 @@ nvkm_engine_ref(struct nvkm_engine *engine) return engine; return engine; } } void nvkm_engine_tile(struct nvkm_engine *engine, int region) { struct nvkm_fb *fb = engine->subdev.device->fb; if (engine->func->tile) engine->func->tile(engine, region, &fb->tile.region[region]); } static void static void nvkm_engine_intr(struct nvkm_subdev *obj) nvkm_engine_intr(struct nvkm_subdev *obj) { { Loading @@ -80,7 +90,8 @@ nvkm_engine_init(struct nvkm_subdev *obj) { { struct nvkm_engine *engine = container_of(obj, typeof(*engine), subdev); struct nvkm_engine *engine = container_of(obj, typeof(*engine), subdev); struct nvkm_subdev *subdev = &engine->subdev; struct nvkm_subdev *subdev = &engine->subdev; int ret = 0; struct nvkm_fb *fb = subdev->device->fb; int ret = 0, i; s64 time; s64 time; if (!engine->usecount) { if (!engine->usecount) { Loading Loading @@ -108,6 +119,8 @@ nvkm_engine_init(struct nvkm_subdev *obj) if (engine->func->init) if (engine->func->init) ret = engine->func->init(engine); ret = engine->func->init(engine); for (i = 0; fb && i < fb->tile.regions; i++) nvkm_engine_tile(engine, i); return ret; return ret; } } Loading Loading
drivers/gpu/drm/nouveau/include/nvkm/core/engine.h +3 −1 Original line number Original line Diff line number Diff line Loading @@ -3,6 +3,7 @@ #include <core/subdev.h> #include <core/subdev.h> struct nvkm_device_oclass; /*XXX: DEV!ENG */ struct nvkm_device_oclass; /*XXX: DEV!ENG */ struct nvkm_fifo_chan; struct nvkm_fifo_chan; struct nvkm_fb_tile; #define NV_ENGINE_(eng,var) (((var) << 8) | (eng)) #define NV_ENGINE_(eng,var) (((var) << 8) | (eng)) #define NV_ENGINE(name,var) NV_ENGINE_(NVDEV_ENGINE_##name, (var)) #define NV_ENGINE(name,var) NV_ENGINE_(NVDEV_ENGINE_##name, (var)) Loading @@ -20,7 +21,6 @@ struct nvkm_engine { spinlock_t lock; spinlock_t lock; void (*tile_prog)(struct nvkm_engine *, int region); void (*tile_prog)(struct nvkm_engine *, int region); int (*tlb_flush)(struct nvkm_engine *); }; }; struct nvkm_engine_func { struct nvkm_engine_func { Loading @@ -29,6 +29,7 @@ struct nvkm_engine_func { int (*init)(struct nvkm_engine *); int (*init)(struct nvkm_engine *); int (*fini)(struct nvkm_engine *, bool suspend); int (*fini)(struct nvkm_engine *, bool suspend); void (*intr)(struct nvkm_engine *); void (*intr)(struct nvkm_engine *); void (*tile)(struct nvkm_engine *, int region, struct nvkm_fb_tile *); struct { struct { int (*sclass)(struct nvkm_oclass *, int index, int (*sclass)(struct nvkm_oclass *, int index, Loading @@ -54,6 +55,7 @@ int nvkm_engine_new_(const struct nvkm_engine_func *, struct nvkm_device *, struct nvkm_engine **); struct nvkm_engine **); struct nvkm_engine *nvkm_engine_ref(struct nvkm_engine *); struct nvkm_engine *nvkm_engine_ref(struct nvkm_engine *); void nvkm_engine_unref(struct nvkm_engine **); void nvkm_engine_unref(struct nvkm_engine **); void nvkm_engine_tile(struct nvkm_engine *, int region); static inline struct nvkm_engine * static inline struct nvkm_engine * nv_engine(void *obj) nv_engine(void *obj) Loading
drivers/gpu/drm/nouveau/include/nvkm/engine/gr.h +37 −57 Original line number Original line Diff line number Diff line Loading @@ -3,64 +3,44 @@ #include <core/engine.h> #include <core/engine.h> struct nvkm_gr { struct nvkm_gr { struct nvkm_engine engine; const struct nvkm_gr_func *func; const struct nvkm_gr_func *func; struct nvkm_engine engine; /* Returns chipset-specific counts of units packed into an u64. */ u64 (*units)(struct nvkm_gr *); }; }; #define nvkm_gr_create(p,e,c,y,d) \ u64 nvkm_gr_units(struct nvkm_gr *); nvkm_gr_create_((p), (e), (c), (y), sizeof(**d), (void **)(d)) int nvkm_gr_tlb_flush(struct nvkm_gr *); int nvkm_gr_create_(struct nvkm_object *parent, struct nvkm_object *engine, int nv04_gr_new(struct nvkm_device *, int, struct nvkm_gr **); struct nvkm_oclass *oclass, bool enable, int nv10_gr_new(struct nvkm_device *, int, struct nvkm_gr **); int length, void **pobject); int nv15_gr_new(struct nvkm_device *, int, struct nvkm_gr **); #define nvkm_gr_destroy(d) \ int nv17_gr_new(struct nvkm_device *, int, struct nvkm_gr **); nvkm_engine_destroy(&(d)->engine) int nv20_gr_new(struct nvkm_device *, int, struct nvkm_gr **); #define nvkm_gr_init(d) \ int nv25_gr_new(struct nvkm_device *, int, struct nvkm_gr **); nvkm_engine_init_old(&(d)->engine) int nv2a_gr_new(struct nvkm_device *, int, struct nvkm_gr **); #define nvkm_gr_fini(d,s) \ int nv30_gr_new(struct nvkm_device *, int, struct nvkm_gr **); nvkm_engine_fini_old(&(d)->engine, (s)) int nv34_gr_new(struct nvkm_device *, int, struct nvkm_gr **); int nv35_gr_new(struct nvkm_device *, int, struct nvkm_gr **); #define _nvkm_gr_dtor _nvkm_engine_dtor int nv40_gr_new(struct nvkm_device *, int, struct nvkm_gr **); #define _nvkm_gr_init _nvkm_engine_init int nv44_gr_new(struct nvkm_device *, int, struct nvkm_gr **); #define _nvkm_gr_fini _nvkm_engine_fini int nv50_gr_new(struct nvkm_device *, int, struct nvkm_gr **); int g84_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass nv04_gr_oclass; int gt200_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass nv10_gr_oclass; int mcp79_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass nv20_gr_oclass; int gt215_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass nv25_gr_oclass; int mcp89_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass nv2a_gr_oclass; int gf100_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass nv30_gr_oclass; int gf104_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass nv34_gr_oclass; int gf108_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass nv35_gr_oclass; int gf110_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass nv40_gr_oclass; int gf117_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass nv50_gr_oclass; int gf119_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass *gf100_gr_oclass; int gk104_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass *gf108_gr_oclass; int gk110_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass *gf104_gr_oclass; int gk110b_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass *gf110_gr_oclass; int gk208_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass *gf117_gr_oclass; int gk20a_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass *gf119_gr_oclass; int gm107_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass *gk104_gr_oclass; int gm204_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass *gk20a_gr_oclass; int gm206_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass *gk110_gr_oclass; int gm20b_gr_new(struct nvkm_device *, int, struct nvkm_gr **); extern struct nvkm_oclass *gk110b_gr_oclass; extern struct nvkm_oclass *gk208_gr_oclass; extern struct nvkm_oclass *gm107_gr_oclass; extern struct nvkm_oclass *gm204_gr_oclass; extern struct nvkm_oclass *gm206_gr_oclass; extern struct nvkm_oclass *gm20b_gr_oclass; #include <core/enum.h> extern const struct nvkm_bitfield nv04_gr_nsource[]; bool nv04_gr_idle(struct nvkm_gr *); extern const struct nvkm_bitfield nv10_gr_intr_name[]; extern const struct nvkm_bitfield nv10_gr_nstatus[]; extern const struct nvkm_enum nv50_data_error_names[]; #endif #endif
drivers/gpu/drm/nouveau/nouveau_abi16.c +1 −1 Original line number Original line Diff line number Diff line Loading @@ -215,7 +215,7 @@ nouveau_abi16_ioctl_getparam(ABI16_IOCTL_ARGS) getparam->value = 1; getparam->value = 1; break; break; case NOUVEAU_GETPARAM_GRAPH_UNITS: case NOUVEAU_GETPARAM_GRAPH_UNITS: getparam->value = gr->units ? gr->units(gr) : 0; getparam->value = nvkm_gr_units(gr); break; break; default: default: NV_PRINTK(dbg, cli, "unknown parameter %lld\n", getparam->param); NV_PRINTK(dbg, cli, "unknown parameter %lld\n", getparam->param); Loading
drivers/gpu/drm/nouveau/nouveau_bo.c +2 −1 Original line number Original line Diff line number Diff line Loading @@ -48,7 +48,8 @@ nv10_bo_update_tile_region(struct drm_device *dev, struct nouveau_drm_tile *reg, { { struct nouveau_drm *drm = nouveau_drm(dev); struct nouveau_drm *drm = nouveau_drm(dev); int i = reg - drm->tile.reg; int i = reg - drm->tile.reg; struct nvkm_fb *fb = nvxx_fb(&drm->device); struct nvkm_device *device = nvxx_device(&drm->device); struct nvkm_fb *fb = device->fb; struct nvkm_fb_tile *tile = &fb->tile.region[i]; struct nvkm_fb_tile *tile = &fb->tile.region[i]; nouveau_fence_unref(®->fence); nouveau_fence_unref(®->fence); Loading
drivers/gpu/drm/nouveau/nvkm/core/engine.c +14 −1 Original line number Original line Diff line number Diff line Loading @@ -25,6 +25,8 @@ #include <core/device.h> #include <core/device.h> #include <core/option.h> #include <core/option.h> #include <subdev/fb.h> void void nvkm_engine_unref(struct nvkm_engine **pengine) nvkm_engine_unref(struct nvkm_engine **pengine) { { Loading Loading @@ -56,6 +58,14 @@ nvkm_engine_ref(struct nvkm_engine *engine) return engine; return engine; } } void nvkm_engine_tile(struct nvkm_engine *engine, int region) { struct nvkm_fb *fb = engine->subdev.device->fb; if (engine->func->tile) engine->func->tile(engine, region, &fb->tile.region[region]); } static void static void nvkm_engine_intr(struct nvkm_subdev *obj) nvkm_engine_intr(struct nvkm_subdev *obj) { { Loading @@ -80,7 +90,8 @@ nvkm_engine_init(struct nvkm_subdev *obj) { { struct nvkm_engine *engine = container_of(obj, typeof(*engine), subdev); struct nvkm_engine *engine = container_of(obj, typeof(*engine), subdev); struct nvkm_subdev *subdev = &engine->subdev; struct nvkm_subdev *subdev = &engine->subdev; int ret = 0; struct nvkm_fb *fb = subdev->device->fb; int ret = 0, i; s64 time; s64 time; if (!engine->usecount) { if (!engine->usecount) { Loading Loading @@ -108,6 +119,8 @@ nvkm_engine_init(struct nvkm_subdev *obj) if (engine->func->init) if (engine->func->init) ret = engine->func->init(engine); ret = engine->func->init(engine); for (i = 0; fb && i < fb->tile.regions; i++) nvkm_engine_tile(engine, i); return ret; return ret; } } Loading