2023-09-19 11:16:14

by wangweidong.a

[permalink] [raw]
Subject: [PATCH V4 4/7] ASoC: codecs: Add code for bin parsing compatible with aw87390

From: Weidong Wang <[email protected]>

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 <[email protected]>
---
sound/soc/codecs/aw88395/aw88395_lib.c | 25 ++++++++++++++++---------
sound/soc/codecs/aw88395/aw88395_reg.h | 1 +
2 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/sound/soc/codecs/aw88395/aw88395_lib.c b/sound/soc/codecs/aw88395/aw88395_lib.c
index 8ee1baa03269..a0a429ca9768 100644
--- a/sound/soc/codecs/aw88395/aw88395_lib.c
+++ b/sound/soc/codecs/aw88395/aw88395_lib.c
@@ -452,12 +452,16 @@ static int aw_dev_parse_reg_bin_with_hdr(struct aw_device *aw_dev,
if ((aw_bin->all_bin_parse_num != 1) ||
(aw_bin->header_info[0].bin_data_type != DATA_TYPE_REGISTER)) {
dev_err(aw_dev->dev, "bin num or type error");
+ ret = -EINVAL;
goto parse_bin_failed;
}

- if (aw_bin->header_info[0].valid_data_len % 4) {
- dev_err(aw_dev->dev, "bin data len get error!");
- 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 =
@@ -579,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;
@@ -621,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;
@@ -701,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;
@@ -799,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)) &&
@@ -839,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)) &&
diff --git a/sound/soc/codecs/aw88395/aw88395_reg.h b/sound/soc/codecs/aw88395/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 = 0x2049,
AW88261_CHIP_ID = 0x2113,
+ AW87390_CHIP_ID = 0x76,
};

#define AW88395_REG_MAX (0x7D)
--
2.41.0


2023-09-25 14:12:35

by Mark Brown

[permalink] [raw]
Subject: Re: [PATCH V4 4/7] ASoC: codecs: Add code for bin parsing compatible with aw87390

On Tue, Sep 19, 2023 at 06:57:21PM +0800, [email protected] wrote:
> From: Weidong Wang <[email protected]>
>
> Add aw87390 compatible code to the aw88395_lib.c file
> so that it can parse aw87390's bin file
> Modify the function return value

This breaks an x86 allmodconfig build:

/build/stage/linux/sound/soc/codecs/aw88395/aw88395.c: In function ‘aw88395_prof
ile_info’:
/build/stage/linux/sound/soc/codecs/aw88395/aw88395.c:199:21: error: too few arg
uments to function ‘aw88395_dev_get_prof_name’
199 | prof_name = aw88395_dev_get_prof_name(aw88395->aw_pa, count);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /build/stage/linux/sound/soc/codecs/aw88395/aw88395.c:17:
/build/stage/linux/sound/soc/codecs/aw88395/aw88395_device.h:184:5: note: declar
ed here
184 | int aw88395_dev_get_prof_name(struct aw_device *aw_dev, int index, char
**prof_name);
| ^~~~~~~~~~~~~~~~~~~~~~~~~


Attachments:
(No filename) (982.00 B)
signature.asc (499.00 B)
Download all attachments

2023-09-26 07:22:46

by wangweidong.a

[permalink] [raw]
Subject: Re: [PATCH V4 4/7] ASoC: codecs: Add code for bin parsing compatible with aw87390

Thank you very much for your review, but there's something I'd like to discuss with you

On Mon, Sep 25, 2023 at 16:06:18 +0200, [email protected] wrote:
> On Tue, Sep 19, 2023 at 06:57:21PM +0800, [email protected] wrote:
>> From: Weidong Wang <[email protected]>
>>
>> Add aw87390 compatible code to the aw88395_lib.c file
>> so that it can parse aw87390's bin file
>> Modify the function return value

> This breaks an x86 allmodconfig build:

> /build/stage/linux/sound/soc/codecs/aw88395/aw88395.c: In function ‘aw88395_prof
> ile_info’:
> /build/stage/linux/sound/soc/codecs/aw88395/aw88395.c:199:21: error: too few arg
> uments to function ‘aw88395_dev_get_prof_name’
> 199 | prof_name = aw88395_dev_get_prof_name(aw88395->aw_pa, count);
> | ^~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from /build/stage/linux/sound/soc/codecs/aw88395/aw88395.c:17:
> /build/stage/linux/sound/soc/codecs/aw88395/aw88395_device.h:184:5: note: declar
> ed here
> 184 | int aw88395_dev_get_prof_name(struct aw_device *aw_dev, int index, char
> **prof_name);
> | ^~~~~~~~~~~~~~~~~~~~~~~~~

I did not get this error when compiling base on "2cf0f715623872823a72e451243bbf555d10d032"
and the changes to this function are already in [patch V4 3/7]
Can you tell me how to modify it?

Best regards,
Weidong Wang

2023-09-26 07:52:28

by Mark Brown

[permalink] [raw]
Subject: Re: [PATCH V4 4/7] ASoC: codecs: Add code for bin parsing compatible with aw87390

On Tue, Sep 26, 2023 at 03:04:30PM +0800, [email protected] wrote:
> On Mon, Sep 25, 2023 at 16:06:18 +0200, [email protected] wrote:

> > /build/stage/linux/sound/soc/codecs/aw88395/aw88395.c:199:21: error: too few arg
> > uments to function ‘aw88395_dev_get_prof_name’
> > 199 | prof_name = aw88395_dev_get_prof_name(aw88395->aw_pa, count);
> > | ^~~~~~~~~~~~~~~~~~~~~~~~~
> > In file included from /build/stage/linux/sound/soc/codecs/aw88395/aw88395.c:17:
> > /build/stage/linux/sound/soc/codecs/aw88395/aw88395_device.h:184:5: note: declar
> > ed here
> > 184 | int aw88395_dev_get_prof_name(struct aw_device *aw_dev, int index, char
> > **prof_name);
> > | ^~~~~~~~~~~~~~~~~~~~~~~~~

> I did not get this error when compiling base on "2cf0f715623872823a72e451243bbf555d10d032"
> and the changes to this function are already in [patch V4 3/7]
> Can you tell me how to modify it?

Apply every patch in sequence and check that it builds individually,
including for configs like the x86 allmodconfig. I don't specifically
know what the context was here, I'm just reporting the failure my CI
found. If you're confident things are fixed then resend.


Attachments:
(No filename) (1.20 kB)
signature.asc (499.00 B)
Download all attachments