| /******************************************************************************** |
| * Marvell GPL License Option |
| * |
| * If you received this File from Marvell, you may opt to use, redistribute and/or |
| * modify this File in accordance with the terms and conditions of the General |
| * Public License Version 2, June 1991 (the "GPL License"), a copy of which is |
| * available along with the File in the license.txt file or by writing to the Free |
| * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or |
| * on the worldwide web at http://www.gnu.org/licenses/gpl.txt. |
| * |
| * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED |
| * WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY |
| * DISCLAIMED. The GPL License provides additional details about this warranty |
| * disclaimer. |
| ******************************************************************************/ |
| |
| #ifndef _VERSION_TABLE_H_ |
| #define _VERSION_TABLE_H_ |
| |
| #define PART_NAME_MAX_LEN 15 |
| #define IMG2_NAME "bootloader" |
| #define IMG3_NAME "bootimgs" |
| #define SYSCONF_NAME "sysconf" |
| #define FLASHLESS_NAME "flashless_data" |
| |
| //DDR type |
| #define DDR_TYPE_DDR2 2 |
| #define DDR_TYPE_DDR3 3 |
| |
| //DDR channel |
| #define DDR_CHANNEL_DUAL 2 |
| #define DDR_CHANNEL_SINGLE 1 |
| |
| //CPU type |
| #define CPU_TYPE_B 0xb |
| #define CPU_TYPE_C 0xc |
| |
| typedef struct _version_t_ { |
| union { |
| struct { |
| unsigned minor_version; |
| unsigned major_version; |
| }; |
| unsigned long long version; |
| }; |
| } version_t __attribute__ ((aligned (4))); |
| |
| typedef enum data_type_t_ { |
| DATA_TYPE_NORMAL, |
| DATA_TYPE_OOB, |
| DATA_TYPE_RAW |
| }data_type_t; |
| |
| typedef enum partition_type_t_ { |
| PARTITION_TYPE_MLC, |
| PARTITION_TYPE_SLC, |
| PARTITION_TYPE_ESLC |
| }partition_type_t; |
| |
| typedef struct _sub_img_info_t_ { |
| char name[PART_NAME_MAX_LEN+1]; |
| unsigned long long size; |
| unsigned crc; |
| version_t version; |
| |
| unsigned reserved_blocks; // refer to Notes* |
| unsigned chip_start_blkind; |
| unsigned chip_num_blocks; |
| unsigned data_type; |
| unsigned partition_type; |
| unsigned char reserved[8]; //64 bytes aligned |
| } sub_img_info_t; |
| |
| typedef struct _img_hdr_t_ { |
| unsigned magic; |
| version_t version; |
| |
| unsigned page_size; |
| unsigned oob_size; |
| unsigned pages_per_block; |
| unsigned blks_per_chip; |
| |
| unsigned num_sub_images; |
| unsigned char ddr_type : 4; |
| unsigned char ddr_channel : 4; |
| unsigned char cpu_type[2]; |
| unsigned char reserved[29]; //64 bytes aligned |
| sub_img_info_t sub_image[]; |
| } img_hdr_t; |
| |
| typedef struct _ver_table_entry_t_ { |
| char name[PART_NAME_MAX_LEN+1]; |
| version_t part1_version; |
| unsigned part1_start_blkind; |
| unsigned part1_blks; |
| version_t part2_version; |
| unsigned part2_start_blkind; |
| unsigned part2_blks; |
| char part_type[PART_NAME_MAX_LEN+1]; |
| } ver_table_entry_t; |
| |
| typedef struct _version_table_t_ { |
| unsigned int magic; |
| unsigned int ou_status; |
| unsigned int num_entries; |
| ver_table_entry_t table[]; |
| } version_table_t; |
| |
| #endif |