From nobody Fri Feb 13 09:34:24 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7DC88E810D9 for ; Wed, 27 Sep 2023 12:17:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231678AbjI0MRk (ORCPT ); Wed, 27 Sep 2023 08:17:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34998 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231648AbjI0MRc (ORCPT ); Wed, 27 Sep 2023 08:17:32 -0400 Received: from out28-220.mail.aliyun.com (out28-220.mail.aliyun.com [115.124.28.220]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 390FA1AD; Wed, 27 Sep 2023 05:17:30 -0700 (PDT) X-Alimail-AntiSpam: AC=CONTINUE;BC=0.06721584|-1;CH=green;DM=|CONTINUE|false|;DS=CONTINUE|ham_system_inform|0.0068788-0.000217375-0.992904;FP=0|0|0|0|0|-1|-1|-1;HT=ay29a033018047201;MF=wangweidong.a@awinic.com;NM=1;PH=DS;RN=29;RT=29;SR=0;TI=SMTPD_---.Upkf3c._1695817038; Received: from ubuntu-VirtualBox..(mailfrom:wangweidong.a@awinic.com fp:SMTPD_---.Upkf3c._1695817038) by smtp.aliyun-inc.com; Wed, 27 Sep 2023 20:17:26 +0800 From: wangweidong.a@awinic.com To: lgirdwood@gmail.com, broonie@kernel.org, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org, perex@perex.cz, tiwai@suse.com, wangweidong.a@awinic.com, shumingf@realtek.com, rf@opensource.cirrus.com, herve.codina@bootlin.com, arnd@arndb.de, 13916275206@139.com, ryans.lee@analog.com, linus.walleij@linaro.org, ckeepax@opensource.cirrus.com, doug@schmorgal.com, fido_max@inbox.ru, harshit.m.mogalapalli@oracle.com, liweilei@awinic.com, yang.lee@linux.alibaba.com, u.kleine-koenig@pengutronix.de, yijiangtao@awinic.com, dan.carpenter@linaro.org, colin.i.king@gmail.com, trix@redhat.com, alsa-devel@alsa-project.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH V5 5/8] ASoC: codecs: Add code for bin parsing compatible with aw87390 Date: Wed, 27 Sep 2023 20:16:31 +0800 Message-ID: <20230927121634.94822-6-wangweidong.a@awinic.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230927121634.94822-1-wangweidong.a@awinic.com> References: <20230927121634.94822-1-wangweidong.a@awinic.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Weidong Wang Add aw87390 compatible code to the aw88395_lib.c file so that it can parse aw87390's bin file Modify the function return value Signed-off-by: Weidong Wang --- sound/soc/codecs/aw88395/aw88395_lib.c | 25 +++++++++++++++---------- sound/soc/codecs/aw88395/aw88395_reg.h | 1 + 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/sound/soc/codecs/aw88395/aw88395_lib.c b/sound/soc/codecs/aw88= 395/aw88395_lib.c index 87dd0ccade4c..a0a429ca9768 100644 --- a/sound/soc/codecs/aw88395/aw88395_lib.c +++ b/sound/soc/codecs/aw88395/aw88395_lib.c @@ -456,10 +456,12 @@ static int aw_dev_parse_reg_bin_with_hdr(struct aw_de= vice *aw_dev, goto parse_bin_failed; } =20 - if (aw_bin->header_info[0].valid_data_len % 4) { - dev_err(aw_dev->dev, "bin data len get error!"); - ret =3D -EINVAL; - goto parse_bin_failed; + if (aw_dev->chip_id =3D=3D AW88261_CHIP_ID) { + if (aw_bin->header_info[0].valid_data_len % 4) { + dev_err(aw_dev->dev, "bin data len get error!"); + ret =3D -EINVAL; + goto parse_bin_failed; + } } =20 prof_desc->sec_desc[AW88395_DATA_TYPE_REG].data =3D @@ -581,9 +583,9 @@ static int aw_dev_parse_dev_default_type(struct aw_devi= ce *aw_dev, } =20 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 =3D all_prof_info.prof_desc; + struct aw_prof_desc *prof_desc =3D all_prof_info->prof_desc; struct aw_prof_info *prof_info =3D &aw_dev->prof_info; int num =3D 0; int i; @@ -623,9 +625,9 @@ static int aw88261_dev_cfg_get_valid_prof(struct aw_dev= ice *aw_dev, } =20 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 =3D all_prof_info.prof_desc; + struct aw_prof_desc *prof_desc =3D all_prof_info->prof_desc; struct aw_prof_info *prof_info =3D &aw_dev->prof_info; struct aw_sec_data_desc *sec_desc; int num =3D 0; @@ -703,12 +705,13 @@ static int aw_dev_load_cfg_by_hdr(struct aw_device *a= w_dev, =20 switch (aw_dev->chip_id) { case AW88395_CHIP_ID: - ret =3D aw88395_dev_cfg_get_valid_prof(aw_dev, *all_prof_info); + ret =3D aw88395_dev_cfg_get_valid_prof(aw_dev, all_prof_info); if (ret < 0) goto exit; break; case AW88261_CHIP_ID: - ret =3D aw88261_dev_cfg_get_valid_prof(aw_dev, *all_prof_info); + case AW87390_CHIP_ID: + ret =3D 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 =3D 0; break; case AW88261_CHIP_ID: + case AW87390_CHIP_ID: for (i =3D 0; i < cfg_hdr->ddt_num; ++i) { if (((cfg_dde[i].data_type =3D=3D ACF_SEC_TYPE_REG) || (cfg_dde[i].data_type =3D=3D ACF_SEC_TYPE_HDR_REG)) && @@ -841,6 +845,7 @@ static int aw_get_default_scene_count_v1(struct aw_devi= ce *aw_dev, ret =3D 0; break; case AW88261_CHIP_ID: + case AW87390_CHIP_ID: for (i =3D 0; i < cfg_hdr->ddt_num; ++i) { if (((cfg_dde[i].data_type =3D=3D ACF_SEC_TYPE_REG) || (cfg_dde[i].data_type =3D=3D ACF_SEC_TYPE_HDR_REG)) && diff --git a/sound/soc/codecs/aw88395/aw88395_reg.h b/sound/soc/codecs/aw88= 395/aw88395_reg.h index e7a7c02efaf3..d0a273387313 100644 --- a/sound/soc/codecs/aw88395/aw88395_reg.h +++ b/sound/soc/codecs/aw88395/aw88395_reg.h @@ -97,6 +97,7 @@ enum aw88395_id { AW88395_CHIP_ID =3D 0x2049, AW88261_CHIP_ID =3D 0x2113, + AW87390_CHIP_ID =3D 0x76, }; =20 #define AW88395_REG_MAX (0x7D) --=20 2.41.0