xref: /netbsd-src/sys/external/bsd/drm2/dist/drm/nouveau/include/nvkm/core/os.h (revision 41ec02673d281bbb3d38e6c78504ce6e30c228c1)
1 /*	$NetBSD: os.h,v 1.3 2021/12/18 23:45:33 riastradh Exp $	*/
2 
3 /* SPDX-License-Identifier: MIT */
4 #ifndef __NVKM_OS_H__
5 #define __NVKM_OS_H__
6 #include <nvif/os.h>
7 
8 #ifndef __NetBSD__		/* XXX ioread */
9 #ifdef __BIG_ENDIAN
10 #define ioread16_native ioread16be
11 #define iowrite16_native iowrite16be
12 #define ioread32_native  ioread32be
13 #define iowrite32_native iowrite32be
14 #else
15 #define ioread16_native ioread16
16 #define iowrite16_native iowrite16
17 #define ioread32_native  ioread32
18 #define iowrite32_native iowrite32
19 #endif
20 #endif
21 
22 #ifdef __NetBSD__
23 #include <sys/bus.h>
24 #ifndef __BUS_SPACE_HAS_STREAM_METHODS
25 #define bus_space_read_stream_2 bus_space_read_2
26 #define bus_space_read_stream_4 bus_space_read_4
27 #define bus_space_write_stream_2 bus_space_write_2
28 #define bus_space_write_stream_4 bus_space_write_4
29 #endif
30 #endif
31 
32 #define iowrite64_native(v,p) do {                                             \
33 	u32 __iomem *_p = (u32 __iomem *)(p);				       \
34 	u64 _v = (v);							       \
35 	iowrite32_native(lower_32_bits(_v), &_p[0]);			       \
36 	iowrite32_native(upper_32_bits(_v), &_p[1]);			       \
37 } while(0)
38 
39 struct nvkm_blob {
40 	void *data;
41 	u32 size;
42 };
43 
44 static inline void
nvkm_blob_dtor(struct nvkm_blob * blob)45 nvkm_blob_dtor(struct nvkm_blob *blob)
46 {
47 	kfree(blob->data);
48 	blob->data = NULL;
49 	blob->size = 0;
50 }
51 #endif
52