diff --git a/meta-digi-arm/conf/machine/ccmp13-dvk.conf b/meta-digi-arm/conf/machine/ccmp13-dvk.conf index 7564a34d4..d448cba91 100644 --- a/meta-digi-arm/conf/machine/ccmp13-dvk.conf +++ b/meta-digi-arm/conf/machine/ccmp13-dvk.conf @@ -59,7 +59,7 @@ MACHINE_FEATURES += "wifi" # ========================================================================= # Firmware # ========================================================================= -MACHINE_FIRMWARE:append = " firmware-murata-infineon firmware-murata-infineon-mfgtest" +MACHINE_FIRMWARE:append = " firmware-murata-infineon" MACHINE_EXTRA_RRECOMMENDS += " \ ${MACHINE_FIRMWARE} \ diff --git a/meta-digi-arm/conf/machine/ccmp15-dvk.conf b/meta-digi-arm/conf/machine/ccmp15-dvk.conf index 9d4e5fd72..56f0a57ee 100644 --- a/meta-digi-arm/conf/machine/ccmp15-dvk.conf +++ b/meta-digi-arm/conf/machine/ccmp15-dvk.conf @@ -67,7 +67,7 @@ MACHINE_FEATURES += "gpu" # ========================================================================= # Firmware # ========================================================================= -MACHINE_FIRMWARE:append = " firmware-murata-infineon firmware-murata-infineon-mfgtest" +MACHINE_FIRMWARE:append = " firmware-murata-infineon" MACHINE_EXTRA_RRECOMMENDS += " \ ${MACHINE_FIRMWARE} \ diff --git a/meta-digi-arm/recipes-bsp/firmware-murata-infineon/firmware-murata-infineon.bb b/meta-digi-arm/recipes-bsp/firmware-murata-infineon/firmware-murata-infineon.bb index 4377c33f2..ac9f11d92 100644 --- a/meta-digi-arm/recipes-bsp/firmware-murata-infineon/firmware-murata-infineon.bb +++ b/meta-digi-arm/recipes-bsp/firmware-murata-infineon/firmware-murata-infineon.bb @@ -1,4 +1,4 @@ -# Copyright (C) 2022,2024 Digi International Inc. +# Copyright (C) 2022-2024 Digi International Inc. SUMMARY = "Murata Infineon firmware binaries" SECTION = "base" @@ -12,6 +12,9 @@ SRC_URI = " \ git://github.com/murata-wireless/cyw-fmac-utils-imx32;protocol=http;branch=master;destsuffix=cyw-fmac-utils-imx32;name=cyw-fmac-utils-imx32 \ git://github.com/murata-wireless/cyw-fmac-utils-imx64;protocol=http;branch=master;destsuffix=cyw-fmac-utils-imx64;name=cyw-fmac-utils-imx64 \ file://cyfmac4373-sdio_US.clm_blob \ + file://cyfmac4373-sdio_World.clm_blob \ + file://cyw4373-autocountry \ + file://cyw4373-autocountry.service \ " SRCREV_cyw-fmac-fw="db8deb03b8d24e5069ac4581d1c35b767012e926" @@ -35,11 +38,13 @@ do_install () { # Install Bluetooth patch *.HCD file # For Murata 2AE (LBEE5PK2AE-564) install -m 444 ${S}/cyw-bt-patch/BCM4373A0_001.001.025.0103.0155.FCC.CE.2AE.hcd ${D}${base_libdir}/firmware/brcm/BCM4373A0_FCC.CE.hcd + install -m 444 ${S}/cyw-bt-patch/BCM4373A0_001.001.025.0103.0156.JRL.2AE.hcd ${D}${base_libdir}/firmware/brcm/BCM4373A0_JRL.hcd # Install WLAN firmware file (*.bin) and Regulatory binary file (*.clm_blob) # For Murata 2AE (LBEE5PK2AE-564) install -m 444 ${S}/cyw-fmac-fw/cyfmac4373-sdio.2AE.bin ${D}${base_libdir}/firmware/cypress/cyfmac4373-sdio.bin install -m 444 cyfmac4373-sdio_US.clm_blob ${D}${base_libdir}/firmware/cypress/cyfmac4373-sdio_US.clm_blob + install -m 444 cyfmac4373-sdio_World.clm_blob ${D}${base_libdir}/firmware/cypress/cyfmac4373-sdio_World.clm_blob # Install NVRAM files (*.txt) # For Murata 2AE (LBEE5PK2AE-564) @@ -51,9 +56,31 @@ do_install () { else install -m 755 ${S}/cyw-fmac-utils-imx32/wl ${D}${sbindir} fi + + if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then + # Install systemd unit files + install -d ${D}${systemd_unitdir}/system/ + install -m 0644 ${WORKDIR}/cyw4373-autocountry.service ${D}${systemd_unitdir}/system/cyw4373-autocountry.service + fi + + install -d ${D}${sysconfdir}/init.d/ + install -m 0755 ${WORKDIR}/cyw4373-autocountry ${D}${sysconfdir}/cyw4373-autocountry + ln -sf /etc/cyw4373-autocountry ${D}${sysconfdir}/init.d/cyw4373-autocountry } -PACKAGES =+ "${PN}-mfgtest" +inherit update-rc.d systemd + +INITSCRIPT_PACKAGES += "${PN}-autocountry" +INITSCRIPT_NAME:${PN}-autocountry = "cyw4373-autocountry" +INITSCRIPT_PARAMS:${PN}-autocountry = "start 19 2 3 4 5 . stop 21 0 1 6 ." + +SYSTEMD_PACKAGES = "${PN}-autocountry" +SYSTEMD_SERVICE:${PN}-autocountry = "cyw4373-autocountry.service" + +PACKAGES =+ " \ + ${PN}-mfgtest \ + ${PN}-autocountry \ +" FILES:${PN} = " \ ${base_libdir}/firmware \ @@ -63,6 +90,15 @@ FILES:${PN}-mfgtest = " \ ${sbindir} \ " +FILES:${PN}-autocountry = " \ + ${sysconfdir}/cyw4373-autocountry \ + ${sysconfdir}/init.d/cyw4373-autocountry \ + ${systemd_unitdir}/system/cyw4373-autocountry.service \ +" + +RDEPENDS:${PN}:append = " ${PN}-autocountry" +RDEPENDS:${PN}-autocountry:append = " ${PN}-mfgtest" + INSANE_SKIP:${PN} += "build-deps" INSANE_SKIP:${PN} += "file-rdeps" diff --git a/meta-digi-arm/recipes-bsp/firmware-murata-infineon/firmware-murata-infineon/cyfmac4373-sdio_World.clm_blob b/meta-digi-arm/recipes-bsp/firmware-murata-infineon/firmware-murata-infineon/cyfmac4373-sdio_World.clm_blob new file mode 100644 index 000000000..4aef50d59 Binary files /dev/null and b/meta-digi-arm/recipes-bsp/firmware-murata-infineon/firmware-murata-infineon/cyfmac4373-sdio_World.clm_blob differ diff --git a/meta-digi-arm/recipes-bsp/firmware-murata-infineon/firmware-murata-infineon/cyw4373-autocountry b/meta-digi-arm/recipes-bsp/firmware-murata-infineon/firmware-murata-infineon/cyw4373-autocountry new file mode 100644 index 000000000..1ea470a13 --- /dev/null +++ b/meta-digi-arm/recipes-bsp/firmware-murata-infineon/firmware-murata-infineon/cyw4373-autocountry @@ -0,0 +1,38 @@ +#!/bin/sh +#=============================================================================== +# +# Copyright (C) 2024 by Digi International Inc. +# All rights reserved. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 as published by +# the Free Software Foundation. +# +# +# !Description: Enable Wireless autocountry feature (802.11d) +# +#=============================================================================== + +SCRIPTNAME="$(basename ${0})" + +log() { + if type "systemd-cat" >/dev/null 2>/dev/null; then + systemd-cat -p "${1}" -t "${SCRIPTNAME}" printf "%s" "${2}" + else + logger -p "${1}" -t "${SCRIPTNAME}" "${2}" + fi +} + +# Only for Wireless variants +if [ -d "/proc/device-tree/wireless" ]; then + # Check if WorldWide regulatory domain is available + if wl country list | grep -qs ^XZ; then + # Select WorldWide Country Code as driver operational region + wl country XZ/0 agg + # Select WorldWide Country Code for use with Auto Contry Discovery + wl autocountry_default XZ + # Enable 802.11d + wl autocountry 1 + log info "Set WorldWide regulatory domain" + fi +fi diff --git a/meta-digi-arm/recipes-bsp/firmware-murata-infineon/firmware-murata-infineon/cyw4373-autocountry.service b/meta-digi-arm/recipes-bsp/firmware-murata-infineon/firmware-murata-infineon/cyw4373-autocountry.service new file mode 100644 index 000000000..eeda03d77 --- /dev/null +++ b/meta-digi-arm/recipes-bsp/firmware-murata-infineon/firmware-murata-infineon/cyw4373-autocountry.service @@ -0,0 +1,10 @@ +[Unit] +Description=CYW4373 autocountry (802.11d) +After=network.target suspend.target + +[Service] +Type=oneshot +ExecStart=/etc/cyw4373-autocountry + +[Install] +WantedBy=multi-user.target suspend.target diff --git a/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm.bb b/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm.bb index fc3437f36..2737a910c 100644 --- a/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm.bb +++ b/meta-digi-arm/recipes-bsp/firmware-qualcomm/firmware-qualcomm.bb @@ -132,6 +132,10 @@ do_install() { length="$(expr $(stat -L -c %s ${D}${base_libdir}/firmware/qca/nvm_tlv_3.2.bin) - 4)" /bin/echo -ne "\x$(printf '%02x' $(expr $length % 256))" | dd of=${D}${base_libdir}/firmware/qca/nvm_tlv_3.2.bin bs=1 seek=1 count=1 conv=notrunc,fsync /bin/echo -ne "\x$(printf '%02x' $(expr $length / 256))" | dd of=${D}${base_libdir}/firmware/qca/nvm_tlv_3.2.bin bs=1 seek=2 count=1 conv=notrunc,fsync + + # Create World BDF file + cp ${D}${WIFI_FW_PATH}/bdwlan30_US.bin ${D}${WIFI_FW_PATH}/bdwlan30_World.bin + /bin/echo -ne "\x60\x00" | dd of="${D}${WIFI_FW_PATH}/bdwlan30_World.bin" bs=1 seek=12 count=2 conv=notrunc,fsync } QCA_MODEL ?= "qca6564"