170c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs#ifndef __NOUVEAU_BIOS_H__
270c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs#define __NOUVEAU_BIOS_H__
370c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs
470c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs#include <core/subdev.h>
570c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs#include <core/device.h>
670c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs
770c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggsstruct nouveau_bios {
870c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs	struct nouveau_subdev base;
970c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs	u32 size;
1070c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs	u8 *data;
1170c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs
1270c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs	u32 bmp_offset;
1370c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs	u32 bit_offset;
1470c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs
1570c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs	struct {
1670c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs		u8 major;
1770c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs		u8 chip;
1870c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs		u8 minor;
1970c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs		u8 micro;
200dd660d4ab9ceb48f24f4df2ebab3e73d908a1e8Ben Skeggs		u8 patch;
2170c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs	} version;
2270c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs};
2370c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs
2470c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggsstatic inline struct nouveau_bios *
2570c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggsnouveau_bios(void *obj)
2670c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs{
2770c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs	return (void *)nv_device(obj)->subdev[NVDEV_SUBDEV_VBIOS];
2870c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs}
2970c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs
3070c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggsu8  nvbios_checksum(const u8 *data, int size);
3170c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggsu16 nvbios_findstr(const u8 *data, int size, const char *str, int len);
3270c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs
3370c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggsextern struct nouveau_oclass nouveau_bios_oclass;
3470c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs
3570c0f263cc2eb12e02506eb75f0a71490e7dea4dBen Skeggs#endif
36