Skip to content

Commit

Permalink
ramips: add support for minew g1-c
Browse files Browse the repository at this point in the history
The minew g1-c is a smart home gateway / BLE gateway.
A Nordic nRF52832 is available via USB UART (cp210x) to support BLE.
The LED ring is a ring of 24x ws2812b connect to a generic GPIO (unsupported).
There is a small LED which is only visible when the device is open which
will be used as LED until the ws2812b is supported.
The board has also a micro sdcard/tfcard slot (untested).
The Nordic nRF52832 exposes SWD over a 5pin header (GND, VCC, SWD, SWC, RST).
The vendor uses an older OpenWrt version, sysupgrade can be used via
serial or ssh.

CPU:		MT7628AN / 580MHz
RAM:		DDR2 128 MiB RAM
Flash:		SPI NOR 16 MiB W25Q128
Ethernet:	1x 100 mbit (Port 0) (PoE in)
USB:		USB hub, 2x external, 1x internal to USB UART
Power:		via micro usb or PoE 802.11af
UART:		3.3V, 115200 8n1

Signed-off-by: Alexander Couzens <lynxis@fe80.eu>
  • Loading branch information
lynxis committed Jul 5, 2021
1 parent bb2a9af commit 8d497b6
Show file tree
Hide file tree
Showing 3 changed files with 159 additions and 0 deletions.
146 changes: 146 additions & 0 deletions target/linux/ramips/dts/mt7628an_minew_g1-c.dts
@@ -0,0 +1,146 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT

#include "mt7628an.dtsi"

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>

/ {
model = "Minew G1-C";
compatible = "minew,g1-c", "mediatek,mt7628an-soc";

aliases {
led-boot = &led_system;
led-failsafe = &led_system;
led-running = &led_system;
led-upgrade = &led_system;
};

chosen {
bootargs = "console=ttyS0,57600";
};

memory@0 {
device_type = "memory";
reg = <0x0 0x8000000>;
};

keys {
compatible = "gpio-keys-polled";
poll-interval = <20>;

reset {
label = "reset";
gpios = <&gpio 38 GPIO_ACTIVE_LOW>;
linux,code = <KEY_RESTART>;
};
};

leds {
compatible = "gpio-leds";

led_system: system {
label = "red:system";
gpios = <&gpio 43 GPIO_ACTIVE_HIGH>;
default-state = "on";
};
};

gpio-export {
compatible = "gpio-export";
#size-cells = <0>;

ws2812 {
gpio-export,name = "ws2812";
gpio-export,output = <1>;
gpios = <&gpio 11 GPIO_ACTIVE_HIGH>;
};

nrf_power {
gpio-export,name = "nrf_power";
gpio-export,output = <1>;
gpios = <&gpio 45 GPIO_ACTIVE_HIGH>;
};
};
};

&state_default {
gpio {
groups = "gpio";
function = "gpio";
};

p0led_an {
groups = "p0led_an";
function = "gpio";
};

uart1 {
groups = "uart1";
function = "gpio";
};

wdt {
groups = "wdt";
function = "gpio";
};
};

&spi0 {
status = "okay";

pinctrl-names = "default";
pinctrl-0 = <&spi_pins>, <&spi_cs1_pins>;

m25p80@0 {
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <40000000>;

partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;

partition@0 {
label = "u-boot";
reg = <0x0 0x30000>;
read-only;
};

partition@30000 {
label = "u-boot-env";
reg = <0x30000 0x10000>;
};

factory: partition@40000 {
label = "factory";
reg = <0x40000 0x10000>;
read-only;
};

partition@50000 {
compatible = "denx,uimage";
label = "firmware";
reg = <0x50000 0xfb0000>;
};
};
};
};

&ethernet {
mtd-mac-address = <&factory 0x28>;
};

&esw {
mediatek,portmap = <0x3e>;
};

&wmac {
status = "okay";
};

&sdhci {
status = "okay";
mediatek,cd-high;
};
8 changes: 8 additions & 0 deletions target/linux/ramips/image/mt76x8.mk
Expand Up @@ -269,6 +269,14 @@ define Device/mercury_mac1200r-v2
endef
TARGET_DEVICES += mercury_mac1200r-v2

define Device/minew_g1-c
IMAGE_SIZE := 15744k
DEVICE_VENDOR := Minew
DEVICE_MODEL := G1-C
DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci kmod-usb-ledtrig-usbport kmod-usb-serial-cp210x
endef
TARGET_DEVICES += minew_g1-c

define Device/netgear_r6020
$(Device/netgear_sercomm_nor)
IMAGE_SIZE := 7104k
Expand Down
5 changes: 5 additions & 0 deletions target/linux/ramips/mt76x8/base-files/etc/board.d/02_network
Expand Up @@ -32,6 +32,11 @@ ramips_setup_interfaces()
ucidef_add_switch_attr "switch0" "enable" "false"
ucidef_set_interface_lan "eth0"
;;
minew,g1-c)
ucidef_add_switch "switch0"
ucidef_add_switch_attr "switch0" "enable" "false"
ucidef_set_interface_lan "eth0" "dhcp"

This comment has been minimized.

Copy link
@adschm

adschm Jul 5, 2021

Member

@lynxis I don't think it's a good idea to make this device a single special case in the entire target. Please consider removing the "dhcp" argument.

This comment has been minimized.

Copy link
@lynxis

lynxis Jul 7, 2021

Author Member

@adschm I can remove it. But in general I like the idea of not using 192.168.1.1 + dhcp server as default for device which aren't intent to be used as router.

This comment has been minimized.

Copy link
@adschm

adschm Jul 9, 2021

Member

OpenWrt has a "default" initial experience that is consistent for most devices/targets. This allows initial configuration based on a single, simple guide, i.e. 1. connect to a lan port and get an address, 2. configure the device as you would like it to behave.

For somebody expecting this behavior, the device here will just look broken. One would need to find it in the local network with a random IP address (Wifi disabled by default), and all router-related services would be running nonetheless (though, the user now probably isn't aware of it either, as the device doesn't behave like a router.

Thus, I consider having default configuration like this a bad idea, for consistency, usability and confusion. The alternative, which came up during the vivid discussions we had on this subject before, would be to group devices into different "kinds", each with its own setup and initialization guidelines etc. So, we would not have a single "How to set up your OpenWrt device" guideline, but one for routers, one for APs, one for NAS, ... (and you would have to define what's a router and what's an AP etc.).

IMO, sticking to the unified default experience is the best way out here, instead of creating a hidden deviation for some devices which the user has to deduce from the device's "intended" use.

;;
asus,rt-n10p-v3|\
asus,rt-n11p-b1|\
asus,rt-n12-vp-b1|\
Expand Down

0 comments on commit 8d497b6

Please sign in to comment.