Commit 2f4a58e8 authored by Ben Skeggs's avatar Ben Skeggs

drm/nouveau/subdev: always upcast through nouveau_subdev()/nouveau_engine()

Has additional safeties for one.  For two, needed for an upcoming
commit that removes abuse of nouveau_object.engine.
Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 4534a2af
...@@ -18,7 +18,7 @@ struct nouveau_disp { ...@@ -18,7 +18,7 @@ struct nouveau_disp {
static inline struct nouveau_disp * static inline struct nouveau_disp *
nouveau_disp(void *obj) 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; extern struct nouveau_oclass *nv04_disp_oclass;
......
...@@ -85,7 +85,7 @@ struct nouveau_fifo { ...@@ -85,7 +85,7 @@ struct nouveau_fifo {
static inline struct nouveau_fifo * static inline struct nouveau_fifo *
nouveau_fifo(void *obj) 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) \ #define nouveau_fifo_create(o,e,c,fc,lc,d) \
......
...@@ -35,7 +35,7 @@ struct nouveau_graph { ...@@ -35,7 +35,7 @@ struct nouveau_graph {
static inline struct nouveau_graph * static inline struct nouveau_graph *
nouveau_graph(void *obj) 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) \ #define nouveau_graph_create(p,e,c,y,d) \
......
...@@ -24,7 +24,7 @@ struct nouveau_perfmon { ...@@ -24,7 +24,7 @@ struct nouveau_perfmon {
static inline struct nouveau_perfmon * static inline struct nouveau_perfmon *
nouveau_perfmon(void *obj) 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; extern struct nouveau_oclass *nv40_perfmon_oclass;
......
...@@ -27,7 +27,7 @@ struct nouveau_bar { ...@@ -27,7 +27,7 @@ struct nouveau_bar {
static inline struct nouveau_bar * static inline struct nouveau_bar *
nouveau_bar(void *obj) 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; extern struct nouveau_oclass nv50_bar_oclass;
......
...@@ -24,7 +24,7 @@ struct nouveau_bios { ...@@ -24,7 +24,7 @@ struct nouveau_bios {
static inline struct nouveau_bios * static inline struct nouveau_bios *
nouveau_bios(void *obj) 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); u8 nvbios_checksum(const u8 *data, int size);
......
...@@ -18,7 +18,7 @@ struct nouveau_bus { ...@@ -18,7 +18,7 @@ struct nouveau_bus {
static inline struct nouveau_bus * static inline struct nouveau_bus *
nouveau_bus(void *obj) 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) \ #define nouveau_bus_create(p, e, o, d) \
......
...@@ -104,7 +104,7 @@ struct nouveau_clock { ...@@ -104,7 +104,7 @@ struct nouveau_clock {
static inline struct nouveau_clock * static inline struct nouveau_clock *
nouveau_clock(void *obj) nouveau_clock(void *obj)
{ {
return (void *)nv_device(obj)->subdev[NVDEV_SUBDEV_CLOCK]; return (void *)nouveau_subdev(obj, NVDEV_SUBDEV_CLOCK);
} }
struct nouveau_clocks { struct nouveau_clocks {
......
...@@ -15,7 +15,7 @@ struct nouveau_devinit { ...@@ -15,7 +15,7 @@ struct nouveau_devinit {
static inline struct nouveau_devinit * static inline struct nouveau_devinit *
nouveau_devinit(void *obj) 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; extern struct nouveau_oclass *nv04_devinit_oclass;
......
...@@ -80,7 +80,7 @@ nouveau_fb(void *obj) ...@@ -80,7 +80,7 @@ nouveau_fb(void *obj)
nv_subidx(obj) == NVDEV_SUBDEV_FB) nv_subidx(obj) == NVDEV_SUBDEV_FB)
return obj; 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; extern struct nouveau_oclass *nv04_fb_oclass;
......
...@@ -11,7 +11,7 @@ struct nouveau_fuse { ...@@ -11,7 +11,7 @@ struct nouveau_fuse {
static inline struct nouveau_fuse * static inline struct nouveau_fuse *
nouveau_fuse(void *obj) 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) \ #define nouveau_fuse_create(p, e, o, d) \
......
...@@ -35,7 +35,7 @@ struct nouveau_gpio { ...@@ -35,7 +35,7 @@ struct nouveau_gpio {
static inline struct nouveau_gpio * static inline struct nouveau_gpio *
nouveau_gpio(void *obj) 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; extern struct nouveau_oclass *nv10_gpio_oclass;
......
...@@ -81,7 +81,7 @@ struct nouveau_i2c { ...@@ -81,7 +81,7 @@ struct nouveau_i2c {
static inline struct nouveau_i2c * static inline struct nouveau_i2c *
nouveau_i2c(void *obj) 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; extern struct nouveau_oclass *nv04_i2c_oclass;
......
...@@ -11,7 +11,7 @@ struct nouveau_ibus { ...@@ -11,7 +11,7 @@ struct nouveau_ibus {
static inline struct nouveau_ibus * static inline struct nouveau_ibus *
nouveau_ibus(void *obj) 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) \ #define nouveau_ibus_create(p,e,o,d) \
......
...@@ -42,7 +42,7 @@ nouveau_instmem(void *obj) ...@@ -42,7 +42,7 @@ nouveau_instmem(void *obj)
nv_subidx(obj) == NVDEV_SUBDEV_INSTMEM) nv_subidx(obj) == NVDEV_SUBDEV_INSTMEM)
return obj; 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; extern struct nouveau_oclass *nv04_instmem_oclass;
......
...@@ -25,7 +25,7 @@ struct nouveau_ltc { ...@@ -25,7 +25,7 @@ struct nouveau_ltc {
static inline struct nouveau_ltc * static inline struct nouveau_ltc *
nouveau_ltc(void *obj) 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; extern struct nouveau_oclass *gf100_ltc_oclass;
......
...@@ -14,7 +14,7 @@ struct nouveau_mc { ...@@ -14,7 +14,7 @@ struct nouveau_mc {
static inline struct nouveau_mc * static inline struct nouveau_mc *
nouveau_mc(void *obj) 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; extern struct nouveau_oclass *nv04_mc_oclass;
......
...@@ -15,7 +15,7 @@ struct nouveau_mxm { ...@@ -15,7 +15,7 @@ struct nouveau_mxm {
static inline struct nouveau_mxm * static inline struct nouveau_mxm *
nouveau_mxm(void *obj) 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) \ #define nouveau_mxm_create(p,e,o,d) \
......
...@@ -30,7 +30,7 @@ struct nouveau_pwr { ...@@ -30,7 +30,7 @@ struct nouveau_pwr {
static inline struct nouveau_pwr * static inline struct nouveau_pwr *
nouveau_pwr(void *obj) 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; extern struct nouveau_oclass *nva3_pwr_oclass;
......
...@@ -47,7 +47,7 @@ struct nouveau_therm { ...@@ -47,7 +47,7 @@ struct nouveau_therm {
static inline struct nouveau_therm * static inline struct nouveau_therm *
nouveau_therm(void *obj) 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) \ #define nouveau_therm_create(p,e,o,d) \
......
...@@ -42,7 +42,7 @@ struct nouveau_timer { ...@@ -42,7 +42,7 @@ struct nouveau_timer {
static inline struct nouveau_timer * static inline struct nouveau_timer *
nouveau_timer(void *obj) 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) \ #define nouveau_timer_create(p,e,o,d) \
......
...@@ -91,7 +91,7 @@ struct nouveau_vmmgr { ...@@ -91,7 +91,7 @@ struct nouveau_vmmgr {
static inline struct nouveau_vmmgr * static inline struct nouveau_vmmgr *
nouveau_vmmgr(void *obj) 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) \ #define nouveau_vmmgr_create(p,e,o,i,f,d) \
......
...@@ -29,7 +29,7 @@ struct nouveau_volt { ...@@ -29,7 +29,7 @@ struct nouveau_volt {
static inline struct nouveau_volt * static inline struct nouveau_volt *
nouveau_volt(void *obj) 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) \ #define nouveau_volt_create(p, e, o, d) \
......
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