[LEDE-DEV] [PATCH v2] ipq806x: add ap.dk01.1 board support
Roman Yeryomin
roman at advem.lv
Mon Oct 16 12:10:52 PDT 2017
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 <roman at 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 at 666000000;
>> ++
>> ++ opp at 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 at 0 {
>> ++ label = "SBL1";
>> ++ reg = <0x0 0x40000>;
>> ++ read-only;
>> ++ };
>> ++
>> ++ MIBIB at 40000 {
>> ++ label = "MIBIB";
>> ++ reg = <0x40000 0x20000>;
>> ++ read-only;
>> ++ };
>> ++
>> ++ QSEE at 60000 {
>> ++ label = "QSEE";
>> ++ reg = <0x60000 0x60000>;
>> ++ read-only;
>> ++ };
>> ++
>> ++ CDT at c0000 {
>> ++ label = "CDT";
>> ++ reg = <0xc0000 0x10000>;
>> ++ read-only;
>> ++ };
>> ++
>> ++ DDRPARAMS at d0000 {
>> ++ label = "DDRPARAMS";
>> ++ reg = <0xd0000 0x10000>;
>> ++ read-only;
>> ++ };
>> ++
>> ++ APPSBLENV at e0000 {
>> ++ label = "APPSBLENV";
>> ++ reg = <0xe0000 0x10000>;
>> ++ read-only;
>> ++ };
>> ++
>> ++ APPSBL at f0000 {
>> ++ label = "APPSBL";
>> ++ reg = <0xf0000 0x80000>;
>> ++ read-only;
>> ++ };
>> ++
>> ++ ART at 170000 {
>> ++ label = "ART";
>> ++ reg = <0x170000 0x10000>;
>> ++ read-only;
>> ++ };
>> ++
>> ++ kernel at 180000 {
>> ++ label = "kernel";
>> ++ reg = <0x180000 0x400000>;
>> ++ };
>> ++
>> ++ rootfs at 580000 {
>> ++ label = "rootfs";
>> ++ reg = <0x580000 0x1600000>;
>> ++ };
>> ++
>> ++ firmware at 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-kernel at 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 at 87000000 {
>> ++ reg = <0x87000000 0x0500000>;
>> ++ no-map;
>> ++ };
>> ++
>> ++ wifi_dump at 87500000 {
>> ++ reg = <0x87500000 0x600000>;
>> ++ no-map;
>> ++ };
>> ++
>> ++ rsvd2 at 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 at 60f8800 {
>> + status = "ok";
>> + };
>> ++
>> ++ wifi at a000000 {
>> ++ status = "okay";
>> ++ };
>> ++
>> ++ wifi at a800000 {
>> ++ status = "okay";
>> ++ };
>> ++
>> ++ ess-switch at c000000 {
>> ++ status = "okay";
>> ++ };
>> ++
>> ++ ess-psgmii at 98000 {
>> ++ status = "okay";
>> ++ };
>> ++
>> ++ edma at c080000 {
>> ++ status = "okay";
>> ++ };
>> ++
>> ++ mdio at 90000 {
>> ++ status = "okay";
>> ++ };
>> ++
>> ++ ess_tcsr at 1953000 {
>> ++ compatible = "qcom,tcsr";
>> ++ reg = <0x1953000 0x1000>;
>> ++ qcom,ess-interface-select = <TCSR_ESS_PSGMII>;
>> ++ };
>> ++
>> ++ tcsr at 1949000 {
>> ++ compatible = "qcom,tcsr";
>> ++ reg = <0x1949000 0x100>;
>> ++ qcom,wifi_glb_cfg = <TCSR_WIFI_GLB_CFG>;
>> ++ };
>> ++
>> ++ tcsr at 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 at 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
More information about the Lede-dev
mailing list