* [PATCH 0/2] ASoC: codecs: aw88166: Support device specific firmware
@ 2026-03-11 4:43 Aaron Kling via B4 Relay
2026-03-11 4:43 ` [PATCH 1/2] ASoC: dt-bindings: Document firmware-name for awinic,aw88166 Aaron Kling via B4 Relay
2026-03-11 4:43 ` [PATCH 2/2] ASoC: codecs: aw88166: Support device specific firmware Aaron Kling via B4 Relay
0 siblings, 2 replies; 10+ messages in thread
From: Aaron Kling via B4 Relay @ 2026-03-11 4:43 UTC (permalink / raw)
To: Liam Girdwood, Mark Brown, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Weidong Wang, Jaroslav Kysela, Takashi Iwai
Cc: linux-sound, devicetree, linux-kernel, Aaron Kling, Teguh Sobirin
The driver currently loads a hardcoded firmware path. This adds support
for reading a device specific path from the kernel device tree.
Patch 2 was originally part of a larger change [0] by Teguh Sobirin and
was cut down to only the device specific firmware part.
[0] https://github.com/AYNTechnologies/linux/commit/9dbdd074423d970a9dec9a60f8bb99f8cfafd6a1
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
---
Aaron Kling (1):
ASoC: dt-bindings: Document firmware-name for awinic,aw88166
Teguh Sobirin (1):
ASoC: codecs: aw88166: Support device specific firmware
.../devicetree/bindings/sound/awinic,aw88395.yaml | 3 +++
sound/soc/codecs/aw88166.c | 19 +++++++++++++++----
2 files changed, 18 insertions(+), 4 deletions(-)
---
base-commit: fe9e3edb6a215515d1148d32a5c445c5bdd7916f
change-id: 20260310-aw88166-fw-903bf67e0621
Best regards,
--
Aaron Kling <webgeek1234@gmail.com>
^ permalink raw reply [flat|nested] 10+ messages in thread* [PATCH 1/2] ASoC: dt-bindings: Document firmware-name for awinic,aw88166 2026-03-11 4:43 [PATCH 0/2] ASoC: codecs: aw88166: Support device specific firmware Aaron Kling via B4 Relay @ 2026-03-11 4:43 ` Aaron Kling via B4 Relay 2026-03-11 13:16 ` Krzysztof Kozlowski 2026-03-11 4:43 ` [PATCH 2/2] ASoC: codecs: aw88166: Support device specific firmware Aaron Kling via B4 Relay 1 sibling, 1 reply; 10+ messages in thread From: Aaron Kling via B4 Relay @ 2026-03-11 4:43 UTC (permalink / raw) To: Liam Girdwood, Mark Brown, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Weidong Wang, Jaroslav Kysela, Takashi Iwai Cc: linux-sound, devicetree, linux-kernel, Aaron Kling From: Aaron Kling <webgeek1234@gmail.com> The driver currently loads a hardcoded firmware. Allow devices to provide specifically tuned firmware, so the driver can use that instead. Signed-off-by: Aaron Kling <webgeek1234@gmail.com> --- Documentation/devicetree/bindings/sound/awinic,aw88395.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Documentation/devicetree/bindings/sound/awinic,aw88395.yaml b/Documentation/devicetree/bindings/sound/awinic,aw88395.yaml index 994d68c074a9f221576a5bfef6ba125e3e30bfea..e12d030475e24dd11afaa3c9af4b53703f25f981 100644 --- a/Documentation/devicetree/bindings/sound/awinic,aw88395.yaml +++ b/Documentation/devicetree/bindings/sound/awinic,aw88395.yaml @@ -48,6 +48,9 @@ properties: Flag bit used to keep the phase synchronized in the case of multiple PA $ref: /schemas/types.yaml#/definitions/flag + firmware-name: + maxItems: 1 + required: - compatible - reg -- 2.53.0 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] ASoC: dt-bindings: Document firmware-name for awinic,aw88166 2026-03-11 4:43 ` [PATCH 1/2] ASoC: dt-bindings: Document firmware-name for awinic,aw88166 Aaron Kling via B4 Relay @ 2026-03-11 13:16 ` Krzysztof Kozlowski 2026-03-11 16:32 ` Aaron Kling 0 siblings, 1 reply; 10+ messages in thread From: Krzysztof Kozlowski @ 2026-03-11 13:16 UTC (permalink / raw) To: Aaron Kling Cc: Liam Girdwood, Mark Brown, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Weidong Wang, Jaroslav Kysela, Takashi Iwai, linux-sound, devicetree, linux-kernel On Tue, Mar 10, 2026 at 11:43:04PM -0500, Aaron Kling wrote: > The driver currently loads a hardcoded firmware. Allow devices to > provide specifically tuned firmware, so the driver can use that instead. > > Signed-off-by: Aaron Kling <webgeek1234@gmail.com> > --- > Documentation/devicetree/bindings/sound/awinic,aw88395.yaml | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/Documentation/devicetree/bindings/sound/awinic,aw88395.yaml b/Documentation/devicetree/bindings/sound/awinic,aw88395.yaml > index 994d68c074a9f221576a5bfef6ba125e3e30bfea..e12d030475e24dd11afaa3c9af4b53703f25f981 100644 > --- a/Documentation/devicetree/bindings/sound/awinic,aw88395.yaml > +++ b/Documentation/devicetree/bindings/sound/awinic,aw88395.yaml > @@ -48,6 +48,9 @@ properties: > Flag bit used to keep the phase synchronized in the case of multiple PA > $ref: /schemas/types.yaml#/definitions/flag > > + firmware-name: > + maxItems: 1 Duplicated patch. Please work on next or maintainer's tree. Best regards, Krzysztof ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] ASoC: dt-bindings: Document firmware-name for awinic,aw88166 2026-03-11 13:16 ` Krzysztof Kozlowski @ 2026-03-11 16:32 ` Aaron Kling 0 siblings, 0 replies; 10+ messages in thread From: Aaron Kling @ 2026-03-11 16:32 UTC (permalink / raw) To: Krzysztof Kozlowski Cc: Liam Girdwood, Mark Brown, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Weidong Wang, Jaroslav Kysela, Takashi Iwai, linux-sound, devicetree, linux-kernel On Wed, Mar 11, 2026 at 8:16 AM Krzysztof Kozlowski <krzk@kernel.org> wrote: > > On Tue, Mar 10, 2026 at 11:43:04PM -0500, Aaron Kling wrote: > > The driver currently loads a hardcoded firmware. Allow devices to > > provide specifically tuned firmware, so the driver can use that instead. > > > > Signed-off-by: Aaron Kling <webgeek1234@gmail.com> > > --- > > Documentation/devicetree/bindings/sound/awinic,aw88395.yaml | 3 +++ > > 1 file changed, 3 insertions(+) > > > > diff --git a/Documentation/devicetree/bindings/sound/awinic,aw88395.yaml b/Documentation/devicetree/bindings/sound/awinic,aw88395.yaml > > index 994d68c074a9f221576a5bfef6ba125e3e30bfea..e12d030475e24dd11afaa3c9af4b53703f25f981 100644 > > --- a/Documentation/devicetree/bindings/sound/awinic,aw88395.yaml > > +++ b/Documentation/devicetree/bindings/sound/awinic,aw88395.yaml > > @@ -48,6 +48,9 @@ properties: > > Flag bit used to keep the phase synchronized in the case of multiple PA > > $ref: /schemas/types.yaml#/definitions/flag > > > > + firmware-name: > > + maxItems: 1 > > Duplicated patch. Please work on next or maintainer's tree. Noted. I was working on -next, but a couple weeks old. Will rebase and drop this in the next revision. Aaron ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 2/2] ASoC: codecs: aw88166: Support device specific firmware 2026-03-11 4:43 [PATCH 0/2] ASoC: codecs: aw88166: Support device specific firmware Aaron Kling via B4 Relay 2026-03-11 4:43 ` [PATCH 1/2] ASoC: dt-bindings: Document firmware-name for awinic,aw88166 Aaron Kling via B4 Relay @ 2026-03-11 4:43 ` Aaron Kling via B4 Relay 2026-03-11 13:15 ` Krzysztof Kozlowski 1 sibling, 1 reply; 10+ messages in thread From: Aaron Kling via B4 Relay @ 2026-03-11 4:43 UTC (permalink / raw) To: Liam Girdwood, Mark Brown, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Weidong Wang, Jaroslav Kysela, Takashi Iwai Cc: linux-sound, devicetree, linux-kernel, Aaron Kling, Teguh Sobirin From: Teguh Sobirin <teguh@sobir.in> This driver currently loads firmware from a hardcoded path. Support loading device specific firmware when provided by the boot firmware. Signed-off-by: Teguh Sobirin <teguh@sobir.in> Co-authored-by: Aaron Kling <webgeek1234@gmail.com> --- sound/soc/codecs/aw88166.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/sound/soc/codecs/aw88166.c b/sound/soc/codecs/aw88166.c index daee4de9e3b01fb335975a65456cc79575533d7e..52d33a2f7cb12877138ea5083ad42e2777f8d323 100644 --- a/sound/soc/codecs/aw88166.c +++ b/sound/soc/codecs/aw88166.c @@ -1574,18 +1574,22 @@ static int aw88166_dev_init(struct aw88166 *aw88166, struct aw_container *aw_cfg static int aw88166_request_firmware_file(struct aw88166 *aw88166) { const struct firmware *cont = NULL; + const char *fw_name; int ret; aw88166->aw_pa->fw_status = AW88166_DEV_FW_FAILED; - ret = request_firmware(&cont, AW88166_ACF_FILE, aw88166->aw_pa->dev); + if (device_property_read_string(aw88166->aw_pa->dev, "firmware-name", &fw_name) < 0) + fw_name = AW88166_ACF_FILE; + + ret = request_firmware(&cont, fw_name, aw88166->aw_pa->dev); if (ret) { - dev_err(aw88166->aw_pa->dev, "request [%s] failed!\n", AW88166_ACF_FILE); + dev_err(aw88166->aw_pa->dev, "request [%s] failed!\n", fw_name); return ret; } dev_dbg(aw88166->aw_pa->dev, "loaded %s - size: %zu\n", - AW88166_ACF_FILE, cont ? cont->size : 0); + fw_name, cont ? cont->size : 0); aw88166->aw_cfg = devm_kzalloc(aw88166->aw_pa->dev, struct_size(aw88166->aw_cfg, data, cont->size), GFP_KERNEL); @@ -1599,7 +1603,7 @@ static int aw88166_request_firmware_file(struct aw88166 *aw88166) ret = aw88395_dev_load_acf_check(aw88166->aw_pa, aw88166->aw_cfg); if (ret) { - dev_err(aw88166->aw_pa->dev, "load [%s] failed!\n", AW88166_ACF_FILE); + dev_err(aw88166->aw_pa->dev, "load [%s] failed!\n", fw_name); return ret; } @@ -1802,9 +1806,16 @@ static const struct i2c_device_id aw88166_i2c_id[] = { }; MODULE_DEVICE_TABLE(i2c, aw88166_i2c_id); +static const struct of_device_id aw88166_of_match[] = { + { .compatible = "awinic,aw88166" }, + { /* sentinel */ } +}; +MODULE_DEVICE_TABLE(of, aw88166_of_match); + static struct i2c_driver aw88166_i2c_driver = { .driver = { .name = AW88166_I2C_NAME, + .of_match_table = aw88166_of_match, }, .probe = aw88166_i2c_probe, .id_table = aw88166_i2c_id, -- 2.53.0 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] ASoC: codecs: aw88166: Support device specific firmware 2026-03-11 4:43 ` [PATCH 2/2] ASoC: codecs: aw88166: Support device specific firmware Aaron Kling via B4 Relay @ 2026-03-11 13:15 ` Krzysztof Kozlowski 2026-03-11 16:30 ` Aaron Kling 0 siblings, 1 reply; 10+ messages in thread From: Krzysztof Kozlowski @ 2026-03-11 13:15 UTC (permalink / raw) To: Aaron Kling Cc: Liam Girdwood, Mark Brown, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Weidong Wang, Jaroslav Kysela, Takashi Iwai, linux-sound, devicetree, linux-kernel, Teguh Sobirin On Tue, Mar 10, 2026 at 11:43:05PM -0500, Aaron Kling wrote: > From: Teguh Sobirin <teguh@sobir.in> > > This driver currently loads firmware from a hardcoded path. Support > loading device specific firmware when provided by the boot firmware. > > Signed-off-by: Teguh Sobirin <teguh@sobir.in> > Co-authored-by: Aaron Kling <webgeek1234@gmail.com> There is no such tag. Also, incomplete DCO chain. > --- > sound/soc/codecs/aw88166.c | 19 +++++++++++++++---- > 1 file changed, 15 insertions(+), 4 deletions(-) > > diff --git a/sound/soc/codecs/aw88166.c b/sound/soc/codecs/aw88166.c > index daee4de9e3b01fb335975a65456cc79575533d7e..52d33a2f7cb12877138ea5083ad42e2777f8d323 100644 > --- a/sound/soc/codecs/aw88166.c > +++ b/sound/soc/codecs/aw88166.c > @@ -1574,18 +1574,22 @@ static int aw88166_dev_init(struct aw88166 *aw88166, struct aw_container *aw_cfg > static int aw88166_request_firmware_file(struct aw88166 *aw88166) > { > const struct firmware *cont = NULL; > + const char *fw_name; > int ret; > > aw88166->aw_pa->fw_status = AW88166_DEV_FW_FAILED; > > - ret = request_firmware(&cont, AW88166_ACF_FILE, aw88166->aw_pa->dev); > + if (device_property_read_string(aw88166->aw_pa->dev, "firmware-name", &fw_name) < 0) > + fw_name = AW88166_ACF_FILE; > + > + ret = request_firmware(&cont, fw_name, aw88166->aw_pa->dev); > if (ret) { > - dev_err(aw88166->aw_pa->dev, "request [%s] failed!\n", AW88166_ACF_FILE); > + dev_err(aw88166->aw_pa->dev, "request [%s] failed!\n", fw_name); > return ret; > } > > dev_dbg(aw88166->aw_pa->dev, "loaded %s - size: %zu\n", > - AW88166_ACF_FILE, cont ? cont->size : 0); > + fw_name, cont ? cont->size : 0); > > aw88166->aw_cfg = devm_kzalloc(aw88166->aw_pa->dev, > struct_size(aw88166->aw_cfg, data, cont->size), GFP_KERNEL); > @@ -1599,7 +1603,7 @@ static int aw88166_request_firmware_file(struct aw88166 *aw88166) > > ret = aw88395_dev_load_acf_check(aw88166->aw_pa, aw88166->aw_cfg); > if (ret) { > - dev_err(aw88166->aw_pa->dev, "load [%s] failed!\n", AW88166_ACF_FILE); > + dev_err(aw88166->aw_pa->dev, "load [%s] failed!\n", fw_name); > return ret; > } > > @@ -1802,9 +1806,16 @@ static const struct i2c_device_id aw88166_i2c_id[] = { > }; > MODULE_DEVICE_TABLE(i2c, aw88166_i2c_id); > > +static const struct of_device_id aw88166_of_match[] = { > + { .compatible = "awinic,aw88166" }, > + { /* sentinel */ } > +}; > +MODULE_DEVICE_TABLE(of, aw88166_of_match); This looks like an unrelated change. Best regards, Krzysztof ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] ASoC: codecs: aw88166: Support device specific firmware 2026-03-11 13:15 ` Krzysztof Kozlowski @ 2026-03-11 16:30 ` Aaron Kling 2026-03-11 16:33 ` Mark Brown 2026-03-11 16:38 ` Krzysztof Kozlowski 0 siblings, 2 replies; 10+ messages in thread From: Aaron Kling @ 2026-03-11 16:30 UTC (permalink / raw) To: Krzysztof Kozlowski Cc: Liam Girdwood, Mark Brown, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Weidong Wang, Jaroslav Kysela, Takashi Iwai, linux-sound, devicetree, linux-kernel, Teguh Sobirin On Wed, Mar 11, 2026 at 8:15 AM Krzysztof Kozlowski <krzk@kernel.org> wrote: > > On Tue, Mar 10, 2026 at 11:43:05PM -0500, Aaron Kling wrote: > > From: Teguh Sobirin <teguh@sobir.in> > > > > This driver currently loads firmware from a hardcoded path. Support > > loading device specific firmware when provided by the boot firmware. > > > > Signed-off-by: Teguh Sobirin <teguh@sobir.in> > > Co-authored-by: Aaron Kling <webgeek1234@gmail.com> > > There is no such tag. What do you mean? This tag is used all [0] over [1] the kernel [2]. How else is one supposed to indicate that that notable changes have been made since the original author touched it? > Also, incomplete DCO chain. Ack, will fix. And somehow b4 didn't catch it, huh. Pretty sure I've seen it catch this elsewhere, though. > > --- > > sound/soc/codecs/aw88166.c | 19 +++++++++++++++---- > > 1 file changed, 15 insertions(+), 4 deletions(-) > > > > diff --git a/sound/soc/codecs/aw88166.c b/sound/soc/codecs/aw88166.c > > index daee4de9e3b01fb335975a65456cc79575533d7e..52d33a2f7cb12877138ea5083ad42e2777f8d323 100644 > > --- a/sound/soc/codecs/aw88166.c > > +++ b/sound/soc/codecs/aw88166.c > > @@ -1574,18 +1574,22 @@ static int aw88166_dev_init(struct aw88166 *aw88166, struct aw_container *aw_cfg > > static int aw88166_request_firmware_file(struct aw88166 *aw88166) > > { > > const struct firmware *cont = NULL; > > + const char *fw_name; > > int ret; > > > > aw88166->aw_pa->fw_status = AW88166_DEV_FW_FAILED; > > > > - ret = request_firmware(&cont, AW88166_ACF_FILE, aw88166->aw_pa->dev); > > + if (device_property_read_string(aw88166->aw_pa->dev, "firmware-name", &fw_name) < 0) > > + fw_name = AW88166_ACF_FILE; > > + > > + ret = request_firmware(&cont, fw_name, aw88166->aw_pa->dev); > > if (ret) { > > - dev_err(aw88166->aw_pa->dev, "request [%s] failed!\n", AW88166_ACF_FILE); > > + dev_err(aw88166->aw_pa->dev, "request [%s] failed!\n", fw_name); > > return ret; > > } > > > > dev_dbg(aw88166->aw_pa->dev, "loaded %s - size: %zu\n", > > - AW88166_ACF_FILE, cont ? cont->size : 0); > > + fw_name, cont ? cont->size : 0); > > > > aw88166->aw_cfg = devm_kzalloc(aw88166->aw_pa->dev, > > struct_size(aw88166->aw_cfg, data, cont->size), GFP_KERNEL); > > @@ -1599,7 +1603,7 @@ static int aw88166_request_firmware_file(struct aw88166 *aw88166) > > > > ret = aw88395_dev_load_acf_check(aw88166->aw_pa, aw88166->aw_cfg); > > if (ret) { > > - dev_err(aw88166->aw_pa->dev, "load [%s] failed!\n", AW88166_ACF_FILE); > > + dev_err(aw88166->aw_pa->dev, "load [%s] failed!\n", fw_name); > > return ret; > > } > > > > @@ -1802,9 +1806,16 @@ static const struct i2c_device_id aw88166_i2c_id[] = { > > }; > > MODULE_DEVICE_TABLE(i2c, aw88166_i2c_id); > > > > +static const struct of_device_id aw88166_of_match[] = { > > + { .compatible = "awinic,aw88166" }, > > + { /* sentinel */ } > > +}; > > +MODULE_DEVICE_TABLE(of, aw88166_of_match); > > This looks like an unrelated change. Without this, I don't think the driver will read from the dt node at all. Since this change requires doing so, I figured it was related enough. But I can split that if desired. Aaron [0] https://lore.kernel.org/all/20220107160636.6555-3-ckeepax@opensource.cirrus.com/ [1] https://lore.kernel.org/all/20260115164203.811470351@linuxfoundation.org/ [2] https://lore.kernel.org/all/f7e05205fd33d9e510ec1295e0cc8cfdf395cb89.1756237895.git.osandov@osandov.com/ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] ASoC: codecs: aw88166: Support device specific firmware 2026-03-11 16:30 ` Aaron Kling @ 2026-03-11 16:33 ` Mark Brown 2026-03-11 16:41 ` Aaron Kling 2026-03-11 16:38 ` Krzysztof Kozlowski 1 sibling, 1 reply; 10+ messages in thread From: Mark Brown @ 2026-03-11 16:33 UTC (permalink / raw) To: Aaron Kling Cc: Krzysztof Kozlowski, Liam Girdwood, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Weidong Wang, Jaroslav Kysela, Takashi Iwai, linux-sound, devicetree, linux-kernel, Teguh Sobirin [-- Attachment #1: Type: text/plain, Size: 559 bytes --] On Wed, Mar 11, 2026 at 11:30:34AM -0500, Aaron Kling wrote: > On Wed, Mar 11, 2026 at 8:15 AM Krzysztof Kozlowski <krzk@kernel.org> wrote: > > > Signed-off-by: Teguh Sobirin <teguh@sobir.in> > > > Co-authored-by: Aaron Kling <webgeek1234@gmail.com> > > There is no such tag. > What do you mean? This tag is used all [0] over [1] the kernel [2]. > How else is one supposed to indicate that that notable changes have > been made since the original author touched it? Co-developed-by is more standard and is what's in submitting-patches.rst. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 488 bytes --] ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] ASoC: codecs: aw88166: Support device specific firmware 2026-03-11 16:33 ` Mark Brown @ 2026-03-11 16:41 ` Aaron Kling 0 siblings, 0 replies; 10+ messages in thread From: Aaron Kling @ 2026-03-11 16:41 UTC (permalink / raw) To: Mark Brown Cc: Krzysztof Kozlowski, Liam Girdwood, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Weidong Wang, Jaroslav Kysela, Takashi Iwai, linux-sound, devicetree, linux-kernel, Teguh Sobirin On Wed, Mar 11, 2026 at 11:33 AM Mark Brown <broonie@kernel.org> wrote: > > On Wed, Mar 11, 2026 at 11:30:34AM -0500, Aaron Kling wrote: > > On Wed, Mar 11, 2026 at 8:15 AM Krzysztof Kozlowski <krzk@kernel.org> wrote: > > > > > Signed-off-by: Teguh Sobirin <teguh@sobir.in> > > > > Co-authored-by: Aaron Kling <webgeek1234@gmail.com> > > > > There is no such tag. > > > What do you mean? This tag is used all [0] over [1] the kernel [2]. > > How else is one supposed to indicate that that notable changes have > > been made since the original author touched it? > > Co-developed-by is more standard and is what's in submitting-patches.rst. Alright, thank you for giving the correct tag. I will update and send a new revision. Aaron ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] ASoC: codecs: aw88166: Support device specific firmware 2026-03-11 16:30 ` Aaron Kling 2026-03-11 16:33 ` Mark Brown @ 2026-03-11 16:38 ` Krzysztof Kozlowski 1 sibling, 0 replies; 10+ messages in thread From: Krzysztof Kozlowski @ 2026-03-11 16:38 UTC (permalink / raw) To: Aaron Kling Cc: Liam Girdwood, Mark Brown, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Weidong Wang, Jaroslav Kysela, Takashi Iwai, linux-sound, devicetree, linux-kernel, Teguh Sobirin On 11/03/2026 17:30, Aaron Kling wrote: > On Wed, Mar 11, 2026 at 8:15 AM Krzysztof Kozlowski <krzk@kernel.org> wrote: >> >> On Tue, Mar 10, 2026 at 11:43:05PM -0500, Aaron Kling wrote: >>> From: Teguh Sobirin <teguh@sobir.in> >>> >>> This driver currently loads firmware from a hardcoded path. Support >>> loading device specific firmware when provided by the boot firmware. >>> >>> Signed-off-by: Teguh Sobirin <teguh@sobir.in> >>> Co-authored-by: Aaron Kling <webgeek1234@gmail.com> >> >> There is no such tag. > > What do you mean? This tag is used all [0] over [1] the kernel [2]. git grep for it. Other references are mistakes. > How else is one supposed to indicate that that notable changes have > been made since the original author touched it? The tag which is already documented and explained in submitting patches. > >> Also, incomplete DCO chain. > > Ack, will fix. And somehow b4 didn't catch it, huh. Pretty sure I've > seen it catch this elsewhere, though. > >>> --- >>> sound/soc/codecs/aw88166.c | 19 +++++++++++++++---- >>> 1 file changed, 15 insertions(+), 4 deletions(-) >>> >>> diff --git a/sound/soc/codecs/aw88166.c b/sound/soc/codecs/aw88166.c >>> index daee4de9e3b01fb335975a65456cc79575533d7e..52d33a2f7cb12877138ea5083ad42e2777f8d323 100644 >>> --- a/sound/soc/codecs/aw88166.c >>> +++ b/sound/soc/codecs/aw88166.c >>> @@ -1574,18 +1574,22 @@ static int aw88166_dev_init(struct aw88166 *aw88166, struct aw_container *aw_cfg >>> static int aw88166_request_firmware_file(struct aw88166 *aw88166) >>> { >>> const struct firmware *cont = NULL; >>> + const char *fw_name; >>> int ret; >>> >>> aw88166->aw_pa->fw_status = AW88166_DEV_FW_FAILED; >>> >>> - ret = request_firmware(&cont, AW88166_ACF_FILE, aw88166->aw_pa->dev); >>> + if (device_property_read_string(aw88166->aw_pa->dev, "firmware-name", &fw_name) < 0) >>> + fw_name = AW88166_ACF_FILE; >>> + >>> + ret = request_firmware(&cont, fw_name, aw88166->aw_pa->dev); >>> if (ret) { >>> - dev_err(aw88166->aw_pa->dev, "request [%s] failed!\n", AW88166_ACF_FILE); >>> + dev_err(aw88166->aw_pa->dev, "request [%s] failed!\n", fw_name); >>> return ret; >>> } >>> >>> dev_dbg(aw88166->aw_pa->dev, "loaded %s - size: %zu\n", >>> - AW88166_ACF_FILE, cont ? cont->size : 0); >>> + fw_name, cont ? cont->size : 0); >>> >>> aw88166->aw_cfg = devm_kzalloc(aw88166->aw_pa->dev, >>> struct_size(aw88166->aw_cfg, data, cont->size), GFP_KERNEL); >>> @@ -1599,7 +1603,7 @@ static int aw88166_request_firmware_file(struct aw88166 *aw88166) >>> >>> ret = aw88395_dev_load_acf_check(aw88166->aw_pa, aw88166->aw_cfg); >>> if (ret) { >>> - dev_err(aw88166->aw_pa->dev, "load [%s] failed!\n", AW88166_ACF_FILE); >>> + dev_err(aw88166->aw_pa->dev, "load [%s] failed!\n", fw_name); >>> return ret; >>> } >>> >>> @@ -1802,9 +1806,16 @@ static const struct i2c_device_id aw88166_i2c_id[] = { >>> }; >>> MODULE_DEVICE_TABLE(i2c, aw88166_i2c_id); >>> >>> +static const struct of_device_id aw88166_of_match[] = { >>> + { .compatible = "awinic,aw88166" }, >>> + { /* sentinel */ } >>> +}; >>> +MODULE_DEVICE_TABLE(of, aw88166_of_match); >> >> This looks like an unrelated change. > > Without this, I don't think the driver will read from the dt node at Then how would it probe? If it probes based on DT node, then it matches the node as well. > all. Since this change requires doing so, I figured it was related > enough. But I can split that if desired. Best regards, Krzysztof ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2026-03-11 16:41 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-03-11 4:43 [PATCH 0/2] ASoC: codecs: aw88166: Support device specific firmware Aaron Kling via B4 Relay 2026-03-11 4:43 ` [PATCH 1/2] ASoC: dt-bindings: Document firmware-name for awinic,aw88166 Aaron Kling via B4 Relay 2026-03-11 13:16 ` Krzysztof Kozlowski 2026-03-11 16:32 ` Aaron Kling 2026-03-11 4:43 ` [PATCH 2/2] ASoC: codecs: aw88166: Support device specific firmware Aaron Kling via B4 Relay 2026-03-11 13:15 ` Krzysztof Kozlowski 2026-03-11 16:30 ` Aaron Kling 2026-03-11 16:33 ` Mark Brown 2026-03-11 16:41 ` Aaron Kling 2026-03-11 16:38 ` Krzysztof Kozlowski
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox