[PATCH v3] ath79: add support for onion omega

Adrian Schmutzler mail at adrianschmutzler.de
Sun Aug 22 05:18:32 PDT 2021


Hi,

> -----Original Message-----
> From: openwrt-devel [mailto:openwrt-devel-bounces at lists.openwrt.org]
> On Behalf Of Jan-Niklas Burfeind
> Sent: Samstag, 14. August 2021 15:55
> To: openwrt-devel at lists.openwrt.org
> Cc: openwrt at sebastianschaper.net; mail at david-bauer.net; Jan-Niklas
> Burfeind
> Subject: [PATCH v3] ath79: add support for onion omega

some inline comments below.

> 
> The Onion Omega is a hardware development platform with built-in WiFi.
> 
> https://onioniot.github.io/wiki/
> 
> Specifications:
>  - QCA9331 @ 400 MHz (MIPS 24Kc Big-Endian Processor)
>  - 64MB of DDR2 RAM running at 400 MHz
>  - 16MB of on-board flash storage
>  - Support for USB 2.0
>  - Support for Ethernet at 100 Mbps
>  - 802.11b/g/n WiFi at 150 Mbps
>  - 18 digital GPIOs
>  - A single Serial UART
>  - Support for SPI
>  - Support for I2S
> 
> Flash instructions:
> The device is running OpenWrt upon release using the ar71xx target.
> Both a sysupgrade
> and uploading the factory image using u-boots web-UI do work fine.
> 
> Depending on the ssh client, it might be necessary to enable outdated
> KeyExchange methods e.g. in the clients ssh-config:
> 
> Host 192.168.1.1
>         KexAlgorithms +diffie-hellman-group1-sha1
> 
> The stock credentials are: root onioneer
> 
> For u-boots web-UI manually configure `192.168.1.2/24` on your computer,
> connect to `192.168.1.1`.
> 
> MAC addresses as verified by OEM firmware:
> 2G       phy0      label
> LAN      eth0      label - 1
> 
> LAN is only available in combination with an optional expansion dock.
> 
> Based on vendor acked commit:
> commit 5cd49bb067ca ("ar71xx: add support for Onion Omega")
> 
> Partly reverts:
> commit fc553c7e4c8e ("ath79: drop unused/incomplete dts")
> 
> Signed-off-by: Jan-Niklas Burfeind <git at aiyionpri.me>
> ---
> kmod-usb-chipidea2 is now included as well as tested; usb devices are now
> recognized.
> 
> I added the usb vbus section, like the pisen wmm003n has it and verified the
> gpio looking at the ar71xx commit.
> 
>  target/linux/ath79/dts/ar9331_onion_omega.dts | 137
> ++++++++++++++++++
>  .../generic/base-files/etc/board.d/02_network |   1 +
>  target/linux/ath79/image/generic.mk           |  13 ++
>  3 files changed, 151 insertions(+)
>  create mode 100644 target/linux/ath79/dts/ar9331_onion_omega.dts
> 
> diff --git a/target/linux/ath79/dts/ar9331_onion_omega.dts
> b/target/linux/ath79/dts/ar9331_onion_omega.dts
> new file mode 100644
> index 0000000000..43a0b2f392
> --- /dev/null
> +++ b/target/linux/ath79/dts/ar9331_onion_omega.dts
> @@ -0,0 +1,137 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/input/input.h>
> +
> +#include "ar9331.dtsi"

This include needs to be before the others.

> +
> +/ {
> +	model = "Onion Omega";
> +	compatible = "onion,omega", "qca,ar9331";
> +
> +	aliases {
> +		serial0 = &uart;

You could add "label-mac-device = &wmac" here if your commit message is correct.

> +		led-boot = &led_system;
> +		led-failsafe = &led_system;
> +		led-running = &led_system;
> +		led-upgrade = &led_system;
> +	};
> +
> +	leds {
> +		compatible = "gpio-leds";
> +
> +		led_system: system {
> +			label = "amber:system";
> +			gpios = <&gpio 27 GPIO_ACTIVE_LOW>;
> +		};
> +	};
> +
> +	keys {
> +		compatible = "gpio-keys";
> +		poll-interval = <100>;

Poll-interval can be dropped with "gpio-keys".

> +
> +		reset {
> +			label = "reset";
> +			linux,code = <KEY_RESTART>;
> +			gpios = <&gpio 11 GPIO_ACTIVE_HIGH>;
> +			debounce-interval = <60>;
> +		};
> +	};
> +
> +	reg_usb_vbus: reg_usb_vbus {
> +		compatible = "regulator-fixed";
> +		regulator-name = "usb_vbus";
> +		regulator-min-microvolt = <5000000>;
> +		regulator-max-microvolt = <5000000>;
> +		gpio = <&gpio 8 GPIO_ACTIVE_HIGH>;
> +		enable-active-high;
> +	};
> +};
> +
> +&ref {
> +	clock-frequency = <25000000>;
> +};
> +
> +&gpio {
> +	status = "okay";
> +};

gpio is enabled by default, this block can be dropped.

> +
> +&usb {
> +	status = "okay";
> +
> +	vbus-supply = <&reg_usb_vbus>;
> +	dr_mode = "host";
> +};
> +
> +&usb_phy {
> +	status = "okay";
> +};
> +
> +&eth0 {
> +	status = "okay";
> +
> +	compatible = "syscon", "simple-mfd";
> +};
> +
> +&eth1 {
> +	status = "okay";
> +
> +	nvmem-cells = <&macaddr_uboot_1fc00>;
> +	nvmem-cell-names = "mac-address";
> +	mac-address-increment = <(-1)>;
> +
> +	gmac-config {
> +		device = <&gmac>;
> +		switch-phy-addr-swap = <4>;
> +		switch-phy-swap = <4>;
> +	};
> +};
> +
> +&spi {
> +	status = "okay";
> +
> +	flash at 0 {
> +		compatible = "jedec,spi-nor";
> +		spi-max-frequency = <25000000>;
> +		reg = <0>;
> +
> +		partitions {
> +			compatible = "fixed-partitions";
> +			#address-cells = <1>;
> +			#size-cells = <1>;
> +
> +			uboot: partition at 0 {
> +				label = "u-boot";
> +				reg = <0x000000 0x020000>;
> +				read-only;
> +				compatible = "nvmem-cells";
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +
> +				macaddr_uboot_1fc00: macaddr at 1fc00 {
> +					reg = <0x1fc00 0x6>;
> +				};
> +			};

It's common practice at the moment to put a separate block for defining the MAC addresses at the end of the file.
Please do so, just look at any other DTS file in recent master.

> +
> +			partition at 20000 {
> +				compatible = "tplink,firmware";
> +				label = "firmware";
> +				reg = <0x020000 0xfd0000>;
> +			};
> +
> +			art: partition at ff0000 {
> +				label = "art";
> +				reg = <0xff0000 0x010000>;
> +				read-only;
> +			};
> +		};
> +	};
> +};
> +
> +&wmac {
> +	status = "okay";
> +
> +	mtd-cal-data = <&art 0x1000>;

I personally prefer an empty line after mtd-cal-data.

Best

Adrian

> +	nvmem-cells = <&macaddr_uboot_1fc00>;
> +	nvmem-cell-names = "mac-address";
> +};
> diff --git a/target/linux/ath79/generic/base-files/etc/board.d/02_network
> b/target/linux/ath79/generic/base-files/etc/board.d/02_network
> index 4fe7fbc027..b859c64633 100644
> --- a/target/linux/ath79/generic/base-files/etc/board.d/02_network
> +++ b/target/linux/ath79/generic/base-files/etc/board.d/02_network
> @@ -45,6 +45,7 @@ ath79_setup_interfaces()
>  	netgear,ex7300|\
>  	ocedo,koala|\
>  	ocedo,raccoon|\
> +	onion,omega|\
>  	openmesh,mr600-v1|\
>  	openmesh,mr600-v2|\
>  	openmesh,mr900-v1|\
> diff --git a/target/linux/ath79/image/generic.mk
> b/target/linux/ath79/image/generic.mk
> index 2abe1b7307..6e9ff01cc0 100644
> --- a/target/linux/ath79/image/generic.mk
> +++ b/target/linux/ath79/image/generic.mk
> @@ -1653,6 +1653,19 @@ define Device/ocedo_ursus  endef
> TARGET_DEVICES += ocedo_ursus
> 
> +define Device/onion_omega
> +  $(Device/tplink-16mlzma)
> +  SOC := ar9331
> +  DEVICE_VENDOR := Onion
> +  DEVICE_MODEL := Omega
> +  DEVICE_PACKAGES := kmod-usb-chipidea2
> +  SUPPORTED_DEVICES += onion-omega
> +  KERNEL_INITRAMFS := kernel-bin | append-dtb | lzma | uImage lzma
> +  IMAGE_SIZE := 16192k
> +  TPLINK_HWID := 0x04700001
> +endef
> +TARGET_DEVICES += onion_omega
> +
>  define Device/openmesh_common_64k
>    DEVICE_VENDOR := OpenMesh
>    DEVICE_PACKAGES := uboot-envtools
> --
> 2.32.0
> 
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: openpgp-digital-signature.asc
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: <http://lists.openwrt.org/pipermail/openwrt-devel/attachments/20210822/6cadcf4f/attachment-0001.sig>


More information about the openwrt-devel mailing list