drm/nouveau/subdev: always upcast through nouveau_subdev()/nouveau_engine()
authorBen Skeggs <bskeggs@redhat.com>
Wed, 3 Dec 2014 07:07:22 +0000 (17:07 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Thu, 22 Jan 2015 02:14:42 +0000 (12:14 +1000)
Has additional safeties for one.  For two, needed for an upcoming
commit that removes abuse of nouveau_object.engine.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
23 files changed:
drivers/gpu/drm/nouveau/core/include/engine/disp.h
drivers/gpu/drm/nouveau/core/include/engine/fifo.h
drivers/gpu/drm/nouveau/core/include/engine/graph.h
drivers/gpu/drm/nouveau/core/include/engine/perfmon.h
drivers/gpu/drm/nouveau/core/include/subdev/bar.h
drivers/gpu/drm/nouveau/core/include/subdev/bios.h
drivers/gpu/drm/nouveau/core/include/subdev/bus.h
drivers/gpu/drm/nouveau/core/include/subdev/clock.h
drivers/gpu/drm/nouveau/core/include/subdev/devinit.h
drivers/gpu/drm/nouveau/core/include/subdev/fb.h
drivers/gpu/drm/nouveau/core/include/subdev/fuse.h
drivers/gpu/drm/nouveau/core/include/subdev/gpio.h
drivers/gpu/drm/nouveau/core/include/subdev/i2c.h
drivers/gpu/drm/nouveau/core/include/subdev/ibus.h
drivers/gpu/drm/nouveau/core/include/subdev/instmem.h
drivers/gpu/drm/nouveau/core/include/subdev/ltc.h
drivers/gpu/drm/nouveau/core/include/subdev/mc.h
drivers/gpu/drm/nouveau/core/include/subdev/mxm.h
drivers/gpu/drm/nouveau/core/include/subdev/pwr.h
drivers/gpu/drm/nouveau/core/include/subdev/therm.h
drivers/gpu/drm/nouveau/core/include/subdev/timer.h
drivers/gpu/drm/nouveau/core/include/subdev/vm.h
drivers/gpu/drm/nouveau/core/include/subdev/volt.h

index fc307f1..626508d 100644 (file)
@@ -18,7 +18,7 @@ struct nouveau_disp {
 static inline struct nouveau_disp *
 nouveau_disp(void *obj)
 {
-       return (void *)nv_device(obj)->subdev[NVDEV_ENGINE_DISP];
+       return (void *)nouveau_engine(obj, NVDEV_ENGINE_DISP);
 }
 
 extern struct nouveau_oclass *nv04_disp_oclass;
index 2007453..c52b939 100644 (file)
@@ -85,7 +85,7 @@ struct nouveau_fifo {
 static inline struct nouveau_fifo *
 nouveau_fifo(void *obj)
 {
-       return (void *)nv_device(obj)->subdev[NVDEV_ENGINE_FIFO];
+       return (void *)nouveau_engine(obj, NVDEV_ENGINE_FIFO);
 }
 
 #define nouveau_fifo_create(o,e,c,fc,lc,d)                                     \
index d505557..d61dcb7 100644 (file)
@@ -35,7 +35,7 @@ struct nouveau_graph {
 static inline struct nouveau_graph *
 nouveau_graph(void *obj)
 {
-       return (void *)nv_device(obj)->subdev[NVDEV_ENGINE_GR];
+       return (void *)nouveau_engine(obj, NVDEV_ENGINE_GR);
 }
 
 #define nouveau_graph_create(p,e,c,y,d)                                        \
index 88cc812..251c854 100644 (file)
@@ -24,7 +24,7 @@ struct nouveau_perfmon {
 static inline struct nouveau_perfmon *
 nouveau_perfmon(void *obj)
 {
-       return (void *)nv_device(obj)->subdev[NVDEV_ENGINE_PERFMON];
+       return (void *)nouveau_engine(obj, NVDEV_ENGINE_PERFMON);
 }
 
 extern struct nouveau_oclass *nv40_perfmon_oclass;
index 257ddf6..960e33a 100644 (file)
@@ -27,7 +27,7 @@ struct nouveau_bar {
 static inline struct nouveau_bar *
 nouveau_bar(void *obj)
 {
-       return (void *)nv_device(obj)->subdev[NVDEV_SUBDEV_BAR];
+       return (void *)nouveau_subdev(obj, NVDEV_SUBDEV_BAR);
 }
 
 extern struct nouveau_oclass nv50_bar_oclass;
index 5bd1ca8..39528a9 100644 (file)
@@ -24,7 +24,7 @@ struct nouveau_bios {
 static inline struct nouveau_bios *
 nouveau_bios(void *obj)
 {
-       return (void *)nv_device(obj)->subdev[NVDEV_SUBDEV_VBIOS];
+       return (void *)nouveau_subdev(obj, NVDEV_SUBDEV_VBIOS);
 }
 
 u8  nvbios_checksum(const u8 *data, int size);
index 697f7ce..2d40f0c 100644 (file)
@@ -18,7 +18,7 @@ struct nouveau_bus {
 static inline struct nouveau_bus *
 nouveau_bus(void *obj)
 {
-       return (void *)nv_device(obj)->subdev[NVDEV_SUBDEV_BUS];
+       return (void *)nouveau_subdev(obj, NVDEV_SUBDEV_BUS);
 }
 
 #define nouveau_bus_create(p, e, o, d)                                         \
index 36ed035..0fd5e4a 100644 (file)
@@ -104,7 +104,7 @@ struct nouveau_clock {
 static inline struct nouveau_clock *
 nouveau_clock(void *obj)
 {
-       return (void *)nv_device(obj)->subdev[NVDEV_SUBDEV_CLOCK];
+       return (void *)nouveau_subdev(obj, NVDEV_SUBDEV_CLOCK);
 }
 
 struct nouveau_clocks {
index e007a9d..b627d53 100644 (file)
@@ -15,7 +15,7 @@ struct nouveau_devinit {
 static inline struct nouveau_devinit *
 nouveau_devinit(void *obj)
 {
-       return (void *)nv_device(obj)->subdev[NVDEV_SUBDEV_DEVINIT];
+       return (void *)nouveau_subdev(obj, NVDEV_SUBDEV_DEVINIT);
 }
 
 extern struct nouveau_oclass *nv04_devinit_oclass;
index 8d0032f..889603f 100644 (file)
@@ -80,7 +80,7 @@ nouveau_fb(void *obj)
            nv_subidx(obj) == NVDEV_SUBDEV_FB)
                return obj;
 
-       return (void *)nv_device(obj)->subdev[NVDEV_SUBDEV_FB];
+       return (void *)nouveau_subdev(obj, NVDEV_SUBDEV_FB);
 }
 
 extern struct nouveau_oclass *nv04_fb_oclass;
index 2b1ddb2..cc6b02f 100644 (file)
@@ -11,7 +11,7 @@ struct nouveau_fuse {
 static inline struct nouveau_fuse *
 nouveau_fuse(void *obj)
 {
-       return (void *)nv_device(obj)->subdev[NVDEV_SUBDEV_FUSE];
+       return (void *)nouveau_subdev(obj, NVDEV_SUBDEV_FUSE);
 }
 
 #define nouveau_fuse_create(p, e, o, d)                                        \
index f855140..8b60c5d 100644 (file)
@@ -35,7 +35,7 @@ struct nouveau_gpio {
 static inline struct nouveau_gpio *
 nouveau_gpio(void *obj)
 {
-       return (void *)nv_device(obj)->subdev[NVDEV_SUBDEV_GPIO];
+       return (void *)nouveau_subdev(obj, NVDEV_SUBDEV_GPIO);
 }
 
 extern struct nouveau_oclass *nv10_gpio_oclass;
index d94ccac..a400e67 100644 (file)
@@ -81,7 +81,7 @@ struct nouveau_i2c {
 static inline struct nouveau_i2c *
 nouveau_i2c(void *obj)
 {
-       return (void *)nv_device(obj)->subdev[NVDEV_SUBDEV_I2C];
+       return (void *)nouveau_subdev(obj, NVDEV_SUBDEV_I2C);
 }
 
 extern struct nouveau_oclass *nv04_i2c_oclass;
index 31df634..b6387d2 100644 (file)
@@ -11,7 +11,7 @@ struct nouveau_ibus {
 static inline struct nouveau_ibus *
 nouveau_ibus(void *obj)
 {
-       return (void *)nv_device(obj)->subdev[NVDEV_SUBDEV_IBUS];
+       return (void *)nouveau_subdev(obj, NVDEV_SUBDEV_IBUS);
 }
 
 #define nouveau_ibus_create(p,e,o,d)                                           \
index c1df26f..4953e6c 100644 (file)
@@ -42,7 +42,7 @@ nouveau_instmem(void *obj)
            nv_subidx(obj) == NVDEV_SUBDEV_INSTMEM)
                return obj;
 
-       return (void *)nv_device(obj)->subdev[NVDEV_SUBDEV_INSTMEM];
+       return (void *)nouveau_subdev(obj, NVDEV_SUBDEV_INSTMEM);
 }
 
 extern struct nouveau_oclass *nv04_instmem_oclass;
index b909a73..432717a 100644 (file)
@@ -25,7 +25,7 @@ struct nouveau_ltc {
 static inline struct nouveau_ltc *
 nouveau_ltc(void *obj)
 {
-       return (void *)nv_device(obj)->subdev[NVDEV_SUBDEV_LTC];
+       return (void *)nouveau_subdev(obj, NVDEV_SUBDEV_LTC);
 }
 
 extern struct nouveau_oclass *gf100_ltc_oclass;
index 568e4df..af7926f 100644 (file)
@@ -14,7 +14,7 @@ struct nouveau_mc {
 static inline struct nouveau_mc *
 nouveau_mc(void *obj)
 {
-       return (void *)nv_device(obj)->subdev[NVDEV_SUBDEV_MC];
+       return (void *)nouveau_subdev(obj, NVDEV_SUBDEV_MC);
 }
 
 extern struct nouveau_oclass *nv04_mc_oclass;
index b93b152..94b8af2 100644 (file)
@@ -15,7 +15,7 @@ struct nouveau_mxm {
 static inline struct nouveau_mxm *
 nouveau_mxm(void *obj)
 {
-       return (void *)nv_device(obj)->subdev[NVDEV_SUBDEV_MXM];
+       return (void *)nouveau_subdev(obj, NVDEV_SUBDEV_MXM);
 }
 
 #define nouveau_mxm_create(p,e,o,d)                                            \
index f2427bf..ef57c85 100644 (file)
@@ -30,7 +30,7 @@ struct nouveau_pwr {
 static inline struct nouveau_pwr *
 nouveau_pwr(void *obj)
 {
-       return (void *)nv_device(obj)->subdev[NVDEV_SUBDEV_PWR];
+       return (void *)nouveau_subdev(obj, NVDEV_SUBDEV_PWR);
 }
 
 extern struct nouveau_oclass *nva3_pwr_oclass;
index a437597..42f9574 100644 (file)
@@ -47,7 +47,7 @@ struct nouveau_therm {
 static inline struct nouveau_therm *
 nouveau_therm(void *obj)
 {
-       return (void *)nv_device(obj)->subdev[NVDEV_SUBDEV_THERM];
+       return (void *)nouveau_subdev(obj, NVDEV_SUBDEV_THERM);
 }
 
 #define nouveau_therm_create(p,e,o,d)                                          \
index db9be80..36b5184 100644 (file)
@@ -42,7 +42,7 @@ struct nouveau_timer {
 static inline struct nouveau_timer *
 nouveau_timer(void *obj)
 {
-       return (void *)nv_device(obj)->subdev[NVDEV_SUBDEV_TIMER];
+       return (void *)nouveau_subdev(obj, NVDEV_SUBDEV_TIMER);
 }
 
 #define nouveau_timer_create(p,e,o,d)                                          \
index c950903..d56585f 100644 (file)
@@ -91,7 +91,7 @@ struct nouveau_vmmgr {
 static inline struct nouveau_vmmgr *
 nouveau_vmmgr(void *obj)
 {
-       return (void *)nv_device(obj)->subdev[NVDEV_SUBDEV_VM];
+       return (void *)nouveau_subdev(obj, NVDEV_SUBDEV_VM);
 }
 
 #define nouveau_vmmgr_create(p,e,o,i,f,d)                                      \
index 67db5e5..13e9a83 100644 (file)
@@ -29,7 +29,7 @@ struct nouveau_volt {
 static inline struct nouveau_volt *
 nouveau_volt(void *obj)
 {
-       return (void *)nv_device(obj)->subdev[NVDEV_SUBDEV_VOLT];
+       return (void *)nouveau_subdev(obj, NVDEV_SUBDEV_VOLT);
 }
 
 #define nouveau_volt_create(p, e, o, d)                                        \