// SPDX-License-Identifier: GPL-2.0-only // // aw88395_lib.h -- ACF bin parsing and check library file for aw88395 // // Copyright (c) 2022-2023 AWINIC Technology CO., LTD // // Author: Bruce zhao // #ifndef __AW88395_LIB_H__ #define __AW88395_LIB_H__ #define CHECK_REGISTER_NUM_OFFSET (4) #define VALID_DATA_LEN (4) #define VALID_DATA_ADDR (4) #define PARSE_DSP_REG_NUM (4) #define REG_DATA_BYTP_LEN (8) #define CHECK_DSP_REG_NUM (12) #define DSP_VALID_DATA_LEN (12) #define DSP_VALID_DATA_ADDR (12) #define PARSE_SOC_APP_NUM (8) #define CHECK_SOC_APP_NUM (12) #define APP_DOWNLOAD_ADDR (4) #define APP_VALID_DATA_LEN (12) #define APP_VALID_DATA_ADDR (12) #define BIN_NUM_MAX (100) #define HEADER_LEN (60) #define BIN_DATA_TYPE_OFFSET (8) #define DATA_LEN (44) #define VALID_DATA_ADDR_OFFSET (60) #define START_ADDR_OFFSET (64) #define AW88395_FW_CHECK_PART (10) #define HDADER_LEN (60) #define HEADER_VERSION_OFFSET (4) enum bin_header_version_enum { HEADER_VERSION_V1 = 0x01000000, }; enum data_type_enum { DATA_TYPE_REGISTER = 0x00000000, DATA_TYPE_DSP_REG = 0x00000010, DATA_TYPE_DSP_CFG = 0x00000011, DATA_TYPE_SOC_REG = 0x00000020, DATA_TYPE_SOC_APP = 0x00000021, DATA_TYPE_DSP_FW = 0x00000022, DATA_TYPE_MULTI_BINS = 0x00002000, }; enum data_version_enum { DATA_VERSION_V1 = 0x00000001, DATA_VERSION_MAX, }; struct bin_header_info { unsigned int check_sum; unsigned int header_ver; unsigned int bin_data_type; unsigned int bin_data_ver; unsigned int bin_data_len; unsigned int ui_ver; unsigned char chip_type[8]; unsigned int reg_byte_len; unsigned int data_byte_len; unsigned int device_addr; unsigned int valid_data_len; unsigned int valid_data_addr; unsigned int reg_num; unsigned int reg_data_byte_len; unsigned int download_addr; unsigned int app_version; unsigned int header_len; }; struct bin_container { unsigned int len; unsigned char data[]; }; struct aw_bin { unsigned char *p_addr; unsigned int all_bin_parse_num; unsigned int multi_bin_parse_num; unsigned int single_bin_parse_num; struct bin_header_info header_info[BIN_NUM_MAX]; struct bin_container info; }; #endif