93 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2//3// aw88395_lib.h -- ACF bin parsing and check library file for aw883954//5// Copyright (c) 2022-2023 AWINIC Technology CO., LTD6//7// Author: Bruce zhao <zhaolei@awinic.com>8//9 10#ifndef __AW88395_LIB_H__11#define __AW88395_LIB_H__12 13#define CHECK_REGISTER_NUM_OFFSET (4)14#define VALID_DATA_LEN (4)15#define VALID_DATA_ADDR (4)16#define PARSE_DSP_REG_NUM (4)17#define REG_DATA_BYTP_LEN (8)18#define CHECK_DSP_REG_NUM (12)19#define DSP_VALID_DATA_LEN (12)20#define DSP_VALID_DATA_ADDR (12)21#define PARSE_SOC_APP_NUM (8)22#define CHECK_SOC_APP_NUM (12)23#define APP_DOWNLOAD_ADDR (4)24#define APP_VALID_DATA_LEN (12)25#define APP_VALID_DATA_ADDR (12)26#define BIN_NUM_MAX (100)27#define HEADER_LEN (60)28#define BIN_DATA_TYPE_OFFSET (8)29#define DATA_LEN (44)30#define VALID_DATA_ADDR_OFFSET (60)31#define START_ADDR_OFFSET (64)32 33#define AW88395_FW_CHECK_PART (10)34#define HDADER_LEN (60)35 36#define HEADER_VERSION_OFFSET (4)37 38enum bin_header_version_enum {39 HEADER_VERSION_V1 = 0x01000000,40};41 42enum data_type_enum {43 DATA_TYPE_REGISTER = 0x00000000,44 DATA_TYPE_DSP_REG = 0x00000010,45 DATA_TYPE_DSP_CFG = 0x00000011,46 DATA_TYPE_SOC_REG = 0x00000020,47 DATA_TYPE_SOC_APP = 0x00000021,48 DATA_TYPE_DSP_FW = 0x00000022,49 DATA_TYPE_MULTI_BINS = 0x00002000,50};51 52enum data_version_enum {53 DATA_VERSION_V1 = 0x00000001,54 DATA_VERSION_MAX,55};56 57struct bin_header_info {58 unsigned int check_sum;59 unsigned int header_ver;60 unsigned int bin_data_type;61 unsigned int bin_data_ver;62 unsigned int bin_data_len;63 unsigned int ui_ver;64 unsigned char chip_type[8];65 unsigned int reg_byte_len;66 unsigned int data_byte_len;67 unsigned int device_addr;68 unsigned int valid_data_len;69 unsigned int valid_data_addr;70 71 unsigned int reg_num;72 unsigned int reg_data_byte_len;73 unsigned int download_addr;74 unsigned int app_version;75 unsigned int header_len;76};77 78struct bin_container {79 unsigned int len;80 unsigned char data[];81};82 83struct aw_bin {84 unsigned char *p_addr;85 unsigned int all_bin_parse_num;86 unsigned int multi_bin_parse_num;87 unsigned int single_bin_parse_num;88 struct bin_header_info header_info[BIN_NUM_MAX];89 struct bin_container info;90};91 92#endif93