xref: /openbmc/linux/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios.h (revision d0034a7a4ac7fae708146ac0059b9c47a1543f0d)
1b7019ac5SIlia Mirkin /* SPDX-License-Identifier: MIT */
2d390b480SBen Skeggs #ifndef __NVKM_BIOS_H__
3d390b480SBen Skeggs #define __NVKM_BIOS_H__
4c39f472eSBen Skeggs #include <core/subdev.h>
5c39f472eSBen Skeggs 
6d390b480SBen Skeggs struct nvkm_bios {
7a00014e3SBen Skeggs 	struct nvkm_subdev subdev;
8c39f472eSBen Skeggs 	u32 size;
9c39f472eSBen Skeggs 	u8 *data;
10c39f472eSBen Skeggs 
112f96e8e3SBen Skeggs 	u32 image0_size;
122f96e8e3SBen Skeggs 	u32 imaged_addr;
132f96e8e3SBen Skeggs 
14c39f472eSBen Skeggs 	u32 bmp_offset;
15c39f472eSBen Skeggs 	u32 bit_offset;
16c39f472eSBen Skeggs 
17c39f472eSBen Skeggs 	struct {
18c39f472eSBen Skeggs 		u8 major;
19c39f472eSBen Skeggs 		u8 chip;
20c39f472eSBen Skeggs 		u8 minor;
21c39f472eSBen Skeggs 		u8 micro;
22c39f472eSBen Skeggs 		u8 patch;
23c39f472eSBen Skeggs 	} version;
24c39f472eSBen Skeggs };
25c39f472eSBen Skeggs 
26c39f472eSBen Skeggs u8  nvbios_checksum(const u8 *data, int size);
27c39f472eSBen Skeggs u16 nvbios_findstr(const u8 *data, int size, const char *str, int len);
287f5f518fSBen Skeggs int nvbios_memcmp(struct nvkm_bios *, u32 addr, const char *, u32 len);
294d4e9907SBen Skeggs u8  nvbios_rd08(struct nvkm_bios *, u32 addr);
304d4e9907SBen Skeggs u16 nvbios_rd16(struct nvkm_bios *, u32 addr);
314d4e9907SBen Skeggs u32 nvbios_rd32(struct nvkm_bios *, u32 addr);
32c39f472eSBen Skeggs 
33*e07f50d3SBen Skeggs int nvkm_bios_new(struct nvkm_device *, enum nvkm_subdev_type, int, struct nvkm_bios **);
34c39f472eSBen Skeggs #endif
35