1/* SPDX-License-Identifier: MIT */
2#ifndef __NVKM_BIOS_H__
3#define __NVKM_BIOS_H__
4#include <core/subdev.h>
5
6struct nvkm_bios {
7	struct nvkm_subdev subdev;
8	u32 size;
9	u8 *data;
10
11	u32 image0_size;
12	u32 imaged_addr;
13
14	u32 bmp_offset;
15	u32 bit_offset;
16
17	struct {
18		u8 major;
19		u8 chip;
20		u8 minor;
21		u8 micro;
22		u8 patch;
23	} version;
24};
25
26u8  nvbios_checksum(const u8 *data, int size);
27u16 nvbios_findstr(const u8 *data, int size, const char *str, int len);
28int nvbios_memcmp(struct nvkm_bios *, u32 addr, const char *, u32 len);
29u8  nvbios_rd08(struct nvkm_bios *, u32 addr);
30u16 nvbios_rd16(struct nvkm_bios *, u32 addr);
31u32 nvbios_rd32(struct nvkm_bios *, u32 addr);
32void *nvbios_pointer(struct nvkm_bios *, u32 addr);
33
34int nvkm_bios_new(struct nvkm_device *, enum nvkm_subdev_type, int, struct nvkm_bios **);
35#endif
36