blob: 7c6eba6ac59bf1ed42e74f6a43395f30e4c8e6ec [file] [log] [blame]
/***********************************************
*****Storage config of board, for ACS use.*****
***********************************************/
#ifndef __STORAGE_H
#define __STORAGE_H
#include <linux/types.h>
#ifdef CONFIG_AML_GPT_SYNC_ENTIRE_ENTRY
#include <uuid.h>
#endif
#include <asm/arch/romboot.h>
#ifndef __ASSEMBLY__
//Partition table defines
#define NAND_PART_SIZE_FULL -1
#define MAX_PART_NUM 16
#define MAX_PART_NAME_LEN 16
//#define SZ_1M 0x100000
#define STORE_CODE 1
#define STORE_CACHE (1<<1)
#define STORE_DATA (1<<2)
#define SPI_BOOT_FLAG 0
#define NAND_BOOT_FLAG 1
#define EMMC_BOOT_FLAG 2
#define CARD_BOOT_FLAG 3
#define SPI_NAND_FLAG 4
#define SPI_EMMC_FLAG 5
#define CARD_TYPE_SHIFT 4
#define CARD_TYPE_MASK 0xf
#define CARD_TYPE_UNKNOWN 0 /* unknown */
//#define CARD_TYPE_MMC 1 /* MMC card */
//#define CARD_TYPE_SD 2 /* SD card */
#define CARD_TYPE_SDIO 3 /* SDIO card */
#define CARD_TYPE_SD_COMBO 4 /* SD combo (IO+mem) card */
#define CARD_TYPE_NON_SDIO 5 /* NON sdio device (means SD/MMC card) */
#define AML_GET_CARD_TYPE(val, port) ((val >> (port * CARD_TYPE_SHIFT)) & CARD_TYPE_MASK)
#define AML_SET_CARD_TYPE(val, port, type) \
(val |= ((type & CARD_TYPE_MASK) << (port * CARD_TYPE_SHIFT)))
/* storage device */
#define STORAGE_DEV_NOSET (0)
#define STORAGE_DEV_EMMC (1)
#define STORAGE_DEV_NAND (2)
#define STORAGE_DEV_SPI (3)
#define STORAGE_DEV_SDCARD (4)
#define STORAGE_DEV_USB (5)
struct partitions {
char name[MAX_PART_NAME_LEN]; /* identifier string */
uint64_t size; /* partition size */
uint64_t offset; /* offset within the master space */
unsigned mask_flags; /* master flags to mask out for this partition */
#ifdef CONFIG_AML_GPT_SYNC_ENTIRE_ENTRY
#if CONFIG_IS_ENABLED(PARTITION_UUIDS)
efi_guid_t uuid; /* filesystem UUID as string, if exists */
#endif
#ifdef CONFIG_PARTITION_TYPE_GUID
efi_guid_t type_guid; /* type GUID as string, if exists */
#endif
gpt_entry_attributes attributes;
#endif
};
struct config_nand {
unsigned enable_slc;
unsigned order_ce;
unsigned reserved[2];
};
struct config_mmc {
unsigned type;
unsigned port;
unsigned reserved[2];
};
struct store_config {
unsigned store_device_flag; // indicate storage devices on each board
struct config_nand nand_configs; // specital config for nand
struct config_mmc mmc_configs; // specital config for mmc
};
#endif
#endif