Iv had some some progress with at11k. I have attached is a DTS patch and makefile for the IPQ8074 firmware (didnt get chance to push it), it fixes the q6v5 loading.
DTS Patch
diff --git a/target/linux/ipq807x/config-default b/target/linux/ipq807x/config-default
index b85af2e7d2..258ef56a50 100644
--- a/target/linux/ipq807x/config-default
+++ b/target/linux/ipq807x/config-default
@@ -131,6 +131,8 @@ CONFIG_CLEANCACHE=y
CONFIG_CLKDEV_LOOKUP=y
CONFIG_CLONE_BACKWARDS=y
CONFIG_CLZ_TAB=y
+CONFIG_CMDLINE="ubi.mtd=rootfs root=/dev/ubiblock0_1 rootfstype=squashfs rootwait earlycon debug"
+CONFIG_CMDLINE_FORCE=y
CONFIG_COMMON_CLK=y
CONFIG_COMMON_CLK_QCOM=y
CONFIG_COMMON_CLK_XGENE=y
@@ -376,6 +378,7 @@ CONFIG_IIO=y
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
+# CONFIG_INITRAMFS_FORCE is not set
CONFIG_INITRAMFS_SOURCE=""
# CONFIG_IONIC is not set
# CONFIG_IPQ_GCC_4019 is not set
@@ -526,6 +529,7 @@ CONFIG_PINCTRL_QCOM_SPMI_PMIC=y
# CONFIG_PINCTRL_SDM845 is not set
# CONFIG_PINCTRL_SM8150 is not set
# CONFIG_PKCS8_PRIVATE_KEY_PARSER is not set
+CONFIG_PLUGIN_HOSTCC="g++"
CONFIG_PM=y
# CONFIG_PM8916_WATCHDOG is not set
CONFIG_PM_CLK=y
@@ -550,9 +554,10 @@ CONFIG_PWM=y
CONFIG_PWM_SYSFS=y
CONFIG_QCOM_A53PLL=y
# CONFIG_QCOM_AOSS_QMP is not set
-# CONFIG_QCOM_APCS_IPC is not set
+CONFIG_QCOM_APCS_IPC=y
# CONFIG_QCOM_APR is not set
CONFIG_QCOM_BAM_DMA=y
+# CONFIG_QCOM_CLK_APCS_MSM8916 is not set
# CONFIG_QCOM_CLK_RPM is not set
# CONFIG_QCOM_COINCELL is not set
# CONFIG_QCOM_COMMAND_DB is not set
@@ -589,7 +594,7 @@ CONFIG_QCOM_SYSMON=y
CONFIG_QCOM_TSENS=y
CONFIG_QCOM_VADC_COMMON=y
# CONFIG_QCOM_WCNSS_CTRL is not set
-# CONFIG_QCOM_WCNSS_PIL is not set
+CONFIG_QCOM_WCNSS_PIL=y
CONFIG_QCOM_WDT=y
# CONFIG_QCS_GCC_404 is not set
# CONFIG_QCS_TURING_404 is not set
diff --git a/target/linux/ipq807x/files-5.4/arch/arm64/boot/dts/qcom/ipq8074-ax3600.dts b/target/linux/ipq807x/files-5.4/arch/arm64/boot/dts/qcom/ipq8074-ax3600.dts
index 3aba43194c..a8e106ff37 100644
--- a/target/linux/ipq807x/files-5.4/arch/arm64/boot/dts/qcom/ipq8074-ax3600.dts
+++ b/target/linux/ipq807x/files-5.4/arch/arm64/boot/dts/qcom/ipq8074-ax3600.dts
@@ -24,6 +24,12 @@
device_type = "memory";
reg = <0x0 0x40000000 0x0 0x20000000>;
};
+
+ tcsr_mutex: hwlock {
+ compatible = "qcom,tcsr-mutex";
+ syscon = <&tcsr_mutex_regs 0 0x80>;
+ #hwlock-cells = <1>;
+ };
reserved-memory {
#address-cells = <2>;
@@ -64,11 +70,18 @@
no-map;
reg = <0x0 0x4e700000 0x0 0x100000>;
};
- wifi_dump@50500000 {
+
+ wifi_dump@50500000 {
no-map;
reg = <0x0 0x50500000 0x0 0x200000>;
};
};
+
+ smem {
+ compatible = "qcom,smem";
+ memory-region = <&smem_region>;
+ hwlocks = <&tcsr_mutex 0>;
+ };
soc {
pinctrl@1000000 {
@@ -122,47 +135,27 @@
};
+ tcsr_mutex_regs: syscon@1905000 {
+ compatible = "syscon";
+ reg = <0x01905000 0x8000>;
+ };
apcs: syscon@b111000 {
compatible = "syscon";
reg = <0x0B111000 0x1000>;
};
+
tcsr_q6_block: syscon@1945000 {
compatible = "syscon";
reg = <0x1945000 0xE000>;
};
- apcs_glb: mailbox@b111000 {
- compatible = "qcom,msm8996-apcs-hmss-global";
- qcom,ipc = <&apcs 8 8>;
-
- #mbox-cells = <1>;
- };
-
- wcss: smp2p-wcss {
- compatible = "qcom,smp2p";
- qcom,smem = <435>, <428>;
-
- interrupt-parent = <&intc>;
- interrupts = <0 322 1>;
-
- qcom,ipc = <&apcs 8 9>;
-
- qcom,local-pid = <0>;
- qcom,remote-pid = <1>;
-
- wcss_smp2p_out: master-kernel {
- qcom,entry-name = "master-kernel";
- qcom,smp2p-feature-ssr-ack;
- #qcom,smem-state-cells = <1>;
- };
- wcss_smp2p_in: slave-kernel {
- qcom,entry-name = "slave-kernel";
+ apcs_glb: mailbox@b111000 {
+ compatible = "qcom,ipq8074-apcs-apps-global";
+ reg = <0x0b111000 0xc>;
- interrupt-controller;
- #interrupt-cells = <2>;
- };
- };
+ #mbox-cells = <1>;
+ };
serial@78b3000 {
status = "ok";
@@ -1089,6 +1082,30 @@
};
+ wcss: smp2p-wcss {
+ compatible = "qcom,smp2p";
+ qcom,smem = <435>, <428>;
+
+ interrupt-parent = <&intc>;
+ interrupts = <GIC_SPI 322 IRQ_TYPE_EDGE_RISING>;
+
+ mboxes = <&apcs_glb 9>;
+
+ qcom,local-pid = <0>;
+ qcom,remote-pid = <1>;
+
+ wcss_smp2p_out: master-kernel {
+ qcom,entry-name = "master-kernel";
+ #qcom,smem-state-cells = <1>;
+ };
+
+ wcss_smp2p_in: slave-kernel {
+ qcom,entry-name = "slave-kernel";
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+ };
+
leds {
compatible = "gpio-leds";
pinctrl-0 = <&led_pins>;
package/firmware/ath11k-firmware/Makefile
#
# Copyright (C) 2015 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=ath11k-firmware
PKG_SOURCE_DATE:=2019-10-03
PKG_SOURCE_VERSION:=master
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/kvalo/ath11k-firmware.git
PKG_MAINTAINER:=New Maintainer <maintainer@maintainer.com>
include $(INCLUDE_DIR)/package.mk
define Package/ath11k-firmware-default
SECTION:=firmware
CATEGORY:=Firmware
URL:=$(PKG_SOURCE_URL)
DEPENDS:=
endef
define Package/ath11k-firmware-ipq8074
$(Package/ath11k-firmware-default)
TITLE:=ath11k firmware for ipq8074 devices
endef
define Build/Compile
endef
define Package/ath11k-firmware-ipq8074/install
$(INSTALL_DIR) $(1)/lib/firmware/IPQ8074
$(INSTALL_DATA) $(PKG_BUILD_DIR)/IPQ8074/hw2.0/2.1.0.1/WLAN.HK.2.1.0.1-01228-QCAHKSWPL_SILICONZ-1/m3_fw.b00 $(1)/lib/firmware/IPQ8074/
$(INSTALL_DATA) $(PKG_BUILD_DIR)/IPQ8074/hw2.0/2.1.0.1/WLAN.HK.2.1.0.1-01228-QCAHKSWPL_SILICONZ-1/m3_fw.b01 $(1)/lib/firmware/IPQ8074/
$(INSTALL_DATA) $(PKG_BUILD_DIR)/IPQ8074/hw2.0/2.1.0.1/WLAN.HK.2.1.0.1-01228-QCAHKSWPL_SILICONZ-1/m3_fw.b02 $(1)/lib/firmware/IPQ8074/
$(INSTALL_DATA) $(PKG_BUILD_DIR)/IPQ8074/hw2.0/2.1.0.1/WLAN.HK.2.1.0.1-01228-QCAHKSWPL_SILICONZ-1/m3_fw.flist $(1)/lib/firmware/IPQ8074/
$(INSTALL_DATA) $(PKG_BUILD_DIR)/IPQ8074/hw2.0/2.1.0.1/WLAN.HK.2.1.0.1-01228-QCAHKSWPL_SILICONZ-1/m3_fw.mdt $(1)/lib/firmware/IPQ8074/
$(INSTALL_DATA) $(PKG_BUILD_DIR)/IPQ8074/hw2.0/2.1.0.1/WLAN.HK.2.1.0.1-01228-QCAHKSWPL_SILICONZ-1/q6_fw.b00 $(1)/lib/firmware/IPQ8074/
$(INSTALL_DATA) $(PKG_BUILD_DIR)/IPQ8074/hw2.0/2.1.0.1/WLAN.HK.2.1.0.1-01228-QCAHKSWPL_SILICONZ-1/q6_fw.b01 $(1)/lib/firmware/IPQ8074/
$(INSTALL_DATA) $(PKG_BUILD_DIR)/IPQ8074/hw2.0/2.1.0.1/WLAN.HK.2.1.0.1-01228-QCAHKSWPL_SILICONZ-1/q6_fw.b02 $(1)/lib/firmware/IPQ8074/
$(INSTALL_DATA) $(PKG_BUILD_DIR)/IPQ8074/hw2.0/2.1.0.1/WLAN.HK.2.1.0.1-01228-QCAHKSWPL_SILICONZ-1/q6_fw.b03 $(1)/lib/firmware/IPQ8074/
$(INSTALL_DATA) $(PKG_BUILD_DIR)/IPQ8074/hw2.0/2.1.0.1/WLAN.HK.2.1.0.1-01228-QCAHKSWPL_SILICONZ-1/q6_fw.b04 $(1)/lib/firmware/IPQ8074/
$(INSTALL_DATA) $(PKG_BUILD_DIR)/IPQ8074/hw2.0/2.1.0.1/WLAN.HK.2.1.0.1-01228-QCAHKSWPL_SILICONZ-1/q6_fw.b05 $(1)/lib/firmware/IPQ8074/
$(INSTALL_DATA) $(PKG_BUILD_DIR)/IPQ8074/hw2.0/2.1.0.1/WLAN.HK.2.1.0.1-01228-QCAHKSWPL_SILICONZ-1/q6_fw.b07 $(1)/lib/firmware/IPQ8074/
$(INSTALL_DATA) $(PKG_BUILD_DIR)/IPQ8074/hw2.0/2.1.0.1/WLAN.HK.2.1.0.1-01228-QCAHKSWPL_SILICONZ-1/q6_fw.b08 $(1)/lib/firmware/IPQ8074/
$(INSTALL_DATA) $(PKG_BUILD_DIR)/IPQ8074/hw2.0/2.1.0.1/WLAN.HK.2.1.0.1-01228-QCAHKSWPL_SILICONZ-1/q6_fw.flist $(1)/lib/firmware/IPQ8074/
$(INSTALL_DATA) $(PKG_BUILD_DIR)/IPQ8074/hw2.0/2.1.0.1/WLAN.HK.2.1.0.1-01228-QCAHKSWPL_SILICONZ-1/q6_fw.mdt $(1)/lib/firmware/IPQ8074/
endef
$(eval $(call BuildPackage,ath11k-firmware-ipq8074))
Q6V5 Logs
[ 2.345209] q6v5_wcss_probe ++
[ 2.345406] qcom_q6v5_init
[ 2.351306] remoteproc remoteproc0: cd00000.q6v5_wcss is available
[ 2.356465] remoteproc remoteproc0: powering up cd00000.q6v5_wcss
[ 2.362501] rproc_fw_boot ++
[ 2.363095] NET: Registered protocol family 10
[ 2.368636] remoteproc remoteproc0: Booting fw image IPQ8074/q6_fw.mdt, size 668
[ 2.368641] rproc_fw_boot : fw loaded ++
[ 2.377780] Segment Routing with IPv6
[ 2.387433] NET: Registered protocol family 17
[ 2.391023] 8021q: 802.1Q VLAN Support v1.8
[ 2.411806] ubi0: attaching mtd12
[ 2.492160] remoteproc remoteproc0: remote processor cd00000.q6v5_wcss is now up
New ath11k error
[ 8.346526] ath11k c000000.wifi: can't request region for resource [mem 0x0c000000-0x0dffffff]
[ 8.346564] ath11k c000000.wifi: ioremap error
[ 8.354065] ath11k: probe of c000000.wifi failed with error -16