#ifndef __NVBIOS_BMP_H__
#define __NVBIOS_BMP_H__
static inline u16
bmp_version(struct nvkm_bios *bios)
{
	if (bios->bmp_offset) {
		return nvbios_rd08(bios, bios->bmp_offset + 5) << 8 |
		       nvbios_rd08(bios, bios->bmp_offset + 6);
	}

	return 0x0000;
}

static inline u16
bmp_mem_init_table(struct nvkm_bios *bios)
{
	if (bmp_version(bios) >= 0x0300)
		return nvbios_rd16(bios, bios->bmp_offset + 24);
	return 0x0000;
}

static inline u16
bmp_sdr_seq_table(struct nvkm_bios *bios)
{
	if (bmp_version(bios) >= 0x0300)
		return nvbios_rd16(bios, bios->bmp_offset + 26);
	return 0x0000;
}

static inline u16
bmp_ddr_seq_table(struct nvkm_bios *bios)
{
	if (bmp_version(bios) >= 0x0300)
		return nvbios_rd16(bios, bios->bmp_offset + 28);
	return 0x0000;
}
#endif
