blob: 9fe3ef373696e80561ce1dbaf33bb3dca8eb50c3 [file] [log] [blame] [edit]
/*
* Copyright (C) 2017 Amlogic, Inc. All rights reserved.
* *
This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
* *
This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
* *
You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
* *
Description:
*/
/***********************************************
*****Storage config of board, for ACS use.*****
***********************************************/
#ifndef __STORAGE_H
#define __STORAGE_H
#include <linux/types.h>
#include <asm/arch/romboot.h>
#ifndef __ASSEMBLY__
//Partition table defines
#define NAND_PART_SIZE_FULL -1
#define MAX_PART_NUM 32
#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 */
unsigned protect_flags; /*protect partition*/
};
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