Unverified Commit b116c832 authored by Weidong Wang's avatar Weidong Wang Committed by Mark Brown
Browse files

ASoC: codecs: Add code for bin parsing compatible with aw87390



Add aw87390 compatible code to the aw88395_lib.c file
so that it can parse aw87390's bin file

Signed-off-by: default avatarWeidong Wang <wangweidong.a@awinic.com>
Link: https://lore.kernel.org/r/20230928105727.47273-8-wangweidong.a@awinic.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 6a4c3ce3
Loading
Loading
Loading
Loading
+15 −10
Original line number Diff line number Diff line
@@ -456,11 +456,13 @@ static int aw_dev_parse_reg_bin_with_hdr(struct aw_device *aw_dev,
		goto parse_bin_failed;
	}

	if (aw_dev->chip_id == AW88261_CHIP_ID) {
		if (aw_bin->header_info[0].valid_data_len % 4) {
			dev_err(aw_dev->dev, "bin data len get error!");
			ret = -EINVAL;
			goto parse_bin_failed;
		}
	}

	prof_desc->sec_desc[AW88395_DATA_TYPE_REG].data =
				data + aw_bin->header_info[0].valid_data_addr;
@@ -581,9 +583,9 @@ static int aw_dev_parse_dev_default_type(struct aw_device *aw_dev,
}

static int aw88261_dev_cfg_get_valid_prof(struct aw_device *aw_dev,
				struct aw_all_prof_info all_prof_info)
				struct aw_all_prof_info *all_prof_info)
{
	struct aw_prof_desc *prof_desc = all_prof_info.prof_desc;
	struct aw_prof_desc *prof_desc = all_prof_info->prof_desc;
	struct aw_prof_info *prof_info = &aw_dev->prof_info;
	int num = 0;
	int i;
@@ -623,9 +625,9 @@ static int aw88261_dev_cfg_get_valid_prof(struct aw_device *aw_dev,
}

static int aw88395_dev_cfg_get_valid_prof(struct aw_device *aw_dev,
				struct aw_all_prof_info all_prof_info)
				struct aw_all_prof_info *all_prof_info)
{
	struct aw_prof_desc *prof_desc = all_prof_info.prof_desc;
	struct aw_prof_desc *prof_desc = all_prof_info->prof_desc;
	struct aw_prof_info *prof_info = &aw_dev->prof_info;
	struct aw_sec_data_desc *sec_desc;
	int num = 0;
@@ -703,12 +705,13 @@ static int aw_dev_load_cfg_by_hdr(struct aw_device *aw_dev,

	switch (aw_dev->chip_id) {
	case AW88395_CHIP_ID:
		ret = aw88395_dev_cfg_get_valid_prof(aw_dev, *all_prof_info);
		ret = aw88395_dev_cfg_get_valid_prof(aw_dev, all_prof_info);
		if (ret < 0)
			goto exit;
		break;
	case AW88261_CHIP_ID:
		ret = aw88261_dev_cfg_get_valid_prof(aw_dev, *all_prof_info);
	case AW87390_CHIP_ID:
		ret = aw88261_dev_cfg_get_valid_prof(aw_dev, all_prof_info);
		if (ret < 0)
			goto exit;
		break;
@@ -801,6 +804,7 @@ static int aw_get_dev_scene_count_v1(struct aw_device *aw_dev, struct aw_contain
		ret = 0;
		break;
	case AW88261_CHIP_ID:
	case AW87390_CHIP_ID:
		for (i = 0; i < cfg_hdr->ddt_num; ++i) {
			if (((cfg_dde[i].data_type == ACF_SEC_TYPE_REG) ||
			     (cfg_dde[i].data_type == ACF_SEC_TYPE_HDR_REG)) &&
@@ -841,6 +845,7 @@ static int aw_get_default_scene_count_v1(struct aw_device *aw_dev,
		ret = 0;
		break;
	case AW88261_CHIP_ID:
	case AW87390_CHIP_ID:
		for (i = 0; i < cfg_hdr->ddt_num; ++i) {
			if (((cfg_dde[i].data_type == ACF_SEC_TYPE_REG) ||
			     (cfg_dde[i].data_type == ACF_SEC_TYPE_HDR_REG)) &&
+1 −0
Original line number Diff line number Diff line
@@ -97,6 +97,7 @@
enum aw88395_id {
	AW88395_CHIP_ID = 0x2049,
	AW88261_CHIP_ID = 0x2113,
	AW87390_CHIP_ID = 0x76,
};

#define AW88395_REG_MAX		(0x7D)