2013-03-05 10:53:54 +10:00
|
|
|
#ifndef __NVKM_DEVINIT_PRIV_H__
|
|
|
|
#define __NVKM_DEVINIT_PRIV_H__
|
|
|
|
#include <subdev/devinit.h>
|
|
|
|
|
2015-01-14 14:48:16 +10:00
|
|
|
struct nvkm_devinit_impl {
|
|
|
|
struct nvkm_oclass base;
|
|
|
|
void (*meminit)(struct nvkm_devinit *);
|
|
|
|
int (*pll_set)(struct nvkm_devinit *, u32 type, u32 freq);
|
|
|
|
u64 (*disable)(struct nvkm_devinit *);
|
|
|
|
u32 (*mmio)(struct nvkm_devinit *, u32);
|
|
|
|
int (*post)(struct nvkm_subdev *, bool);
|
2013-03-05 10:53:54 +10:00
|
|
|
};
|
|
|
|
|
2015-01-14 14:48:16 +10:00
|
|
|
#define nvkm_devinit_create(p,e,o,d) \
|
|
|
|
nvkm_devinit_create_((p), (e), (o), sizeof(**d), (void **)d)
|
|
|
|
#define nvkm_devinit_destroy(p) ({ \
|
|
|
|
struct nvkm_devinit *d = (p); \
|
|
|
|
_nvkm_devinit_dtor(nv_object(d)); \
|
2014-01-19 04:18:15 -05:00
|
|
|
})
|
2015-01-14 14:48:16 +10:00
|
|
|
#define nvkm_devinit_init(p) ({ \
|
|
|
|
struct nvkm_devinit *d = (p); \
|
|
|
|
_nvkm_devinit_init(nv_object(d)); \
|
2014-01-14 15:55:38 +10:00
|
|
|
})
|
2015-01-14 14:48:16 +10:00
|
|
|
#define nvkm_devinit_fini(p,s) ({ \
|
|
|
|
struct nvkm_devinit *d = (p); \
|
|
|
|
_nvkm_devinit_fini(nv_object(d), (s)); \
|
2014-01-14 15:55:38 +10:00
|
|
|
})
|
|
|
|
|
2015-01-14 14:48:16 +10:00
|
|
|
int nvkm_devinit_create_(struct nvkm_object *, struct nvkm_object *,
|
|
|
|
struct nvkm_oclass *, int, void **);
|
|
|
|
void _nvkm_devinit_dtor(struct nvkm_object *);
|
|
|
|
int _nvkm_devinit_init(struct nvkm_object *);
|
|
|
|
int _nvkm_devinit_fini(struct nvkm_object *, bool suspend);
|
2013-03-05 10:53:54 +10:00
|
|
|
#endif
|