23#ifndef NILE_FLASH_LAYOUT_H_
24#define NILE_FLASH_LAYOUT_H_
28#define NILE_FLASH_LAYOUT_FPGA_FACTORY_ADDR 0x000000
29#define NILE_FLASH_LAYOUT_IPL1_FACTORY_ADDR 0x008000
30#define NILE_FLASH_LAYOUT_IPL1_RECOVERY_ADDR 0x00C000
31#define NILE_FLASH_LAYOUT_MANIFEST_FACTORY_ADDR 0x00F000
32#define NILE_FLASH_LAYOUT_RECOVERY_FACTORY_ADDR 0x010000
33#define NILE_FLASH_LAYOUT_FACTORY_SIZE 0x040000
35#define NILE_FLASH_LAYOUT_FPGA_SIZE 0x008000
36#define NILE_FLASH_LAYOUT_IPL1_ADDR 0x040000
37#define NILE_FLASH_LAYOUT_IPL1_SIZE 0x004000
38#define NILE_FLASH_LAYOUT_MANIFEST_ADDR 0x04F000
39#define NILE_FLASH_LAYOUT_RECOVERY_ADDR 0x050000
40#define NILE_FLASH_LAYOUT_RECOVERY_SIZE 0x030000
41#define NILE_FLASH_LAYOUT_FPGA0_ADDR 0x080000
42#define NILE_FLASH_LAYOUT_FPGA1_ADDR 0x088000
43#define NILE_FLASH_LAYOUT_FPGA2_ADDR 0x090000
44#define NILE_FLASH_LAYOUT_FPGA3_ADDR 0x098000
51#define NILE_FLASH_MANIFEST_ID 0x5746
56typedef struct __attribute__((packed)) {
68typedef struct __attribute__((packed)) {
bool nile_flash_read(void __far *buffer, uint32_t address, uint16_t size)
Read data from SPI flash.
bool nile_flash_layout_version_compatible(uint16_t major, uint16_t minor, uint16_t patch, uint16_t first_incompatible_major)
#define NILE_FLASH_LAYOUT_MANIFEST_ADDR
static bool nile_flash_layout_read_version(void __far *buffer, size_t size)
#define NILE_FLASH_LAYOUT_MANIFEST_FACTORY_ADDR
static bool nile_flash_layout_read_version_factory(void __far *buffer, size_t size)
bool nile_flash_layout_version_at_least(uint16_t major, uint16_t minor, uint16_t patch)
Firmware flash version manifest data structure.
nile_flash_version_t version
Firmware flash version data structure.
uint16_t id
Magic value, should be equal to NILE_FLASH_MANIFEST_ID.
uint16_t major
Major version number.
uint16_t minor
Minor version number.
uint16_t patch
Patch version number.
uint8_t partial_install
0x00 if install successful, non-0x00 if partial