Message ID | 1570526416-4180-1-git-send-email-wurobinson@qq.com |
---|---|
State | Superseded, archived |
Headers | show |
Series | [OpenWrt-Devel,v4,1/3] ramips: add support for JS7628 development board | expand |
Hi, > -----Original Message----- > From: openwrt-devel [mailto:openwrt-devel-bounces@lists.openwrt.org] On Behalf Of Robinson Wu > Sent: Dienstag, 8. Oktober 2019 11:20 > To: openwrt-devel@lists.openwrt.org > Cc: Robinson Wu <wurobinson@qq.com> > Subject: [OpenWrt-Devel] [PATCH v4 1/3] ramips: add support for JS7628 development board > > This commit adds support for the ZhuoTK JS7628 development board, > The device has the following specifications: > Having looked at all three patches, I wonder whether there is any OpenWrt-relevant difference between the boards with same flash size (except the name). So, is there a difference between e.g. Device/zhuotk_js7628-8m Device/zhuotk_js7688-8m Device/zhuotk_ztk7628p-8m ? If there is no difference, you have essentially two options: 1. Keep devices separate: In this case, you should create flash-based DTSIs on top of the existing DTSI, e.g. mt7628an_zhuotk_js76x8-8m.dtsi mt7628an_zhuotk_js76x8-16m.dtsi mt7628an_zhuotk_js76x8-32m.dtsi Each of those will contain the former content of the corresponding DTS file except the compatible/model. Based on those DTSIs you could then have nine DTS files for the devices (just as you did) that then just contain a link to the matching DTSI and model/compatible. 2. Have three devices only: I personally think option 1 is overkill here. Instead, you could exploit the DEVICE_ALT syntax and only create three devices, but use all nine names for them: Three DTSes: mt7628an_zhuotk_js76x8-8m.dts mt7628an_zhuotk_js76x8-16m.dts mt7628an_zhuotk_js76x8-32m.dts Three definitions with nine names: +define Device/zhuotk_js76x8-8m + MTK_SOC := mt7628an + IMAGE_SIZE := 7872k + DEVICE_VENDOR := ZhuoTK + DEVICE_MODEL := JS7628 + DEVICE_VARIANT := 8M flash + DEVICE_ALT0_VENDOR := ZhuoTK + DEVICE_ALT0_MODEL := JS7688 + DEVICE_ALT0_VARIANT := 8M flash + DEVICE_ALT1_VENDOR := ZhuoTK + DEVICE_ALT1_MODEL := ZTK7628P + DEVICE_ALT1_VARIANT := 8M flash + DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci +endef +TARGET_DEVICES += zhuotk_js76x8-8m + +define Device/zhuotk_js76x8-16m ... accordingly +endef +TARGET_DEVICES += zhuotk_js76x8-16m + +define Device/zhuotk_js76x8-32m ... accordingly +endef +TARGET_DEVICES += zhuotk_js76x8-32m + compatible in DTSes will have to match Device node names, so zhuotk,js76x8-8m etc. I think this will provide I nice tradeoff between usability and codebase tidiness. Best Adrian Schmutzler
Hi again,
> + m25p80@0 {
You should use a generic node name like "flash" here. https://github.com/devicetree-org/devicetree-specification/blob/master/source/devicetree-basics.rst#generic-names-recommendation
Best
Adrian Schmutzler
Hi Adrian, JS7628 use MT7628AN/NN chip JS7688 use MT7688AN chip ZTK7628P use MT7628DAN chip Here are some differences between those chips and modules' shape. If I use "JS76x8-8m" the OpenWRT firmware name will be "openwrt-ramips-mt76x8-zhuotk_js76x8-8m". When users see this firmware name, the they will be confused what module this firmware should match to. I think, the solution is "auto flash file system partition size detect in DTS", by setting some DTS configurations, the system will auto set partition size for file system as the size of the file system is changeable. If the DTS has this feature, the "JS7628", "JS7688", "ZTK7628P" boards' configurations in DTS will be "mt7628an_zhuotk_js7628.dts", "mt7628an_zhuotk_js7688.dts", "mt7628an_zhuotk_ztk7628p.dts", and the "target/linux/ramips/image/mt76x8.mk" will be left "zhuotk_js7628", "zhuotk_js7688", "zhuotk_ztk7628p" too. But I don't know how to do "auto flash file system partition size in DTS" yet, and I don't see any configuration in OpenWRT source like that. So I think, what I commited is better than yours. Best Robinson Wu
Hi, I send a new patch for the JS76x8 boards, as your advices. Hope it will be accepted soon. Thank you. Best Robinson Wu
Hi, before you resend you patches, two other comments: 1. When we introduced DEVICE_VARIANT, we typically removed the "flash" reference formerly present in the DEVICE_TITLE. So you might update your DEVICE_VARIANT entries for consistency, e.g. DEVICE_VARIANT := 32M flash to DEVICE_VARIANT := 32M 2. Currently, you set up wan MAC address to eth0 + 1 with the default case in 02_network (line 731). Do the boards have a wan MAC address on flash (0x2e or somewhere else)? If yes, please add it to the ramips_setup_macs() section (starting line 516) explicitly. Same would be necessary if the wan address is _not_ different from the lan/eth0 address. In this case add your boards to the "empty case" starting in line 584. As those are development boards, they most probably won't have a label with a MAC address on them? Despite, I do not have commit access, so expect comments from other people or further waiting. Best Adrian Schmutzler
Ah, sorry, too late. Didn't realize you already sent a patch as you started with v1 again ... > -----Original Message----- > From: openwrt-devel [mailto:openwrt-devel-bounces@lists.openwrt.org] On Behalf Of Adrian Schmutzler > Sent: Mittwoch, 9. Oktober 2019 13:48 > To: '且听风吟' <wurobinson@qq.com> > Cc: 'openwrt-devel' <openwrt-devel@lists.openwrt.org> > Subject: Re: [OpenWrt-Devel] RE:RE: [PATCH v4 1/3] ramips: add support for JS7628 development board > > Hi, > > before you resend you patches, two other comments: > > 1. When we introduced DEVICE_VARIANT, we typically removed the "flash" reference formerly present in the DEVICE_TITLE. > > So you might update your DEVICE_VARIANT entries for consistency, e.g. > > DEVICE_VARIANT := 32M flash > > to > > DEVICE_VARIANT := 32M > > 2. Currently, you set up wan MAC address to eth0 + 1 with the default case in 02_network (line 731). > > Do the boards have a wan MAC address on flash (0x2e or somewhere else)? If yes, please add it to the ramips_setup_macs() section > (starting line 516) explicitly. > > Same would be necessary if the wan address is _not_ different from the lan/eth0 address. In this case add your boards to the "empty > case" starting in line 584. > > As those are development boards, they most probably won't have a label with a MAC address on them? > > Despite, I do not have commit access, so expect comments from other people or further waiting. > > Best > > Adrian Schmutzler
diff --git a/target/linux/ramips/base-files/etc/board.d/01_leds b/target/linux/ramips/base-files/etc/board.d/01_leds index f8a270b..b09beb9 100755 --- a/target/linux/ramips/base-files/etc/board.d/01_leds +++ b/target/linux/ramips/base-files/etc/board.d/01_leds @@ -467,6 +467,12 @@ zbtlink,zbt-we1226) ucidef_set_led_switch "lan2" "LAN2" "$boardname:green:lan2" "switch0" "0x02" ucidef_set_led_switch "wan" "WAN" "$boardname:green:wan" "switch0" "0x10" ;; +zhuotk,js7628-8m|\ +zhuotk,js7628-16m|\ +zhuotk,js7628-32m) + ucidef_set_led_timer "system" "system" "js76x8:green:system" "1000" "1000" + set_wifi_led "js76x8:green:wifi" + ;; zorlik,zl5900v2) ucidef_set_led_netdev "lan" "lan" "$boardname:green:lan" eth0 ;; diff --git a/target/linux/ramips/base-files/etc/board.d/02_network b/target/linux/ramips/base-files/etc/board.d/02_network index 25aa075..fa6ccf7 100755 --- a/target/linux/ramips/base-files/etc/board.d/02_network +++ b/target/linux/ramips/base-files/etc/board.d/02_network @@ -102,6 +102,9 @@ ramips_setup_interfaces() zbtlink,zbt-wg3526-16m|\ zbtlink,zbt-wg3526-32m|\ zbtlink,zbt-wr8305rt|\ + zhuotk,js7628-8m|\ + zhuotk,js7628-16m|\ + zhuotk,js7628-32m|\ zyxel,keenetic|\ zyxel,keenetic-omni) ucidef_add_switch "switch0" \ diff --git a/target/linux/ramips/dts/mt7628an_zhuotk_js7628-16m.dts b/target/linux/ramips/dts/mt7628an_zhuotk_js7628-16m.dts new file mode 100644 index 0000000..4058577 --- /dev/null +++ b/target/linux/ramips/dts/mt7628an_zhuotk_js7628-16m.dts @@ -0,0 +1,60 @@ +/dts-v1/; + +#include "mt7628an_zhuotk_js76x8.dtsi" + +/ { + compatible = "zhuotk,js7628-16m", "zhuotk,js76x8", "mediatek,mt7628an-soc"; + model = "ZhuoTK JS7628 (16M flash)"; +}; + +&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>; + m25p,chunked-io = <32>; + + 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>; + read-only; + }; + + factory: partition@40000 { + label = "factory"; + reg = <0x40000 0x10000>; + read-only; + }; + + partition@50000 { + compatible = "denx,uimage"; + label = "firmware"; + reg = <0x50000 0xfb0000>; + }; + }; + }; + + spidev@1 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "linux,spidev"; + reg = <1>; + spi-max-frequency = <40000000>; + }; +}; diff --git a/target/linux/ramips/dts/mt7628an_zhuotk_js7628-32m.dts b/target/linux/ramips/dts/mt7628an_zhuotk_js7628-32m.dts new file mode 100644 index 0000000..9bbd0fd --- /dev/null +++ b/target/linux/ramips/dts/mt7628an_zhuotk_js7628-32m.dts @@ -0,0 +1,60 @@ +/dts-v1/; + +#include "mt7628an_zhuotk_js76x8.dtsi" + +/ { + compatible = "zhuotk,js7628-32m", "zhuotk,js76x8", "mediatek,mt7628an-soc"; + model = "ZhuoTK JS7628 (32M flash)"; +}; + +&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>; + m25p,chunked-io = <32>; + + 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>; + read-only; + }; + + factory: partition@40000 { + label = "factory"; + reg = <0x40000 0x10000>; + read-only; + }; + + partition@50000 { + compatible = "denx,uimage"; + label = "firmware"; + reg = <0x50000 0x1fb0000>; + }; + }; + }; + + spidev@1 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "linux,spidev"; + reg = <1>; + spi-max-frequency = <40000000>; + }; +}; diff --git a/target/linux/ramips/dts/mt7628an_zhuotk_js7628-8m.dts b/target/linux/ramips/dts/mt7628an_zhuotk_js7628-8m.dts new file mode 100644 index 0000000..b385a13 --- /dev/null +++ b/target/linux/ramips/dts/mt7628an_zhuotk_js7628-8m.dts @@ -0,0 +1,60 @@ +/dts-v1/; + +#include "mt7628an_zhuotk_js76x8.dtsi" + +/ { + compatible = "zhuotk,js7628-8m", "zhuotk,js76x8", "mediatek,mt7628an-soc"; + model = "ZhuoTK JS7628 (8M flash)"; +}; + +&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>; + m25p,chunked-io = <32>; + + 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>; + read-only; + }; + + factory: partition@40000 { + label = "factory"; + reg = <0x40000 0x10000>; + read-only; + }; + + partition@50000 { + compatible = "denx,uimage"; + label = "firmware"; + reg = <0x50000 0x7b0000>; + }; + }; + }; + + spidev@1 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "linux,spidev"; + reg = <1>; + spi-max-frequency = <40000000>; + }; +}; diff --git a/target/linux/ramips/dts/mt7628an_zhuotk_js76x8.dtsi b/target/linux/ramips/dts/mt7628an_zhuotk_js76x8.dtsi new file mode 100644 index 0000000..4fbf7f6 --- /dev/null +++ b/target/linux/ramips/dts/mt7628an_zhuotk_js76x8.dtsi @@ -0,0 +1,105 @@ +#include "mt7628an.dtsi" + +#include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/input/input.h> + +/ { + compatible = "zhuotk,js76x8", "mediatek,mt7628an-soc"; + + aliases { + led-boot = &led_system; + led-failsafe = &led_system; + led-running = &led_system; + led-upgrade = &led_system; + }; + + chosen { + bootargs = "console=ttyS0,115200"; + }; + + gpio-leds { + compatible = "gpio-leds"; + + led_system: system { + label = "js76x8:green:system"; + gpios = <&gpio1 5 GPIO_ACTIVE_LOW>; + }; + + wifi { + label = "js76x8:green:wifi"; + gpios = <&gpio1 12 GPIO_ACTIVE_LOW>; + }; + }; + + keys { + compatible = "gpio-keys"; + + reset { + label = "reset"; + gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>; + linux,code = <KEY_RESTART>; + }; + }; +}; + +&pinctrl { + state_default: pinctrl0 { + gpio { + ralink,group = "gpio","p3led_an","p4led_an", + "pwm0","pwm1","refclk","wdt","wled_an"; + ralink,function = "gpio"; + }; + + p0led { + ralink,group = "p0led_an"; + ralink,function = "p0led_an"; + }; + + p1led { + ralink,group = "p1led_an"; + ralink,function = "p1led_an"; + }; + + p2led { + ralink,group = "p2led_an"; + ralink,function = "p2led_an"; + }; + + pwm_2_3 { + ralink,group = "uart2"; + ralink,function = "pwm"; + }; + }; + + uart2 { + uart2 { + ralink,group = "spis"; + ralink,function = "pwm_uart2"; + }; + }; +}; + +&i2c { + status = "okay"; +}; + +&uart1 { + status = "okay"; +}; + +&uart2 { + status = "okay"; +}; + +ðernet { + mtd-mac-address = <&factory 0x28>; +}; + +&sdhci { + status = "okay"; + mediatek,cd-low; +}; + +&wmac { + status = "okay"; +}; diff --git a/target/linux/ramips/image/mt76x8.mk b/target/linux/ramips/image/mt76x8.mk index 9ab16db..36cb8af 100644 --- a/target/linux/ramips/image/mt76x8.mk +++ b/target/linux/ramips/image/mt76x8.mk @@ -583,6 +583,36 @@ define Device/zbtlink_zbt-we1226 endef TARGET_DEVICES += zbtlink_zbt-we1226 +define Device/zhuotk_js7628-8m + MTK_SOC := mt7628an + IMAGE_SIZE := 7872k + DEVICE_VENDOR := ZhuoTK + DEVICE_MODEL := JS7628 + DEVICE_VARIANT := 8M flash + DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci +endef +TARGET_DEVICES += zhuotk_js7628-8m + +define Device/zhuotk_js7628-16m + MTK_SOC := mt7628an + IMAGE_SIZE := 16064k + DEVICE_VENDOR := ZhuoTK + DEVICE_MODEL := JS7628 + DEVICE_VARIANT := 16M flash + DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci +endef +TARGET_DEVICES += zhuotk_js7628-16m + +define Device/zhuotk_js7628-32m + MTK_SOC := mt7628an + IMAGE_SIZE := 32448k + DEVICE_VENDOR := ZhuoTK + DEVICE_MODEL := JS7628 + DEVICE_VARIANT := 32M flash + DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci +endef +TARGET_DEVICES += zhuotk_js7628-32m + define Device/zyxel_keenetic-extra-ii MTK_SOC := mt7628an IMAGE_SIZE := 14912k
This commit adds support for the ZhuoTK JS7628 development board, The device has the following specifications: - SOC:MT7628AN/NN - RAM:64/128/256 MB (DDR2) - FLASH:8/16/32 MB (SPI NOR) - Ethernet:3x 10/100 Mbps ethernet ports (MT7628AN/NN built-in switch) - WIFI:1x 2T2R 2.4 GHz Wi-Fi - LEDs:1x system status green LED, 1x wifi green LED, 3x ethernet green LED - Buttons:1x reset button, 2x user defined button - 1x microSD slot - 4x USB 2.0 port - 1x mini-usb debug UART - 1x DC jack for main power (DC 5V) - 1x TTL/RS232 UART - 1x TTL/RS485 UART - 13x GPIO header - 1x audio codec(wm8960) Installation via OpenWrt: The original firmware is OpenWrt, so both LuCI or sysupgrade can be used. Installation via U-boot web: 1. Power on board with reset button pressed, release it after wifi led start blinking. 2. Setup static IP 192.168.1.123/4 on your PC. 3. Go to 192.168.1.8 in browser and upload "sysupgrade" image. Installation via U-boot tftp: 1. Connect to serial console at the mini usb, which has been connected to UART0 on board (115200 8N1) 2. Setup static IP 192.168.1.123/4 on your PC. 3. Place openwrt-firmware.bin on your PC tftp server (192.168.1.123). 3. Connect one of LAN ports on board to your PC. 4. Start terminal software (e.g. screen /dev/ttyUSB0 115200) on PC. 5. Apply power to board. 6. Interrupt U-boot with keypress of "2". 7. At u-boot prompts: Warning!! Erase Linux in Flash then burn new one. Are you sure?(Y/N) Y Input device IP (192.168.1.8) ==:192.168.1.8 Input server IP (192.168.1.123) ==:192.168.1.123 Input Linux Kernel filename (root_uImage) ==:openwrt-firmware.bin 8. board will download file from tftp server, write it to flash and reboot. Other notes: 1. This board is available with three types of RAM with flash configuration. Chose one of the right "Target Profile" in "make menuconfig" as listed below: "ZhuoTK JS7628 8M flash" "ZhuoTK JS7628 16M flash" "ZhuoTK JS7628 32M flash" to fit the board you have. Vist www.zhuotk.com for further information. Signed-off-by: Robinson Wu <wurobinson@qq.com> --- target/linux/ramips/base-files/etc/board.d/01_leds | 6 ++ .../linux/ramips/base-files/etc/board.d/02_network | 3 + .../ramips/dts/mt7628an_zhuotk_js7628-16m.dts | 60 ++++++++++++ .../ramips/dts/mt7628an_zhuotk_js7628-32m.dts | 60 ++++++++++++ .../linux/ramips/dts/mt7628an_zhuotk_js7628-8m.dts | 60 ++++++++++++ .../linux/ramips/dts/mt7628an_zhuotk_js76x8.dtsi | 105 +++++++++++++++++++++ target/linux/ramips/image/mt76x8.mk | 30 ++++++ 7 files changed, 324 insertions(+) create mode 100644 target/linux/ramips/dts/mt7628an_zhuotk_js7628-16m.dts create mode 100644 target/linux/ramips/dts/mt7628an_zhuotk_js7628-32m.dts create mode 100644 target/linux/ramips/dts/mt7628an_zhuotk_js7628-8m.dts create mode 100644 target/linux/ramips/dts/mt7628an_zhuotk_js76x8.dtsi