ipq40xx: add support for ALFA Network AP120C-AC
authorPiotr Dymacz <pepe2k@gmail.com>
Tue, 29 Jan 2019 17:12:51 +0000 (18:12 +0100)
committerPiotr Dymacz <pepe2k@gmail.com>
Mon, 25 Feb 2019 23:16:22 +0000 (00:16 +0100)
ALFA Network AP120C-AC is a dual-band ceiling AP, based on Qualcomm
IPQ4018 + QCA8075 platform.

Specification:

- Qualcomm IPQ4018 (717 MHz)
- 256 MB of RAM (DDR3)
- 16 MB (SPI NOR) + 128 MB (SPI NAND) of flash
- 2x Gbps Ethernet, with 802.3af PoE support in one port
- 2T2R 2.4/5 GHz (IPQ4018), with ext. FEMs (QFE1952, QFE1922)
- 3x U.FL connectors
- 1x 1.8 dBi (Bluetooth) and 2x 3/5 dBi dual-band (Wi-Fi) antennas
- Atmel/Microchip AT97SC3205T TPM module (I2C bus)
- TI CC2540 Bluetooth LE module (USB 2.0 bus)
- 4x LED (all driven by GPIO)
- 1x button (reset)
- 1x USB 2.0 (optional, not installed in indoor version)
- DC jack for main power input (12 V)
- UART header available on PCB (2.0 mm pitch)

Flash instruction:

1. This board uses dual-image feature (128 MB NAND is divided into two
   64 MB partitions: 'rootfs1' and 'rootfs2').
2. Before update, make sure your device is running firmware no older
   than v1.1 (previous versions have incompatible U-Boot).
3. Use 'factory' image in vendor GUI or for sysupgrade tool, without
   preserving settings.

Signed-off-by: Piotr Dymacz <pepe2k@gmail.com>
target/linux/ipq40xx/base-files/etc/board.d/01_leds
target/linux/ipq40xx/base-files/etc/board.d/02_network
target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
target/linux/ipq40xx/base-files/etc/init.d/bootcount [new file with mode: 0755]
target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4018-ap120c-ac.dts [new file with mode: 0644]
target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4018-ap120c-ac.dts [new file with mode: 0644]
target/linux/ipq40xx/image/Makefile
target/linux/ipq40xx/patches-4.14/901-arm-boot-add-dts-files.patch
target/linux/ipq40xx/patches-4.19/901-arm-boot-add-dts-files.patch

index 9105bf2452982a39b485993fdc8de2a5c0ba182c..2fca1cbc9f956d4f5932a929b1cb3c2bc241d484 100755 (executable)
@@ -11,6 +11,9 @@ board=$(board_name)
 boardname="${board##*,}"
 
 case "$board" in
+alfa-network,ap120c-ac)
+       ucidef_set_led_netdev "wan" "WAN" "${boardname}:amber:wan" "eth1"
+       ;;
 asus,rt-ac58u)
        ucidef_set_led_wlan "wlan2g" "WLAN2G" "${boardname}:blue:wlan2G" "phy0tpt"
        ucidef_set_led_wlan "wlan5g" "WLAN5G" "${boardname}:blue:wlan5G" "phy1tpt"
index 43be592071d2d2600f2c82fcff4afbd3b28e0c88..b28f5ef12cc3e8d3e18da28df7b5fe2b12d6d748 100755 (executable)
@@ -12,7 +12,8 @@ ipq40xx_setup_interfaces()
        local board="$1"
 
        case "$board" in
-       8dev,jalapeno)
+       8dev,jalapeno|\
+       alfa-network,ap120c-ac)
                ucidef_set_interfaces_lan_wan "eth0" "eth1"
                ;;
        asus,map-ac2200|\
index 21d9063fd4609f51a1b982189c9308a6c243e5ff..718224f1e06aa6a90f54cf8a9c8f13366a0b19a3 100644 (file)
@@ -119,6 +119,7 @@ case "$FIRMWARE" in
 "ath10k/pre-cal-ahb-a000000.wifi.bin")
        case "$board" in
        8dev,jalapeno |\
+       alfa-network,ap120c-ac |\
        glinet,gl-b1300 |\
        linksys,ea6350v3 |\
        qcom,ap-dk01.1-c1)
@@ -160,6 +161,7 @@ case "$FIRMWARE" in
 "ath10k/pre-cal-ahb-a800000.wifi.bin")
        case "$board" in
        8dev,jalapeno |\
+       alfa-network,ap120c-ac |\
        glinet,gl-b1300 |\
        linksys,ea6350v3 |\
        qcom,ap-dk01.1-c1)
diff --git a/target/linux/ipq40xx/base-files/etc/init.d/bootcount b/target/linux/ipq40xx/base-files/etc/init.d/bootcount
new file mode 100755 (executable)
index 0000000..604f88c
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/sh /etc/rc.common
+
+START=99
+
+start() {
+       . /lib/functions.sh
+
+       case $(board_name) in
+       alfa-network,ap120c-ac)
+               [ -n "$(fw_printenv bootcount changed 2>/dev/null)" ] &&\
+                       echo -e "bootcount\nchanged\n" | /usr/sbin/fw_setenv -s -
+               ;;
+       esac
+}
index f6bc173a76edc44f8ee01ddbaf5024c697f231e8..b92a2bfe9f62b72f4f47b9984033e2c58d30b4c0 100644 (file)
@@ -46,7 +46,8 @@ zyxel_do_upgrade() {
 
 platform_do_upgrade() {
        case "$(board_name)" in
-       8dev,jalapeno)
+       8dev,jalapeno |\
+       alfa-network,ap120c-ac)
                nand_do_upgrade "$ARGV"
                ;;
        asus,map-ac2200)
@@ -81,6 +82,16 @@ platform_do_upgrade() {
 
 platform_nand_pre_upgrade() {
        case "$(board_name)" in
+       alfa-network,ap120c-ac)
+               part="$(awk -F 'ubi.mtd=' '{printf $2}' /proc/cmdline | sed -e 's/ .*$//')"
+               if [ "$part" = "rootfs1" ]; then
+                       fw_setenv active 2 || exit 1
+                       CI_UBIPART="rootfs2"
+               else
+                       fw_setenv active 1 || exit 1
+                       CI_UBIPART="rootfs1"
+               fi
+               ;;
        asus,rt-ac58u)
                CI_UBIPART="UBI_DEV"
                CI_KERNPART="linux"
diff --git a/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4018-ap120c-ac.dts b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4018-ap120c-ac.dts
new file mode 100644 (file)
index 0000000..63e3426
--- /dev/null
@@ -0,0 +1,343 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "qcom-ipq4019.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/soc/qcom,tcsr.h>
+
+/ {
+       model = "ALFA Network AP120C-AC";
+       compatible = "alfa-network,ap120c-ac", "qcom,ipq4019";
+
+       aliases {
+               led-boot = &status;
+               led-failsafe = &status;
+               led-running = &status;
+               led-upgrade = &status;
+       };
+
+       keys {
+               compatible = "gpio-keys";
+
+               reset {
+                       label = "reset";
+                       gpios = <&tlmm 63 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_RESTART>;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               status: status {
+                       label = "ap120c-ac:blue:status";
+                       gpios = <&tlmm 5 GPIO_ACTIVE_LOW>;
+                       default-state = "keep";
+               };
+
+               wan {
+                       label = "ap120c-ac:amber:wan";
+                       gpios = <&qca8075 19 GPIO_ACTIVE_HIGH>;
+               };
+
+               wlan2g {
+                       label = "ap120c-ac:green:wlan2g";
+                       gpios = <&tlmm 3 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "phy0tpt";
+               };
+
+               wlan5g {
+                       label = "ap120c-ac:red:wlan5g";
+                       gpios = <&tlmm 2 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "phy1tpt";
+               };
+       };
+
+       soc {
+               mdio@90000 {
+                       status = "okay";
+
+                       pinctrl-0 = <&mdio_pins>;
+                       pinctrl-names = "default";
+               };
+
+               ess-psgmii@98000 {
+                       status = "okay";
+               };
+
+               counter@4a1000 {
+                       compatible = "qcom,qca-gcnt";
+                       reg = <0x4a1000 0x4>;
+               };
+
+               tcsr@1949000 {
+                       compatible = "qcom,tcsr";
+                       reg = <0x1949000 0x100>;
+                       qcom,wifi_glb_cfg = <TCSR_WIFI_GLB_CFG>;
+               };
+
+               tcsr@194b000 {
+                       compatible = "qcom,tcsr";
+                       reg = <0x194b000 0x100>;
+                       qcom,usb-hsphy-mode-select = <TCSR_USB_HSPHY_HOST_MODE>;
+               };
+
+               ess_tcsr@1953000 {
+                       compatible = "qcom,tcsr";
+                       reg = <0x1953000 0x1000>;
+                       qcom,ess-interface-select = <TCSR_ESS_PSGMII>;
+               };
+
+               tcsr@1957000 {
+                       compatible = "qcom,tcsr";
+                       reg = <0x1957000 0x100>;
+                       qcom,wifi_noc_memtype_m0_m2 = <TCSR_WIFI_NOC_MEMTYPE_M0_M2>;
+               };
+
+               usb2@60f8800 {
+                       status = "okay";
+               };
+
+               usb3@8af8800 {
+                       status = "okay";
+
+                       dwc3@8a00000 {
+                               phys = <&usb3_hs_phy>;
+                               phy-names = "usb2-phy";
+                       };
+               };
+
+               crypto@8e3a000 {
+                       status = "okay";
+               };
+
+               watchdog@b017000 {
+                       status = "okay";
+               };
+
+               qca8075: ess-switch@c000000 {
+                       status = "okay";
+
+                       switch_lan_bmp = <0x10>;
+                       switch_wan_bmp = <0x20>;
+
+                       #gpio-cells = <2>;
+                       gpio-controller;
+               };
+
+               edma@c080000 {
+                       status = "okay";
+               };
+       };
+};
+
+&blsp_dma {
+       status = "okay";
+};
+
+&blsp1_i2c3 {
+       status = "okay";
+
+       pinctrl-0 = <&i2c0_pins>;
+       pinctrl-names = "default";
+
+       tpm@29 {
+               compatible = "atmel,at97sc3204t";
+               reg = <0x29>;
+       };
+};
+
+&blsp1_spi1 {
+       status = "okay";
+
+       pinctrl-0 = <&spi0_pins>;
+       pinctrl-names = "default";
+       cs-gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>,
+                  <&tlmm  4 GPIO_ACTIVE_HIGH>;
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <24000000>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               label = "SBL1";
+                               reg = <0x00000000 0x00040000>;
+                               read-only;
+                       };
+
+                       partition@40000 {
+                               label = "MIBIB";
+                               reg = <0x00040000 0x00020000>;
+                               read-only;
+                       };
+
+                       partition@60000 {
+                               label = "QSEE";
+                               reg = <0x00060000 0x00060000>;
+                               read-only;
+                       };
+
+                       partition@c0000 {
+                               label = "CDT";
+                               reg = <0x000c0000 0x00010000>;
+                               read-only;
+                       };
+
+                       partition@d0000 {
+                               label = "DDRPARAMS";
+                               reg = <0x000d0000 0x00010000>;
+                               read-only;
+                       };
+
+                       partition@e0000 {
+                               label = "APPSBLENV";
+                               reg = <0x000e0000 0x00010000>;
+                       };
+
+                       partition@f0000 {
+                               label = "APPSBL";
+                               reg = <0x000f0000 0x00080000>;
+                               read-only;
+                       };
+
+                       partition@170000 {
+                               label = "ART";
+                               reg = <0x00170000 0x00010000>;
+                               read-only;
+                       };
+
+                       partition@180000 {
+                               label = "priv_data1";
+                               reg = <0x00180000 0x00010000>;
+                               read-only;
+                       };
+
+                       partition@190000 {
+                               label = "priv_data2";
+                               reg = <0x00190000 0x00010000>;
+                               read-only;
+                       };
+               };
+       };
+
+       nand@1 {
+               compatible = "spinand,mt29f";
+               reg = <1>;
+               spi-max-frequency = <24000000>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               label = "rootfs1";
+                               reg = <0x00000000 0x04000000>;
+                       };
+
+                       partition@4000000 {
+                               label = "rootfs2";
+                               reg = <0x04000000 0x04000000>;
+                       };
+               };
+       };
+};
+
+&blsp1_uart1 {
+       status = "okay";
+
+       pinctrl-0 = <&serial0_pins>;
+       pinctrl-names = "default";
+};
+
+&cryptobam {
+       status = "okay";
+};
+
+&gmac0 {
+       qcom,forced_duplex = <1>;
+       qcom,forced_speed = <1000>;
+       qcom,phy_mdio_addr = <3>;
+       qcom,poll_required = <1>;
+       vlan_tag = <1 0x10>;
+};
+
+&gmac1 {
+       qcom,forced_duplex = <1>;
+       qcom,forced_speed = <1000>;
+       qcom,phy_mdio_addr = <4>;
+       qcom,poll_required = <1>;
+       vlan_tag = <2 0x20>;
+};
+
+&tlmm {
+       i2c0_pins: i2c0_pinmux {
+               mux_i2c {
+                       function = "blsp_i2c0";
+                       pins = "gpio58", "gpio59";
+                       drive-strength = <16>;
+                       bias-disable;
+               };
+       };
+
+       mdio_pins: mdio_pinmux {
+               mux_mdio {
+                       pins = "gpio53";
+                       function = "mdio";
+                       bias-pull-up;
+               };
+
+               mux_mdc {
+                       pins = "gpio52";
+                       function = "mdc";
+                       bias-pull-up;
+               };
+       };
+
+       serial0_pins: serial0_pinmux {
+               mux_uart {
+                       pins = "gpio60", "gpio61";
+                       function = "blsp_uart0";
+                       bias-disable;
+               };
+       };
+
+       spi0_pins: spi0_pinmux {
+               mux_spi {
+                       function = "blsp_spi0";
+                       pins = "gpio55", "gpio56", "gpio57";
+                       drive-strength = <12>;
+                       bias-disable;
+               };
+
+               mux_cs {
+                       function = "gpio";
+                       pins = "gpio54", "gpio4";
+                       drive-strength = <2>;
+                       bias-disable;
+                       output-high;
+               };
+       };
+};
+
+&usb2_hs_phy {
+       status = "okay";
+};
+
+&usb3_hs_phy {
+       status = "okay";
+};
+
+&wifi0 {
+       status = "okay";
+};
+
+&wifi1 {
+       status = "okay";
+};
diff --git a/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4018-ap120c-ac.dts b/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4018-ap120c-ac.dts
new file mode 100644 (file)
index 0000000..0c73539
--- /dev/null
@@ -0,0 +1,347 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "qcom-ipq4019.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/soc/qcom,tcsr.h>
+
+/ {
+       model = "ALFA Network AP120C-AC";
+       compatible = "alfa-network,ap120c-ac";
+
+       aliases {
+               led-boot = &status;
+               led-failsafe = &status;
+               led-running = &status;
+               led-upgrade = &status;
+       };
+
+       keys {
+               compatible = "gpio-keys";
+
+               reset {
+                       label = "reset";
+                       gpios = <&tlmm 63 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_RESTART>;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               status: status {
+                       label = "ap120c-ac:blue:status";
+                       gpios = <&tlmm 5 GPIO_ACTIVE_LOW>;
+                       default-state = "keep";
+               };
+
+               wan {
+                       label = "ap120c-ac:amber:wan";
+                       gpios = <&qca8075 19 GPIO_ACTIVE_HIGH>;
+               };
+
+               wlan2g {
+                       label = "ap120c-ac:green:wlan2g";
+                       gpios = <&tlmm 3 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "phy0tpt";
+               };
+
+               wlan5g {
+                       label = "ap120c-ac:red:wlan5g";
+                       gpios = <&tlmm 2 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "phy1tpt";
+               };
+       };
+
+       soc {
+               rng@22000 {
+                       status = "okay";
+               };
+
+               mdio@90000 {
+                       status = "okay";
+
+                       pinctrl-0 = <&mdio_pins>;
+                       pinctrl-names = "default";
+               };
+
+               ess-psgmii@98000 {
+                       status = "okay";
+               };
+
+               counter@4a1000 {
+                       compatible = "qcom,qca-gcnt";
+                       reg = <0x4a1000 0x4>;
+               };
+
+               tcsr@1949000 {
+                       compatible = "qcom,tcsr";
+                       reg = <0x1949000 0x100>;
+                       qcom,wifi_glb_cfg = <TCSR_WIFI_GLB_CFG>;
+               };
+
+               tcsr@194b000 {
+                       compatible = "qcom,tcsr";
+                       reg = <0x194b000 0x100>;
+                       qcom,usb-hsphy-mode-select = <TCSR_USB_HSPHY_HOST_MODE>;
+               };
+
+               ess_tcsr@1953000 {
+                       compatible = "qcom,tcsr";
+                       reg = <0x1953000 0x1000>;
+                       qcom,ess-interface-select = <TCSR_ESS_PSGMII>;
+               };
+
+               tcsr@1957000 {
+                       compatible = "qcom,tcsr";
+                       reg = <0x1957000 0x100>;
+                       qcom,wifi_noc_memtype_m0_m2 = <TCSR_WIFI_NOC_MEMTYPE_M0_M2>;
+               };
+
+               usb2@60f8800 {
+                       status = "okay";
+               };
+
+               usb3@8af8800 {
+                       status = "okay";
+
+                       dwc3@8a00000 {
+                               phys = <&usb3_hs_phy>;
+                               phy-names = "usb2-phy";
+                       };
+               };
+
+               crypto@8e3a000 {
+                       status = "okay";
+               };
+
+               watchdog@b017000 {
+                       status = "okay";
+               };
+
+               qca8075: ess-switch@c000000 {
+                       status = "okay";
+
+                       switch_lan_bmp = <0x10>;
+                       switch_wan_bmp = <0x20>;
+
+                       #gpio-cells = <2>;
+                       gpio-controller;
+               };
+
+               edma@c080000 {
+                       status = "okay";
+               };
+       };
+};
+
+&blsp_dma {
+       status = "okay";
+};
+
+&blsp1_i2c3 {
+       status = "okay";
+
+       pinctrl-0 = <&i2c0_pins>;
+       pinctrl-names = "default";
+
+       tpm@29 {
+               compatible = "atmel,at97sc3204t";
+               reg = <0x29>;
+       };
+};
+
+&blsp1_spi1 {
+       status = "okay";
+
+       pinctrl-0 = <&spi0_pins>;
+       pinctrl-names = "default";
+       cs-gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>,
+                  <&tlmm  4 GPIO_ACTIVE_HIGH>;
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <24000000>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               label = "SBL1";
+                               reg = <0x00000000 0x00040000>;
+                               read-only;
+                       };
+
+                       partition@40000 {
+                               label = "MIBIB";
+                               reg = <0x00040000 0x00020000>;
+                               read-only;
+                       };
+
+                       partition@60000 {
+                               label = "QSEE";
+                               reg = <0x00060000 0x00060000>;
+                               read-only;
+                       };
+
+                       partition@c0000 {
+                               label = "CDT";
+                               reg = <0x000c0000 0x00010000>;
+                               read-only;
+                       };
+
+                       partition@d0000 {
+                               label = "DDRPARAMS";
+                               reg = <0x000d0000 0x00010000>;
+                               read-only;
+                       };
+
+                       partition@e0000 {
+                               label = "APPSBLENV";
+                               reg = <0x000e0000 0x00010000>;
+                       };
+
+                       partition@f0000 {
+                               label = "APPSBL";
+                               reg = <0x000f0000 0x00080000>;
+                               read-only;
+                       };
+
+                       partition@170000 {
+                               label = "ART";
+                               reg = <0x00170000 0x00010000>;
+                               read-only;
+                       };
+
+                       partition@180000 {
+                               label = "priv_data1";
+                               reg = <0x00180000 0x00010000>;
+                               read-only;
+                       };
+
+                       partition@190000 {
+                               label = "priv_data2";
+                               reg = <0x00190000 0x00010000>;
+                               read-only;
+                       };
+               };
+       };
+
+       nand@1 {
+               compatible = "spi-nand";
+               reg = <1>;
+               spi-max-frequency = <24000000>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               label = "rootfs1";
+                               reg = <0x00000000 0x04000000>;
+                       };
+
+                       partition@4000000 {
+                               label = "rootfs2";
+                               reg = <0x04000000 0x04000000>;
+                       };
+               };
+       };
+};
+
+&blsp1_uart1 {
+       status = "okay";
+
+       pinctrl-0 = <&serial0_pins>;
+       pinctrl-names = "default";
+};
+
+&cryptobam {
+       status = "okay";
+};
+
+&gmac0 {
+       qcom,forced_duplex = <1>;
+       qcom,forced_speed = <1000>;
+       qcom,phy_mdio_addr = <3>;
+       qcom,poll_required = <1>;
+       vlan_tag = <1 0x10>;
+};
+
+&gmac1 {
+       qcom,forced_duplex = <1>;
+       qcom,forced_speed = <1000>;
+       qcom,phy_mdio_addr = <4>;
+       qcom,poll_required = <1>;
+       vlan_tag = <2 0x20>;
+};
+
+&tlmm {
+       i2c0_pins: i2c0_pinmux {
+               mux_i2c {
+                       function = "blsp_i2c0";
+                       pins = "gpio58", "gpio59";
+                       drive-strength = <16>;
+                       bias-disable;
+               };
+       };
+
+       mdio_pins: mdio_pinmux {
+               mux_mdio {
+                       pins = "gpio53";
+                       function = "mdio";
+                       bias-pull-up;
+               };
+
+               mux_mdc {
+                       pins = "gpio52";
+                       function = "mdc";
+                       bias-pull-up;
+               };
+       };
+
+       serial0_pins: serial0_pinmux {
+               mux_uart {
+                       pins = "gpio60", "gpio61";
+                       function = "blsp_uart0";
+                       bias-disable;
+               };
+       };
+
+       spi0_pins: spi0_pinmux {
+               mux_spi {
+                       function = "blsp_spi0";
+                       pins = "gpio55", "gpio56", "gpio57";
+                       drive-strength = <12>;
+                       bias-disable;
+               };
+
+               mux_cs {
+                       function = "gpio";
+                       pins = "gpio54", "gpio4";
+                       drive-strength = <2>;
+                       bias-disable;
+                       output-high;
+               };
+       };
+};
+
+&usb2_hs_phy {
+       status = "okay";
+};
+
+&usb3_hs_phy {
+       status = "okay";
+};
+
+&wifi0 {
+       status = "okay";
+};
+
+&wifi1 {
+       status = "okay";
+};
index 31468fd75858ea94b5540cf07cccee8300c399aa..f7e7ba3d0f31857d882d742d97d565c56a18258c 100644 (file)
@@ -62,6 +62,21 @@ define Device/8dev_jalapeno
 endef
 TARGET_DEVICES += 8dev_jalapeno
 
+define Device/alfa-network_ap120c-ac
+       $(call Device/FitImage)
+       $(call Device/UbiFit)
+       DEVICE_TITLE := ALFA Network AP120C-AC
+       DEVICE_DTS := qcom-ipq4018-ap120c-ac
+       DEVICE_PACKAGES := ipq-wifi-alfa-network_ap120c-ac kmod-usb-acm \
+               kmod-tpm-i2c-atmel uboot-envtools
+       BLOCKSIZE := 128k
+       PAGESIZE := 2048
+       IMAGE_SIZE := 65536k
+       IMAGES := nand-factory.bin nand-sysupgrade.bin
+       IMAGE/nand-factory.bin := append-ubi | qsdk-ipq-factory-nand
+endef
+TARGET_DEVICES += alfa-network_ap120c-ac
+
 define Device/asus_map-ac2200
        $(call Device/FitImageLzma)
        DEVICE_DTS := qcom-ipq4019-map-ac2200
index 20ea3a84492ac3b1976d2454631fa76e952600df..551ac6f109e481da617f4428e81323335777a67a 100644 (file)
@@ -10,11 +10,12 @@ Signed-off-by: John Crispin <john@phrozen.org>
 
 --- a/arch/arm/boot/dts/Makefile
 +++ b/arch/arm/boot/dts/Makefile
-@@ -697,7 +697,23 @@ dtb-$(CONFIG_ARCH_QCOM) += \
+@@ -697,7 +697,24 @@ dtb-$(CONFIG_ARCH_QCOM) += \
        qcom-apq8074-dragonboard.dtb \
        qcom-apq8084-ifc6540.dtb \
        qcom-apq8084-mtp.dtb \
 +      qcom-ipq4018-a42.dtb \
++      qcom-ipq4018-ap120c-ac.dtb \
 +      qcom-ipq4018-ea6350v3.dtb \
 +      qcom-ipq4018-eap1300.dtb \
 +      qcom-ipq4018-ex6100v2.dtb \
index f3472b32c00773793326a12b761d522116357a2e..0e27eeab65d55fea64465b98ec0264f6b80d38a9 100644 (file)
@@ -10,11 +10,12 @@ Signed-off-by: John Crispin <john@phrozen.org>
 
 --- a/arch/arm/boot/dts/Makefile
 +++ b/arch/arm/boot/dts/Makefile
-@@ -785,11 +785,26 @@ dtb-$(CONFIG_ARCH_QCOM) += \
+@@ -785,11 +785,27 @@ dtb-$(CONFIG_ARCH_QCOM) += \
        qcom-apq8074-dragonboard.dtb \
        qcom-apq8084-ifc6540.dtb \
        qcom-apq8084-mtp.dtb \
 +      qcom-ipq4018-a42.dtb \
++      qcom-ipq4018-ap120c-ac.dtb \
 +      qcom-ipq4018-ea6350v3.dtb \
 +      qcom-ipq4018-eap1300.dtb \
 +      qcom-ipq4018-ex6100v2.dtb \