ccimx6ulsom: Add wireless driver and firmware files

The ConnectCore 6UL SOM contains a Qualcomm QCA6564A wireless and Bluetooth
chipset with the following features:

* Dual band 5GHz 802.11ac or 2.4/5GHz 802.11n support
* Open, WPA and WPA2 personal and enterprise authentication
* AES/TKIP encryption
* Station, softAP and Wi-Fi direct modes
* FCC compliant US regulatory domain support
* Bluetooth 4.2, backwards compatible with older standard revisions

This commit builds an out-of-tree driver for it as well as installs
firmware files for both Wi-Fi and Bluetooth.

Signed-off-by: Alex Gonzalez <alex.gonzalez@digi.com>
This commit is contained in:
Alex Gonzalez 2019-01-11 18:04:40 +01:00 committed by Otavio Salvador
parent 40a05f3b8c
commit c49b5a14b9
4 changed files with 100 additions and 0 deletions

View File

@ -21,6 +21,14 @@ UBOOT_CONFIG[ccimx6ulstarter] = "ccimx6ulstarter_defconfig"
MACHINE_EXTRA_RDEPENDS += " \
mtd-utils-ubifs \
"
MACHINE_FEATURES += " wifi bluetooth"
MACHINE_EXTRA_RRECOMMENDS += " \
${@bb.utils.contains('MACHINE_FEATURES', 'wifi', 'kernel-module-qca6564 linux-firmware-qca6564-wifi', '', d)} \
${@bb.utils.contains('MACHINE_FEATURES', 'bluetooth', 'linux-firmware-qca6564-bt', '', d)} \
"
# mkfs.ubifs parameters for boot partition (the one holding kernel and device tree files)
# Max LEB count (-c 255) calculated for a partition of up to 32 MiB considering 128 KiB erase-block size.
MKUBIFS_BOOT_ARGS ?= "-m 2048 -e 126976 -c 255"

View File

@ -0,0 +1,4 @@
# Load the wlan module with values for SDIO3.0.
options wlan asyncintdelay=0x2 writecccr1=0xf2 writecccr1value=0xf \
writecccr2=0xf1 writecccr2value=0xa8 writecccr3=0xf0 \
writecccr3value=0xa1 writecccr4=0x15 writecccr4value=0x30

View File

@ -0,0 +1,57 @@
# Copyright (C) 2019 Digi International Inc.
SUMMARY = "Qualcomm QCA6564 wireless driver module"
LICENSE = "ISC"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/ISC;md5=f3b90e78ea0cffb20bf5cca7947a896d"
# Reference Qualcomm tag/version
PV = "v4.2.89.63+${SRCPV}"
SRCBRANCH = "qca6564/master"
SRCREV = "2e780b29209ca6b0f71442be5fd36cf0ddddc661"
SRC_URI = "\
git://github.com/digi-embedded/qcacld-2.0.git;protocol=git;branch=${SRCBRANCH} \
file://modprobe-qca6564.conf \
"
S = "${WORKDIR}/git"
inherit module
EXTRA_OEMAKE += "CONFIG_LINUX_QCMBR=y WLAN_OPEN_SOURCE=1"
# Explicity state it is not a QC platform, if not the driver will try to remap
# memory that is not allowed in ARMv6
EXTRA_OEMAKE += "CONFIG_NON_QC_PLATFORM=y"
# Flag to compile the debug version (1 - enabled, rest of values - disabled)
EXTRA_OEMAKE += "BUILD_DEBUG_VERSION=0"
# Flags for SDIO interface
EXTRA_OEMAKE += "CONFIG_CLD_HL_SDIO_CORE=y"
do_compile_prepend() {
export BUILD_VER=${PV}
}
do_install_prepend() {
sed -i -e "s/gVhtTxMCS=2/gVhtTxMCS=0/g" ${WORKDIR}/git/firmware_bin/WCNSS_qcom_cfg.ini
}
do_install_append() {
install -d ${D}${sysconfdir}/modprobe.d
install -m 0644 ${WORKDIR}/modprobe-qca6564.conf ${D}${sysconfdir}/modprobe.d/qca6564.conf
install -d ${D}${base_libdir}/firmware/wlan/
install -m 0644 ${WORKDIR}/git/firmware_bin/WCNSS_cfg.dat ${D}${base_libdir}/firmware/wlan/cfg.dat
install -m 0644 ${WORKDIR}/git/firmware_bin/WCNSS_qcom_cfg.ini ${D}${base_libdir}/firmware/wlan/qcom_cfg.ini
sed -i -e "s/gVhtTxMCS=2/gVhtTxMCS=0/g" ${D}${base_libdir}/firmware/wlan/qcom_cfg.ini
}
FILES_${PN} += " \
${sysconfdir}/modprobe.d/qca6564.conf \
${base_libdir}/firmware/wlan/cfg.dat \
${base_libdir}/firmware/wlan/qcom_cfg.ini \
"
RRECOMMENDS_${PN} = "hostapd iw crda wireless-regdb udev-rules-digi"
COMPATIBLE_MACHINE = "(ccimx6ul)"

View File

@ -0,0 +1,31 @@
# Copyright (C) 2019 Digi International Inc.
SUMMARY = "Firmware files for Qualcomm's QCA6564 wireless chip"
SECTION = "base"
LICENSE = "Proprietary"
LIC_FILES_CHKSUM = "file://LICENCE.atheros_firmware;md5=30a14c7823beedac9fa39c64fdd01a13"
SRC_URI = "ftp://ftp1.digi.com/support/digiembeddedyocto/source/${BPN}-${PV}.tar.gz"
SRC_URI[md5sum] = "7400b74881ac499517b6ad761a54f8fc"
SRC_URI[sha256sum] = "be3a56334764e21ee297260b6648075b7fada6f55e24a287a24e7c7d128e27ef"
S = "${WORKDIR}/linux-firmware-qca6564/"
do_install() {
install -d ${D}${base_libdir}/firmware/qca
install -m 0644 nvm_tlv_3.2.bin ${D}${base_libdir}/firmware/qca
install -m 0644 rampatch_tlv_3.2.tlv ${D}${base_libdir}/firmware/qca
install -m 0644 bdwlan30_US.bin ${D}${base_libdir}/firmware
install -m 0644 LICENCE.atheros_firmware ${D}${base_libdir}/firmware
install -m 0644 otp30.bin ${D}${base_libdir}/firmware
install -m 0644 qwlan30.bin ${D}${base_libdir}/firmware
install -m 0644 utf30.bin ${D}${base_libdir}/firmware
}
PACKAGES = "${PN}-bt ${PN}-wifi"
FILES_${PN}-bt = "/lib/firmware/qca"
FILES_${PN}-wifi = "/lib/firmware"
PACKAGE_ARCH = "${MACHINE_ARCH}"
COMPATIBLE_MACHINE = "(ccimx6ul)"