From a1ead2894460b4238c02fa7b39d6ed022e04ce41 Mon Sep 17 00:00:00 2001 From: Christian Marangi Date: Wed, 29 Jun 2022 17:59:51 +0200 Subject: [PATCH] ipq806x: use nvmem for precal on smem based device Use nvmem cells for precal bin on smem based device. Signed-off-by: Christian Marangi --- .../etc/hotplug.d/firmware/11-ath10k-caldata | 16 ------- .../arm/boot/dts/qcom-ipq8064-eax500.dtsi | 44 ++++++++++++++++++ .../arch/arm/boot/dts/qcom-ipq8064-g10.dts | 20 ++++++++ .../arm/boot/dts/qcom-ipq8065-nbg6817.dts | 46 +++++++++++++++++++ .../arm/boot/dts/qcom-ipq8068-ecw5410.dts | 20 ++++++++ 5 files changed, 130 insertions(+), 16 deletions(-) diff --git a/target/linux/ipq806x/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ipq806x/base-files/etc/hotplug.d/firmware/11-ath10k-caldata index 398ddf9a29..ae96ee3037 100644 --- a/target/linux/ipq806x/base-files/etc/hotplug.d/firmware/11-ath10k-caldata +++ b/target/linux/ipq806x/base-files/etc/hotplug.d/firmware/11-ath10k-caldata @@ -17,12 +17,8 @@ case "$FIRMWARE" in ;; "ath10k/pre-cal-pci-0000:01:00.0.bin") case $board in - asrock,g10) - caldata_extract "0:art" 0x1000 0x2f20 - ;; linksys,ea7500-v1 |\ linksys,ea8500) - caldata_extract "art" 0x1000 0x2f20 ath10k_patch_mac $(macaddr_add $(mtd_get_mac_ascii devinfo hw_mac_addr) 1) ;; meraki,mr42) @@ -30,22 +26,14 @@ case "$FIRMWARE" in caldata_extract_ubi "ART" 0x1000 0x2f20 ;; zyxel,nbg6817) - caldata_extract "0:art" 0x1000 0x2f20 ath10k_patch_mac $(macaddr_add $(mtd_get_mac_ascii 0:appsblenv ethaddr) 1) ;; esac ;; "ath10k/pre-cal-pci-0001:01:00.0.bin") case $board in - asrock,g10) - caldata_extract "0:art" 0x5000 0x2f20 - ;; - edgecore,ecw5410) - caldata_extract "0:art" 0x1000 0x2f20 - ;; linksys,ea7500-v1 |\ linksys,ea8500) - caldata_extract "art" 0x5000 0x2f20 ath10k_patch_mac $(macaddr_add $(mtd_get_mac_ascii devinfo hw_mac_addr) 2) ;; meraki,mr42 |\ @@ -54,7 +42,6 @@ case "$FIRMWARE" in caldata_extract_ubi "ART" 0x5000 0x2f20 ;; zyxel,nbg6817) - caldata_extract "0:art" 0x5000 0x2f20 ath10k_patch_mac $(mtd_get_mac_ascii 0:appsblenv ethaddr) ;; esac @@ -69,9 +56,6 @@ case "$FIRMWARE" in ;; "ath10k/pre-cal-pci-0002:01:00.0.bin") case $board in - edgecore,ecw5410) - caldata_extract "0:art" 0x5000 0x2f20 - ;; meraki,mr52) CI_UBIPART=art caldata_extract_ubi "ART" 0x9000 0x2f20 diff --git a/target/linux/ipq806x/files/arch/arm/boot/dts/qcom-ipq8064-eax500.dtsi b/target/linux/ipq806x/files/arch/arm/boot/dts/qcom-ipq8064-eax500.dtsi index 007564e24a..8b699263fe 100644 --- a/target/linux/ipq806x/files/arch/arm/boot/dts/qcom-ipq8064-eax500.dtsi +++ b/target/linux/ipq806x/files/arch/arm/boot/dts/qcom-ipq8064-eax500.dtsi @@ -24,10 +24,42 @@ status = "okay"; max-link-speed = <1>; + + bridge@0,0 { + reg = <0x00000000 0 0 0 0>; + #address-cells = <3>; + #size-cells = <2>; + ranges; + + wifi@1,0 { + compatible = "qcom,ath10k"; + status = "okay"; + reg = <0x00010000 0 0 0 0>; + + nvmem-cells = <&precal_art_1000>; + nvmem-cell-names = "pre-calibration"; + }; + }; }; &pcie1 { status = "okay"; + + bridge@0,0 { + reg = <0x00000000 0 0 0 0>; + #address-cells = <3>; + #size-cells = <2>; + ranges; + + wifi@1,0 { + compatible = "qcom,ath10k"; + status = "okay"; + reg = <0x00010000 0 0 0 0>; + + nvmem-cells = <&precal_art_5000>; + nvmem-cell-names = "pre-calibration"; + }; + }; }; &pcie2 { @@ -108,6 +140,18 @@ label = "art"; reg = <0x0c80000 0x0140000>; read-only; + + compatible = "nvmem-cells"; + #address-cells = <1>; + #size-cells = <1>; + + precal_art_1000: precal@1000 { + reg = <0x1000 0x2f20>; + }; + + precal_art_5000: precal@5000 { + reg = <0x5000 0x2f20>; + }; }; partition@dc0000 { diff --git a/target/linux/ipq806x/files/arch/arm/boot/dts/qcom-ipq8064-g10.dts b/target/linux/ipq806x/files/arch/arm/boot/dts/qcom-ipq8064-g10.dts index 735ccb2d53..b1c6b7c174 100644 --- a/target/linux/ipq806x/files/arch/arm/boot/dts/qcom-ipq8064-g10.dts +++ b/target/linux/ipq806x/files/arch/arm/boot/dts/qcom-ipq8064-g10.dts @@ -191,6 +191,22 @@ partitions { compatible = "qcom,smem-part"; + + partition-art { + label = "0:art"; + read-only; + compatible = "nvmem-cells"; + #address-cells = <1>; + #size-cells = <1>; + + precal_art_1000: precal@1000 { + reg = <0x1000 0x2f20>; + }; + + precal_art_5000: precal@5000 { + reg = <0x5000 0x2f20>; + }; + }; }; }; }; @@ -208,6 +224,8 @@ reg = <0x00010000 0 0 0 0>; compatible = "qcom,ath10k"; qcom,ath10k-calibration-variant = "ASRock-G10"; + nvmem-cells = <&precal_art_1000>; + nvmem-cell-names = "pre-calibration"; }; }; }; @@ -225,6 +243,8 @@ reg = <0x00010000 0 0 0 0>; compatible = "qcom,ath10k"; qcom,ath10k-calibration-variant = "ASRock-G10"; + nvmem-cells = <&precal_art_5000>; + nvmem-cell-names = "pre-calibration"; }; }; }; diff --git a/target/linux/ipq806x/files/arch/arm/boot/dts/qcom-ipq8065-nbg6817.dts b/target/linux/ipq806x/files/arch/arm/boot/dts/qcom-ipq8065-nbg6817.dts index 969ca724e3..973fa52565 100644 --- a/target/linux/ipq806x/files/arch/arm/boot/dts/qcom-ipq8065-nbg6817.dts +++ b/target/linux/ipq806x/files/arch/arm/boot/dts/qcom-ipq8065-nbg6817.dts @@ -189,6 +189,22 @@ partitions { compatible = "qcom,smem-part"; + + partition-art { + label = "0:art"; + read-only; + compatible = "nvmem-cells"; + #address-cells = <1>; + #size-cells = <1>; + + precal_art_1000: precal@1000 { + reg = <0x1000 0x2f20>; + }; + + precal_art_5000: precal@5000 { + reg = <0x5000 0x2f20>; + }; + }; }; }; }; @@ -213,6 +229,21 @@ reset-gpio = <&qcom_pinmux 3 GPIO_ACTIVE_LOW>; pinctrl-0 = <&pcie0_pins>; pinctrl-names = "default"; + + bridge@0,0 { + reg = <0x00000000 0 0 0 0>; + #address-cells = <3>; + #size-cells = <2>; + ranges; + + wifi@1,0 { + reg = <0x00010000 0 0 0 0>; + compatible = "qcom,ath10k"; + + nvmem-cells = <&precal_art_1000>; + nvmem-cell-names = "pre-calibration"; + }; + }; }; &pcie1 { @@ -221,6 +252,21 @@ pinctrl-0 = <&pcie1_pins>; pinctrl-names = "default"; max-link-speed = <1>; + + bridge@0,0 { + reg = <0x00000000 0 0 0 0>; + #address-cells = <3>; + #size-cells = <2>; + ranges; + + wifi@1,0 { + reg = <0x00010000 0 0 0 0>; + compatible = "qcom,ath10k"; + + nvmem-cells = <&precal_art_5000>; + nvmem-cell-names = "pre-calibration"; + }; + }; }; &mdio0 { diff --git a/target/linux/ipq806x/files/arch/arm/boot/dts/qcom-ipq8068-ecw5410.dts b/target/linux/ipq806x/files/arch/arm/boot/dts/qcom-ipq8068-ecw5410.dts index 85b0dc3b8c..b088c5659c 100644 --- a/target/linux/ipq806x/files/arch/arm/boot/dts/qcom-ipq8068-ecw5410.dts +++ b/target/linux/ipq806x/files/arch/arm/boot/dts/qcom-ipq8068-ecw5410.dts @@ -186,6 +186,22 @@ partitions { compatible = "qcom,smem-part"; + + partition-art { + label = "0:art"; + read-only; + compatible = "nvmem-cells"; + #address-cells = <1>; + #size-cells = <1>; + + precal_art_1000: precal@1000 { + reg = <0x1000 0x2f20>; + }; + + precal_art_5000: precal@5000 { + reg = <0x5000 0x2f20>; + }; + }; }; }; }; @@ -233,6 +249,8 @@ status = "okay"; reg = <0x00010000 0 0 0 0>; qcom,ath10k-calibration-variant = "Edgecore-ECW5410-L"; + nvmem-cells = <&precal_art_1000>; + nvmem-cell-names = "pre-calibration"; }; }; }; @@ -255,6 +273,8 @@ status = "okay"; reg = <0x00010000 0 0 0 0>; qcom,ath10k-calibration-variant = "Edgecore-ECW5410-L"; + nvmem-cells = <&precal_art_5000>; + nvmem-cell-names = "pre-calibration"; }; }; }; -- 2.30.2