From: Ben Skeggs Date: Thu, 20 Aug 2015 04:54:13 +0000 (+1000) Subject: drm/nouveau/fuse: remove object accessor functions X-Git-Tag: v4.3-rc1~75^2~11^2~131 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=7e24c1145a9176fb9c9b81b3a0f0703598b1445c;p=karo-tx-linux.git drm/nouveau/fuse: remove object accessor functions Signed-off-by: Ben Skeggs --- diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/fuse.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/fuse.h index ebfb6aa2a855..570a35356ff5 100644 --- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/fuse.h +++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/fuse.h @@ -5,6 +5,11 @@ struct nvkm_fuse { struct nvkm_subdev subdev; + const struct nvkm_fuse_func *func; +}; + +struct nvkm_fuse_func { + u32 (*read)(struct nvkm_fuse *, u32 addr); }; static inline struct nvkm_fuse * diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/fuse/gf100.c b/drivers/gpu/drm/nouveau/nvkm/subdev/fuse/gf100.c index e9d432424071..4e94cb94430c 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/fuse/gf100.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/fuse/gf100.c @@ -30,9 +30,9 @@ struct gf100_fuse { }; static u32 -gf100_fuse_rd32(struct nvkm_object *object, u64 addr) +gf100_fuse_read(struct nvkm_fuse *obj, u32 addr) { - struct gf100_fuse *fuse = (void *)object; + struct gf100_fuse *fuse = container_of(obj, typeof(*fuse), base); struct nvkm_device *device = fuse->base.subdev.device; unsigned long flags; u32 fuse_enable, unk, val; @@ -48,6 +48,10 @@ gf100_fuse_rd32(struct nvkm_object *object, u64 addr) return val; } +static const struct nvkm_fuse_func +gf100_fuse_func = { + .read = gf100_fuse_read, +}; static int gf100_fuse_ctor(struct nvkm_object *parent, struct nvkm_object *engine, @@ -63,6 +67,7 @@ gf100_fuse_ctor(struct nvkm_object *parent, struct nvkm_object *engine, return ret; spin_lock_init(&fuse->fuse_enable_lock); + fuse->base.func = &gf100_fuse_func; return 0; } @@ -74,6 +79,5 @@ gf100_fuse_oclass = { .dtor = _nvkm_fuse_dtor, .init = _nvkm_fuse_init, .fini = _nvkm_fuse_fini, - .rd32 = gf100_fuse_rd32, }, }; diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/fuse/gm107.c b/drivers/gpu/drm/nouveau/nvkm/subdev/fuse/gm107.c index 94594ac9990b..bb1101e12148 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/fuse/gm107.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/fuse/gm107.c @@ -24,13 +24,16 @@ #include "priv.h" static u32 -gm107_fuse_rd32(struct nvkm_object *object, u64 addr) +gm107_fuse_read(struct nvkm_fuse *fuse, u32 addr) { - struct nvkm_fuse *fuse = (void *)object; struct nvkm_device *device = fuse->subdev.device; return nvkm_rd32(device, 0x21100 + addr); } +static const struct nvkm_fuse_func +gm107_fuse_func = { + .read = gm107_fuse_read, +}; static int gm107_fuse_ctor(struct nvkm_object *parent, struct nvkm_object *engine, @@ -43,6 +46,7 @@ gm107_fuse_ctor(struct nvkm_object *parent, struct nvkm_object *engine, ret = nvkm_fuse_create(parent, engine, oclass, &fuse); *pobject = nv_object(fuse); + fuse->func = &gm107_fuse_func; return ret; } @@ -54,6 +58,5 @@ gm107_fuse_oclass = { .dtor = _nvkm_fuse_dtor, .init = _nvkm_fuse_init, .fini = _nvkm_fuse_fini, - .rd32 = gm107_fuse_rd32, }, }; diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/fuse/nv50.c b/drivers/gpu/drm/nouveau/nvkm/subdev/fuse/nv50.c index c47abfa98809..ee76268ae702 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/fuse/nv50.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/fuse/nv50.c @@ -30,9 +30,9 @@ struct nv50_fuse { }; static u32 -nv50_fuse_rd32(struct nvkm_object *object, u64 addr) +nv50_fuse_read(struct nvkm_fuse *obj, u32 addr) { - struct nv50_fuse *fuse = (void *)object; + struct nv50_fuse *fuse = container_of(obj, typeof(*fuse), base); struct nvkm_device *device = fuse->base.subdev.device; unsigned long flags; u32 fuse_enable, val; @@ -46,6 +46,10 @@ nv50_fuse_rd32(struct nvkm_object *object, u64 addr) return val; } +static const struct nvkm_fuse_func +nv50_fuse_func = { + .read = &nv50_fuse_read, +}; static int nv50_fuse_ctor(struct nvkm_object *parent, struct nvkm_object *engine, @@ -61,6 +65,7 @@ nv50_fuse_ctor(struct nvkm_object *parent, struct nvkm_object *engine, return ret; spin_lock_init(&fuse->fuse_enable_lock); + fuse->base.func = &nv50_fuse_func; return 0; } @@ -72,6 +77,5 @@ nv50_fuse_oclass = { .dtor = _nvkm_fuse_dtor, .init = _nvkm_fuse_init, .fini = _nvkm_fuse_fini, - .rd32 = nv50_fuse_rd32, }, }; diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/therm/g84.c b/drivers/gpu/drm/nouveau/nvkm/subdev/therm/g84.c index a1da856d5103..aea79d7201bd 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/therm/g84.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/therm/g84.c @@ -32,7 +32,7 @@ g84_temp_get(struct nvkm_therm *therm) struct nvkm_device *device = therm->subdev.device; struct nvkm_fuse *fuse = nvkm_fuse(therm); - if (nv_ro32(fuse, 0x1a8) == 1) + if (fuse->func->read(fuse, 0x1a8) == 1) return nvkm_rd32(device, 0x20400); else return -ENODEV; @@ -45,7 +45,7 @@ g84_sensor_setup(struct nvkm_therm *therm) struct nvkm_fuse *fuse = nvkm_fuse(therm); /* enable temperature reading for cards with insane defaults */ - if (nv_ro32(fuse, 0x1a8) == 1) { + if (fuse->func->read(fuse, 0x1a8) == 1) { nvkm_mask(device, 0x20008, 0x80008000, 0x80000000); nvkm_mask(device, 0x2000c, 0x80000003, 0x00000000); mdelay(20); /* wait for the temperature to stabilize */