[PATCH] ath79: add support for onion omega

David Bauer mail at david-bauer.net
Thu Aug 12 16:45:54 PDT 2021


Hi Jan-Niklas,

On 8/11/21 6:54 PM, Jan-Niklas Burfeind wrote:
> 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>
> ---
>  target/linux/ath79/dts/ar9331_onion_omega.dts | 138 ++++++++++++++++++
>  .../generic/base-files/etc/board.d/02_network |   1 +
>  target/linux/ath79/image/generic.mk           |  14 ++
>  3 files changed, 153 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..3b72a293b4
> --- /dev/null
> +++ b/target/linux/ath79/dts/ar9331_onion_omega.dts
> @@ -0,0 +1,138 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
> +/dts-v1/;
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/input/input.h>
> +
> +#include "ar9331.dtsi"
> +
> +/ {
> +	model = "Onion Omega";
> +	compatible = "onion,omega", "qca,ar9331";
> +
> +	aliases {
> +		serial0 = &uart;
> +		led-boot = &led_system;
> +		led-failsafe = &led_system;
> +		led-running = &led_system;
> +		led-upgrade = &led_system;
> +	};
> +
> +	leds {
> +		compatible = "gpio-leds";
> +
> +		led_system: system {
> +			label = "onion:amber:system";

Remove the model name from the LED name.

> +			gpios = <&gpio 27 GPIO_ACTIVE_LOW>;
> +		};
> +	};
> +
> +	keys {
> +		compatible = "gpio-keys-polled";
> +		poll-interval = <100>;
> +
> +		button0 {
> +			label = "reset";
> +			linux,code = <KEY_RESTART>;
> +			gpios = <&gpio 11 GPIO_ACTIVE_HIGH>;
> +		};
> +	};
> +};
> +
> +&ref {
> +	clock-frequency = <25000000>;
> +};
> +
> +&uart {
> +	status = "okay";
> +};
> +
> +&gpio {
> +	status = "okay";
> +};
> +
> +&usb {
> +	status = "okay";
> +
> +	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";
> +
> +	num-chipselects = <1>;
> +
> +	/* Winbond 25Q128FVSG SPI flash */
> +	flash at 0 {
> +		compatible = "winbond,w25q128", "jedec,spi-nor";

Drop the winbond compatible - defining model-specific compatible is considered legacy
in case it is not required for Flash-ID duplicates.

> +		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;
> +			};
> +
> +			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>;
> +	nvmem-cells = <&macaddr_uboot_1fc00>;
> +	nvmem-cell-names = "mac-address";
> +};
> +
> +&uboot {
> +	compatible = "nvmem-cells";
> +	#address-cells = <1>;
> +	#size-cells = <1>;
> +
> +	macaddr_uboot_1fc00: macaddr at 1fc00 {
> +		reg = <0x1fc00 0x6>;
> +	};
> +};

Can be inlined to previous declaration.

> 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..768e4b3366 100644
> --- a/target/linux/ath79/image/generic.mk
> +++ b/target/linux/ath79/image/generic.mk
> @@ -1653,6 +1653,20 @@ 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-core kmod-usb2
> +  SUPPORTED_DEVICES += onion-omega
> +  KERNEL := kernel-bin | append-dtb | lzma

KERNEL looks redundant (defined in tplink-v1)

Best
David

> +  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
> 



More information about the openwrt-devel mailing list