drm/nouveau: have non-core mmio accesses go through device object
[firefly-linux-kernel-4.4.55.git] / drivers / gpu / drm / nouveau / nouveau_compat.c
1 #include "nouveau_drm.h"
2 #include "nouveau_compat.h"
3
4 void *nouveau_newpriv(struct drm_device *);
5
6 u8
7 _nv_rd08(struct drm_device *dev, u32 reg)
8 {
9         struct nouveau_drm *drm = nouveau_newpriv(dev);
10         return nv_ro08(drm->device, reg);
11 }
12
13 void
14 _nv_wr08(struct drm_device *dev, u32 reg, u8 val)
15 {
16         struct nouveau_drm *drm = nouveau_newpriv(dev);
17         nv_wo08(drm->device, reg, val);
18 }
19
20 u32
21 _nv_rd32(struct drm_device *dev, u32 reg)
22 {
23         struct nouveau_drm *drm = nouveau_newpriv(dev);
24         return nv_ro32(drm->device, reg);
25 }
26
27 void
28 _nv_wr32(struct drm_device *dev, u32 reg, u32 val)
29 {
30         struct nouveau_drm *drm = nouveau_newpriv(dev);
31         nv_wo32(drm->device, reg, val);
32 }
33
34 u32
35 _nv_mask(struct drm_device *dev, u32 reg, u32 mask, u32 val)
36 {
37         u32 tmp = _nv_rd32(dev, reg);
38         _nv_wr32(dev, reg, (tmp & ~mask) | val);
39         return tmp;
40 }