root/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios.h
/* SPDX-License-Identifier: MIT */
#ifndef __NVKM_BIOS_H__
#define __NVKM_BIOS_H__
#include <core/subdev.h>

struct nvkm_bios {
        struct nvkm_subdev subdev;
        u32 size;
        u8 *data;

        u32 image0_size;
        u32 imaged_addr;

        u32 bmp_offset;
        u32 bit_offset;

        struct {
                u8 major;
                u8 chip;
                u8 minor;
                u8 micro;
                u8 patch;
        } version;
};

u8  nvbios_checksum(const u8 *data, int size);
u16 nvbios_findstr(const u8 *data, int size, const char *str, int len);
int nvbios_memcmp(struct nvkm_bios *, u32 addr, const char *, u32 len);
u8  nvbios_rd08(struct nvkm_bios *, u32 addr);
u16 nvbios_rd16(struct nvkm_bios *, u32 addr);
u32 nvbios_rd32(struct nvkm_bios *, u32 addr);
void *nvbios_pointer(struct nvkm_bios *, u32 addr);

int nvkm_bios_new(struct nvkm_device *, enum nvkm_subdev_type, int, struct nvkm_bios **);
#endif