[PATCH v3] ath79: add support for onion omega
Mike Bernardo
mike at potatoslicer.com
Sun Aug 22 12:29:37 PDT 2021
Hi All,
Thanks Jan-Niklas for working on this! I am trying to test this on my onion omega2+ (in the arduino dock) .. consoled in via a TTL serial adapter and I tried doing a forced sysupgrade to openwrt-ath79-generic-onion_omega-squashfs-sysupgrade.bin which I built by applying the patch to v21.02.0-rc4 (134ac824c5a154edbbe1c581bcbc42d265dc20c0). I tried forcing after sysupgrade said that it didn't support omega2p .. now it won't boot, any ideas? Boot attempt below.
Note that the below is after I tried flashing openwrt-ath79-generic-onion_omega-squashfs-factory.bin via usb (filename omega2.bin put on a FAT16 filesystem and you select usb flash in the menu after tapping the reset button on powerup. Failing with the same message though.
--
Board: Onion Omega2 APSoC DRAM: 128 MB
relocate_code Pointer at: 87f60000
******************************
Software System Reset Occurred
******************************
flash manufacture id: c2, device id 20 19
find flash: MX25L25635E
*** Warning - bad CRC, using default environment
============================================
Onion Omega2 UBoot Version: 4.3.0.3
--------------------------------------------
ASIC 7628_MP (Port5<->None)
DRAM component: 1024 Mbits DDR, width 16
DRAM bus: 16 bit
Total memory: 128 MBytes
Flash component: SPI Flash
Date:Oct 18 2016 Time:17:29:05
============================================
icache: sets:512, ways:4, linesz:32 ,total:65536
dcache: sets:256, ways:4, linesz:32 ,total:32768
CPU freq = 575 MHZ
Estimated memory size = 128 Mbytes
Resetting MT7628 PHY.
Initializing MT7688 GPIO system.
**************************************
* Hold Reset button for more options *
**************************************
Boot Linux from Flash NO RESET PRESSED.
## Booting image at bc050000 ...
Bad Magic Number,01000000
> On 2021/08/22, at 07:18:32 CDT (-05:00), Adrian Schmutzler <mail at adrianschmutzler.de> wrote:
>
> 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 = <®_usb_vbus>;
>> + dr_mode = "host";
>> +};
>> +
>> +&usb_phy {
>> + status = "okay";
>> +};
>> +
>> +ð0 {
>> + status = "okay";
>> +
>> + compatible = "syscon", "simple-mfd";
>> +};
>> +
>> +ð1 {
>> + 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
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
More information about the openwrt-devel
mailing list