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