diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2015-01-13 22:40:51 +1000 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2015-01-19 14:23:00 +1000 |
commit | eb0f35923fb4119800c19f9843e7e4125804ee24 (patch) | |
tree | 9908bdf7643678b9936e247f668cf66471d4d6a4 /drm/nouveau/nvkm/engine/disp/priv.h | |
parent | 6ee2fc67c942941c74f594078cdb6f04f8512dbe (diff) | |
download | nouveau-eb0f35923fb4119800c19f9843e7e4125804ee24.tar.gz |
drm: remove symlinks from build, use Kbuild files for lib build
The DRM build used a separate, symlinked, source tree out of a desire
to avoid Kbuild/autotools' object files conflicting.
Not only is this very annoying to maintain, but it's made worse by
having two entirely separate source file lists to maintain too.
Fixes both these issues by ditching automake (it doesn't approve of
the kernel's Kbuild syntax) in favour of custom makefiles that can
build libnvif.so from the Kbuild files.
Like the previous commit, this will never show up in the kernel tree
(it has its own version).
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drm/nouveau/nvkm/engine/disp/priv.h')
-rw-r--r-- | drm/nouveau/nvkm/engine/disp/priv.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/drm/nouveau/nvkm/engine/disp/priv.h b/drm/nouveau/nvkm/engine/disp/priv.h new file mode 100644 index 000000000..6a0511d54 --- /dev/null +++ b/drm/nouveau/nvkm/engine/disp/priv.h @@ -0,0 +1,48 @@ +#ifndef __NVKM_DISP_PRIV_H__ +#define __NVKM_DISP_PRIV_H__ + +#include <subdev/bios.h> +#include <subdev/bios/dcb.h> +#include <subdev/bios/conn.h> + +#include <engine/disp.h> + +struct nouveau_disp_impl { + struct nouveau_oclass base; + struct nouveau_oclass **outp; + struct nouveau_oclass **conn; + const struct nvkm_event_func *vblank; +}; + +#define nouveau_disp_create(p,e,c,h,i,x,d) \ + nouveau_disp_create_((p), (e), (c), (h), (i), (x), \ + sizeof(**d), (void **)d) +#define nouveau_disp_destroy(d) ({ \ + struct nouveau_disp *disp = (d); \ + _nouveau_disp_dtor(nv_object(disp)); \ +}) +#define nouveau_disp_init(d) ({ \ + struct nouveau_disp *disp = (d); \ + _nouveau_disp_init(nv_object(disp)); \ +}) +#define nouveau_disp_fini(d,s) ({ \ + struct nouveau_disp *disp = (d); \ + _nouveau_disp_fini(nv_object(disp), (s)); \ +}) + +int nouveau_disp_create_(struct nouveau_object *, struct nouveau_object *, + struct nouveau_oclass *, int heads, + const char *, const char *, int, void **); +void _nouveau_disp_dtor(struct nouveau_object *); +int _nouveau_disp_init(struct nouveau_object *); +int _nouveau_disp_fini(struct nouveau_object *, bool); + +extern struct nouveau_oclass *nvkm_output_oclass; +extern struct nouveau_oclass *nvkm_connector_oclass; + +int nouveau_disp_vblank_ctor(struct nouveau_object *, void *data, u32 size, + struct nvkm_notify *); +void nouveau_disp_vblank(struct nouveau_disp *, int head); +int nouveau_disp_ntfy(struct nouveau_object *, u32, struct nvkm_event **); + +#endif |