[PATCH v2] ath79: add support for onion omega

Tomasz Maciej Nowak tmn505 at gmail.com
Sat Aug 14 06:54:28 PDT 2021


Hi,
one comment inline.

W dniu 14.08.2021 o 14:33, Jan-Niklas Burfeind pisze:
> 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>
> ---
> Hello David,
> thanks for the review.
> I think I got both you as well as Sebastians suggestion patched.
> This revision contains them both, compiled without errors this morning
> and is currently running on an omega next to me;
> dmesg is inconspicuous.
> 
> Thanks
> Jan-Niklas/Aiyion
> 
>  target/linux/ath79/dts/ar9331_onion_omega.dts | 127 ++++++++++++++++++
>  .../generic/base-files/etc/board.d/02_network |   1 +
>  target/linux/ath79/image/generic.mk           |  13 ++
>  3 files changed, 141 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..b08c62221f
> --- /dev/null
> +++ b/target/linux/ath79/dts/ar9331_onion_omega.dts
> @@ -0,0 +1,127 @@
> +// 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"
> +
> +/ {
> +	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 = "amber:system";
> +			gpios = <&gpio 27 GPIO_ACTIVE_LOW>;
> +		};
> +	};
> +
> +	keys {
> +		compatible = "gpio-keys";
> +		poll-interval = <100>;
> +
> +		reset {
> +			label = "reset";
> +			linux,code = <KEY_RESTART>;
> +			gpios = <&gpio 11 GPIO_ACTIVE_HIGH>;
> +			debounce-interval = <60>;
> +		};
> +	};
> +};
> +
> +&ref {
> +	clock-frequency = <25000000>;
> +};
> +
> +&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";
> +
> +	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>;

Is this really the size of the U-Boot? According to the sources of
U-Boot [1] the max size of bootloader is 64KiB. If the sources don't
lie, what's between 0x10000-0x20000? Is that some hardcoded data or
U-Boot environment? If it's the environment, You can't use static
address of the MAC in nvmem-cells, because it can move around if someone modified the environment. For that You'll need to extract it in
userspace.

1. https://github.com/OnionIoT/uboot/blob/684829a3a89eabca4b573530e89d60faed277dee/Makefile#L31

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

[ snip ]

Regards

-- 
TMN



More information about the openwrt-devel mailing list