Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid
[firefly-linux-kernel-4.4.55.git] / drivers / gpu / drm / nouveau / core / include / subdev / bar.h
1 #ifndef __NOUVEAU_BAR_H__
2 #define __NOUVEAU_BAR_H__
3
4 #include <core/subdev.h>
5 #include <core/device.h>
6
7 struct nouveau_mem;
8 struct nouveau_vma;
9
10 struct nouveau_bar {
11         struct nouveau_subdev base;
12
13         int (*alloc)(struct nouveau_bar *, struct nouveau_object *,
14                      struct nouveau_mem *, struct nouveau_object **);
15         void __iomem *iomem;
16
17         int (*kmap)(struct nouveau_bar *, struct nouveau_mem *,
18                     u32 flags, struct nouveau_vma *);
19         int (*umap)(struct nouveau_bar *, struct nouveau_mem *,
20                     u32 flags, struct nouveau_vma *);
21         void (*unmap)(struct nouveau_bar *, struct nouveau_vma *);
22         void (*flush)(struct nouveau_bar *);
23
24         /* whether the BAR supports to be ioremapped WC or should be uncached */
25         bool iomap_uncached;
26 };
27
28 static inline struct nouveau_bar *
29 nouveau_bar(void *obj)
30 {
31         return (void *)nv_device(obj)->subdev[NVDEV_SUBDEV_BAR];
32 }
33
34 extern struct nouveau_oclass nv50_bar_oclass;
35 extern struct nouveau_oclass nvc0_bar_oclass;
36 extern struct nouveau_oclass gk20a_bar_oclass;
37
38 #endif