On 2017-10-16 20:32, Christian Lamparter wrote:
Added John, maybe he has more comments.
On Monday, October 16, 2017 5:04:19 PM CEST Roman Yeryomin wrote:
AP.DK01.1 is QCA dev board with:
- ipq4028 (quad core ARM @710MHz, 2x2 dual an+ac radios)
^^ might not be correct. more to this below.
- 256MB RAM
- 32MB SPI flash
- QCA8075 ethernet switch (WAN port, 4x LAN ports)
First installation via u-boot:
sf probe
sf erase 0x180000 0x1a00000
tftpboot 0x84000000 lede-ipq806x-AP-DK01.1-C1-squashfs-sysupgrade.bin
sf write 0x84000000 0x180000 0x1a00000
From what I know, tftpboot sets $filesize enviroment variable. This has
the advantage that you don't need to write all the
random?/uninitialized
memory to the flash. After all 0x1a00000 is like 26MiB.
I didn't actually, but also didn't know about $filesize, thanks for the
hint
Changes:
- add partitions
- enable wifi and ethernet
- set max cpu speed to 710MHz
- set memory size to 256MB
- add image generation
- extract pre-cal data from ART partition
Wirespeed NAT can be achieved with spreading rx interrupts over
different
cores. Wifi needs love -- too slow. Could be that latest ath10k helps,
didn't test yet.
That "Wifi needs love" stinks of board-2.bin issues. And we had to deal
with this before:
<http://lists.infradead.org/pipermail/ath10k/2016-November/008763.html>
Verify that you have the correct (and up to date) board-2.bin for the
board.
please add the board's board-2.bin to the ipq-wifi package.
I was going to deal with wifi related issues later.
Changes since v1:
- add hw description and install instruction
Signed-off-by: Roman Yeryomin <ro...@advem.lv>
---
.../etc/hotplug.d/firmware/11-ath10k-caldata | 6 ++
target/linux/ipq806x/base-files/lib/ipq806x.sh | 3 +
target/linux/ipq806x/image/Makefile | 18 ++++-
...s-ipq4019-ap.dk01.1-add-256MB-memory-node.patch | 14 ++++
...2-dts-ipq4019-ap.dk01.1-fix-max-cpu-speed.patch | 15 ++++
...4-03-dts-ipq4019-ap.dk01.1-add-partitions.patch | 72
++++++++++++++++++
...pq4019-ap.dk01.1-enable-wifi-and-ethernet.patch | 87
++++++++++++++++++++++
7 files changed, 214 insertions(+), 1 deletion(-)
create mode 100644
target/linux/ipq806x/patches-4.9/864-01-dts-ipq4019-ap.dk01.1-add-256MB-memory-node.patch
create mode 100644
target/linux/ipq806x/patches-4.9/864-02-dts-ipq4019-ap.dk01.1-fix-max-cpu-speed.patch
create mode 100644
target/linux/ipq806x/patches-4.9/864-03-dts-ipq4019-ap.dk01.1-add-partitions.patch
create mode 100644
target/linux/ipq806x/patches-4.9/864-04-dts-ipq4019-ap.dk01.1-enable-wifi-and-ethernet.patch
diff --git a/target/linux/ipq806x/image/Makefile
b/target/linux/ipq806x/image/Makefile
index 3a76c7f..60b3a71 100644
--- a/target/linux/ipq806x/image/Makefile
+++ b/target/linux/ipq806x/image/Makefile
@@ -264,7 +264,23 @@ define Device/AP-DK04.1-C1
DEVICE_TITLE := QCA AP-DK04.1-C1
endef
+define Device/AP-DK01.1-C1
+ PROFILES += $$(DEVICE_NAME)
+ DEVICE_TITLE := QCA AP-DK01.1-C1
+ BOARD_NAME := ap-dk01.1-c1
+ DEVICE_DTS := qcom-ipq4019-ap.dk01.1-c1
This "qcom-ipq4019-ap.dk01.1-c1" is important later on.
+ KERNEL_LOADADDR := 0x80208000
+ KERNEL_INSTALL := 1
+ KERNEL_SIZE := 4096k
+ IMAGE_SIZE := 26624k
+ FILESYSTEMS := squashfs
+ $(call Device/FitImage)
Any reason why this include is not at the top of the define?
This is kernel image generation, right before full image.
Actually I don't understand why it's put on top.
+ IMAGES := sysupgrade.bin
+ IMAGE/sysupgrade.bin := append-kernel | pad-to $$$${KERNEL_SIZE} |
append-rootfs | pad-rootfs | append-metadata
+ DEVICE_PACKAGES := ath10k-firmware-qca4019
+endef
+
TARGET_DEVICES += AP148 AP148-legacy C2600 D7800 DB149 EA8500
FRITZ4040 R7500 \
- R7500v2 R7800 NBG6817 VR2600v AP-DK04.1-C1
+ R7500v2 R7800 NBG6817 VR2600v AP-DK04.1-C1 AP-DK01.1-C1
$(eval $(call BuildImage))
diff --git
a/target/linux/ipq806x/patches-4.9/864-01-dts-ipq4019-ap.dk01.1-add-256MB-memory-node.patch
b/target/linux/ipq806x/patches-4.9/864-01-dts-ipq4019-ap.dk01.1-add-256MB-memory-node.patch
new file mode 100644
index 0000000..8a80979
--- /dev/null
+++
b/target/linux/ipq806x/patches-4.9/864-01-dts-ipq4019-ap.dk01.1-add-256MB-memory-node.patch
@@ -0,0 +1,14 @@
+--- a/arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1.dtsi
++++ b/arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1.dtsi
Why are you patching the qcom-ipq4019-ap.dk01.1.dtsi?
And not the qcom-ipq4019-ap.dk01.1-c1.dts?
Hmm, missed that one.
+@@ -20,6 +20,11 @@
+ model = "Qualcomm Technologies, Inc. IPQ4019/AP-DK01.1";
+ compatible = "qcom,ipq4019";
I think this should be "qcom,ipq4019-ap.dk01.1-c1", "qcom,ipq4019".
The device-tree folks stick to their rules in the
usage-model.txt / 2.2 Platform Identification
<https://www.kernel.org/doc/Documentation/devicetree/usage-model.txt>
I didn't change that. And will not in v3, since I'm going to patch
qcom-ipq4019-ap.dk01.1-c1.dts
+
++ memory {
++ device_type = "memory";
++ reg = <0x80000000 0x10000000>;
++ };
++
This shouldn't be in the .dtsi. Not all IPQ4019 have 256MiBs of RAM.
The ASUS RT-AC58U only has 128 MiB. And on the other side of the
spectrum, qualcomm's says the chip supports up to 1GiB.
<https://www.qualcomm.com/products/ipq4019>
+ clocks {
+ xo: xo {
+ compatible = "fixed-clock";
diff --git
a/target/linux/ipq806x/patches-4.9/864-02-dts-ipq4019-ap.dk01.1-fix-max-cpu-speed.patch
b/target/linux/ipq806x/patches-4.9/864-02-dts-ipq4019-ap.dk01.1-fix-max-cpu-speed.patch
new file mode 100644
index 0000000..e9540f4
--- /dev/null
+++
b/target/linux/ipq806x/patches-4.9/864-02-dts-ipq4019-ap.dk01.1-fix-max-cpu-speed.patch
@@ -0,0 +1,15 @@
+--- a/arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1.dtsi
++++ b/arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1.dtsi
+@@ -135,3 +135,12 @@
+ };
+ };
+ };
++
++&cpu0_opp_table {
++ /delete-node/ opp@666000000;
++
++ opp@710000000 {
++ opp-hz = /bits/ 64 <710000000>;
++ clock-latency-ns = <256000>;
++ };
++};
This looks rather familiar. Like exactly a 1:1 copy from the FB4040's
dts
right here:
https://github.com/lede-project/source/blob/master/target/linux/ipq806x/files-4.9/arch/arm/boot/dts/qcom-ipq4019-fritz4040.dts#L286
Is this true?
There's a reason to stick with the 666MHz rate though. You should check
if the device produces messages like:
[ 1.399981] cpufreq: cpufreq_online: CPU0: Running at unlisted
freq: 666000 KHz
[ 1.400256] cpufreq: cpufreq_online: CPU0: Unlisted initial
frequency changed to: 710000 KHz
(From what I know, the SBL actually sets it to 666MHz)
But there's more. If you look at qualcomm's page, it's says that the
CPU Clock Speed is 717 MHz: <https://www.qualcomm.com/products/ipq4028>
Since you are working for a OEM/ODM. You could please ask what is the
right MHz table for these devices? Unfortunately, Qualcomm never got
around to fix this upstream and without an official statement from them
it's very difficult to push stuff like this upstream.
Hmm...
diff --git
a/target/linux/ipq806x/patches-4.9/864-03-dts-ipq4019-ap.dk01.1-add-partitions.patch
b/target/linux/ipq806x/patches-4.9/864-03-dts-ipq4019-ap.dk01.1-add-partitions.patch
new file mode 100644
index 0000000..a7861cd
--- /dev/null
+++
b/target/linux/ipq806x/patches-4.9/864-03-dts-ipq4019-ap.dk01.1-add-partitions.patch
@@ -0,0 +1,72 @@
+--- a/arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1.dtsi
++++ b/arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1.dtsi
+@@ -93,6 +93,69 @@
+ reg = <0>;
+ compatible = "mx25l25635e";
The mx25l25635e has been "not for new designs" for a couple of years
now?!
<http://www.macronix.com/en-us/products/NOR-Flash/Serial-NOR-Flash/Pages/spec.aspx?p=MX25L25635E>
Are you sure this device is really a mx25l25635e and not the newer
mx25l25635f?
+ spi-max-frequency = <24000000>;
++
++ SBL1@0 {
++ label = "SBL1";
++ reg = <0x0 0x40000>;
++ read-only;
++ };
++
++ MIBIB@40000 {
++ label = "MIBIB";
++ reg = <0x40000 0x20000>;
++ read-only;
++ };
++
++ QSEE@60000 {
++ label = "QSEE";
++ reg = <0x60000 0x60000>;
++ read-only;
++ };
++
++ CDT@c0000 {
++ label = "CDT";
++ reg = <0xc0000 0x10000>;
++ read-only;
++ };
++
++ DDRPARAMS@d0000 {
++ label = "DDRPARAMS";
++ reg = <0xd0000 0x10000>;
++ read-only;
++ };
++
++ APPSBLENV@e0000 {
++ label = "APPSBLENV";
++ reg = <0xe0000 0x10000>;
++ read-only;
++ };
++
++ APPSBL@f0000 {
++ label = "APPSBL";
++ reg = <0xf0000 0x80000>;
++ read-only;
++ };
++
++ ART@170000 {
++ label = "ART";
++ reg = <0x170000 0x10000>;
++ read-only;
++ };
++
++ kernel@180000 {
++ label = "kernel";
++ reg = <0x180000 0x400000>;
++ };
++
++ rootfs@580000 {
++ label = "rootfs";
++ reg = <0x580000 0x1600000>;
++ };
++
++ firmware@180000 {
++ label = "firmware";
++ reg = <0x180000 0x1a00000>;
++ };
+ };
+ };
+
Please move this to the qcom-ipq4019-ap.dk01.1-c1.dts.
And preferably, this should also be pushed to
linux-arm-ker...@lists.infradead.org
ok
<https://lists.infradead.org/mailman/listinfo/linux-arm-kernel>
diff --git
a/target/linux/ipq806x/patches-4.9/864-04-dts-ipq4019-ap.dk01.1-enable-wifi-and-ethernet.patch
b/target/linux/ipq806x/patches-4.9/864-04-dts-ipq4019-ap.dk01.1-enable-wifi-and-ethernet.patch
new file mode 100644
index 0000000..cc90475
--- /dev/null
+++
b/target/linux/ipq806x/patches-4.9/864-04-dts-ipq4019-ap.dk01.1-enable-wifi-and-ethernet.patch
@@ -0,0 +1,87 @@
+--- a/arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1.dtsi
++++ b/arch/arm/boot/dts/qcom-ipq4019-ap.dk01.1.dtsi
+@@ -15,6 +15,7 @@
+ */
+
+ #include "qcom-ipq4019.dtsi"
++#include <dt-bindings/soc/qcom,tcsr.h>
please move this to the qcom-ipq4019-ap.dk01.1-c1.dts.
+
+ / {
+ model = "Qualcomm Technologies, Inc. IPQ4019/AP-DK01.1";
+@@ -25,6 +26,27 @@
+ reg = <0x80000000 0x10000000>;
+ };
+
++ reserved-memory {
++ #address-cells = <0x1>;
++ #size-cells = <0x1>;
++ ranges;
++
++ rsvd1@87000000 {
++ reg = <0x87000000 0x0500000>;
++ no-map;
++ };
++
++ wifi_dump@87500000 {
++ reg = <0x87500000 0x600000>;
++ no-map;
++ };
++
++ rsvd2@87B00000 {
++ reg = <0x87b00000 0x500000>;
++ no-map;
++ };
++ };
The wifi_dump area is not needed by the ath10k driver.
Furthermore, the you could probably get away with reserving
less memory. From what I know, you only need to reserve space
for the "QSEE environment", which is located betwenn
0x87e00000 and 0x88000000.
I have no information about those.
I think there should be also NSS region...
(please move this to the qcom-ipq4019-ap.dk01.1-c1.dts.)
++
+ clocks {
+ xo: xo {
+ compatible = "fixed-clock";
+@@ -196,6 +218,48 @@
+ usb2: usb2@60f8800 {
+ status = "ok";
+ };
++
++ wifi@a000000 {
++ status = "okay";
++ };
++
++ wifi@a800000 {
++ status = "okay";
++ };
++
++ ess-switch@c000000 {
++ status = "okay";
++ };
++
++ ess-psgmii@98000 {
++ status = "okay";
++ };
++
++ edma@c080000 {
++ status = "okay";
++ };
++
++ mdio@90000 {
++ status = "okay";
++ };
++
++ ess_tcsr@1953000 {
++ compatible = "qcom,tcsr";
++ reg = <0x1953000 0x1000>;
++ qcom,ess-interface-select = <TCSR_ESS_PSGMII>;
++ };
++
++ tcsr@1949000 {
++ compatible = "qcom,tcsr";
++ reg = <0x1949000 0x100>;
++ qcom,wifi_glb_cfg = <TCSR_WIFI_GLB_CFG>;
++ };
++
++ tcsr@1957000 {
++ compatible = "qcom,tcsr";
++ reg = <0x1957000 0x100>;
++ qcom,wifi_noc_memtype_m0_m2 =
<TCSR_WIFI_NOC_MEMTYPE_M0_M2>;
++ };
+ };
+ };
+
please move this to the qcom-ipq4019-ap.dk01.1-c1.dts.
_______________________________________________
Lede-dev mailing list
Lede-dev@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/lede-dev
Why do I receive emails two times?
One with this signature ^^^ and another without?
Regards,
Roman
_______________________________________________
Lede-dev mailing list
Lede-dev@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/lede-dev