xref: /rk3399_rockchip-uboot/arch/arm/include/asm/arch-rockchip/rk_meta.h (revision b6bda7d5f40f8df92d3195bfab2b7ecbabd3e740)
148201c4cSJason Zhu /* SPDX-License-Identifier:     GPL-2.0+ */
248201c4cSJason Zhu /*
348201c4cSJason Zhu  * (C) Copyright 2022 Rockchip Electronics Co., Ltd
448201c4cSJason Zhu  *
548201c4cSJason Zhu  */
648201c4cSJason Zhu 
748201c4cSJason Zhu #ifndef _RK_CFG_H_
848201c4cSJason Zhu #define _RK_CFG_H_
948201c4cSJason Zhu 
1048201c4cSJason Zhu /*      META storage layout        */
1148201c4cSJason Zhu /***************************/      /* ----- ITEM start -----*/
120236dc36SWeiwen Chen /**     META_HEAD         **/
1348201c4cSJason Zhu /***************************/
1448201c4cSJason Zhu /**     ITEM 1            **/
1548201c4cSJason Zhu /***************************/
1648201c4cSJason Zhu /**     ITEM 2            **/
1748201c4cSJason Zhu /***************************/
1848201c4cSJason Zhu /**     ITEM 3            **/
1948201c4cSJason Zhu /***************************/
2048201c4cSJason Zhu /**       ....            **/
2148201c4cSJason Zhu /***************************/      /* --- ITEM backup start 32KB ---*/
2248201c4cSJason Zhu /**     ITEM 1 BACKUP     **/
2348201c4cSJason Zhu /***************************/
2448201c4cSJason Zhu /**     ITEM 2 BACKUP     **/
2548201c4cSJason Zhu /***************************/
2648201c4cSJason Zhu /**     ITEM 3 BACKUP     **/
2748201c4cSJason Zhu /***************************/
2848201c4cSJason Zhu /**       ....            **/
2948201c4cSJason Zhu /***************************/
300236dc36SWeiwen Chen /**     META_END          **/
3148201c4cSJason Zhu /***************************/      /* ----- ITEM backup end -----*/
3248201c4cSJason Zhu /**     IQ FILE BIN       **/       /* 320K sensor iq file bin */
3348201c4cSJason Zhu /***************************/
3448201c4cSJason Zhu 
3548201c4cSJason Zhu /*      META memory layout        */
3648201c4cSJason Zhu /***************************/      /* ----- ITEM start -----*/
370236dc36SWeiwen Chen /**     META_HEAD         **/
3848201c4cSJason Zhu /***************************/
3948201c4cSJason Zhu /**     ITEM 1            **/
4048201c4cSJason Zhu /***************************/
4148201c4cSJason Zhu /**     ITEM 2            **/
4248201c4cSJason Zhu /***************************/
4348201c4cSJason Zhu /**     ITEM 3            **/
4448201c4cSJason Zhu /***************************/
4548201c4cSJason Zhu /**       ....            **/
4648201c4cSJason Zhu /***************************/      /* --- ITEM backup start 32KB ---*/
4748201c4cSJason Zhu /**     ITEM 1 BACKUP     **/
4848201c4cSJason Zhu /***************************/
4948201c4cSJason Zhu /**     ITEM 2 BACKUP     **/
5048201c4cSJason Zhu /***************************/
5148201c4cSJason Zhu /**     ITEM 3 BACKUP     **/
5248201c4cSJason Zhu /***************************/
5348201c4cSJason Zhu /**       ....            **/
5448201c4cSJason Zhu /***************************/
550236dc36SWeiwen Chen /**     META_END          **/
5648201c4cSJason Zhu /***************************/      /* ----- ITEM backup end -----*/
5748201c4cSJason Zhu /**     IQ FILE BIN       **/       /* 320K sensor iq file bin */
5848201c4cSJason Zhu /***************************/
5948201c4cSJason Zhu 
6048201c4cSJason Zhu #define RK_META			0x544d4b52
6148201c4cSJason Zhu #define RK_META_END		0x55aabbcc
6248201c4cSJason Zhu #define RK_CMDLINE		0x4c444d43
6348201c4cSJason Zhu 
64b367cbabSWeiwen Chen #define ITEM_SIZE		(1 * 1024)
6548201c4cSJason Zhu #define MAX_HEAD_SIZE 4
66d3bb9fb9Scww #define MAX_META_SEGMENT_SIZE (64 * 1024)
6748201c4cSJason Zhu #define BACKUP_META_SIZE (MAX_META_SEGMENT_SIZE / 2)
6848201c4cSJason Zhu #define META_INFO_HEAD_OFFSET	0
69117a504cSWeiwen Chen #define META_INFO_SIZE		ITEM_SIZE
70117a504cSWeiwen Chen #define PARAM_SHARE2KERNEL_OFFSET	(META_INFO_HEAD_OFFSET + META_INFO_SIZE)
71117a504cSWeiwen Chen #define PARAM_SHARE2KERNEL_SIZE (ITEM_SIZE)
72117a504cSWeiwen Chen #define SENSOR_INIT_OFFSET	(PARAM_SHARE2KERNEL_OFFSET + PARAM_SHARE2KERNEL_SIZE)
73117a504cSWeiwen Chen #define SENSOR_INIT_MAX_SIZE	ITEM_SIZE
7448201c4cSJason Zhu #define CMDLINE_OFFSET		(SENSOR_INIT_OFFSET + SENSOR_INIT_MAX_SIZE)
75117a504cSWeiwen Chen #define CMDLINE_MAX_SIZE	ITEM_SIZE
7648201c4cSJason Zhu #define AE_TABLE_OFFSET		(CMDLINE_OFFSET + CMDLINE_MAX_SIZE)
77117a504cSWeiwen Chen #define AE_TABLE_MAX_SIZE	ITEM_SIZE
78117a504cSWeiwen Chen 
79117a504cSWeiwen Chen #define APP_PARAM_OFFSET	(AE_TABLE_OFFSET + AE_TABLE_MAX_SIZE)
80117a504cSWeiwen Chen #define APP_PARAM_MAX_SIZE	ITEM_SIZE
81117a504cSWeiwen Chen 
82d3bb9fb9Scww #define SECONDARY_SENSOR_INIT_OFFSET	(APP_PARAM_OFFSET + APP_PARAM_MAX_SIZE)
83d3bb9fb9Scww #define SECONDARY_SENSOR_INIT_MAX_SIZE	ITEM_SIZE
84d3bb9fb9Scww 
859577fd73SWeiwen Chen #define WAKEUP_PARAM_OFFSET	(SECONDARY_SENSOR_INIT_OFFSET + SECONDARY_SENSOR_INIT_MAX_SIZE)
869577fd73SWeiwen Chen #define WAKEUP_PARAM_MAX_SIZE	ITEM_SIZE
879577fd73SWeiwen Chen 
889577fd73SWeiwen Chen #define WAKEUP_AOV_PARAM_OFFSET	(WAKEUP_PARAM_OFFSET + WAKEUP_PARAM_MAX_SIZE)
899577fd73SWeiwen Chen #define WAKEUP_AOV_PARAM_MAX_SIZE	ITEM_SIZE
909577fd73SWeiwen Chen 
9148201c4cSJason Zhu #define SENSOR_IQ_BIN_OFFSET			(MAX_META_SEGMENT_SIZE)
92b367cbabSWeiwen Chen 
93dc66eaafSWeiwen Chen /* 512 - sizeof(tag/load/size/comp_type/comp_size/comp_off/crc32/meta_flags/iq_item_size/total_part_num/part_flag/part_reserved_size/iqbin_max_size) */
94dc66eaafSWeiwen Chen #define	META_HEAD_RESERVED_SIZE	   (115*4)
950236dc36SWeiwen Chen #define META_READ_DONE_FLAG (1 << 0)
9648201c4cSJason Zhu 
97117a504cSWeiwen Chen #define AE_TABLE_SHARE2KERNEL_OFFSET	(PARAM_SHARE2KERNEL_OFFSET)
98117a504cSWeiwen Chen 
99b367cbabSWeiwen Chen #define	META_COMPRESS_TYPE_GZ 0x1
100b367cbabSWeiwen Chen 
10148201c4cSJason Zhu struct meta_head {
10248201c4cSJason Zhu 	uint32_t tag;
10348201c4cSJason Zhu 	uint32_t load;
10448201c4cSJason Zhu 	uint32_t size;
105b367cbabSWeiwen Chen 	uint32_t comp_type;
106b367cbabSWeiwen Chen 	uint32_t comp_size;
107b367cbabSWeiwen Chen 	uint32_t comp_off;
10894e11c15Scww 	uint32_t iq_item_size;
109f23e78c3SZhichao Guo 	uint32_t total_part_num;
110f23e78c3SZhichao Guo 	uint32_t part_flag;
111f23e78c3SZhichao Guo 	uint32_t part_reserved_size;
112dc66eaafSWeiwen Chen 	uint32_t iqbin_max_size;
11348201c4cSJason Zhu 	uint8_t  reserved[META_HEAD_RESERVED_SIZE];
11448201c4cSJason Zhu 	uint32_t crc32;
1150236dc36SWeiwen Chen 	uint32_t meta_flags;
11648201c4cSJason Zhu };
11748201c4cSJason Zhu 
1189577fd73SWeiwen Chen #define MAX_CMDLINE_LENGTH	(ITEM_SIZE - 8) /* 1024 - sizeof(tag/crc32) */
11948201c4cSJason Zhu struct cmdline_info {
12048201c4cSJason Zhu 	uint32_t tag;
12148201c4cSJason Zhu 	uint8_t data[MAX_CMDLINE_LENGTH];
12248201c4cSJason Zhu 	uint32_t crc32;
12348201c4cSJason Zhu };
12448201c4cSJason Zhu 
125*b6bda7d5SXuhui Lin void rk_meta_bootargs_append(void *fdt);
12648201c4cSJason Zhu #endif
127