diff mbox series

[2/2] linux-firmware: split qca firmwares in separate packages

Message ID 20250127162440.3869759-2-marc.ferland@sonatest.com
State Accepted, archived
Commit 7e7a6579a49962907560b5a1bc71e1a17879415f
Headers show
Series [1/2] linux-firmware: split ath12k firmwares in separate packages | expand

Commit Message

Marc Ferland Jan. 27, 2025, 4:24 p.m. UTC
From: Marc Ferland <marc.ferland@sonatest.com>

This patch introduces the following packages for firmwares under qca/:

- linux-firmware-qca-qca61x4
- linux-firmware-qca-wcn3988
- linux-firmware-qca-wcn399x
- linux-firmware-qca-wcn6750
- linux-firmware-qca-qca2066
- linux-firmware-qca-wcn7850
- linux-firmware-qca-misc: catches all firmwares that are not already
  included in the other -qca- packages (currently empty).

linux-firmware-qca is now a meta package that depends on all of the
split-out qca packages.

Note: Content of the FILES:${PN}-qca* variables taken from WHENCE.

Signed-off-by: Marc Ferland <marc.ferland@sonatest.com>
---
 .../linux-firmware/linux-firmware_20241210.bb | 142 +++++++++++++++++-
 1 file changed, 136 insertions(+), 6 deletions(-)

Comments

Dmitry Baryshkov Jan. 29, 2025, 2:44 a.m. UTC | #1
On Mon, Jan 27, 2025 at 11:24:40AM -0500, marc.ferland@gmail.com wrote:
> From: Marc Ferland <marc.ferland@sonatest.com>
> 
> This patch introduces the following packages for firmwares under qca/:
> 
> - linux-firmware-qca-qca61x4
> - linux-firmware-qca-wcn3988
> - linux-firmware-qca-wcn399x
> - linux-firmware-qca-wcn6750
> - linux-firmware-qca-qca2066
> - linux-firmware-qca-wcn7850
> - linux-firmware-qca-misc: catches all firmwares that are not already
>   included in the other -qca- packages (currently empty).

Well, I'd think more about the usb vs serial split too. There is little
point in having the USB-related files together with the HCI aka
serial-related files.

> 
> linux-firmware-qca is now a meta package that depends on all of the
> split-out qca packages.
> 
> Note: Content of the FILES:${PN}-qca* variables taken from WHENCE.
> 
> Signed-off-by: Marc Ferland <marc.ferland@sonatest.com>
> ---
>  .../linux-firmware/linux-firmware_20241210.bb | 142 +++++++++++++++++-
>  1 file changed, 136 insertions(+), 6 deletions(-)
> 
> diff --git a/meta/recipes-kernel/linux-firmware/linux-firmware_20241210.bb b/meta/recipes-kernel/linux-firmware/linux-firmware_20241210.bb
> index 78bf13d878..79c273063e 100644
> --- a/meta/recipes-kernel/linux-firmware/linux-firmware_20241210.bb
> +++ b/meta/recipes-kernel/linux-firmware/linux-firmware_20241210.bb
> @@ -395,6 +395,13 @@ PACKAGES =+ "${PN}-amphion-vpu-license ${PN}-amphion-vpu \
>               ${PN}-ath12k-wcn7850 \
>               ${PN}-ath12k-misc \
>               ${PN}-qca \
> +             ${PN}-qca-qca61x4 \
> +             ${PN}-qca-wcn3988 \
> +             ${PN}-qca-wcn399x \
> +             ${PN}-qca-wcn6750 \
> +             ${PN}-qca-qca2066 \
> +             ${PN}-qca-wcn7850 \
> +             ${PN}-qca-misc \
>               \
>               ${PN}-imx-sdma-license ${PN}-imx-sdma-imx6q ${PN}-imx-sdma-imx7d \
>               \
> @@ -580,7 +587,13 @@ LICENSE:${PN}-ath12k = "Firmware-qualcommAthos_ath10k"
>  LICENSE:${PN}-ath12k-qcn9274 = "Firmware-qualcommAthos_ath10k"
>  LICENSE:${PN}-ath12k-wcn7850 = "Firmware-qualcommAthos_ath10k"
>  LICENSE:${PN}-ath12k-misc = "Firmware-qualcommAthos_ath10k"
> -LICENSE:${PN}-qca = "Firmware-qualcommAthos_ath10k"
> +LICENSE:${PN}-qca-qca61x4 = "Firmware-qualcommAthos_ath10k"
> +LICENSE:${PN}-qca-wcn3988 = "Firmware-qcom"
> +LICENSE:${PN}-qca-wcn399x = "Firmware-qualcommAthos_ath10k"
> +LICENSE:${PN}-qca-wcn6750 = "Firmware-qualcommAthos_ath10k"
> +LICENSE:${PN}-qca-qca2066 = "Firmware-qualcommAthos_ath10k"
> +LICENSE:${PN}-qca-wcn7850 = "Firmware-qcom"
> +LICENSE:${PN}-qca-misc = "Firmware-qualcommAthos_ath10k & Firmware-qcom"
>  
>  FILES:${PN}-ar3k-license = "${nonarch_base_libdir}/firmware/LICENSE.QualcommAtheros_ar3k"
>  FILES:${PN}-ar3k = " \
> @@ -628,9 +641,116 @@ ALLOW_EMPTY:${PN}-ath12k = "1"
>  # firmwares that are not already included in other -ath12k- packages.
>  ALLOW_EMPTY:${PN}-ath12k-misc = "1"
>  
> -FILES:${PN}-qca = " \
> -  ${nonarch_base_libdir}/firmware/qca \
> -"
> +FILES:${PN}-qca-qca61x4 = " \
> +  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00000201.bin \
> +  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00000200.bin \
> +  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00000300.bin \
> +  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00000302.bin \
> +  ${nonarch_base_libdir}/firmware/qca/nvm_00130300.bin \
> +  ${nonarch_base_libdir}/firmware/qca/nvm_00130302.bin \
> +  ${nonarch_base_libdir}/firmware/qca/nvm_00230302.bin \
> +  ${nonarch_base_libdir}/firmware/qca/rampatch_usb_00000200.bin \
> +  ${nonarch_base_libdir}/firmware/qca/rampatch_usb_00000201.bin \
> +  ${nonarch_base_libdir}/firmware/qca/rampatch_usb_00000300.bin \
> +  ${nonarch_base_libdir}/firmware/qca/rampatch_usb_00000302.bin \
> +  ${nonarch_base_libdir}/firmware/qca/rampatch_00130300.bin \
> +  ${nonarch_base_libdir}/firmware/qca/rampatch_00130302.bin \
> +  ${nonarch_base_libdir}/firmware/qca/rampatch_00230302.bin \
> +  ${nonarch_base_libdir}/firmware/qca/nvm_00440302.bin \
> +  ${nonarch_base_libdir}/firmware/qca/rampatch_00440302.bin \
> +  ${nonarch_base_libdir}/firmware/qca/nvm_00440302_eu.bin \
> +  ${nonarch_base_libdir}/firmware/qca/nvm_00440302_i2s_eu.bin \
> +  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00000302_eu.bin \
> +  ${nonarch_base_libdir}/firmware/qca/htbtfw20.tlv \
> +  ${nonarch_base_libdir}/firmware/qca/htnv20.bin \

So, I think, the htnv20 and htbtfw20 should be a part of the different
package.

The rest LGTM.

> +  ${nonarch_base_libdir}/firmware/qca/rampatch_usb_00130200.bin \
> +  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00130200.bin \
> +  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00130200_0104.bin \
> +  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00130200_0105.bin \
> +  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00130200_0106.bin \
> +  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00130200_0107.bin \
> +  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00130200_0109.bin \
> +  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00130200_0110.bin \
> +  ${nonarch_base_libdir}/firmware/qca/rampatch_usb_00130201.bin \
> +  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00130201.bin \
> +  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00130201_010a.bin \
> +  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00130201_010b.bin \
> +  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00130201_0303.bin \
> +  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00130201_gf.bin \
> +  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00130201_gf_010a.bin \
> +  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00130201_gf_010b.bin \
> +  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00130201_gf_0303.bin \
> +  ${nonarch_base_libdir}/firmware/qca/rampatch_usb_00190200.bin \
> +  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00190200.bin \
> +  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00190200_010e.bin \
> +  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00190200_0112.bin \
> +"
> +FILES:${PN}-qca-wcn3988 = " \
> +  ${nonarch_base_libdir}/firmware/qca/apbtfw10.tlv \
> +  ${nonarch_base_libdir}/firmware/qca/apbtfw11.tlv \
> +  ${nonarch_base_libdir}/firmware/qca/apnv10.bin \
> +  ${nonarch_base_libdir}/firmware/qca/apnv11.bin \
> +"
> +FILES:${PN}-qca-wcn399x = " \
> +  ${nonarch_base_libdir}/firmware/qca/crbtfw21.tlv \
> +  ${nonarch_base_libdir}/firmware/qca/crnv21.bin \
> +  ${nonarch_base_libdir}/firmware/qca/crbtfw32.tlv \
> +  ${nonarch_base_libdir}/firmware/qca/crnv32.bin \
> +  ${nonarch_base_libdir}/firmware/qca/crnv32u.bin \
> +"
> +FILES:${PN}-qca-wcn6750 = " \
> +  ${nonarch_base_libdir}/firmware/qca/msbtfw11.mbn \
> +  ${nonarch_base_libdir}/firmware/qca/msbtfw11.tlv \
> +  ${nonarch_base_libdir}/firmware/qca/msnv11.bin \
> +  ${nonarch_base_libdir}/firmware/qca/msnv11.b0a \
> +  ${nonarch_base_libdir}/firmware/qca/msnv11.b09 \
> +"
> +FILES:${PN}-qca-qca2066 = " \
> +  ${nonarch_base_libdir}/firmware/qca/hpbtfw21.tlv \
> +  ${nonarch_base_libdir}/firmware/qca/hpnv21.bin \
> +  ${nonarch_base_libdir}/firmware/qca/hpnv21g.bin \
> +  ${nonarch_base_libdir}/firmware/qca/hpnv21.301 \
> +  ${nonarch_base_libdir}/firmware/qca/hpnv21.302 \
> +  ${nonarch_base_libdir}/firmware/qca/hpnv21g.301 \
> +  ${nonarch_base_libdir}/firmware/qca/hpnv21g.302 \
> +  ${nonarch_base_libdir}/firmware/qca/hpnv21.309 \
> +  ${nonarch_base_libdir}/firmware/qca/hpnv21g.309 \
> +  ${nonarch_base_libdir}/firmware/qca/hpnv21.b8c \
> +  ${nonarch_base_libdir}/firmware/qca/hpnv21.b9f \
> +  ${nonarch_base_libdir}/firmware/qca/hpnv21.ba0 \
> +  ${nonarch_base_libdir}/firmware/qca/hpnv21.ba1 \
> +  ${nonarch_base_libdir}/firmware/qca/hpnv21.ba2 \
> +  ${nonarch_base_libdir}/firmware/qca/hpnv21.ba3 \
> +  ${nonarch_base_libdir}/firmware/qca/hpnv21.ba4 \
> +  ${nonarch_base_libdir}/firmware/qca/hpnv21.baa \
> +  ${nonarch_base_libdir}/firmware/qca/hpnv21.bb8 \
> +  ${nonarch_base_libdir}/firmware/qca/hpnv21.b10c \
> +  ${nonarch_base_libdir}/firmware/qca/hpnv21.b111 \
> +  ${nonarch_base_libdir}/firmware/qca/hpnv21g.b8c \
> +  ${nonarch_base_libdir}/firmware/qca/hpnv21g.b9f \
> +  ${nonarch_base_libdir}/firmware/qca/hpnv21g.ba0 \
> +  ${nonarch_base_libdir}/firmware/qca/hpnv21g.ba1 \
> +  ${nonarch_base_libdir}/firmware/qca/hpnv21g.ba2 \
> +  ${nonarch_base_libdir}/firmware/qca/hpnv21g.ba3 \
> +  ${nonarch_base_libdir}/firmware/qca/hpnv21g.ba4 \
> +  ${nonarch_base_libdir}/firmware/qca/hpnv21g.baa \
> +  ${nonarch_base_libdir}/firmware/qca/hpnv21g.bb8 \
> +  ${nonarch_base_libdir}/firmware/qca/hpnv21g.b10c \
> +  ${nonarch_base_libdir}/firmware/qca/hpnv21g.b111 \
> +"
> +FILES:${PN}-qca-wcn7850 = " \
> +  ${nonarch_base_libdir}/firmware/qca/hmtbtfw20.tlv \
> +  ${nonarch_base_libdir}/firmware/qca/hmtnv20.b10f \
> +  ${nonarch_base_libdir}/firmware/qca/hmtnv20.b112 \
> +  ${nonarch_base_libdir}/firmware/qca/hmtnv20.bin \
> +"
> +FILES:${PN}-qca-misc = "${nonarch_base_libdir}/firmware/qca/*"
> +# -qca is a virtual package that depends upon all qca packages.
> +ALLOW_EMPTY:${PN}-qca = "1"
> +# -qca-misc is a catch all package that includes all the qca
> +# firmwares that are not already included in other -qca- packages.
> +ALLOW_EMPTY:${PN}-qca-misc = "1"
> +
>  
>  RDEPENDS:${PN}-ar3k += "${PN}-ar3k-license ${PN}-atheros-license"
>  RDEPENDS:${PN}-ath10k += "${PN}-ath10k-license"
> @@ -658,8 +778,14 @@ RDEPENDS:${PN}-ath12k += "${PN}-ath10k-license"
>  RDEPENDS:${PN}-ath12k-qcn9274 += "${PN}-ath10k-license"
>  RDEPENDS:${PN}-ath12k-wcn7850 += "${PN}-ath10k-license"
>  RDEPENDS:${PN}-ath12k-misc += "${PN}-ath10k-license"
> -RDEPENDS:${PN}-qca += "${PN}-ath10k-license"
> -
> +RDEPENDS:${PN}-qca += "${PN}-ath10k-license ${PN}-qcom-license"
> +RDEPENDS:${PN}-qca-qca61x4 += "${PN}-ath10k-license"
> +RDEPENDS:${PN}-qca-wcn3988 += "${PN}-qcom-license"
> +RDEPENDS:${PN}-qca-wcn399x += "${PN}-ath10k-license"
> +RDEPENDS:${PN}-qca-wcn6750 += "${PN}-ath10k-license"
> +RDEPENDS:${PN}-qca-qca2066 += "${PN}-ath10k-license"
> +RDEPENDS:${PN}-qca-wcn7850 += "${PN}-qcom-license"
> +RDEPENDS:${PN}-qca-misc += "${PN}-ath10k-license ${PN}-qcom-license"
>  # For ralink
>  LICENSE:${PN}-ralink = "Firmware-ralink-firmware"
>  LICENSE:${PN}-ralink-license = "Firmware-ralink-firmware"
> @@ -1909,6 +2035,7 @@ RDEPENDS:${PN} += "${PN}-whence-license"
>  # Make linux-firmware-ath10k depend on all of the split-out ath10k packages.
>  # Make linux-firmware-ath11k depend on all of the split-out ath11k packages.
>  # Make linux-firmware-ath12k depend on all of the split-out ath12k packages.
> +# Make linux-firmware-qca depend on all of the split-out qca packages.
>  # Make linux-firmware-amdgpu depend on all of the split-out amdgpu packages.
>  python populate_packages:prepend () {
>      firmware_pkgs = oe.utils.packages_filter_out_system(d)
> @@ -1929,6 +2056,9 @@ python populate_packages:prepend () {
>      ath12k_pkgs = filter(lambda x: x.find('-ath12k-') != -1, firmware_pkgs)
>      d.appendVar('RRECOMMENDS:linux-firmware-ath12k', ' ' + ' '.join(ath12k_pkgs))
>  
> +    qca_pkgs = filter(lambda x: x.find('-qca-') != -1, firmware_pkgs)
> +    d.appendVar('RRECOMMENDS:linux-firmware-qca', ' ' + ' '.join(qca_pkgs))
> +
>      amdgpu_pkgs = filter(lambda x: x.find('-amdgpu-') != -1, firmware_pkgs)
>      d.appendVar('RRECOMMENDS:linux-firmware-amdgpu', ' ' + ' '.join(amdgpu_pkgs))
>  }
> -- 
> 2.34.1
> 
>
diff mbox series

Patch

diff --git a/meta/recipes-kernel/linux-firmware/linux-firmware_20241210.bb b/meta/recipes-kernel/linux-firmware/linux-firmware_20241210.bb
index 78bf13d878..79c273063e 100644
--- a/meta/recipes-kernel/linux-firmware/linux-firmware_20241210.bb
+++ b/meta/recipes-kernel/linux-firmware/linux-firmware_20241210.bb
@@ -395,6 +395,13 @@  PACKAGES =+ "${PN}-amphion-vpu-license ${PN}-amphion-vpu \
              ${PN}-ath12k-wcn7850 \
              ${PN}-ath12k-misc \
              ${PN}-qca \
+             ${PN}-qca-qca61x4 \
+             ${PN}-qca-wcn3988 \
+             ${PN}-qca-wcn399x \
+             ${PN}-qca-wcn6750 \
+             ${PN}-qca-qca2066 \
+             ${PN}-qca-wcn7850 \
+             ${PN}-qca-misc \
              \
              ${PN}-imx-sdma-license ${PN}-imx-sdma-imx6q ${PN}-imx-sdma-imx7d \
              \
@@ -580,7 +587,13 @@  LICENSE:${PN}-ath12k = "Firmware-qualcommAthos_ath10k"
 LICENSE:${PN}-ath12k-qcn9274 = "Firmware-qualcommAthos_ath10k"
 LICENSE:${PN}-ath12k-wcn7850 = "Firmware-qualcommAthos_ath10k"
 LICENSE:${PN}-ath12k-misc = "Firmware-qualcommAthos_ath10k"
-LICENSE:${PN}-qca = "Firmware-qualcommAthos_ath10k"
+LICENSE:${PN}-qca-qca61x4 = "Firmware-qualcommAthos_ath10k"
+LICENSE:${PN}-qca-wcn3988 = "Firmware-qcom"
+LICENSE:${PN}-qca-wcn399x = "Firmware-qualcommAthos_ath10k"
+LICENSE:${PN}-qca-wcn6750 = "Firmware-qualcommAthos_ath10k"
+LICENSE:${PN}-qca-qca2066 = "Firmware-qualcommAthos_ath10k"
+LICENSE:${PN}-qca-wcn7850 = "Firmware-qcom"
+LICENSE:${PN}-qca-misc = "Firmware-qualcommAthos_ath10k & Firmware-qcom"
 
 FILES:${PN}-ar3k-license = "${nonarch_base_libdir}/firmware/LICENSE.QualcommAtheros_ar3k"
 FILES:${PN}-ar3k = " \
@@ -628,9 +641,116 @@  ALLOW_EMPTY:${PN}-ath12k = "1"
 # firmwares that are not already included in other -ath12k- packages.
 ALLOW_EMPTY:${PN}-ath12k-misc = "1"
 
-FILES:${PN}-qca = " \
-  ${nonarch_base_libdir}/firmware/qca \
-"
+FILES:${PN}-qca-qca61x4 = " \
+  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00000201.bin \
+  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00000200.bin \
+  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00000300.bin \
+  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00000302.bin \
+  ${nonarch_base_libdir}/firmware/qca/nvm_00130300.bin \
+  ${nonarch_base_libdir}/firmware/qca/nvm_00130302.bin \
+  ${nonarch_base_libdir}/firmware/qca/nvm_00230302.bin \
+  ${nonarch_base_libdir}/firmware/qca/rampatch_usb_00000200.bin \
+  ${nonarch_base_libdir}/firmware/qca/rampatch_usb_00000201.bin \
+  ${nonarch_base_libdir}/firmware/qca/rampatch_usb_00000300.bin \
+  ${nonarch_base_libdir}/firmware/qca/rampatch_usb_00000302.bin \
+  ${nonarch_base_libdir}/firmware/qca/rampatch_00130300.bin \
+  ${nonarch_base_libdir}/firmware/qca/rampatch_00130302.bin \
+  ${nonarch_base_libdir}/firmware/qca/rampatch_00230302.bin \
+  ${nonarch_base_libdir}/firmware/qca/nvm_00440302.bin \
+  ${nonarch_base_libdir}/firmware/qca/rampatch_00440302.bin \
+  ${nonarch_base_libdir}/firmware/qca/nvm_00440302_eu.bin \
+  ${nonarch_base_libdir}/firmware/qca/nvm_00440302_i2s_eu.bin \
+  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00000302_eu.bin \
+  ${nonarch_base_libdir}/firmware/qca/htbtfw20.tlv \
+  ${nonarch_base_libdir}/firmware/qca/htnv20.bin \
+  ${nonarch_base_libdir}/firmware/qca/rampatch_usb_00130200.bin \
+  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00130200.bin \
+  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00130200_0104.bin \
+  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00130200_0105.bin \
+  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00130200_0106.bin \
+  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00130200_0107.bin \
+  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00130200_0109.bin \
+  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00130200_0110.bin \
+  ${nonarch_base_libdir}/firmware/qca/rampatch_usb_00130201.bin \
+  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00130201.bin \
+  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00130201_010a.bin \
+  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00130201_010b.bin \
+  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00130201_0303.bin \
+  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00130201_gf.bin \
+  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00130201_gf_010a.bin \
+  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00130201_gf_010b.bin \
+  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00130201_gf_0303.bin \
+  ${nonarch_base_libdir}/firmware/qca/rampatch_usb_00190200.bin \
+  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00190200.bin \
+  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00190200_010e.bin \
+  ${nonarch_base_libdir}/firmware/qca/nvm_usb_00190200_0112.bin \
+"
+FILES:${PN}-qca-wcn3988 = " \
+  ${nonarch_base_libdir}/firmware/qca/apbtfw10.tlv \
+  ${nonarch_base_libdir}/firmware/qca/apbtfw11.tlv \
+  ${nonarch_base_libdir}/firmware/qca/apnv10.bin \
+  ${nonarch_base_libdir}/firmware/qca/apnv11.bin \
+"
+FILES:${PN}-qca-wcn399x = " \
+  ${nonarch_base_libdir}/firmware/qca/crbtfw21.tlv \
+  ${nonarch_base_libdir}/firmware/qca/crnv21.bin \
+  ${nonarch_base_libdir}/firmware/qca/crbtfw32.tlv \
+  ${nonarch_base_libdir}/firmware/qca/crnv32.bin \
+  ${nonarch_base_libdir}/firmware/qca/crnv32u.bin \
+"
+FILES:${PN}-qca-wcn6750 = " \
+  ${nonarch_base_libdir}/firmware/qca/msbtfw11.mbn \
+  ${nonarch_base_libdir}/firmware/qca/msbtfw11.tlv \
+  ${nonarch_base_libdir}/firmware/qca/msnv11.bin \
+  ${nonarch_base_libdir}/firmware/qca/msnv11.b0a \
+  ${nonarch_base_libdir}/firmware/qca/msnv11.b09 \
+"
+FILES:${PN}-qca-qca2066 = " \
+  ${nonarch_base_libdir}/firmware/qca/hpbtfw21.tlv \
+  ${nonarch_base_libdir}/firmware/qca/hpnv21.bin \
+  ${nonarch_base_libdir}/firmware/qca/hpnv21g.bin \
+  ${nonarch_base_libdir}/firmware/qca/hpnv21.301 \
+  ${nonarch_base_libdir}/firmware/qca/hpnv21.302 \
+  ${nonarch_base_libdir}/firmware/qca/hpnv21g.301 \
+  ${nonarch_base_libdir}/firmware/qca/hpnv21g.302 \
+  ${nonarch_base_libdir}/firmware/qca/hpnv21.309 \
+  ${nonarch_base_libdir}/firmware/qca/hpnv21g.309 \
+  ${nonarch_base_libdir}/firmware/qca/hpnv21.b8c \
+  ${nonarch_base_libdir}/firmware/qca/hpnv21.b9f \
+  ${nonarch_base_libdir}/firmware/qca/hpnv21.ba0 \
+  ${nonarch_base_libdir}/firmware/qca/hpnv21.ba1 \
+  ${nonarch_base_libdir}/firmware/qca/hpnv21.ba2 \
+  ${nonarch_base_libdir}/firmware/qca/hpnv21.ba3 \
+  ${nonarch_base_libdir}/firmware/qca/hpnv21.ba4 \
+  ${nonarch_base_libdir}/firmware/qca/hpnv21.baa \
+  ${nonarch_base_libdir}/firmware/qca/hpnv21.bb8 \
+  ${nonarch_base_libdir}/firmware/qca/hpnv21.b10c \
+  ${nonarch_base_libdir}/firmware/qca/hpnv21.b111 \
+  ${nonarch_base_libdir}/firmware/qca/hpnv21g.b8c \
+  ${nonarch_base_libdir}/firmware/qca/hpnv21g.b9f \
+  ${nonarch_base_libdir}/firmware/qca/hpnv21g.ba0 \
+  ${nonarch_base_libdir}/firmware/qca/hpnv21g.ba1 \
+  ${nonarch_base_libdir}/firmware/qca/hpnv21g.ba2 \
+  ${nonarch_base_libdir}/firmware/qca/hpnv21g.ba3 \
+  ${nonarch_base_libdir}/firmware/qca/hpnv21g.ba4 \
+  ${nonarch_base_libdir}/firmware/qca/hpnv21g.baa \
+  ${nonarch_base_libdir}/firmware/qca/hpnv21g.bb8 \
+  ${nonarch_base_libdir}/firmware/qca/hpnv21g.b10c \
+  ${nonarch_base_libdir}/firmware/qca/hpnv21g.b111 \
+"
+FILES:${PN}-qca-wcn7850 = " \
+  ${nonarch_base_libdir}/firmware/qca/hmtbtfw20.tlv \
+  ${nonarch_base_libdir}/firmware/qca/hmtnv20.b10f \
+  ${nonarch_base_libdir}/firmware/qca/hmtnv20.b112 \
+  ${nonarch_base_libdir}/firmware/qca/hmtnv20.bin \
+"
+FILES:${PN}-qca-misc = "${nonarch_base_libdir}/firmware/qca/*"
+# -qca is a virtual package that depends upon all qca packages.
+ALLOW_EMPTY:${PN}-qca = "1"
+# -qca-misc is a catch all package that includes all the qca
+# firmwares that are not already included in other -qca- packages.
+ALLOW_EMPTY:${PN}-qca-misc = "1"
+
 
 RDEPENDS:${PN}-ar3k += "${PN}-ar3k-license ${PN}-atheros-license"
 RDEPENDS:${PN}-ath10k += "${PN}-ath10k-license"
@@ -658,8 +778,14 @@  RDEPENDS:${PN}-ath12k += "${PN}-ath10k-license"
 RDEPENDS:${PN}-ath12k-qcn9274 += "${PN}-ath10k-license"
 RDEPENDS:${PN}-ath12k-wcn7850 += "${PN}-ath10k-license"
 RDEPENDS:${PN}-ath12k-misc += "${PN}-ath10k-license"
-RDEPENDS:${PN}-qca += "${PN}-ath10k-license"
-
+RDEPENDS:${PN}-qca += "${PN}-ath10k-license ${PN}-qcom-license"
+RDEPENDS:${PN}-qca-qca61x4 += "${PN}-ath10k-license"
+RDEPENDS:${PN}-qca-wcn3988 += "${PN}-qcom-license"
+RDEPENDS:${PN}-qca-wcn399x += "${PN}-ath10k-license"
+RDEPENDS:${PN}-qca-wcn6750 += "${PN}-ath10k-license"
+RDEPENDS:${PN}-qca-qca2066 += "${PN}-ath10k-license"
+RDEPENDS:${PN}-qca-wcn7850 += "${PN}-qcom-license"
+RDEPENDS:${PN}-qca-misc += "${PN}-ath10k-license ${PN}-qcom-license"
 # For ralink
 LICENSE:${PN}-ralink = "Firmware-ralink-firmware"
 LICENSE:${PN}-ralink-license = "Firmware-ralink-firmware"
@@ -1909,6 +2035,7 @@  RDEPENDS:${PN} += "${PN}-whence-license"
 # Make linux-firmware-ath10k depend on all of the split-out ath10k packages.
 # Make linux-firmware-ath11k depend on all of the split-out ath11k packages.
 # Make linux-firmware-ath12k depend on all of the split-out ath12k packages.
+# Make linux-firmware-qca depend on all of the split-out qca packages.
 # Make linux-firmware-amdgpu depend on all of the split-out amdgpu packages.
 python populate_packages:prepend () {
     firmware_pkgs = oe.utils.packages_filter_out_system(d)
@@ -1929,6 +2056,9 @@  python populate_packages:prepend () {
     ath12k_pkgs = filter(lambda x: x.find('-ath12k-') != -1, firmware_pkgs)
     d.appendVar('RRECOMMENDS:linux-firmware-ath12k', ' ' + ' '.join(ath12k_pkgs))
 
+    qca_pkgs = filter(lambda x: x.find('-qca-') != -1, firmware_pkgs)
+    d.appendVar('RRECOMMENDS:linux-firmware-qca', ' ' + ' '.join(qca_pkgs))
+
     amdgpu_pkgs = filter(lambda x: x.find('-amdgpu-') != -1, firmware_pkgs)
     d.appendVar('RRECOMMENDS:linux-firmware-amdgpu', ' ' + ' '.join(amdgpu_pkgs))
 }