ipq40xx: add support for Crisis Innovation Lab MeshPoint.One
authorRobert Marko <robert@meshpoint.me>
Mon, 25 Nov 2019 14:25:00 +0000 (15:25 +0100)
committerPetr Štetiar <ynezz@true.cz>
Fri, 29 Nov 2019 23:53:36 +0000 (00:53 +0100)
MeshPoint.One is Wi-Fi hotspot and smart IoT gateway (based upon
Jalapeno module from 8Devices).

MeshPoint.One (https://meshpointone.com) is a unique Wi-Fi hotspot and
smart city gateway that can be installed and powered from street
lighting (even solar power in the future).  MeshPoint provides up to 27
hours of interrupted Wi-Fi and IoT services from internal battery even
when external power is not available.  MeshPoint.One can be used for
disaster relief efforts in order to provide instant Wi-Fi coverage that
can be easily expanded by just adding more devices that create wide area
mesh network.  MeshPoint.One devices have standard Luci UI for
management.

Features:
- 1x 1Gpbs WAN
- 1x 1Gbps LAN
- POE input (eth0)
- POE output (eth1)
- Sensor for temperature, humidity and pressure (Bosch BME280)
- current, voltage and power measurement via TI INA230
- Hardware real time clock
- optional power via Li-Ion battery
- micro USB port with USB to serial chip for easy OpenWrt terminal
  access
- I2C header for connecting additional sensors

Installation:
-------------
Simply flash the sysupgrade image from stock firmware.

Or use the built in Web recovery into bootloader:
Hold Reset button for 5 to 20 seconds or use UART and httpd command.
Web UI will appear on 192.168.2.100 by default.
For web recovery use the factory.ubi image.

Signed-off-by: Damir Samardzic <damir.samardzic@sartura.hr>
Signed-off-by: Damir Franusic <damir.franusic@sartura.hr>
Signed-off-by: Valent Turkovic <valent@meshpoint.me>
Signed-off-by: Robert Marko <robert@meshpoint.me>
[commit description long line wrap, usb->USB]
Signed-off-by: Petr Štetiar <ynezz@true.cz>
target/linux/ipq40xx/base-files/etc/board.d/02_network
target/linux/ipq40xx/base-files/etc/board.d/03_gpio_switches
target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4018-meshpoint-one.dts [new file with mode: 0644]
target/linux/ipq40xx/image/Makefile
target/linux/ipq40xx/patches-4.19/901-arm-boot-add-dts-files.patch

index dafd83234ee97ed8384b060e2220b9f57b7fd350..122c1a103d907a20bdb8136942941ca75cb3c350 100755 (executable)
@@ -18,6 +18,7 @@ ipq40xx_setup_interfaces()
                ucidef_set_interfaces_lan_wan "eth0" "eth1"
                ;;
        asus,map-ac2200|\
+       cilab,meshpoint-one|\
        openmesh,a42|\
        openmesh,a62)
                ucidef_set_interfaces_lan_wan "eth1" "eth0"
@@ -84,6 +85,9 @@ ipq40xx_setup_macs()
                wan_mac=$(mtd_get_mac_binary_ubi Factory 0x5006)
                lan_mac=$(mtd_get_mac_binary_ubi Factory 0x1006)
                ;;
+       cilab,meshpoint-one)
+               label_mac=$(mtd_get_mac_binary "ART" 0x1006)
+               ;;
        engenius,ens620ext)
                wan_mac=$(mtd_get_mac_ascii u-boot-env ethaddr)
                lan_mac=$(macaddr_add "$wan_mac" 1)
@@ -96,6 +100,7 @@ ipq40xx_setup_macs()
 
        [ -n "$lan_mac" ] && ucidef_set_interface_macaddr "lan" $lan_mac
        [ -n "$wan_mac" ] && ucidef_set_interface_macaddr "wan" $wan_mac
+       [ -n "$label_mac" ] && ucidef_set_label_macaddr $label_mac
 }
 
 board_config_update
index 4e306a94a5c09883b1ebb3c7bc638ed136c65331..e46a297ea7aae80df3e6e32fa16e3eb935350800 100755 (executable)
@@ -7,6 +7,9 @@ board_config_update
 board=$(board_name)
 
 case "$board" in
+cilab,meshpoint-one)
+       ucidef_add_gpio_switch "poe_passtrough" "POE passtrough enable" "413" "1"
+       ;;
 compex,wpj428)
        ucidef_add_gpio_switch "sim_card_select" "SIM card select" "3" "0"
        ;;
index d4e4cc49ec8bb3f067bfb6eba013639c69669ba7..3d465194154a97e6c67c0b3b72533eb2be7e92e9 100644 (file)
@@ -45,6 +45,7 @@ case "$FIRMWARE" in
        case "$board" in
        8dev,jalapeno |\
        alfa-network,ap120c-ac |\
+       cilab,meshpoint-one |\
        glinet,gl-b1300 |\
        linksys,ea6350v3 |\
        qcom,ap-dk01.1-c1)
@@ -109,6 +110,7 @@ case "$FIRMWARE" in
        case "$board" in
        8dev,jalapeno |\
        alfa-network,ap120c-ac |\
+       cilab,meshpoint-one |\
        glinet,gl-b1300 |\
        linksys,ea6350v3 |\
        qcom,ap-dk01.1-c1)
index 96f865c67e3249834f01bab1953de8c588b73eb3..41f8fcfccbfb17aa01bfb519f8c14944aabda2d5 100644 (file)
@@ -50,6 +50,7 @@ platform_do_upgrade() {
        avm,fritzbox-7530 |\
        avm,fritzrepeater-1200 |\
        avm,fritzrepeater-3000 |\
+       cilab,meshpoint-one |\
        qxwlan,e2600ac-c2)
                nand_do_upgrade "$1"
                ;;
diff --git a/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4018-meshpoint-one.dts b/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4018-meshpoint-one.dts
new file mode 100644 (file)
index 0000000..2e21b55
--- /dev/null
@@ -0,0 +1,81 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/* Copyright (c) 2019, CRISIS INNOVATION LAB d.o.o.
+ * Author: Robert Marko <robert@meshpoint.me>
+ */
+
+#include "qcom-ipq4018-jalapeno.dtsi"
+
+/ {
+       model = "Crisis Innovation Lab MeshPoint.One";
+       compatible = "cilab,meshpoint-one";
+
+       aliases {
+               led-boot = &led_status;
+               led-failsafe = &led_status;
+               led-running = &led_status;
+               led-upgrade = &led_status;
+       };
+
+       soc {
+               i2c-gpio {
+                       status = "okay";
+
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       compatible = "i2c-gpio";
+                       gpios = <&tlmm 0 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN) /* sda */
+                                        &tlmm 4 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN) /* scl */
+                                       >;
+
+                       bme280@76 {
+                               status = "okay";
+
+                               compatible = "bosch,bme280";
+                               reg = <0x76>;
+                       };
+
+                       pcf2129@51 {
+                               status = "okay";
+
+                               compatible = "nxp,pcf2129";
+                               reg = <0x51>;
+                       };
+
+                       ina230@40 {
+                               status = "okay";
+
+                               compatible = "ti,ina230";
+                               reg = <0x40>;
+                               shunt-resistor = <2000>;
+                       };
+
+                       ina230@44 {
+                               status = "okay";
+
+                               compatible = "ti,ina230";
+                               reg = <0x44>;
+                               shunt-resistor = <2000>;
+                       };
+               };
+       };
+
+       keys {
+               compatible = "gpio-keys";
+
+               reset {
+                       label = "reset";
+                       gpios = <&tlmm 5 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_RESTART >;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led_status: status {
+                       label = "meshpoint-one:blue:status";
+                       gpios = <&tlmm 63 GPIO_ACTIVE_HIGH>;
+               };
+       };
+};
index a9c5e625af48392f8881efc96c4402560a04991e..ac344474756ee0308072eba7c9b6a37760eeb61d 100644 (file)
@@ -60,14 +60,18 @@ define Build/SenaoFW
        @cp $@.new $@
 endef
 
-define Device/8dev_jalapeno
+define Device/8dev_jalapeno-common
        $(call Device/FitImage)
        $(call Device/UbiFit)
+       BLOCKSIZE := 128k
+       PAGESIZE := 2048
+endef
+
+define Device/8dev_jalapeno
+       $(call Device/8dev_jalapeno-common)
        DEVICE_VENDOR := 8devices
        DEVICE_MODEL := Jalapeno
        DEVICE_DTS := qcom-ipq4018-jalapeno
-       BLOCKSIZE := 128k
-       PAGESIZE := 2048
 endef
 TARGET_DEVICES += 8dev_jalapeno
 
@@ -164,6 +168,15 @@ define Device/avm_fritzrepeater-3000
 endef
 TARGET_DEVICES += avm_fritzrepeater-3000
 
+define Device/cilab_meshpoint-one
+       $(call Device/8dev_jalapeno-common)
+       DEVICE_DTS := qcom-ipq4018-meshpoint-one
+       DEVICE_VENDOR := Crisis Innovation Lab
+       DEVICE_MODEL := MeshPoint.One
+       DEVICE_PACKAGES := kmod-i2c-gpio kmod-iio-bmp280-i2c kmod-hwmon-ina2xx kmod-rtc-pcf2127
+endef
+TARGET_DEVICES += cilab_meshpoint-one
+
 define Device/compex_wpj419
        $(call Device/FitImage)
        $(call Device/UbiFit)
index 4649b337e33b5fa67f8c7439edbd8a65963f67dc..93214e60e99db0b97b8c431d37d81b286abb5622 100644 (file)
@@ -10,7 +10,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
 
 --- a/arch/arm/boot/dts/Makefile
 +++ b/arch/arm/boot/dts/Makefile
-@@ -785,11 +785,36 @@ dtb-$(CONFIG_ARCH_QCOM) += \
+@@ -785,11 +785,37 @@ dtb-$(CONFIG_ARCH_QCOM) += \
        qcom-apq8074-dragonboard.dtb \
        qcom-apq8084-ifc6540.dtb \
        qcom-apq8084-mtp.dtb \
@@ -23,6 +23,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
 +      qcom-ipq4018-ex6150v2.dtb \
 +      qcom-ipq4018-fritz4040.dtb \
 +      qcom-ipq4018-jalapeno.dtb \
++      qcom-ipq4018-meshpoint-one.dtb \
 +      qcom-ipq4018-nbg6617.dtb \
 +      qcom-ipq4018-rt-ac58u.dtb \
 +      qcom-ipq4018-wre6606.dtb \