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
39struct nvkm_blob {
40	void *data;
41	u32 size;
42};
43
44static inline void
45nvkm_blob_dtor(struct nvkm_blob *blob)
46{
47	kfree(blob->data);
48	blob->data = NULL;
49	blob->size = 0;
50}
51#endif
52