[PATCH net-next 2/2] net: airoha: npu: Add the capability to read firmware names from dts

Lorenzo Bianconi lorenzo at kernel.org
Mon Jan 12 05:35:57 PST 2026


> On Mon, Jan 12, 2026 at 11:00:08AM +0100, Lorenzo Bianconi wrote:
> > Introduce the capability to read the firmware binary names from device-tree
> > using the firmware-name property if available.
> > This is a preliminary patch to enable NPU offloading for MT7996 (Eagle)
> > chipset since it requires a different binary with respect to the one
> > used for MT7992 on the EN7581 SoC.
> 
> When i look at
> 
> airoha_npu.c
> 
> i see:
> 
> #define NPU_EN7581_FIRMWARE_DATA                "airoha/en7581_npu_data.bin"
> #define NPU_EN7581_FIRMWARE_RV32                "airoha/en7581_npu_rv32.bin"
> #define NPU_AN7583_FIRMWARE_DATA                "airoha/an7583_npu_data.bin"
> #define NPU_AN7583_FIRMWARE_RV32                "airoha/an7583_npu_rv32.bin"
> 
> static const struct airoha_npu_soc_data en7581_npu_soc_data = {
>         .fw_rv32 = {
>                 .name = NPU_EN7581_FIRMWARE_RV32,
>                 .max_size = NPU_EN7581_FIRMWARE_RV32_MAX_SIZE,
>         },
>         .fw_data = {
>                 .name = NPU_EN7581_FIRMWARE_DATA,
>                 .max_size = NPU_EN7581_FIRMWARE_DATA_MAX_SIZE,
>         },
> };
> 
> static const struct airoha_npu_soc_data an7583_npu_soc_data = {
>         .fw_rv32 = {
>                 .name = NPU_AN7583_FIRMWARE_RV32,
>                 .max_size = NPU_EN7581_FIRMWARE_RV32_MAX_SIZE,
>         },
>         .fw_data = {
>                 .name = NPU_AN7583_FIRMWARE_DATA,
>                 .max_size = NPU_EN7581_FIRMWARE_DATA_MAX_SIZE,
>         },
> };
> 
> static const struct of_device_id of_airoha_npu_match[] = {
>         { .compatible = "airoha,en7581-npu", .data = &en7581_npu_soc_data },
>         { .compatible = "airoha,an7583-npu", .data = &an7583_npu_soc_data },
>         { /* sentinel */ }
> };
> 
> Why cannot this scheme be extended with another compatible?

yes, that is another possibility I was thinking of but then I found
"firwmare-name" property was quite a common approach.
Something like:

static const struct of_device_id of_airoha_npu_match[] = {
	...
	{ .compatible = "airoha,en7581-npu-7996", .data = &en7581_7996_npu_soc_data },
	...
};

What do you think?

Regards,
Lorenzo

> 
>     Andrew
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20260112/013da049/attachment.sig>


More information about the linux-arm-kernel mailing list