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