diff mbox

[OpenWrt-Devel,v2,1/3] ramips: Add DTS files for HiWiFi HC5x61 models

Message ID DFF9196C-170D-482D-90AE-434D1AC5EBC8@163.com
State Superseded
Headers show

Commit Message

Comman Kang Sept. 28, 2015, 2:42 p.m. UTC
HiWiFi HC5661/5761/5861 models are manufactured by http://www.hiwifi.com. These models have similar hardware specs(MT7620A + 128M DDR2 + 16M flash). This patch adds support for them.

The original author is Justin Liu (rssnsj@gmail.com). I ported the patch to trunk and submitted it here with his approval.

v2 fix
  1: Renamed files to remove manufacturer’s name.
  2: styling work

Signed-off-by: Xiaoning Kang <kangxn@163.com>

Comments

Piotr Dymacz Sept. 28, 2015, 8:31 p.m. UTC | #1
Hello,

Just some small, cosmetic things... see inline, below.

BTW.
I see that these models are very similar (most of the dts files are
just copy&paste).
Maybe it would be better to make for them one, common dtsi file and
separated dts files per model (take Lenovo Y1/Y1S as example).

Cheers,
Piotr

2015-09-28 16:42 GMT+02:00 Comman Kang <kangxn@163.com>:
> HiWiFi HC5661/5761/5861 models are manufactured by http://www.hiwifi.com. These models have similar hardware specs(MT7620A + 128M DDR2 + 16M flash). This patch adds support for them.
>
> The original author is Justin Liu (rssnsj@gmail.com). I ported the patch to trunk and submitted it here with his approval.
>
> v2 fix
>   1: Renamed files to remove manufacturer’s name.
>   2: styling work
>
> Signed-off-by: Xiaoning Kang <kangxn@163.com>
>
>
> diff --git a/target/linux/ramips/dts/HC5661.dts b/target/linux/ramips/dts/HC5661.dts
> new file mode 100644
> index 0000000..b5b9d1a
> --- /dev/null
> +++ b/target/linux/ramips/dts/HC5661.dts
> @@ -0,0 +1,172 @@
> +/dts-v1/;
> +
> +/include/ "mt7620a.dtsi"
> +
> +/ {
> +       compatible = "HC5661", "ralink,mt7620a-soc";
> +       model = "HiWiFi HC5661";
> +
> +       chosen {
> +               bootargs = "console=ttyS0,115200";
> +       };
> +
> +       palmbus@10000000 {
> +               sysc@0 {
> +                       ralink,gpiomux = "i2c", "jtag";
> +                       ralink,uartmux = "gpio";
> +                       ralink,wdtmux = <1>;
> +               };
> +
> +               gpio0: gpio@600 {
> +                       status = "okay";
> +               };
> +
> +               gpio2: gpio@660 {
> +                       status = "okay";
> +               };
> +
> +               gpio3: gpio@688 {
> +                       status = "okay";
> +               };
> +
> +               spi@b00 {
> +                       status = "okay";
> +
> +                       m25p80@0 {
> +                               #address-cells = <1>;
> +                               #size-cells = <1>;
> +                               compatible = "w25q128";
> +                               reg = <0 0>;
> +                               linux,modalias = "m25p80", "w25q128";
> +                               spi-max-frequency = <10000000>;
> +
> +                               partition@0 {
> +                                       label = "u-boot";
> +                                       reg = <0x0 0x30000>;
> +                               };
> +
> +                               partition@30000 {
> +                                       label = "u-boot-env";
> +                                       reg = <0x30000 0x10000>;
> +                                       read-only;
> +                               };
> +
> +                               factory: partition@40000 {
> +                                       label = "factory";
> +                                       reg = <0x40000 0x10000>;
> +                               };
> +
> +                               partition@50000 {
> +                                       label = "firmware";
> +                                       reg = <0x50000 0xf80000>;
> +                               };
> +
> +                               partition@fd0000 {
> +                                       label = "hwf_config";
> +                                       reg = <0xfd0000 0x10000>;
> +                               };
> +
> +                               bdinfo: partition@fe0000 {
> +                                       label = "bdinfo";
> +                                       reg = <0xfe0000 0x10000>;
> +                               };
> +
> +                               partition@ff0000 {
> +                                       label = "backup";
> +                                       reg = <0xff0000 0x10000>;
> +                               };
> +                       };
> +               };
> +       };
> +
> +       ehci@101c0000 {
> +               status = "okay";
> +       };
> +
> +       ohci@101c1000 {
> +               status = "okay";
> +       };
> +
> +       ethernet@10100000 {
> +               pinctrl-names = "default";
> +               pinctrl-0 = <&ephy_pins>;
> +               mtd-mac-address = <&factory 0x4>;
> +               ralink,port-map = "wllll";
> +       };
> +
> +       sdhci@10130000 {
> +               status = "okay";
> +       };
> +
> +       wmac@10180000 {
> +               ralink,mtd-eeprom = <&factory 0>;
> +       };
> +
> +       pcie@10140000 {
> +               status = "okay";
> +       };
> +
> +       pinctrl {
> +               state_default: pinctrl0 {
> +                       gpio {
> +                               ralink,group = "uartf", "wled", "nd_sd";
> +                               ralink,function = "gpio";
> +                       };
> +
> +                       pa {
> +                               ralink,group = "pa";
> +                               ralink,function = "pa";
> +                       };
> +               };
> +       };
> +
> +       gpio-leds {
> +               compatible = "gpio-leds";
> +
> +               system {
> +                       label = "hc5661:blue:system";
> +                       gpios = <&gpio0 9 1>;
> +               };
> +
> +               internet {
> +                       label = "hc5661:blue:internet";
> +                       gpios = <&gpio0 11 1>;
> +               };
> +
> +               wlan2g {
> +                       label = "hc5661:blue:wlan2g";
> +                       gpios = <&gpio3 0 1>;
> +               };
> +
> +               wlan5g {
> +                       label = "hc5661:blue:wlan5g";
> +                       gpios = <&gpio0 7 1>;
> +               };
> +       };
> +
> +       gpio-keys-polled {
> +               compatible = "gpio-keys-polled";
> +               #address-cells = <1>;
> +               #size-cells = <0>;
> +               poll-interval = <20>;
> +
> +               reset {
> +                       label = "reset";
> +                       gpios = <&gpio0 12 1>;
> +                       linux,code = <0x198>;
> +               };
> +       };
> +
> +       gpio_export {
> +               compatible = "gpio-export";
> +               #size-cells = <0>;
> +
> +               usbpower {
> +                       gpio-export,name = "usbpower";
> +                       gpio-export,output = <1>;
> +                       gpios = <&gpio0 13 0>;
> +               };
> +       };
> +

This empty line here is unnecessary.

> +};
> +

Most (or maybe all) dts files in ramips target don't have empty lines at end.

> diff --git a/target/linux/ramips/dts/HC5761.dts b/target/linux/ramips/dts/HC5761.dts
> new file mode 100644
> index 0000000..d271261
> --- /dev/null
> +++ b/target/linux/ramips/dts/HC5761.dts
> @@ -0,0 +1,172 @@
> +/dts-v1/;
> +
> +/include/ "mt7620a.dtsi"
> +
> +/ {
> +       compatible = "HC5761", "ralink,mt7620a-soc";
> +       model = "HiWiFi HC5761";
> +
> +       chosen {
> +               bootargs = "console=ttyS0,115200";
> +       };
> +
> +       palmbus@10000000 {
> +               sysc@0 {
> +                       ralink,gpiomux = "i2c", "jtag";
> +                       ralink,uartmux = "gpio";
> +                       ralink,wdtmux = <1>;
> +               };
> +
> +               gpio0: gpio@600 {
> +                       status = "okay";
> +               };
> +
> +               gpio2: gpio@660 {
> +                       status = "okay";
> +               };
> +
> +               gpio3: gpio@688 {
> +                       status = "okay";
> +               };
> +
> +               spi@b00 {
> +                       status = "okay";
> +
> +                       m25p80@0 {
> +                               #address-cells = <1>;
> +                               #size-cells = <1>;
> +                               compatible = "w25q128";
> +                               reg = <0 0>;
> +                               linux,modalias = "m25p80", "w25q128";
> +                               spi-max-frequency = <10000000>;
> +
> +                               partition@0 {
> +                                       label = "u-boot";
> +                                       reg = <0x0 0x30000>;
> +                               };
> +
> +                               partition@30000 {
> +                                       label = "u-boot-env";
> +                                       reg = <0x30000 0x10000>;
> +                                       read-only;
> +                               };
> +
> +                               factory: partition@40000 {
> +                                       label = "factory";
> +                                       reg = <0x40000 0x10000>;
> +                               };
> +
> +                               partition@50000 {
> +                                       label = "firmware";
> +                                       reg = <0x50000 0xf80000>;
> +                               };
> +
> +                               partition@fd0000 {
> +                                       label = "hwf_config";
> +                                       reg = <0xfd0000 0x10000>;
> +                               };
> +
> +                               bdinfo: partition@fe0000 {
> +                                       label = "bdinfo";
> +                                       reg = <0xfe0000 0x10000>;
> +                               };
> +
> +                               partition@ff0000 {
> +                                       label = "backup";
> +                                       reg = <0xff0000 0x10000>;
> +                               };
> +                       };
> +               };
> +       };
> +
> +       ehci@101c0000 {
> +               status = "okay";
> +       };
> +
> +       ohci@101c1000 {
> +               status = "okay";
> +       };
> +
> +       ethernet@10100000 {
> +               pinctrl-names = "default";
> +               pinctrl-0 = <&ephy_pins>;
> +               mtd-mac-address = <&factory 0x4>;
> +               ralink,port-map = "wllll";
> +       };
> +
> +       sdhci@10130000 {
> +               status = "okay";
> +       };
> +
> +       wmac@10180000 {
> +               ralink,mtd-eeprom = <&factory 0>;
> +       };
> +
> +       pcie@10140000 {
> +               status = "okay";
> +       };
> +
> +       pinctrl {
> +               state_default: pinctrl0 {
> +                       gpio {
> +                               ralink,group = "uartf", "wled", "nd_sd";
> +                               ralink,function = "gpio";
> +                       };
> +
> +                       pa {
> +                               ralink,group = "pa";
> +                               ralink,function = "pa";
> +                       };
> +               };
> +       };
> +
> +       gpio-leds {
> +               compatible = "gpio-leds";
> +
> +               system {
> +                       label = "hc5761:blue:system";
> +                       gpios = <&gpio0 9 1>;
> +               };
> +
> +               internet {
> +                       label = "hc5761:blue:internet";
> +                       gpios = <&gpio0 11 1>;
> +               };
> +
> +               wlan2g {
> +                       label = "hc5761:blue:wlan2g";
> +                       gpios = <&gpio3 0 1>;
> +               };
> +
> +               wlan5g {
> +                       label = "hc5761:blue:wlan5g";
> +                       gpios = <&gpio0 7 1>;
> +               };
> +       };
> +
> +       gpio-keys-polled {
> +               compatible = "gpio-keys-polled";
> +               #address-cells = <1>;
> +               #size-cells = <0>;
> +               poll-interval = <20>;
> +
> +               reset {
> +                       label = "reset";
> +                       gpios = <&gpio0 12 1>;
> +                       linux,code = <0x198>;
> +               };
> +       };
> +
> +       gpio_export {
> +               compatible = "gpio-export";
> +               #size-cells = <0>;
> +
> +               usbpower {
> +                       gpio-export,name = "usbpower";
> +                       gpio-export,output = <1>;
> +                       gpios = <&gpio0 13 0>;
> +               };
> +       };
> +

Same here: this empty line here is unnecessary.

> +};
> +

And here.

> diff --git a/target/linux/ramips/dts/HC5861.dts b/target/linux/ramips/dts/HC5861.dts
> new file mode 100644
> index 0000000..c0d9b93
> --- /dev/null
> +++ b/target/linux/ramips/dts/HC5861.dts
> @@ -0,0 +1,214 @@
> +/dts-v1/;
> +
> +/include/ "mt7620a.dtsi"
> +
> +/ {
> +       compatible = "HC5861", "ralink,mt7620a-soc";
> +       model = "HiWiFi HC5861";
> +
> +       chosen {
> +               bootargs = "console=ttyS0,115200";
> +       };
> +
> +       palmbus@10000000 {
> +               sysc@0 {
> +                       ralink,gpiomux = "i2c", "jtag";
> +                       ralink,uartmux = "gpio";
> +                       ralink,wdtmux = <1>;
> +               };
> +
> +               gpio0: gpio@600 {
> +                       status = "okay";
> +               };
> +
> +               gpio2: gpio@660 {
> +                       status = "okay";
> +               };
> +
> +               gpio3: gpio@688 {
> +                       status = "okay";
> +               };
> +
> +               spi@b00 {
> +                       status = "okay";
> +
> +                       m25p80@0 {
> +                               #address-cells = <1>;
> +                               #size-cells = <1>;
> +                               compatible = "w25q128";
> +                               reg = <0 0>;
> +                               linux,modalias = "m25p80", "w25q128";
> +                               spi-max-frequency = <10000000>;
> +
> +                               partition@0 {
> +                                       label = "u-boot";
> +                                       reg = <0x0 0x30000>;
> +                               };
> +
> +                               partition@30000 {
> +                                       label = "u-boot-env";
> +                                       reg = <0x30000 0x10000>;
> +                                       read-only;
> +                               };
> +
> +                               factory: partition@40000 {
> +                                       label = "factory";
> +                                       reg = <0x40000 0x10000>;
> +                               };
> +
> +                               partition@50000 {
> +                                       label = "firmware";
> +                                       reg = <0x50000 0xf80000>;
> +                               };
> +
> +                               partition@fd0000 {
> +                                       label = "hwf_config";
> +                                       reg = <0xfd0000 0x10000>;
> +                               };
> +
> +                               bdinfo: partition@fe0000 {
> +                                       label = "bdinfo";
> +                                       reg = <0xfe0000 0x10000>;
> +                               };
> +
> +                               partition@ff0000 {
> +                                       label = "backup";
> +                                       reg = <0xff0000 0x10000>;
> +                               };
> +                       };
> +               };
> +       };
> +
> +       ehci@101c0000 {
> +               status = "okay";
> +       };
> +
> +       ohci@101c1000 {
> +               status = "okay";
> +       };
> +
> +       ethernet@10100000 {
> +               status = "okay";
> +               mtd-mac-address = <&factory 0x4>;
> +               pinctrl-names = "default";
> +               pinctrl-0 = <&rgmii1_pins &rgmii2_pins &mdio_pins>;
> +               ralink,port-map = "wllll";
> +
> +               port@4 {
> +                       status = "okay";
> +                       phy-handle = <&phy4>;
> +                       phy-mode = "rgmii";
> +               };
> +
> +               port@5 {
> +                       status = "okay";
> +                       phy-handle = <&phy5>;
> +                       phy-mode = "rgmii";
> +               };
> +
> +               mdio-bus {
> +                       status = "okay";
> +
> +                       phy4: ethernet-phy@4 {
> +                               reg = <4>;
> +                               phy-mode = "rgmii";
> +                       };
> +
> +                       phy5: ethernet-phy@5 {
> +                               reg = <5>;
> +                               phy-mode = "rgmii";
> +                       };
> +               };
> +       };
> +
> +       gsw@10110000 {
> +               ralink,port4 = "gmac";
> +       };
> +
> +       sdhci@10130000 {
> +               status = "okay";
> +       };
> +
> +       wmac@10180000 {
> +               ralink,mtd-eeprom = <&factory 0>;
> +       };
> +
> +       pcie@10140000 {
> +               status = "okay";
> +       };
> +
> +       pinctrl {
> +               state_default: pinctrl0 {
> +                       gpio {
> +                               ralink,group = "uartf", "wled", "nd_sd";
> +                               ralink,function = "gpio";
> +                       };
> +
> +                       pa {
> +                               ralink,group = "pa";
> +                               ralink,function = "pa";
> +                       };
> +               };
> +       };
> +
> +       gpio-leds {
> +               compatible = "gpio-leds";
> +
> +               system {
> +                       label = "hc5861:blue:system";
> +                       gpios = <&gpio0 9 1>;
> +               };
> +
> +               wlan2g {
> +                       label = "hc5861:blue:wlan2g";
> +                       gpios = <&gpio0 11 1>;
> +               };
> +
> +               internet {
> +                       label = "hc5861:blue:internet";
> +                       gpios = <&gpio3 0 1>;
> +               };
> +
> +               wlan5g {
> +                       label = "hc5861:blue:wlan5g";
> +                       gpios = <&gpio0 7 1>;
> +               };
> +
> +               turbo {
> +                       label = "hc5861:blue:turbo";
> +                       gpios = <&gpio0 10 1>;
> +               };
> +       };
> +
> +       gpio-keys-polled {
> +               compatible = "gpio-keys-polled";
> +               #address-cells = <1>;
> +               #size-cells = <0>;
> +               poll-interval = <20>;
> +
> +               reset {
> +                       label = "reset";
> +                       gpios = <&gpio0 12 1>;
> +                       linux,code = <0x198>;
> +               };
> +       };
> +
> +       gpio_export {
> +               compatible = "gpio-export";
> +               #size-cells = <0>;
> +
> +               usbpower {
> +                       gpio-export,name = "usbpower";
> +                       gpio-export,output = <0>;

Other two models have here output = 1.
Why this one is different?

> +                       gpios = <&gpio0 13 0>;
> +               };
> +
> +               sdpower {
> +                       gpio-export,name = "sdpower";
> +                       gpio-export,output = <0>;
> +                       gpios = <&gpio0 8 0>;
> +               };
> +       };
> +

This empty line here is unnecessary.

> +};
> +

And last one here.

> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel@lists.openwrt.org
> https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
Yousong Zhou Sept. 29, 2015, 2:10 a.m. UTC | #2
Hi,

Previously this year, there were 2 attempts to add support for HC5661
and HC5761 to OpenWrt trunk [1,2].  I only had a HC5661 and it was
quite a while ago but the issues then should still remain.

The first is about how MAC address is to be read.  The
"mtd-mac-address" DTS directives apparently won't work.  And if I
remember correctly simply reading and setting it for lan and wan also
has flaws that the WiFi interface still get the default hardcoded MAC
address by the driver.  The best way I can think of to workaround this
is to add a directive similar to what "mtd-mac-address" does for
binary-encoded MACs.
"target/linux/generic/patches-4.1/681-NET-add-of_get_mac_address_mtd.patch"
can work as a reference.

The second is about how the generated the firmwares is to be flashed
to the those devices.  Are there plans to create wiki pages to clarify
the details?  Again if I remember correctly, the U-Boot of HC5661 at
least utilised pubkey firmware verification (though ...).  How regular
users are supposed to workaround this?

 [1] HiWiFi HC5661 Support for Openwrt,
https://lists.openwrt.org/pipermail/openwrt-devel/2015-April/032640.html
 [2] ramips:Add support for HiWiFi HC5761,
https://lists.openwrt.org/pipermail/openwrt-devel/2015-April/032643.html

Regard,

                yousong

On 28 September 2015 at 22:42, Comman Kang <kangxn@163.com> wrote:
> HiWiFi HC5661/5761/5861 models are manufactured by http://www.hiwifi.com. These models have similar hardware specs(MT7620A + 128M DDR2 + 16M flash). This patch adds support for them.
>
> The original author is Justin Liu (rssnsj@gmail.com). I ported the patch to trunk and submitted it here with his approval.
>
> v2 fix
>   1: Renamed files to remove manufacturer’s name.
>   2: styling work
>
> Signed-off-by: Xiaoning Kang <kangxn@163.com>
>
>
> diff --git a/target/linux/ramips/dts/HC5661.dts b/target/linux/ramips/dts/HC5661.dts
> new file mode 100644
> index 0000000..b5b9d1a
> --- /dev/null
> +++ b/target/linux/ramips/dts/HC5661.dts
> @@ -0,0 +1,172 @@
> +/dts-v1/;
> +
> +/include/ "mt7620a.dtsi"
> +
> +/ {
> +       compatible = "HC5661", "ralink,mt7620a-soc";
> +       model = "HiWiFi HC5661";
> +
> +       chosen {
> +               bootargs = "console=ttyS0,115200";
> +       };
> +
> +       palmbus@10000000 {
> +               sysc@0 {
> +                       ralink,gpiomux = "i2c", "jtag";
> +                       ralink,uartmux = "gpio";
> +                       ralink,wdtmux = <1>;
> +               };
> +
> +               gpio0: gpio@600 {
> +                       status = "okay";
> +               };
> +
> +               gpio2: gpio@660 {
> +                       status = "okay";
> +               };
> +
> +               gpio3: gpio@688 {
> +                       status = "okay";
> +               };
> +
> +               spi@b00 {
> +                       status = "okay";
> +
> +                       m25p80@0 {
> +                               #address-cells = <1>;
> +                               #size-cells = <1>;
> +                               compatible = "w25q128";
> +                               reg = <0 0>;
> +                               linux,modalias = "m25p80", "w25q128";
> +                               spi-max-frequency = <10000000>;
> +
> +                               partition@0 {
> +                                       label = "u-boot";
> +                                       reg = <0x0 0x30000>;
> +                               };
> +
> +                               partition@30000 {
> +                                       label = "u-boot-env";
> +                                       reg = <0x30000 0x10000>;
> +                                       read-only;
> +                               };
> +
> +                               factory: partition@40000 {
> +                                       label = "factory";
> +                                       reg = <0x40000 0x10000>;
> +                               };
> +
> +                               partition@50000 {
> +                                       label = "firmware";
> +                                       reg = <0x50000 0xf80000>;
> +                               };
> +
> +                               partition@fd0000 {
> +                                       label = "hwf_config";
> +                                       reg = <0xfd0000 0x10000>;
> +                               };
> +
> +                               bdinfo: partition@fe0000 {
> +                                       label = "bdinfo";
> +                                       reg = <0xfe0000 0x10000>;
> +                               };
> +
> +                               partition@ff0000 {
> +                                       label = "backup";
> +                                       reg = <0xff0000 0x10000>;
> +                               };
> +                       };
> +               };
> +       };
> +
> +       ehci@101c0000 {
> +               status = "okay";
> +       };
> +
> +       ohci@101c1000 {
> +               status = "okay";
> +       };
> +
> +       ethernet@10100000 {
> +               pinctrl-names = "default";
> +               pinctrl-0 = <&ephy_pins>;
> +               mtd-mac-address = <&factory 0x4>;
> +               ralink,port-map = "wllll";
> +       };
> +
> +       sdhci@10130000 {
> +               status = "okay";
> +       };
> +
> +       wmac@10180000 {
> +               ralink,mtd-eeprom = <&factory 0>;
> +       };
> +
> +       pcie@10140000 {
> +               status = "okay";
> +       };
> +
> +       pinctrl {
> +               state_default: pinctrl0 {
> +                       gpio {
> +                               ralink,group = "uartf", "wled", "nd_sd";
> +                               ralink,function = "gpio";
> +                       };
> +
> +                       pa {
> +                               ralink,group = "pa";
> +                               ralink,function = "pa";
> +                       };
> +               };
> +       };
> +
> +       gpio-leds {
> +               compatible = "gpio-leds";
> +
> +               system {
> +                       label = "hc5661:blue:system";
> +                       gpios = <&gpio0 9 1>;
> +               };
> +
> +               internet {
> +                       label = "hc5661:blue:internet";
> +                       gpios = <&gpio0 11 1>;
> +               };
> +
> +               wlan2g {
> +                       label = "hc5661:blue:wlan2g";
> +                       gpios = <&gpio3 0 1>;
> +               };
> +
> +               wlan5g {
> +                       label = "hc5661:blue:wlan5g";
> +                       gpios = <&gpio0 7 1>;
> +               };
> +       };
> +
> +       gpio-keys-polled {
> +               compatible = "gpio-keys-polled";
> +               #address-cells = <1>;
> +               #size-cells = <0>;
> +               poll-interval = <20>;
> +
> +               reset {
> +                       label = "reset";
> +                       gpios = <&gpio0 12 1>;
> +                       linux,code = <0x198>;
> +               };
> +       };
> +
> +       gpio_export {
> +               compatible = "gpio-export";
> +               #size-cells = <0>;
> +
> +               usbpower {
> +                       gpio-export,name = "usbpower";
> +                       gpio-export,output = <1>;
> +                       gpios = <&gpio0 13 0>;
> +               };
> +       };
> +
> +};
> +
> diff --git a/target/linux/ramips/dts/HC5761.dts b/target/linux/ramips/dts/HC5761.dts
> new file mode 100644
> index 0000000..d271261
> --- /dev/null
> +++ b/target/linux/ramips/dts/HC5761.dts
> @@ -0,0 +1,172 @@
> +/dts-v1/;
> +
> +/include/ "mt7620a.dtsi"
> +
> +/ {
> +       compatible = "HC5761", "ralink,mt7620a-soc";
> +       model = "HiWiFi HC5761";
> +
> +       chosen {
> +               bootargs = "console=ttyS0,115200";
> +       };
> +
> +       palmbus@10000000 {
> +               sysc@0 {
> +                       ralink,gpiomux = "i2c", "jtag";
> +                       ralink,uartmux = "gpio";
> +                       ralink,wdtmux = <1>;
> +               };
> +
> +               gpio0: gpio@600 {
> +                       status = "okay";
> +               };
> +
> +               gpio2: gpio@660 {
> +                       status = "okay";
> +               };
> +
> +               gpio3: gpio@688 {
> +                       status = "okay";
> +               };
> +
> +               spi@b00 {
> +                       status = "okay";
> +
> +                       m25p80@0 {
> +                               #address-cells = <1>;
> +                               #size-cells = <1>;
> +                               compatible = "w25q128";
> +                               reg = <0 0>;
> +                               linux,modalias = "m25p80", "w25q128";
> +                               spi-max-frequency = <10000000>;
> +
> +                               partition@0 {
> +                                       label = "u-boot";
> +                                       reg = <0x0 0x30000>;
> +                               };
> +
> +                               partition@30000 {
> +                                       label = "u-boot-env";
> +                                       reg = <0x30000 0x10000>;
> +                                       read-only;
> +                               };
> +
> +                               factory: partition@40000 {
> +                                       label = "factory";
> +                                       reg = <0x40000 0x10000>;
> +                               };
> +
> +                               partition@50000 {
> +                                       label = "firmware";
> +                                       reg = <0x50000 0xf80000>;
> +                               };
> +
> +                               partition@fd0000 {
> +                                       label = "hwf_config";
> +                                       reg = <0xfd0000 0x10000>;
> +                               };
> +
> +                               bdinfo: partition@fe0000 {
> +                                       label = "bdinfo";
> +                                       reg = <0xfe0000 0x10000>;
> +                               };
> +
> +                               partition@ff0000 {
> +                                       label = "backup";
> +                                       reg = <0xff0000 0x10000>;
> +                               };
> +                       };
> +               };
> +       };
> +
> +       ehci@101c0000 {
> +               status = "okay";
> +       };
> +
> +       ohci@101c1000 {
> +               status = "okay";
> +       };
> +
> +       ethernet@10100000 {
> +               pinctrl-names = "default";
> +               pinctrl-0 = <&ephy_pins>;
> +               mtd-mac-address = <&factory 0x4>;
> +               ralink,port-map = "wllll";
> +       };
> +
> +       sdhci@10130000 {
> +               status = "okay";
> +       };
> +
> +       wmac@10180000 {
> +               ralink,mtd-eeprom = <&factory 0>;
> +       };
> +
> +       pcie@10140000 {
> +               status = "okay";
> +       };
> +
> +       pinctrl {
> +               state_default: pinctrl0 {
> +                       gpio {
> +                               ralink,group = "uartf", "wled", "nd_sd";
> +                               ralink,function = "gpio";
> +                       };
> +
> +                       pa {
> +                               ralink,group = "pa";
> +                               ralink,function = "pa";
> +                       };
> +               };
> +       };
> +
> +       gpio-leds {
> +               compatible = "gpio-leds";
> +
> +               system {
> +                       label = "hc5761:blue:system";
> +                       gpios = <&gpio0 9 1>;
> +               };
> +
> +               internet {
> +                       label = "hc5761:blue:internet";
> +                       gpios = <&gpio0 11 1>;
> +               };
> +
> +               wlan2g {
> +                       label = "hc5761:blue:wlan2g";
> +                       gpios = <&gpio3 0 1>;
> +               };
> +
> +               wlan5g {
> +                       label = "hc5761:blue:wlan5g";
> +                       gpios = <&gpio0 7 1>;
> +               };
> +       };
> +
> +       gpio-keys-polled {
> +               compatible = "gpio-keys-polled";
> +               #address-cells = <1>;
> +               #size-cells = <0>;
> +               poll-interval = <20>;
> +
> +               reset {
> +                       label = "reset";
> +                       gpios = <&gpio0 12 1>;
> +                       linux,code = <0x198>;
> +               };
> +       };
> +
> +       gpio_export {
> +               compatible = "gpio-export";
> +               #size-cells = <0>;
> +
> +               usbpower {
> +                       gpio-export,name = "usbpower";
> +                       gpio-export,output = <1>;
> +                       gpios = <&gpio0 13 0>;
> +               };
> +       };
> +
> +};
> +
> diff --git a/target/linux/ramips/dts/HC5861.dts b/target/linux/ramips/dts/HC5861.dts
> new file mode 100644
> index 0000000..c0d9b93
> --- /dev/null
> +++ b/target/linux/ramips/dts/HC5861.dts
> @@ -0,0 +1,214 @@
> +/dts-v1/;
> +
> +/include/ "mt7620a.dtsi"
> +
> +/ {
> +       compatible = "HC5861", "ralink,mt7620a-soc";
> +       model = "HiWiFi HC5861";
> +
> +       chosen {
> +               bootargs = "console=ttyS0,115200";
> +       };
> +
> +       palmbus@10000000 {
> +               sysc@0 {
> +                       ralink,gpiomux = "i2c", "jtag";
> +                       ralink,uartmux = "gpio";
> +                       ralink,wdtmux = <1>;
> +               };
> +
> +               gpio0: gpio@600 {
> +                       status = "okay";
> +               };
> +
> +               gpio2: gpio@660 {
> +                       status = "okay";
> +               };
> +
> +               gpio3: gpio@688 {
> +                       status = "okay";
> +               };
> +
> +               spi@b00 {
> +                       status = "okay";
> +
> +                       m25p80@0 {
> +                               #address-cells = <1>;
> +                               #size-cells = <1>;
> +                               compatible = "w25q128";
> +                               reg = <0 0>;
> +                               linux,modalias = "m25p80", "w25q128";
> +                               spi-max-frequency = <10000000>;
> +
> +                               partition@0 {
> +                                       label = "u-boot";
> +                                       reg = <0x0 0x30000>;
> +                               };
> +
> +                               partition@30000 {
> +                                       label = "u-boot-env";
> +                                       reg = <0x30000 0x10000>;
> +                                       read-only;
> +                               };
> +
> +                               factory: partition@40000 {
> +                                       label = "factory";
> +                                       reg = <0x40000 0x10000>;
> +                               };
> +
> +                               partition@50000 {
> +                                       label = "firmware";
> +                                       reg = <0x50000 0xf80000>;
> +                               };
> +
> +                               partition@fd0000 {
> +                                       label = "hwf_config";
> +                                       reg = <0xfd0000 0x10000>;
> +                               };
> +
> +                               bdinfo: partition@fe0000 {
> +                                       label = "bdinfo";
> +                                       reg = <0xfe0000 0x10000>;
> +                               };
> +
> +                               partition@ff0000 {
> +                                       label = "backup";
> +                                       reg = <0xff0000 0x10000>;
> +                               };
> +                       };
> +               };
> +       };
> +
> +       ehci@101c0000 {
> +               status = "okay";
> +       };
> +
> +       ohci@101c1000 {
> +               status = "okay";
> +       };
> +
> +       ethernet@10100000 {
> +               status = "okay";
> +               mtd-mac-address = <&factory 0x4>;
> +               pinctrl-names = "default";
> +               pinctrl-0 = <&rgmii1_pins &rgmii2_pins &mdio_pins>;
> +               ralink,port-map = "wllll";
> +
> +               port@4 {
> +                       status = "okay";
> +                       phy-handle = <&phy4>;
> +                       phy-mode = "rgmii";
> +               };
> +
> +               port@5 {
> +                       status = "okay";
> +                       phy-handle = <&phy5>;
> +                       phy-mode = "rgmii";
> +               };
> +
> +               mdio-bus {
> +                       status = "okay";
> +
> +                       phy4: ethernet-phy@4 {
> +                               reg = <4>;
> +                               phy-mode = "rgmii";
> +                       };
> +
> +                       phy5: ethernet-phy@5 {
> +                               reg = <5>;
> +                               phy-mode = "rgmii";
> +                       };
> +               };
> +       };
> +
> +       gsw@10110000 {
> +               ralink,port4 = "gmac";
> +       };
> +
> +       sdhci@10130000 {
> +               status = "okay";
> +       };
> +
> +       wmac@10180000 {
> +               ralink,mtd-eeprom = <&factory 0>;
> +       };
> +
> +       pcie@10140000 {
> +               status = "okay";
> +       };
> +
> +       pinctrl {
> +               state_default: pinctrl0 {
> +                       gpio {
> +                               ralink,group = "uartf", "wled", "nd_sd";
> +                               ralink,function = "gpio";
> +                       };
> +
> +                       pa {
> +                               ralink,group = "pa";
> +                               ralink,function = "pa";
> +                       };
> +               };
> +       };
> +
> +       gpio-leds {
> +               compatible = "gpio-leds";
> +
> +               system {
> +                       label = "hc5861:blue:system";
> +                       gpios = <&gpio0 9 1>;
> +               };
> +
> +               wlan2g {
> +                       label = "hc5861:blue:wlan2g";
> +                       gpios = <&gpio0 11 1>;
> +               };
> +
> +               internet {
> +                       label = "hc5861:blue:internet";
> +                       gpios = <&gpio3 0 1>;
> +               };
> +
> +               wlan5g {
> +                       label = "hc5861:blue:wlan5g";
> +                       gpios = <&gpio0 7 1>;
> +               };
> +
> +               turbo {
> +                       label = "hc5861:blue:turbo";
> +                       gpios = <&gpio0 10 1>;
> +               };
> +       };
> +
> +       gpio-keys-polled {
> +               compatible = "gpio-keys-polled";
> +               #address-cells = <1>;
> +               #size-cells = <0>;
> +               poll-interval = <20>;
> +
> +               reset {
> +                       label = "reset";
> +                       gpios = <&gpio0 12 1>;
> +                       linux,code = <0x198>;
> +               };
> +       };
> +
> +       gpio_export {
> +               compatible = "gpio-export";
> +               #size-cells = <0>;
> +
> +               usbpower {
> +                       gpio-export,name = "usbpower";
> +                       gpio-export,output = <0>;
> +                       gpios = <&gpio0 13 0>;
> +               };
> +
> +               sdpower {
> +                       gpio-export,name = "sdpower";
> +                       gpio-export,output = <0>;
> +                       gpios = <&gpio0 8 0>;
> +               };
> +       };
> +
> +};
> +
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel@lists.openwrt.org
> https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
Piotr Dymacz Oct. 1, 2015, 9:31 p.m. UTC | #3
Hello,

I don't have more comments, it looks good now. Maybe just think about
my suggestion with common dtsi for all 3 models.
And just one question - how does it look with flashing process on those devices?

Cheers,
Piotr


2015-09-29 18:13 GMT+02:00 Kang Xiaoning <kangxn@gmail.com>:
>
>
> On Tue, Sep 29, 2015 at 4:31 AM, Piotr Dymacz <pepe2k@gmail.com> wrote:
>>
>> Hello,
>>
>> Just some small, cosmetic things... see inline, below.
>>
>> BTW.
>> I see that these models are very similar (most of the dts files are
>> just copy&paste).
>> Maybe it would be better to make for them one, common dtsi file and
>> separated dts files per model (take Lenovo Y1/Y1S as example).
>>
>> Cheers,
>> Piotr
>>
>> 2015-09-28 16:42 GMT+02:00 Comman Kang <kangxn@163.com>:
>> > HiWiFi HC5661/5761/5861 models are manufactured by
>> > http://www.hiwifi.com. These models have similar hardware specs(MT7620A +
>> > 128M DDR2 + 16M flash). This patch adds support for them.
>> >
>> > The original author is Justin Liu (rssnsj@gmail.com). I ported the patch
>> > to trunk and submitted it here with his approval.
>> >
>> > v2 fix
>> >   1: Renamed files to remove manufacturer’s name.
>> >   2: styling work
>> >
>> > Signed-off-by: Xiaoning Kang <kangxn@163.com>
>> >
>> >
>> > diff --git a/target/linux/ramips/dts/HC5661.dts
>> > b/target/linux/ramips/dts/HC5661.dts
>> > new file mode 100644
>> > index 0000000..b5b9d1a
>> > --- /dev/null
>> > +++ b/target/linux/ramips/dts/HC5661.dts
>> > @@ -0,0 +1,172 @@
>> > +/dts-v1/;
>> > +
>> > +/include/ "mt7620a.dtsi"
>> > +
>> > +/ {
>> > +       compatible = "HC5661", "ralink,mt7620a-soc";
>> > +       model = "HiWiFi HC5661";
>> > +
>> > +       chosen {
>> > +               bootargs = "console=ttyS0,115200";
>> > +       };
>> > +
>> > +       palmbus@10000000 {
>> > +               sysc@0 {
>> > +                       ralink,gpiomux = "i2c", "jtag";
>> > +                       ralink,uartmux = "gpio";
>> > +                       ralink,wdtmux = <1>;
>> > +               };
>> > +
>> > +               gpio0: gpio@600 {
>> > +                       status = "okay";
>> > +               };
>> > +
>> > +               gpio2: gpio@660 {
>> > +                       status = "okay";
>> > +               };
>> > +
>> > +               gpio3: gpio@688 {
>> > +                       status = "okay";
>> > +               };
>> > +
>> > +               spi@b00 {
>> > +                       status = "okay";
>> > +
>> > +                       m25p80@0 {
>> > +                               #address-cells = <1>;
>> > +                               #size-cells = <1>;
>> > +                               compatible = "w25q128";
>> > +                               reg = <0 0>;
>> > +                               linux,modalias = "m25p80", "w25q128";
>> > +                               spi-max-frequency = <10000000>;
>> > +
>> > +                               partition@0 {
>> > +                                       label = "u-boot";
>> > +                                       reg = <0x0 0x30000>;
>> > +                               };
>> > +
>> > +                               partition@30000 {
>> > +                                       label = "u-boot-env";
>> > +                                       reg = <0x30000 0x10000>;
>> > +                                       read-only;
>> > +                               };
>> > +
>> > +                               factory: partition@40000 {
>> > +                                       label = "factory";
>> > +                                       reg = <0x40000 0x10000>;
>> > +                               };
>> > +
>> > +                               partition@50000 {
>> > +                                       label = "firmware";
>> > +                                       reg = <0x50000 0xf80000>;
>> > +                               };
>> > +
>> > +                               partition@fd0000 {
>> > +                                       label = "hwf_config";
>> > +                                       reg = <0xfd0000 0x10000>;
>> > +                               };
>> > +
>> > +                               bdinfo: partition@fe0000 {
>> > +                                       label = "bdinfo";
>> > +                                       reg = <0xfe0000 0x10000>;
>> > +                               };
>> > +
>> > +                               partition@ff0000 {
>> > +                                       label = "backup";
>> > +                                       reg = <0xff0000 0x10000>;
>> > +                               };
>> > +                       };
>> > +               };
>> > +       };
>> > +
>> > +       ehci@101c0000 {
>> > +               status = "okay";
>> > +       };
>> > +
>> > +       ohci@101c1000 {
>> > +               status = "okay";
>> > +       };
>> > +
>> > +       ethernet@10100000 {
>> > +               pinctrl-names = "default";
>> > +               pinctrl-0 = <&ephy_pins>;
>> > +               mtd-mac-address = <&factory 0x4>;
>> > +               ralink,port-map = "wllll";
>> > +       };
>> > +
>> > +       sdhci@10130000 {
>> > +               status = "okay";
>> > +       };
>> > +
>> > +       wmac@10180000 {
>> > +               ralink,mtd-eeprom = <&factory 0>;
>> > +       };
>> > +
>> > +       pcie@10140000 {
>> > +               status = "okay";
>> > +       };
>> > +
>> > +       pinctrl {
>> > +               state_default: pinctrl0 {
>> > +                       gpio {
>> > +                               ralink,group = "uartf", "wled", "nd_sd";
>> > +                               ralink,function = "gpio";
>> > +                       };
>> > +
>> > +                       pa {
>> > +                               ralink,group = "pa";
>> > +                               ralink,function = "pa";
>> > +                       };
>> > +               };
>> > +       };
>> > +
>> > +       gpio-leds {
>> > +               compatible = "gpio-leds";
>> > +
>> > +               system {
>> > +                       label = "hc5661:blue:system";
>> > +                       gpios = <&gpio0 9 1>;
>> > +               };
>> > +
>> > +               internet {
>> > +                       label = "hc5661:blue:internet";
>> > +                       gpios = <&gpio0 11 1>;
>> > +               };
>> > +
>> > +               wlan2g {
>> > +                       label = "hc5661:blue:wlan2g";
>> > +                       gpios = <&gpio3 0 1>;
>> > +               };
>> > +
>> > +               wlan5g {
>> > +                       label = "hc5661:blue:wlan5g";
>> > +                       gpios = <&gpio0 7 1>;
>> > +               };
>> > +       };
>> > +
>> > +       gpio-keys-polled {
>> > +               compatible = "gpio-keys-polled";
>> > +               #address-cells = <1>;
>> > +               #size-cells = <0>;
>> > +               poll-interval = <20>;
>> > +
>> > +               reset {
>> > +                       label = "reset";
>> > +                       gpios = <&gpio0 12 1>;
>> > +                       linux,code = <0x198>;
>> > +               };
>> > +       };
>> > +
>> > +       gpio_export {
>> > +               compatible = "gpio-export";
>> > +               #size-cells = <0>;
>> > +
>> > +               usbpower {
>> > +                       gpio-export,name = "usbpower";
>> > +                       gpio-export,output = <1>;
>> > +                       gpios = <&gpio0 13 0>;
>> > +               };
>> > +       };
>> > +
>>
>> This empty line here is unnecessary.
>>
>> > +};
>> > +
>>
>> Most (or maybe all) dts files in ramips target don't have empty lines at
>> end.
>>
>> > diff --git a/target/linux/ramips/dts/HC5761.dts
>> > b/target/linux/ramips/dts/HC5761.dts
>> > new file mode 100644
>> > index 0000000..d271261
>> > --- /dev/null
>> > +++ b/target/linux/ramips/dts/HC5761.dts
>> > @@ -0,0 +1,172 @@
>> > +/dts-v1/;
>> > +
>> > +/include/ "mt7620a.dtsi"
>> > +
>> > +/ {
>> > +       compatible = "HC5761", "ralink,mt7620a-soc";
>> > +       model = "HiWiFi HC5761";
>> > +
>> > +       chosen {
>> > +               bootargs = "console=ttyS0,115200";
>> > +       };
>> > +
>> > +       palmbus@10000000 {
>> > +               sysc@0 {
>> > +                       ralink,gpiomux = "i2c", "jtag";
>> > +                       ralink,uartmux = "gpio";
>> > +                       ralink,wdtmux = <1>;
>> > +               };
>> > +
>> > +               gpio0: gpio@600 {
>> > +                       status = "okay";
>> > +               };
>> > +
>> > +               gpio2: gpio@660 {
>> > +                       status = "okay";
>> > +               };
>> > +
>> > +               gpio3: gpio@688 {
>> > +                       status = "okay";
>> > +               };
>> > +
>> > +               spi@b00 {
>> > +                       status = "okay";
>> > +
>> > +                       m25p80@0 {
>> > +                               #address-cells = <1>;
>> > +                               #size-cells = <1>;
>> > +                               compatible = "w25q128";
>> > +                               reg = <0 0>;
>> > +                               linux,modalias = "m25p80", "w25q128";
>> > +                               spi-max-frequency = <10000000>;
>> > +
>> > +                               partition@0 {
>> > +                                       label = "u-boot";
>> > +                                       reg = <0x0 0x30000>;
>> > +                               };
>> > +
>> > +                               partition@30000 {
>> > +                                       label = "u-boot-env";
>> > +                                       reg = <0x30000 0x10000>;
>> > +                                       read-only;
>> > +                               };
>> > +
>> > +                               factory: partition@40000 {
>> > +                                       label = "factory";
>> > +                                       reg = <0x40000 0x10000>;
>> > +                               };
>> > +
>> > +                               partition@50000 {
>> > +                                       label = "firmware";
>> > +                                       reg = <0x50000 0xf80000>;
>> > +                               };
>> > +
>> > +                               partition@fd0000 {
>> > +                                       label = "hwf_config";
>> > +                                       reg = <0xfd0000 0x10000>;
>> > +                               };
>> > +
>> > +                               bdinfo: partition@fe0000 {
>> > +                                       label = "bdinfo";
>> > +                                       reg = <0xfe0000 0x10000>;
>> > +                               };
>> > +
>> > +                               partition@ff0000 {
>> > +                                       label = "backup";
>> > +                                       reg = <0xff0000 0x10000>;
>> > +                               };
>> > +                       };
>> > +               };
>> > +       };
>> > +
>> > +       ehci@101c0000 {
>> > +               status = "okay";
>> > +       };
>> > +
>> > +       ohci@101c1000 {
>> > +               status = "okay";
>> > +       };
>> > +
>> > +       ethernet@10100000 {
>> > +               pinctrl-names = "default";
>> > +               pinctrl-0 = <&ephy_pins>;
>> > +               mtd-mac-address = <&factory 0x4>;
>> > +               ralink,port-map = "wllll";
>> > +       };
>> > +
>> > +       sdhci@10130000 {
>> > +               status = "okay";
>> > +       };
>> > +
>> > +       wmac@10180000 {
>> > +               ralink,mtd-eeprom = <&factory 0>;
>> > +       };
>> > +
>> > +       pcie@10140000 {
>> > +               status = "okay";
>> > +       };
>> > +
>> > +       pinctrl {
>> > +               state_default: pinctrl0 {
>> > +                       gpio {
>> > +                               ralink,group = "uartf", "wled", "nd_sd";
>> > +                               ralink,function = "gpio";
>> > +                       };
>> > +
>> > +                       pa {
>> > +                               ralink,group = "pa";
>> > +                               ralink,function = "pa";
>> > +                       };
>> > +               };
>> > +       };
>> > +
>> > +       gpio-leds {
>> > +               compatible = "gpio-leds";
>> > +
>> > +               system {
>> > +                       label = "hc5761:blue:system";
>> > +                       gpios = <&gpio0 9 1>;
>> > +               };
>> > +
>> > +               internet {
>> > +                       label = "hc5761:blue:internet";
>> > +                       gpios = <&gpio0 11 1>;
>> > +               };
>> > +
>> > +               wlan2g {
>> > +                       label = "hc5761:blue:wlan2g";
>> > +                       gpios = <&gpio3 0 1>;
>> > +               };
>> > +
>> > +               wlan5g {
>> > +                       label = "hc5761:blue:wlan5g";
>> > +                       gpios = <&gpio0 7 1>;
>> > +               };
>> > +       };
>> > +
>> > +       gpio-keys-polled {
>> > +               compatible = "gpio-keys-polled";
>> > +               #address-cells = <1>;
>> > +               #size-cells = <0>;
>> > +               poll-interval = <20>;
>> > +
>> > +               reset {
>> > +                       label = "reset";
>> > +                       gpios = <&gpio0 12 1>;
>> > +                       linux,code = <0x198>;
>> > +               };
>> > +       };
>> > +
>> > +       gpio_export {
>> > +               compatible = "gpio-export";
>> > +               #size-cells = <0>;
>> > +
>> > +               usbpower {
>> > +                       gpio-export,name = "usbpower";
>> > +                       gpio-export,output = <1>;
>> > +                       gpios = <&gpio0 13 0>;
>> > +               };
>> > +       };
>> > +
>>
>> Same here: this empty line here is unnecessary.
>>
>> > +};
>> > +
>>
>> And here.
>>
>> > diff --git a/target/linux/ramips/dts/HC5861.dts
>> > b/target/linux/ramips/dts/HC5861.dts
>> > new file mode 100644
>> > index 0000000..c0d9b93
>> > --- /dev/null
>> > +++ b/target/linux/ramips/dts/HC5861.dts
>> > @@ -0,0 +1,214 @@
>> > +/dts-v1/;
>> > +
>> > +/include/ "mt7620a.dtsi"
>> > +
>> > +/ {
>> > +       compatible = "HC5861", "ralink,mt7620a-soc";
>> > +       model = "HiWiFi HC5861";
>> > +
>> > +       chosen {
>> > +               bootargs = "console=ttyS0,115200";
>> > +       };
>> > +
>> > +       palmbus@10000000 {
>> > +               sysc@0 {
>> > +                       ralink,gpiomux = "i2c", "jtag";
>> > +                       ralink,uartmux = "gpio";
>> > +                       ralink,wdtmux = <1>;
>> > +               };
>> > +
>> > +               gpio0: gpio@600 {
>> > +                       status = "okay";
>> > +               };
>> > +
>> > +               gpio2: gpio@660 {
>> > +                       status = "okay";
>> > +               };
>> > +
>> > +               gpio3: gpio@688 {
>> > +                       status = "okay";
>> > +               };
>> > +
>> > +               spi@b00 {
>> > +                       status = "okay";
>> > +
>> > +                       m25p80@0 {
>> > +                               #address-cells = <1>;
>> > +                               #size-cells = <1>;
>> > +                               compatible = "w25q128";
>> > +                               reg = <0 0>;
>> > +                               linux,modalias = "m25p80", "w25q128";
>> > +                               spi-max-frequency = <10000000>;
>> > +
>> > +                               partition@0 {
>> > +                                       label = "u-boot";
>> > +                                       reg = <0x0 0x30000>;
>> > +                               };
>> > +
>> > +                               partition@30000 {
>> > +                                       label = "u-boot-env";
>> > +                                       reg = <0x30000 0x10000>;
>> > +                                       read-only;
>> > +                               };
>> > +
>> > +                               factory: partition@40000 {
>> > +                                       label = "factory";
>> > +                                       reg = <0x40000 0x10000>;
>> > +                               };
>> > +
>> > +                               partition@50000 {
>> > +                                       label = "firmware";
>> > +                                       reg = <0x50000 0xf80000>;
>> > +                               };
>> > +
>> > +                               partition@fd0000 {
>> > +                                       label = "hwf_config";
>> > +                                       reg = <0xfd0000 0x10000>;
>> > +                               };
>> > +
>> > +                               bdinfo: partition@fe0000 {
>> > +                                       label = "bdinfo";
>> > +                                       reg = <0xfe0000 0x10000>;
>> > +                               };
>> > +
>> > +                               partition@ff0000 {
>> > +                                       label = "backup";
>> > +                                       reg = <0xff0000 0x10000>;
>> > +                               };
>> > +                       };
>> > +               };
>> > +       };
>> > +
>> > +       ehci@101c0000 {
>> > +               status = "okay";
>> > +       };
>> > +
>> > +       ohci@101c1000 {
>> > +               status = "okay";
>> > +       };
>> > +
>> > +       ethernet@10100000 {
>> > +               status = "okay";
>> > +               mtd-mac-address = <&factory 0x4>;
>> > +               pinctrl-names = "default";
>> > +               pinctrl-0 = <&rgmii1_pins &rgmii2_pins &mdio_pins>;
>> > +               ralink,port-map = "wllll";
>> > +
>> > +               port@4 {
>> > +                       status = "okay";
>> > +                       phy-handle = <&phy4>;
>> > +                       phy-mode = "rgmii";
>> > +               };
>> > +
>> > +               port@5 {
>> > +                       status = "okay";
>> > +                       phy-handle = <&phy5>;
>> > +                       phy-mode = "rgmii";
>> > +               };
>> > +
>> > +               mdio-bus {
>> > +                       status = "okay";
>> > +
>> > +                       phy4: ethernet-phy@4 {
>> > +                               reg = <4>;
>> > +                               phy-mode = "rgmii";
>> > +                       };
>> > +
>> > +                       phy5: ethernet-phy@5 {
>> > +                               reg = <5>;
>> > +                               phy-mode = "rgmii";
>> > +                       };
>> > +               };
>> > +       };
>> > +
>> > +       gsw@10110000 {
>> > +               ralink,port4 = "gmac";
>> > +       };
>> > +
>> > +       sdhci@10130000 {
>> > +               status = "okay";
>> > +       };
>> > +
>> > +       wmac@10180000 {
>> > +               ralink,mtd-eeprom = <&factory 0>;
>> > +       };
>> > +
>> > +       pcie@10140000 {
>> > +               status = "okay";
>> > +       };
>> > +
>> > +       pinctrl {
>> > +               state_default: pinctrl0 {
>> > +                       gpio {
>> > +                               ralink,group = "uartf", "wled", "nd_sd";
>> > +                               ralink,function = "gpio";
>> > +                       };
>> > +
>> > +                       pa {
>> > +                               ralink,group = "pa";
>> > +                               ralink,function = "pa";
>> > +                       };
>> > +               };
>> > +       };
>> > +
>> > +       gpio-leds {
>> > +               compatible = "gpio-leds";
>> > +
>> > +               system {
>> > +                       label = "hc5861:blue:system";
>> > +                       gpios = <&gpio0 9 1>;
>> > +               };
>> > +
>> > +               wlan2g {
>> > +                       label = "hc5861:blue:wlan2g";
>> > +                       gpios = <&gpio0 11 1>;
>> > +               };
>> > +
>> > +               internet {
>> > +                       label = "hc5861:blue:internet";
>> > +                       gpios = <&gpio3 0 1>;
>> > +               };
>> > +
>> > +               wlan5g {
>> > +                       label = "hc5861:blue:wlan5g";
>> > +                       gpios = <&gpio0 7 1>;
>> > +               };
>> > +
>> > +               turbo {
>> > +                       label = "hc5861:blue:turbo";
>> > +                       gpios = <&gpio0 10 1>;
>> > +               };
>> > +       };
>> > +
>> > +       gpio-keys-polled {
>> > +               compatible = "gpio-keys-polled";
>> > +               #address-cells = <1>;
>> > +               #size-cells = <0>;
>> > +               poll-interval = <20>;
>> > +
>> > +               reset {
>> > +                       label = "reset";
>> > +                       gpios = <&gpio0 12 1>;
>> > +                       linux,code = <0x198>;
>> > +               };
>> > +       };
>> > +
>> > +       gpio_export {
>> > +               compatible = "gpio-export";
>> > +               #size-cells = <0>;
>> > +
>> > +               usbpower {
>> > +                       gpio-export,name = "usbpower";
>> > +                       gpio-export,output = <0>;
>>
>> Other two models have here output = 1.
>> Why this one is different?
>
>
> Forget to say, I have no idea about it, I'm not familiar with hardware
> related stuff :( it just comes from original author.
>
> If someone could confirm it is a typo, I'll fix it.
>
>>
>>
>> > +                       gpios = <&gpio0 13 0>;
>> > +               };
>> > +
>> > +               sdpower {
>> > +                       gpio-export,name = "sdpower";
>> > +                       gpio-export,output = <0>;
>> > +                       gpios = <&gpio0 8 0>;
>> > +               };
>> > +       };
>> > +
>>
>> This empty line here is unnecessary.
>>
>> > +};
>> > +
>>
>> And last one here.
>>
>> > _______________________________________________
>> > openwrt-devel mailing list
>> > openwrt-devel@lists.openwrt.org
>> > https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
>
>
Comman Kang Oct. 2, 2015, 1:53 p.m. UTC | #4
Hi,  Merging 3 dts into one dtsi has been done in patch V3 ,



Sorry I don't quite understand your question ,  do you mean how to flash on those devices? 


At 2015-10-02 05:31:08, "Piotr Dymacz" <pepe2k@gmail.com> wrote:
>Hello,
>
>I don't have more comments, it looks good now. Maybe just think about
>my suggestion with common dtsi for all 3 models.
>And just one question - how does it look with flashing process on those devices?
>
>Cheers,
>Piotr
>
>
>2015-09-29 18:13 GMT+02:00 Kang Xiaoning <kangxn@gmail.com>:
>>
>>
>> On Tue, Sep 29, 2015 at 4:31 AM, Piotr Dymacz <pepe2k@gmail.com> wrote:
>>>
>>> Hello,
>>>
>>> Just some small, cosmetic things... see inline, below.
>>>
>>> BTW.
>>> I see that these models are very similar (most of the dts files are
>>> just copy&paste).
>>> Maybe it would be better to make for them one, common dtsi file and
>>> separated dts files per model (take Lenovo Y1/Y1S as example).
>>>
>>> Cheers,
>>> Piotr
>>>
>>> 2015-09-28 16:42 GMT+02:00 Comman Kang <kangxn@163.com>:
>>> > HiWiFi HC5661/5761/5861 models are manufactured by
>>> > http://www.hiwifi.com. These models have similar hardware specs(MT7620A +
>>> > 128M DDR2 + 16M flash). This patch adds support for them.
>>> >
>>> > The original author is Justin Liu (rssnsj@gmail.com). I ported the patch
>>> > to trunk and submitted it here with his approval.
>>> >
>>> > v2 fix
>>> >   1: Renamed files to remove manufacturer’s name.
>>> >   2: styling work
>>> >
>>> > Signed-off-by: Xiaoning Kang <kangxn@163.com>
>>> >
>>> >
>>> > diff --git a/target/linux/ramips/dts/HC5661.dts
>>> > b/target/linux/ramips/dts/HC5661.dts
>>> > new file mode 100644
>>> > index 0000000..b5b9d1a
>>> > --- /dev/null
>>> > +++ b/target/linux/ramips/dts/HC5661.dts
>>> > @@ -0,0 +1,172 @@
>>> > +/dts-v1/;
>>> > +
>>> > +/include/ "mt7620a.dtsi"
>>> > +
>>> > +/ {
>>> > +       compatible = "HC5661", "ralink,mt7620a-soc";
>>> > +       model = "HiWiFi HC5661";
>>> > +
>>> > +       chosen {
>>> > +               bootargs = "console=ttyS0,115200";
>>> > +       };
>>> > +
>>> > +       palmbus@10000000 {
>>> > +               sysc@0 {
>>> > +                       ralink,gpiomux = "i2c", "jtag";
>>> > +                       ralink,uartmux = "gpio";
>>> > +                       ralink,wdtmux = <1>;
>>> > +               };
>>> > +
>>> > +               gpio0: gpio@600 {
>>> > +                       status = "okay";
>>> > +               };
>>> > +
>>> > +               gpio2: gpio@660 {
>>> > +                       status = "okay";
>>> > +               };
>>> > +
>>> > +               gpio3: gpio@688 {
>>> > +                       status = "okay";
>>> > +               };
>>> > +
>>> > +               spi@b00 {
>>> > +                       status = "okay";
>>> > +
>>> > +                       m25p80@0 {
>>> > +                               #address-cells = <1>;
>>> > +                               #size-cells = <1>;
>>> > +                               compatible = "w25q128";
>>> > +                               reg = <0 0>;
>>> > +                               linux,modalias = "m25p80", "w25q128";
>>> > +                               spi-max-frequency = <10000000>;
>>> > +
>>> > +                               partition@0 {
>>> > +                                       label = "u-boot";
>>> > +                                       reg = <0x0 0x30000>;
>>> > +                               };
>>> > +
>>> > +                               partition@30000 {
>>> > +                                       label = "u-boot-env";
>>> > +                                       reg = <0x30000 0x10000>;
>>> > +                                       read-only;
>>> > +                               };
>>> > +
>>> > +                               factory: partition@40000 {
>>> > +                                       label = "factory";
>>> > +                                       reg = <0x40000 0x10000>;
>>> > +                               };
>>> > +
>>> > +                               partition@50000 {
>>> > +                                       label = "firmware";
>>> > +                                       reg = <0x50000 0xf80000>;
>>> > +                               };
>>> > +
>>> > +                               partition@fd0000 {
>>> > +                                       label = "hwf_config";
>>> > +                                       reg = <0xfd0000 0x10000>;
>>> > +                               };
>>> > +
>>> > +                               bdinfo: partition@fe0000 {
>>> > +                                       label = "bdinfo";
>>> > +                                       reg = <0xfe0000 0x10000>;
>>> > +                               };
>>> > +
>>> > +                               partition@ff0000 {
>>> > +                                       label = "backup";
>>> > +                                       reg = <0xff0000 0x10000>;
>>> > +                               };
>>> > +                       };
>>> > +               };
>>> > +       };
>>> > +
>>> > +       ehci@101c0000 {
>>> > +               status = "okay";
>>> > +       };
>>> > +
>>> > +       ohci@101c1000 {
>>> > +               status = "okay";
>>> > +       };
>>> > +
>>> > +       ethernet@10100000 {
>>> > +               pinctrl-names = "default";
>>> > +               pinctrl-0 = <&ephy_pins>;
>>> > +               mtd-mac-address = <&factory 0x4>;
>>> > +               ralink,port-map = "wllll";
>>> > +       };
>>> > +
>>> > +       sdhci@10130000 {
>>> > +               status = "okay";
>>> > +       };
>>> > +
>>> > +       wmac@10180000 {
>>> > +               ralink,mtd-eeprom = <&factory 0>;
>>> > +       };
>>> > +
>>> > +       pcie@10140000 {
>>> > +               status = "okay";
>>> > +       };
>>> > +
>>> > +       pinctrl {
>>> > +               state_default: pinctrl0 {
>>> > +                       gpio {
>>> > +                               ralink,group = "uartf", "wled", "nd_sd";
>>> > +                               ralink,function = "gpio";
>>> > +                       };
>>> > +
>>> > +                       pa {
>>> > +                               ralink,group = "pa";
>>> > +                               ralink,function = "pa";
>>> > +                       };
>>> > +               };
>>> > +       };
>>> > +
>>> > +       gpio-leds {
>>> > +               compatible = "gpio-leds";
>>> > +
>>> > +               system {
>>> > +                       label = "hc5661:blue:system";
>>> > +                       gpios = <&gpio0 9 1>;
>>> > +               };
>>> > +
>>> > +               internet {
>>> > +                       label = "hc5661:blue:internet";
>>> > +                       gpios = <&gpio0 11 1>;
>>> > +               };
>>> > +
>>> > +               wlan2g {
>>> > +                       label = "hc5661:blue:wlan2g";
>>> > +                       gpios = <&gpio3 0 1>;
>>> > +               };
>>> > +
>>> > +               wlan5g {
>>> > +                       label = "hc5661:blue:wlan5g";
>>> > +                       gpios = <&gpio0 7 1>;
>>> > +               };
>>> > +       };
>>> > +
>>> > +       gpio-keys-polled {
>>> > +               compatible = "gpio-keys-polled";
>>> > +               #address-cells = <1>;
>>> > +               #size-cells = <0>;
>>> > +               poll-interval = <20>;
>>> > +
>>> > +               reset {
>>> > +                       label = "reset";
>>> > +                       gpios = <&gpio0 12 1>;
>>> > +                       linux,code = <0x198>;
>>> > +               };
>>> > +       };
>>> > +
>>> > +       gpio_export {
>>> > +               compatible = "gpio-export";
>>> > +               #size-cells = <0>;
>>> > +
>>> > +               usbpower {
>>> > +                       gpio-export,name = "usbpower";
>>> > +                       gpio-export,output = <1>;
>>> > +                       gpios = <&gpio0 13 0>;
>>> > +               };
>>> > +       };
>>> > +
>>>
>>> This empty line here is unnecessary.
>>>
>>> > +};
>>> > +
>>>
>>> Most (or maybe all) dts files in ramips target don't have empty lines at
>>> end.
>>>
>>> > diff --git a/target/linux/ramips/dts/HC5761.dts
>>> > b/target/linux/ramips/dts/HC5761.dts
>>> > new file mode 100644
>>> > index 0000000..d271261
>>> > --- /dev/null
>>> > +++ b/target/linux/ramips/dts/HC5761.dts
>>> > @@ -0,0 +1,172 @@
>>> > +/dts-v1/;
>>> > +
>>> > +/include/ "mt7620a.dtsi"
>>> > +
>>> > +/ {
>>> > +       compatible = "HC5761", "ralink,mt7620a-soc";
>>> > +       model = "HiWiFi HC5761";
>>> > +
>>> > +       chosen {
>>> > +               bootargs = "console=ttyS0,115200";
>>> > +       };
>>> > +
>>> > +       palmbus@10000000 {
>>> > +               sysc@0 {
>>> > +                       ralink,gpiomux = "i2c", "jtag";
>>> > +                       ralink,uartmux = "gpio";
>>> > +                       ralink,wdtmux = <1>;
>>> > +               };
>>> > +
>>> > +               gpio0: gpio@600 {
>>> > +                       status = "okay";
>>> > +               };
>>> > +
>>> > +               gpio2: gpio@660 {
>>> > +                       status = "okay";
>>> > +               };
>>> > +
>>> > +               gpio3: gpio@688 {
>>> > +                       status = "okay";
>>> > +               };
>>> > +
>>> > +               spi@b00 {
>>> > +                       status = "okay";
>>> > +
>>> > +                       m25p80@0 {
>>> > +                               #address-cells = <1>;
>>> > +                               #size-cells = <1>;
>>> > +                               compatible = "w25q128";
>>> > +                               reg = <0 0>;
>>> > +                               linux,modalias = "m25p80", "w25q128";
>>> > +                               spi-max-frequency = <10000000>;
>>> > +
>>> > +                               partition@0 {
>>> > +                                       label = "u-boot";
>>> > +                                       reg = <0x0 0x30000>;
>>> > +                               };
>>> > +
>>> > +                               partition@30000 {
>>> > +                                       label = "u-boot-env";
>>> > +                                       reg = <0x30000 0x10000>;
>>> > +                                       read-only;
>>> > +                               };
>>> > +
>>> > +                               factory: partition@40000 {
>>> > +                                       label = "factory";
>>> > +                                       reg = <0x40000 0x10000>;
>>> > +                               };
>>> > +
>>> > +                               partition@50000 {
>>> > +                                       label = "firmware";
>>> > +                                       reg = <0x50000 0xf80000>;
>>> > +                               };
>>> > +
>>> > +                               partition@fd0000 {
>>> > +                                       label = "hwf_config";
>>> > +                                       reg = <0xfd0000 0x10000>;
>>> > +                               };
>>> > +
>>> > +                               bdinfo: partition@fe0000 {
>>> > +                                       label = "bdinfo";
>>> > +                                       reg = <0xfe0000 0x10000>;
>>> > +                               };
>>> > +
>>> > +                               partition@ff0000 {
>>> > +                                       label = "backup";
>>> > +                                       reg = <0xff0000 0x10000>;
>>> > +                               };
>>> > +                       };
>>> > +               };
>>> > +       };
>>> > +
>>> > +       ehci@101c0000 {
>>> > +               status = "okay";
>>> > +       };
>>> > +
>>> > +       ohci@101c1000 {
>>> > +               status = "okay";
>>> > +       };
>>> > +
>>> > +       ethernet@10100000 {
>>> > +               pinctrl-names = "default";
>>> > +               pinctrl-0 = <&ephy_pins>;
>>> > +               mtd-mac-address = <&factory 0x4>;
>>> > +               ralink,port-map = "wllll";
>>> > +       };
>>> > +
>>> > +       sdhci@10130000 {
>>> > +               status = "okay";
>>> > +       };
>>> > +
>>> > +       wmac@10180000 {
>>> > +               ralink,mtd-eeprom = <&factory 0>;
>>> > +       };
>>> > +
>>> > +       pcie@10140000 {
>>> > +               status = "okay";
>>> > +       };
>>> > +
>>> > +       pinctrl {
>>> > +               state_default: pinctrl0 {
>>> > +                       gpio {
>>> > +                               ralink,group = "uartf", "wled", "nd_sd";
>>> > +                               ralink,function = "gpio";
>>> > +                       };
>>> > +
>>> > +                       pa {
>>> > +                               ralink,group = "pa";
>>> > +                               ralink,function = "pa";
>>> > +                       };
>>> > +               };
>>> > +       };
>>> > +
>>> > +       gpio-leds {
>>> > +               compatible = "gpio-leds";
>>> > +
>>> > +               system {
>>> > +                       label = "hc5761:blue:system";
>>> > +                       gpios = <&gpio0 9 1>;
>>> > +               };
>>> > +
>>> > +               internet {
>>> > +                       label = "hc5761:blue:internet";
>>> > +                       gpios = <&gpio0 11 1>;
>>> > +               };
>>> > +
>>> > +               wlan2g {
>>> > +                       label = "hc5761:blue:wlan2g";
>>> > +                       gpios = <&gpio3 0 1>;
>>> > +               };
>>> > +
>>> > +               wlan5g {
>>> > +                       label = "hc5761:blue:wlan5g";
>>> > +                       gpios = <&gpio0 7 1>;
>>> > +               };
>>> > +       };
>>> > +
>>> > +       gpio-keys-polled {
>>> > +               compatible = "gpio-keys-polled";
>>> > +               #address-cells = <1>;
>>> > +               #size-cells = <0>;
>>> > +               poll-interval = <20>;
>>> > +
>>> > +               reset {
>>> > +                       label = "reset";
>>> > +                       gpios = <&gpio0 12 1>;
>>> > +                       linux,code = <0x198>;
>>> > +               };
>>> > +       };
>>> > +
>>> > +       gpio_export {
>>> > +               compatible = "gpio-export";
>>> > +               #size-cells = <0>;
>>> > +
>>> > +               usbpower {
>>> > +                       gpio-export,name = "usbpower";
>>> > +                       gpio-export,output = <1>;
>>> > +                       gpios = <&gpio0 13 0>;
>>> > +               };
>>> > +       };
>>> > +
>>>
>>> Same here: this empty line here is unnecessary.
>>>
>>> > +};
>>> > +
>>>
>>> And here.
>>>
>>> > diff --git a/target/linux/ramips/dts/HC5861.dts
>>> > b/target/linux/ramips/dts/HC5861.dts
>>> > new file mode 100644
>>> > index 0000000..c0d9b93
>>> > --- /dev/null
>>> > +++ b/target/linux/ramips/dts/HC5861.dts
>>> > @@ -0,0 +1,214 @@
>>> > +/dts-v1/;
>>> > +
>>> > +/include/ "mt7620a.dtsi"
>>> > +
>>> > +/ {
>>> > +       compatible = "HC5861", "ralink,mt7620a-soc";
>>> > +       model = "HiWiFi HC5861";
>>> > +
>>> > +       chosen {
>>> > +               bootargs = "console=ttyS0,115200";
>>> > +       };
>>> > +
>>> > +       palmbus@10000000 {
>>> > +               sysc@0 {
>>> > +                       ralink,gpiomux = "i2c", "jtag";
>>> > +                       ralink,uartmux = "gpio";
>>> > +                       ralink,wdtmux = <1>;
>>> > +               };
>>> > +
>>> > +               gpio0: gpio@600 {
>>> > +                       status = "okay";
>>> > +               };
>>> > +
>>> > +               gpio2: gpio@660 {
>>> > +                       status = "okay";
>>> > +               };
>>> > +
>>> > +               gpio3: gpio@688 {
>>> > +                       status = "okay";
>>> > +               };
>>> > +
>>> > +               spi@b00 {
>>> > +                       status = "okay";
>>> > +
>>> > +                       m25p80@0 {
>>> > +                               #address-cells = <1>;
>>> > +                               #size-cells = <1>;
>>> > +                               compatible = "w25q128";
>>> > +                               reg = <0 0>;
>>> > +                               linux,modalias = "m25p80", "w25q128";
>>> > +                               spi-max-frequency = <10000000>;
>>> > +
>>> > +                               partition@0 {
>>> > +                                       label = "u-boot";
>>> > +                                       reg = <0x0 0x30000>;
>>> > +                               };
>>> > +
>>> > +                               partition@30000 {
>>> > +                                       label = "u-boot-env";
>>> > +                                       reg = <0x30000 0x10000>;
>>> > +                                       read-only;
>>> > +                               };
>>> > +
>>> > +                               factory: partition@40000 {
>>> > +                                       label = "factory";
>>> > +                                       reg = <0x40000 0x10000>;
>>> > +                               };
>>> > +
>>> > +                               partition@50000 {
>>> > +                                       label = "firmware";
>>> > +                                       reg = <0x50000 0xf80000>;
>>> > +                               };
>>> > +
>>> > +                               partition@fd0000 {
>>> > +                                       label = "hwf_config";
>>> > +                                       reg = <0xfd0000 0x10000>;
>>> > +                               };
>>> > +
>>> > +                               bdinfo: partition@fe0000 {
>>> > +                                       label = "bdinfo";
>>> > +                                       reg = <0xfe0000 0x10000>;
>>> > +                               };
>>> > +
>>> > +                               partition@ff0000 {
>>> > +                                       label = "backup";
>>> > +                                       reg = <0xff0000 0x10000>;
>>> > +                               };
>>> > +                       };
>>> > +               };
>>> > +       };
>>> > +
>>> > +       ehci@101c0000 {
>>> > +               status = "okay";
>>> > +       };
>>> > +
>>> > +       ohci@101c1000 {
>>> > +               status = "okay";
>>> > +       };
>>> > +
>>> > +       ethernet@10100000 {
>>> > +               status = "okay";
>>> > +               mtd-mac-address = <&factory 0x4>;
>>> > +               pinctrl-names = "default";
>>> > +               pinctrl-0 = <&rgmii1_pins &rgmii2_pins &mdio_pins>;
>>> > +               ralink,port-map = "wllll";
>>> > +
>>> > +               port@4 {
>>> > +                       status = "okay";
>>> > +                       phy-handle = <&phy4>;
>>> > +                       phy-mode = "rgmii";
>>> > +               };
>>> > +
>>> > +               port@5 {
>>> > +                       status = "okay";
>>> > +                       phy-handle = <&phy5>;
>>> > +                       phy-mode = "rgmii";
>>> > +               };
>>> > +
>>> > +               mdio-bus {
>>> > +                       status = "okay";
>>> > +
>>> > +                       phy4: ethernet-phy@4 {
>>> > +                               reg = <4>;
>>> > +                               phy-mode = "rgmii";
>>> > +                       };
>>> > +
>>> > +                       phy5: ethernet-phy@5 {
>>> > +                               reg = <5>;
>>> > +                               phy-mode = "rgmii";
>>> > +                       };
>>> > +               };
>>> > +       };
>>> > +
>>> > +       gsw@10110000 {
>>> > +               ralink,port4 = "gmac";
>>> > +       };
>>> > +
>>> > +       sdhci@10130000 {
>>> > +               status = "okay";
>>> > +       };
>>> > +
>>> > +       wmac@10180000 {
>>> > +               ralink,mtd-eeprom = <&factory 0>;
>>> > +       };
>>> > +
>>> > +       pcie@10140000 {
>>> > +               status = "okay";
>>> > +       };
>>> > +
>>> > +       pinctrl {
>>> > +               state_default: pinctrl0 {
>>> > +                       gpio {
>>> > +                               ralink,group = "uartf", "wled", "nd_sd";
>>> > +                               ralink,function = "gpio";
>>> > +                       };
>>> > +
>>> > +                       pa {
>>> > +                               ralink,group = "pa";
>>> > +                               ralink,function = "pa";
>>> > +                       };
>>> > +               };
>>> > +       };
>>> > +
>>> > +       gpio-leds {
>>> > +               compatible = "gpio-leds";
>>> > +
>>> > +               system {
>>> > +                       label = "hc5861:blue:system";
>>> > +                       gpios = <&gpio0 9 1>;
>>> > +               };
>>> > +
>>> > +               wlan2g {
>>> > +                       label = "hc5861:blue:wlan2g";
>>> > +                       gpios = <&gpio0 11 1>;
>>> > +               };
>>> > +
>>> > +               internet {
>>> > +                       label = "hc5861:blue:internet";
>>> > +                       gpios = <&gpio3 0 1>;
>>> > +               };
>>> > +
>>> > +               wlan5g {
>>> > +                       label = "hc5861:blue:wlan5g";
>>> > +                       gpios = <&gpio0 7 1>;
>>> > +               };
>>> > +
>>> > +               turbo {
>>> > +                       label = "hc5861:blue:turbo";
>>> > +                       gpios = <&gpio0 10 1>;
>>> > +               };
>>> > +       };
>>> > +
>>> > +       gpio-keys-polled {
>>> > +               compatible = "gpio-keys-polled";
>>> > +               #address-cells = <1>;
>>> > +               #size-cells = <0>;
>>> > +               poll-interval = <20>;
>>> > +
>>> > +               reset {
>>> > +                       label = "reset";
>>> > +                       gpios = <&gpio0 12 1>;
>>> > +                       linux,code = <0x198>;
>>> > +               };
>>> > +       };
>>> > +
>>> > +       gpio_export {
>>> > +               compatible = "gpio-export";
>>> > +               #size-cells = <0>;
>>> > +
>>> > +               usbpower {
>>> > +                       gpio-export,name = "usbpower";
>>> > +                       gpio-export,output = <0>;
>>>
>>> Other two models have here output = 1.
>>> Why this one is different?
>>
>>
>> Forget to say, I have no idea about it, I'm not familiar with hardware
>> related stuff :( it just comes from original author.
>>
>> If someone could confirm it is a typo, I'll fix it.
>>
>>>
>>>
>>> > +                       gpios = <&gpio0 13 0>;
>>> > +               };
>>> > +
>>> > +               sdpower {
>>> > +                       gpio-export,name = "sdpower";
>>> > +                       gpio-export,output = <0>;
>>> > +                       gpios = <&gpio0 8 0>;
>>> > +               };
>>> > +       };
>>> > +
>>>
>>> This empty line here is unnecessary.
>>>
>>> > +};
>>> > +
>>>
>>> And last one here.
>>>
>>> > _______________________________________________
>>> > openwrt-devel mailing list
>>> > openwrt-devel@lists.openwrt.org
>>> > https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
>>
>>
Yousong Zhou Oct. 2, 2015, 2:50 p.m. UTC | #5
On 29 September 2015 at 23:45, Kang Xiaoning <kangxn@gmail.com> wrote:
> Hi Yousong
>
> Thanks for helping. Your questions are both valid..
>
> My initiative is to put basic support into trunk, and try to solve those
> problems later.
>
> Regarding #1,  I'm not comfortable enough to make a function in dts driver
> solely for those particular devices. Maybe a hack script to update wireless
> uci config files at firstboot is better?

It's just an ancient idea from me.  The intention is that since we
already have mtd-mac-address for binary ones, why not also include
those ascii variants.  Maybe some other boards also suffer from this
issue too and can benefit from the change.  Anyway there are ramips
maintainers to make the decision.

>
> For #2,  I can write the wiki page, though it is would be complicated.
> HiWiFi provides an "official" way to unlock the U-Boot now, at the cost of
> voiding warranty.  However, you have to follow a procedure which requires a
> Chinese cellphone number, and a WeChat(a whatsapp clone app) account.
> Understanding of Chinese is also a requirement.  Anyway, since HiWiFi
> routers are sold in Chinese market only, I believe it won't be a big problem
> for non-Chinese users.....
>

Maybe... back in Oct. 2014, information about a mt7620 dev board [1]
was sought.  Looks like the case was removed but the style of board
layout made me think that it could be a board by HiWiFi.  I think I
can somehow understand why the pubkey firmware verification was added
later.  But personally I think those technical facts and details
should be collected and documented.

 [1] desperately seeking info on this weird MT7620A/MT7610EN dev
board, https://lists.openwrt.org/pipermail/openwrt-devel/2014-October/028516.html

Regards,

                yousong


> Thanks again!
>
> On Tue, Sep 29, 2015 at 10:10 AM, Yousong Zhou <yszhou4tech@gmail.com>
> wrote:
>>
>> Hi,
>>
>> Previously this year, there were 2 attempts to add support for HC5661
>> and HC5761 to OpenWrt trunk [1,2].  I only had a HC5661 and it was
>> quite a while ago but the issues then should still remain.
>>
>> The first is about how MAC address is to be read.  The
>> "mtd-mac-address" DTS directives apparently won't work.  And if I
>> remember correctly simply reading and setting it for lan and wan also
>> has flaws that the WiFi interface still get the default hardcoded MAC
>> address by the driver.  The best way I can think of to workaround this
>> is to add a directive similar to what "mtd-mac-address" does for
>> binary-encoded MACs.
>>
>> "target/linux/generic/patches-4.1/681-NET-add-of_get_mac_address_mtd.patch"
>> can work as a reference.
>
>
>
>
>>
>>
>> The second is about how the generated the firmwares is to be flashed
>> to the those devices.  Are there plans to create wiki pages to clarify
>> the details?  Again if I remember correctly, the U-Boot of HC5661 at
>> least utilised pubkey firmware verification (though ...).  How regular
>> users are supposed to workaround this?
>>
>>  [1] HiWiFi HC5661 Support for Openwrt,
>> https://lists.openwrt.org/pipermail/openwrt-devel/2015-April/032640.html
>>  [2] ramips:Add support for HiWiFi HC5761,
>> https://lists.openwrt.org/pipermail/openwrt-devel/2015-April/032643.html
>>
>> Regard,
>>
>>                 yousong
>>
>> On 28 September 2015 at 22:42, Comman Kang <kangxn@163.com> wrote:
>> > HiWiFi HC5661/5761/5861 models are manufactured by
>> > http://www.hiwifi.com. These models have similar hardware specs(MT7620A +
>> > 128M DDR2 + 16M flash). This patch adds support for them.
>> >
>> > The original author is Justin Liu (rssnsj@gmail.com). I ported the patch
>> > to trunk and submitted it here with his approval.
>> >
>> > v2 fix
>> >   1: Renamed files to remove manufacturer’s name.
>> >   2: styling work
>> >
>> > Signed-off-by: Xiaoning Kang <kangxn@163.com>
>> >
>> >
>> > diff --git a/target/linux/ramips/dts/HC5661.dts
>> > b/target/linux/ramips/dts/HC5661.dts
>> > new file mode 100644
>> > index 0000000..b5b9d1a
>> > --- /dev/null
>> > +++ b/target/linux/ramips/dts/HC5661.dts
>> > @@ -0,0 +1,172 @@
>> > +/dts-v1/;
>> > +
>> > +/include/ "mt7620a.dtsi"
>> > +
>> > +/ {
>> > +       compatible = "HC5661", "ralink,mt7620a-soc";
>> > +       model = "HiWiFi HC5661";
>> > +
>> > +       chosen {
>> > +               bootargs = "console=ttyS0,115200";
>> > +       };
>> > +
>> > +       palmbus@10000000 {
>> > +               sysc@0 {
>> > +                       ralink,gpiomux = "i2c", "jtag";
>> > +                       ralink,uartmux = "gpio";
>> > +                       ralink,wdtmux = <1>;
>> > +               };
>> > +
>> > +               gpio0: gpio@600 {
>> > +                       status = "okay";
>> > +               };
>> > +
>> > +               gpio2: gpio@660 {
>> > +                       status = "okay";
>> > +               };
>> > +
>> > +               gpio3: gpio@688 {
>> > +                       status = "okay";
>> > +               };
>> > +
>> > +               spi@b00 {
>> > +                       status = "okay";
>> > +
>> > +                       m25p80@0 {
>> > +                               #address-cells = <1>;
>> > +                               #size-cells = <1>;
>> > +                               compatible = "w25q128";
>> > +                               reg = <0 0>;
>> > +                               linux,modalias = "m25p80", "w25q128";
>> > +                               spi-max-frequency = <10000000>;
>> > +
>> > +                               partition@0 {
>> > +                                       label = "u-boot";
>> > +                                       reg = <0x0 0x30000>;
>> > +                               };
>> > +
>> > +                               partition@30000 {
>> > +                                       label = "u-boot-env";
>> > +                                       reg = <0x30000 0x10000>;
>> > +                                       read-only;
>> > +                               };
>> > +
>> > +                               factory: partition@40000 {
>> > +                                       label = "factory";
>> > +                                       reg = <0x40000 0x10000>;
>> > +                               };
>> > +
>> > +                               partition@50000 {
>> > +                                       label = "firmware";
>> > +                                       reg = <0x50000 0xf80000>;
>> > +                               };
>> > +
>> > +                               partition@fd0000 {
>> > +                                       label = "hwf_config";
>> > +                                       reg = <0xfd0000 0x10000>;
>> > +                               };
>> > +
>> > +                               bdinfo: partition@fe0000 {
>> > +                                       label = "bdinfo";
>> > +                                       reg = <0xfe0000 0x10000>;
>> > +                               };
>> > +
>> > +                               partition@ff0000 {
>> > +                                       label = "backup";
>> > +                                       reg = <0xff0000 0x10000>;
>> > +                               };
>> > +                       };
>> > +               };
>> > +       };
>> > +
>> > +       ehci@101c0000 {
>> > +               status = "okay";
>> > +       };
>> > +
>> > +       ohci@101c1000 {
>> > +               status = "okay";
>> > +       };
>> > +
>> > +       ethernet@10100000 {
>> > +               pinctrl-names = "default";
>> > +               pinctrl-0 = <&ephy_pins>;
>> > +               mtd-mac-address = <&factory 0x4>;
>> > +               ralink,port-map = "wllll";
>> > +       };
>> > +
>> > +       sdhci@10130000 {
>> > +               status = "okay";
>> > +       };
>> > +
>> > +       wmac@10180000 {
>> > +               ralink,mtd-eeprom = <&factory 0>;
>> > +       };
>> > +
>> > +       pcie@10140000 {
>> > +               status = "okay";
>> > +       };
>> > +
>> > +       pinctrl {
>> > +               state_default: pinctrl0 {
>> > +                       gpio {
>> > +                               ralink,group = "uartf", "wled", "nd_sd";
>> > +                               ralink,function = "gpio";
>> > +                       };
>> > +
>> > +                       pa {
>> > +                               ralink,group = "pa";
>> > +                               ralink,function = "pa";
>> > +                       };
>> > +               };
>> > +       };
>> > +
>> > +       gpio-leds {
>> > +               compatible = "gpio-leds";
>> > +
>> > +               system {
>> > +                       label = "hc5661:blue:system";
>> > +                       gpios = <&gpio0 9 1>;
>> > +               };
>> > +
>> > +               internet {
>> > +                       label = "hc5661:blue:internet";
>> > +                       gpios = <&gpio0 11 1>;
>> > +               };
>> > +
>> > +               wlan2g {
>> > +                       label = "hc5661:blue:wlan2g";
>> > +                       gpios = <&gpio3 0 1>;
>> > +               };
>> > +
>> > +               wlan5g {
>> > +                       label = "hc5661:blue:wlan5g";
>> > +                       gpios = <&gpio0 7 1>;
>> > +               };
>> > +       };
>> > +
>> > +       gpio-keys-polled {
>> > +               compatible = "gpio-keys-polled";
>> > +               #address-cells = <1>;
>> > +               #size-cells = <0>;
>> > +               poll-interval = <20>;
>> > +
>> > +               reset {
>> > +                       label = "reset";
>> > +                       gpios = <&gpio0 12 1>;
>> > +                       linux,code = <0x198>;
>> > +               };
>> > +       };
>> > +
>> > +       gpio_export {
>> > +               compatible = "gpio-export";
>> > +               #size-cells = <0>;
>> > +
>> > +               usbpower {
>> > +                       gpio-export,name = "usbpower";
>> > +                       gpio-export,output = <1>;
>> > +                       gpios = <&gpio0 13 0>;
>> > +               };
>> > +       };
>> > +
>> > +};
>> > +
>> > diff --git a/target/linux/ramips/dts/HC5761.dts
>> > b/target/linux/ramips/dts/HC5761.dts
>> > new file mode 100644
>> > index 0000000..d271261
>> > --- /dev/null
>> > +++ b/target/linux/ramips/dts/HC5761.dts
>> > @@ -0,0 +1,172 @@
>> > +/dts-v1/;
>> > +
>> > +/include/ "mt7620a.dtsi"
>> > +
>> > +/ {
>> > +       compatible = "HC5761", "ralink,mt7620a-soc";
>> > +       model = "HiWiFi HC5761";
>> > +
>> > +       chosen {
>> > +               bootargs = "console=ttyS0,115200";
>> > +       };
>> > +
>> > +       palmbus@10000000 {
>> > +               sysc@0 {
>> > +                       ralink,gpiomux = "i2c", "jtag";
>> > +                       ralink,uartmux = "gpio";
>> > +                       ralink,wdtmux = <1>;
>> > +               };
>> > +
>> > +               gpio0: gpio@600 {
>> > +                       status = "okay";
>> > +               };
>> > +
>> > +               gpio2: gpio@660 {
>> > +                       status = "okay";
>> > +               };
>> > +
>> > +               gpio3: gpio@688 {
>> > +                       status = "okay";
>> > +               };
>> > +
>> > +               spi@b00 {
>> > +                       status = "okay";
>> > +
>> > +                       m25p80@0 {
>> > +                               #address-cells = <1>;
>> > +                               #size-cells = <1>;
>> > +                               compatible = "w25q128";
>> > +                               reg = <0 0>;
>> > +                               linux,modalias = "m25p80", "w25q128";
>> > +                               spi-max-frequency = <10000000>;
>> > +
>> > +                               partition@0 {
>> > +                                       label = "u-boot";
>> > +                                       reg = <0x0 0x30000>;
>> > +                               };
>> > +
>> > +                               partition@30000 {
>> > +                                       label = "u-boot-env";
>> > +                                       reg = <0x30000 0x10000>;
>> > +                                       read-only;
>> > +                               };
>> > +
>> > +                               factory: partition@40000 {
>> > +                                       label = "factory";
>> > +                                       reg = <0x40000 0x10000>;
>> > +                               };
>> > +
>> > +                               partition@50000 {
>> > +                                       label = "firmware";
>> > +                                       reg = <0x50000 0xf80000>;
>> > +                               };
>> > +
>> > +                               partition@fd0000 {
>> > +                                       label = "hwf_config";
>> > +                                       reg = <0xfd0000 0x10000>;
>> > +                               };
>> > +
>> > +                               bdinfo: partition@fe0000 {
>> > +                                       label = "bdinfo";
>> > +                                       reg = <0xfe0000 0x10000>;
>> > +                               };
>> > +
>> > +                               partition@ff0000 {
>> > +                                       label = "backup";
>> > +                                       reg = <0xff0000 0x10000>;
>> > +                               };
>> > +                       };
>> > +               };
>> > +       };
>> > +
>> > +       ehci@101c0000 {
>> > +               status = "okay";
>> > +       };
>> > +
>> > +       ohci@101c1000 {
>> > +               status = "okay";
>> > +       };
>> > +
>> > +       ethernet@10100000 {
>> > +               pinctrl-names = "default";
>> > +               pinctrl-0 = <&ephy_pins>;
>> > +               mtd-mac-address = <&factory 0x4>;
>> > +               ralink,port-map = "wllll";
>> > +       };
>> > +
>> > +       sdhci@10130000 {
>> > +               status = "okay";
>> > +       };
>> > +
>> > +       wmac@10180000 {
>> > +               ralink,mtd-eeprom = <&factory 0>;
>> > +       };
>> > +
>> > +       pcie@10140000 {
>> > +               status = "okay";
>> > +       };
>> > +
>> > +       pinctrl {
>> > +               state_default: pinctrl0 {
>> > +                       gpio {
>> > +                               ralink,group = "uartf", "wled", "nd_sd";
>> > +                               ralink,function = "gpio";
>> > +                       };
>> > +
>> > +                       pa {
>> > +                               ralink,group = "pa";
>> > +                               ralink,function = "pa";
>> > +                       };
>> > +               };
>> > +       };
>> > +
>> > +       gpio-leds {
>> > +               compatible = "gpio-leds";
>> > +
>> > +               system {
>> > +                       label = "hc5761:blue:system";
>> > +                       gpios = <&gpio0 9 1>;
>> > +               };
>> > +
>> > +               internet {
>> > +                       label = "hc5761:blue:internet";
>> > +                       gpios = <&gpio0 11 1>;
>> > +               };
>> > +
>> > +               wlan2g {
>> > +                       label = "hc5761:blue:wlan2g";
>> > +                       gpios = <&gpio3 0 1>;
>> > +               };
>> > +
>> > +               wlan5g {
>> > +                       label = "hc5761:blue:wlan5g";
>> > +                       gpios = <&gpio0 7 1>;
>> > +               };
>> > +       };
>> > +
>> > +       gpio-keys-polled {
>> > +               compatible = "gpio-keys-polled";
>> > +               #address-cells = <1>;
>> > +               #size-cells = <0>;
>> > +               poll-interval = <20>;
>> > +
>> > +               reset {
>> > +                       label = "reset";
>> > +                       gpios = <&gpio0 12 1>;
>> > +                       linux,code = <0x198>;
>> > +               };
>> > +       };
>> > +
>> > +       gpio_export {
>> > +               compatible = "gpio-export";
>> > +               #size-cells = <0>;
>> > +
>> > +               usbpower {
>> > +                       gpio-export,name = "usbpower";
>> > +                       gpio-export,output = <1>;
>> > +                       gpios = <&gpio0 13 0>;
>> > +               };
>> > +       };
>> > +
>> > +};
>> > +
>> > diff --git a/target/linux/ramips/dts/HC5861.dts
>> > b/target/linux/ramips/dts/HC5861.dts
>> > new file mode 100644
>> > index 0000000..c0d9b93
>> > --- /dev/null
>> > +++ b/target/linux/ramips/dts/HC5861.dts
>> > @@ -0,0 +1,214 @@
>> > +/dts-v1/;
>> > +
>> > +/include/ "mt7620a.dtsi"
>> > +
>> > +/ {
>> > +       compatible = "HC5861", "ralink,mt7620a-soc";
>> > +       model = "HiWiFi HC5861";
>> > +
>> > +       chosen {
>> > +               bootargs = "console=ttyS0,115200";
>> > +       };
>> > +
>> > +       palmbus@10000000 {
>> > +               sysc@0 {
>> > +                       ralink,gpiomux = "i2c", "jtag";
>> > +                       ralink,uartmux = "gpio";
>> > +                       ralink,wdtmux = <1>;
>> > +               };
>> > +
>> > +               gpio0: gpio@600 {
>> > +                       status = "okay";
>> > +               };
>> > +
>> > +               gpio2: gpio@660 {
>> > +                       status = "okay";
>> > +               };
>> > +
>> > +               gpio3: gpio@688 {
>> > +                       status = "okay";
>> > +               };
>> > +
>> > +               spi@b00 {
>> > +                       status = "okay";
>> > +
>> > +                       m25p80@0 {
>> > +                               #address-cells = <1>;
>> > +                               #size-cells = <1>;
>> > +                               compatible = "w25q128";
>> > +                               reg = <0 0>;
>> > +                               linux,modalias = "m25p80", "w25q128";
>> > +                               spi-max-frequency = <10000000>;
>> > +
>> > +                               partition@0 {
>> > +                                       label = "u-boot";
>> > +                                       reg = <0x0 0x30000>;
>> > +                               };
>> > +
>> > +                               partition@30000 {
>> > +                                       label = "u-boot-env";
>> > +                                       reg = <0x30000 0x10000>;
>> > +                                       read-only;
>> > +                               };
>> > +
>> > +                               factory: partition@40000 {
>> > +                                       label = "factory";
>> > +                                       reg = <0x40000 0x10000>;
>> > +                               };
>> > +
>> > +                               partition@50000 {
>> > +                                       label = "firmware";
>> > +                                       reg = <0x50000 0xf80000>;
>> > +                               };
>> > +
>> > +                               partition@fd0000 {
>> > +                                       label = "hwf_config";
>> > +                                       reg = <0xfd0000 0x10000>;
>> > +                               };
>> > +
>> > +                               bdinfo: partition@fe0000 {
>> > +                                       label = "bdinfo";
>> > +                                       reg = <0xfe0000 0x10000>;
>> > +                               };
>> > +
>> > +                               partition@ff0000 {
>> > +                                       label = "backup";
>> > +                                       reg = <0xff0000 0x10000>;
>> > +                               };
>> > +                       };
>> > +               };
>> > +       };
>> > +
>> > +       ehci@101c0000 {
>> > +               status = "okay";
>> > +       };
>> > +
>> > +       ohci@101c1000 {
>> > +               status = "okay";
>> > +       };
>> > +
>> > +       ethernet@10100000 {
>> > +               status = "okay";
>> > +               mtd-mac-address = <&factory 0x4>;
>> > +               pinctrl-names = "default";
>> > +               pinctrl-0 = <&rgmii1_pins &rgmii2_pins &mdio_pins>;
>> > +               ralink,port-map = "wllll";
>> > +
>> > +               port@4 {
>> > +                       status = "okay";
>> > +                       phy-handle = <&phy4>;
>> > +                       phy-mode = "rgmii";
>> > +               };
>> > +
>> > +               port@5 {
>> > +                       status = "okay";
>> > +                       phy-handle = <&phy5>;
>> > +                       phy-mode = "rgmii";
>> > +               };
>> > +
>> > +               mdio-bus {
>> > +                       status = "okay";
>> > +
>> > +                       phy4: ethernet-phy@4 {
>> > +                               reg = <4>;
>> > +                               phy-mode = "rgmii";
>> > +                       };
>> > +
>> > +                       phy5: ethernet-phy@5 {
>> > +                               reg = <5>;
>> > +                               phy-mode = "rgmii";
>> > +                       };
>> > +               };
>> > +       };
>> > +
>> > +       gsw@10110000 {
>> > +               ralink,port4 = "gmac";
>> > +       };
>> > +
>> > +       sdhci@10130000 {
>> > +               status = "okay";
>> > +       };
>> > +
>> > +       wmac@10180000 {
>> > +               ralink,mtd-eeprom = <&factory 0>;
>> > +       };
>> > +
>> > +       pcie@10140000 {
>> > +               status = "okay";
>> > +       };
>> > +
>> > +       pinctrl {
>> > +               state_default: pinctrl0 {
>> > +                       gpio {
>> > +                               ralink,group = "uartf", "wled", "nd_sd";
>> > +                               ralink,function = "gpio";
>> > +                       };
>> > +
>> > +                       pa {
>> > +                               ralink,group = "pa";
>> > +                               ralink,function = "pa";
>> > +                       };
>> > +               };
>> > +       };
>> > +
>> > +       gpio-leds {
>> > +               compatible = "gpio-leds";
>> > +
>> > +               system {
>> > +                       label = "hc5861:blue:system";
>> > +                       gpios = <&gpio0 9 1>;
>> > +               };
>> > +
>> > +               wlan2g {
>> > +                       label = "hc5861:blue:wlan2g";
>> > +                       gpios = <&gpio0 11 1>;
>> > +               };
>> > +
>> > +               internet {
>> > +                       label = "hc5861:blue:internet";
>> > +                       gpios = <&gpio3 0 1>;
>> > +               };
>> > +
>> > +               wlan5g {
>> > +                       label = "hc5861:blue:wlan5g";
>> > +                       gpios = <&gpio0 7 1>;
>> > +               };
>> > +
>> > +               turbo {
>> > +                       label = "hc5861:blue:turbo";
>> > +                       gpios = <&gpio0 10 1>;
>> > +               };
>> > +       };
>> > +
>> > +       gpio-keys-polled {
>> > +               compatible = "gpio-keys-polled";
>> > +               #address-cells = <1>;
>> > +               #size-cells = <0>;
>> > +               poll-interval = <20>;
>> > +
>> > +               reset {
>> > +                       label = "reset";
>> > +                       gpios = <&gpio0 12 1>;
>> > +                       linux,code = <0x198>;
>> > +               };
>> > +       };
>> > +
>> > +       gpio_export {
>> > +               compatible = "gpio-export";
>> > +               #size-cells = <0>;
>> > +
>> > +               usbpower {
>> > +                       gpio-export,name = "usbpower";
>> > +                       gpio-export,output = <0>;
>> > +                       gpios = <&gpio0 13 0>;
>> > +               };
>> > +
>> > +               sdpower {
>> > +                       gpio-export,name = "sdpower";
>> > +                       gpio-export,output = <0>;
>> > +                       gpios = <&gpio0 8 0>;
>> > +               };
>> > +       };
>> > +
>> > +};
>> > +
>> > _______________________________________________
>> > openwrt-devel mailing list
>> > openwrt-devel@lists.openwrt.org
>> > https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
>
>
Piotr Dymacz Oct. 2, 2015, 3:49 p.m. UTC | #6
Hello,

2015-10-02 15:53 GMT+02:00 康 <kangxn@163.com>:
>
> Hi,  Merging 3 dts into one dtsi has been done in patch V3 ,

Sorry, I missed that.

> Sorry I don't quite understand your question ,  do you mean how to flash on
> those devices?

Yes and I got the answer from your mail to Yousong:

> For #2,  I can write the wiki page, though it is would be complicated.
> HiWiFi provides an "official" way to unlock the U-Boot now, at the cost of
> voiding warranty.  However, you have to follow a procedure which requires a
> Chinese cellphone number, and a WeChat(a whatsapp clone app) account.
> Understanding of Chinese is also a requirement.  Anyway, since HiWiFi
> routers are sold in Chinese market only, I believe it won't be a big problem
> for non-Chinese users.....

There are dozen ways to have devices for CN market in other parts of
the the world.
If there is no easier/ready way to switch from official firmware to
OpenWrt on those devices, I'm not convinced about keeping official
support for them in OpenWrt repository, but it's just mine opinion.

Cheers,
Piotr

[snip]
Comman Kang Oct. 3, 2015, 3:29 p.m. UTC | #7
在 2015-10-02 23:49:52,"Piotr Dymacz" <pepe2k@gmail.com> 写道:
>Hello,
>
>2015-10-02 15:53 GMT+02:00 康 <kangxn@163.com>:
>>
>> Hi,  Merging 3 dts into one dtsi has been done in patch V3 ,
>
>Sorry, I missed that.
>
>> Sorry I don't quite understand your question ,  do you mean how to flash on
>> those devices?
>
>Yes and I got the answer from your mail to Yousong:
>
>> For #2,  I can write the wiki page, though it is would be complicated.
>> HiWiFi provides an "official" way to unlock the U-Boot now, at the cost of
>> voiding warranty.  However, you have to follow a procedure which requires a
>> Chinese cellphone number, and a WeChat(a whatsapp clone app) account.
>> Understanding of Chinese is also a requirement.  Anyway, since HiWiFi
>> routers are sold in Chinese market only, I believe it won't be a big problem
>> for non-Chinese users.....
>
>There are dozen ways to have devices for CN market in other parts of
>the the world.
>If there is no easier/ready way to switch from official firmware to
>OpenWrt on those devices, I'm not convinced about keeping official
>support for them in OpenWrt repository, but it's just mine opinion.



I think there are dozens of HiWiFi routers(more than 200K pcs at least)  which don't have the bootloader locked out in the market, They were manufactured before the locked bootloader was born. As  long as they don't get updated, they remain unlocked and can be flashed via tftp easily.   Also, for CN users like me, they can easily get the device unlocked by following the procedure, so they need official openwrt support, too.


Thanks


>
>Cheers,
>Piotr
>
>[snip]
Comman Kang Oct. 10, 2015, 2:04 p.m. UTC | #8
At 2015-09-29 10:10:41, "Yousong Zhou" <yszhou4tech@gmail.com> wrote:
>Hi,
>
>Previously this year, there were 2 attempts to add support for HC5661
>and HC5761 to OpenWrt trunk [1,2].  I only had a HC5661 and it was
>quite a while ago but the issues then should still remain.
>
>The first is about how MAC address is to be read.  The
>"mtd-mac-address" DTS directives apparently won't work.  And if I
>remember correctly simply reading and setting it for lan and wan also
>has flaws that the WiFi interface still get the default hardcoded MAC
>address by the driver.  The best way I can think of to workaround this
>is to add a directive similar to what "mtd-mac-address" does for
>binary-encoded MACs.
>"target/linux/generic/patches-4.1/681-NET-add-of_get_mac_address_mtd.patch"
>can work as a reference.



Today I implemented the "mtd-mac-address-ascii" function, ethernet address works fine, but WiFi mac address remains the hardcoded one. It seems the driver read mac  from factory partition, and unfortunately all HiWiFi devices has the same mac in factory data...




>
>The second is about how the generated the firmwares is to be flashed
>to the those devices.  Are there plans to create wiki pages to clarify
>the details?  Again if I remember correctly, the U-Boot of HC5661 at
>least utilised pubkey firmware verification (though ...).  How regular
>users are supposed to workaround this?
>
> [1] HiWiFi HC5661 Support for Openwrt,
>https://lists.openwrt.org/pipermail/openwrt-devel/2015-April/032640.html
> [2] ramips:Add support for HiWiFi HC5761,
>https://lists.openwrt.org/pipermail/openwrt-devel/2015-April/032643.html
>
>Regard,
>
>                yousong
>
>On 28 September 2015 at 22:42, Comman Kang <kangxn@163.com> wrote:
>> HiWiFi HC5661/5761/5861 models are manufactured by http://www.hiwifi.com. These models have similar hardware specs(MT7620A + 128M DDR2 + 16M flash). This patch adds support for them.
>>
>> The original author is Justin Liu (rssnsj@gmail.com). I ported the patch to trunk and submitted it here with his approval.
>>
>> v2 fix
>>   1: Renamed files to remove manufacturer’s name.
>>   2: styling work
>>
>> Signed-off-by: Xiaoning Kang <kangxn@163.com>
>>
>>
>> diff --git a/target/linux/ramips/dts/HC5661.dts b/target/linux/ramips/dts/HC5661.dts
>> new file mode 100644
>> index 0000000..b5b9d1a
>> --- /dev/null
>> +++ b/target/linux/ramips/dts/HC5661.dts
>> @@ -0,0 +1,172 @@
>> +/dts-v1/;
>> +
>> +/include/ "mt7620a.dtsi"
>> +
>> +/ {
>> +       compatible = "HC5661", "ralink,mt7620a-soc";
>> +       model = "HiWiFi HC5661";
>> +
>> +       chosen {
>> +               bootargs = "console=ttyS0,115200";
>> +       };
>> +
>> +       palmbus@10000000 {
>> +               sysc@0 {
>> +                       ralink,gpiomux = "i2c", "jtag";
>> +                       ralink,uartmux = "gpio";
>> +                       ralink,wdtmux = <1>;
>> +               };
>> +
>> +               gpio0: gpio@600 {
>> +                       status = "okay";
>> +               };
>> +
>> +               gpio2: gpio@660 {
>> +                       status = "okay";
>> +               };
>> +
>> +               gpio3: gpio@688 {
>> +                       status = "okay";
>> +               };
>> +
>> +               spi@b00 {
>> +                       status = "okay";
>> +
>> +                       m25p80@0 {
>> +                               #address-cells = <1>;
>> +                               #size-cells = <1>;
>> +                               compatible = "w25q128";
>> +                               reg = <0 0>;
>> +                               linux,modalias = "m25p80", "w25q128";
>> +                               spi-max-frequency = <10000000>;
>> +
>> +                               partition@0 {
>> +                                       label = "u-boot";
>> +                                       reg = <0x0 0x30000>;
>> +                               };
>> +
>> +                               partition@30000 {
>> +                                       label = "u-boot-env";
>> +                                       reg = <0x30000 0x10000>;
>> +                                       read-only;
>> +                               };
>> +
>> +                               factory: partition@40000 {
>> +                                       label = "factory";
>> +                                       reg = <0x40000 0x10000>;
>> +                               };
>> +
>> +                               partition@50000 {
>> +                                       label = "firmware";
>> +                                       reg = <0x50000 0xf80000>;
>> +                               };
>> +
>> +                               partition@fd0000 {
>> +                                       label = "hwf_config";
>> +                                       reg = <0xfd0000 0x10000>;
>> +                               };
>> +
>> +                               bdinfo: partition@fe0000 {
>> +                                       label = "bdinfo";
>> +                                       reg = <0xfe0000 0x10000>;
>> +                               };
>> +
>> +                               partition@ff0000 {
>> +                                       label = "backup";
>> +                                       reg = <0xff0000 0x10000>;
>> +                               };
>> +                       };
>> +               };
>> +       };
>> +
>> +       ehci@101c0000 {
>> +               status = "okay";
>> +       };
>> +
>> +       ohci@101c1000 {
>> +               status = "okay";
>> +       };
>> +
>> +       ethernet@10100000 {
>> +               pinctrl-names = "default";
>> +               pinctrl-0 = <&ephy_pins>;
>> +               mtd-mac-address = <&factory 0x4>;
>> +               ralink,port-map = "wllll";
>> +       };
>> +
>> +       sdhci@10130000 {
>> +               status = "okay";
>> +       };
>> +
>> +       wmac@10180000 {
>> +               ralink,mtd-eeprom = <&factory 0>;
>> +       };
>> +
>> +       pcie@10140000 {
>> +               status = "okay";
>> +       };
>> +
>> +       pinctrl {
>> +               state_default: pinctrl0 {
>> +                       gpio {
>> +                               ralink,group = "uartf", "wled", "nd_sd";
>> +                               ralink,function = "gpio";
>> +                       };
>> +
>> +                       pa {
>> +                               ralink,group = "pa";
>> +                               ralink,function = "pa";
>> +                       };
>> +               };
>> +       };
>> +
>> +       gpio-leds {
>> +               compatible = "gpio-leds";
>> +
>> +               system {
>> +                       label = "hc5661:blue:system";
>> +                       gpios = <&gpio0 9 1>;
>> +               };
>> +
>> +               internet {
>> +                       label = "hc5661:blue:internet";
>> +                       gpios = <&gpio0 11 1>;
>> +               };
>> +
>> +               wlan2g {
>> +                       label = "hc5661:blue:wlan2g";
>> +                       gpios = <&gpio3 0 1>;
>> +               };
>> +
>> +               wlan5g {
>> +                       label = "hc5661:blue:wlan5g";
>> +                       gpios = <&gpio0 7 1>;
>> +               };
>> +       };
>> +
>> +       gpio-keys-polled {
>> +               compatible = "gpio-keys-polled";
>> +               #address-cells = <1>;
>> +               #size-cells = <0>;
>> +               poll-interval = <20>;
>> +
>> +               reset {
>> +                       label = "reset";
>> +                       gpios = <&gpio0 12 1>;
>> +                       linux,code = <0x198>;
>> +               };
>> +       };
>> +
>> +       gpio_export {
>> +               compatible = "gpio-export";
>> +               #size-cells = <0>;
>> +
>> +               usbpower {
>> +                       gpio-export,name = "usbpower";
>> +                       gpio-export,output = <1>;
>> +                       gpios = <&gpio0 13 0>;
>> +               };
>> +       };
>> +
>> +};
>> +
>> diff --git a/target/linux/ramips/dts/HC5761.dts b/target/linux/ramips/dts/HC5761.dts
>> new file mode 100644
>> index 0000000..d271261
>> --- /dev/null
>> +++ b/target/linux/ramips/dts/HC5761.dts
>> @@ -0,0 +1,172 @@
>> +/dts-v1/;
>> +
>> +/include/ "mt7620a.dtsi"
>> +
>> +/ {
>> +       compatible = "HC5761", "ralink,mt7620a-soc";
>> +       model = "HiWiFi HC5761";
>> +
>> +       chosen {
>> +               bootargs = "console=ttyS0,115200";
>> +       };
>> +
>> +       palmbus@10000000 {
>> +               sysc@0 {
>> +                       ralink,gpiomux = "i2c", "jtag";
>> +                       ralink,uartmux = "gpio";
>> +                       ralink,wdtmux = <1>;
>> +               };
>> +
>> +               gpio0: gpio@600 {
>> +                       status = "okay";
>> +               };
>> +
>> +               gpio2: gpio@660 {
>> +                       status = "okay";
>> +               };
>> +
>> +               gpio3: gpio@688 {
>> +                       status = "okay";
>> +               };
>> +
>> +               spi@b00 {
>> +                       status = "okay";
>> +
>> +                       m25p80@0 {
>> +                               #address-cells = <1>;
>> +                               #size-cells = <1>;
>> +                               compatible = "w25q128";
>> +                               reg = <0 0>;
>> +                               linux,modalias = "m25p80", "w25q128";
>> +                               spi-max-frequency = <10000000>;
>> +
>> +                               partition@0 {
>> +                                       label = "u-boot";
>> +                                       reg = <0x0 0x30000>;
>> +                               };
>> +
>> +                               partition@30000 {
>> +                                       label = "u-boot-env";
>> +                                       reg = <0x30000 0x10000>;
>> +                                       read-only;
>> +                               };
>> +
>> +                               factory: partition@40000 {
>> +                                       label = "factory";
>> +                                       reg = <0x40000 0x10000>;
>> +                               };
>> +
>> +                               partition@50000 {
>> +                                       label = "firmware";
>> +                                       reg = <0x50000 0xf80000>;
>> +                               };
>> +
>> +                               partition@fd0000 {
>> +                                       label = "hwf_config";
>> +                                       reg = <0xfd0000 0x10000>;
>> +                               };
>> +
>> +                               bdinfo: partition@fe0000 {
>> +                                       label = "bdinfo";
>> +                                       reg = <0xfe0000 0x10000>;
>> +                               };
>> +
>> +                               partition@ff0000 {
>> +                                       label = "backup";
>> +                                       reg = <0xff0000 0x10000>;
>> +                               };
>> +                       };
>> +               };
>> +       };
>> +
>> +       ehci@101c0000 {
>> +               status = "okay";
>> +       };
>> +
>> +       ohci@101c1000 {
>> +               status = "okay";
>> +       };
>> +
>> +       ethernet@10100000 {
>> +               pinctrl-names = "default";
>> +               pinctrl-0 = <&ephy_pins>;
>> +               mtd-mac-address = <&factory 0x4>;
>> +               ralink,port-map = "wllll";
>> +       };
>> +
>> +       sdhci@10130000 {
>> +               status = "okay";
>> +       };
>> +
>> +       wmac@10180000 {
>> +               ralink,mtd-eeprom = <&factory 0>;
>> +       };
>> +
>> +       pcie@10140000 {
>> +               status = "okay";
>> +       };
>> +
>> +       pinctrl {
>> +               state_default: pinctrl0 {
>> +                       gpio {
>> +                               ralink,group = "uartf", "wled", "nd_sd";
>> +                               ralink,function = "gpio";
>> +                       };
>> +
>> +                       pa {
>> +                               ralink,group = "pa";
>> +                               ralink,function = "pa";
>> +                       };
>> +               };
>> +       };
>> +
>> +       gpio-leds {
>> +               compatible = "gpio-leds";
>> +
>> +               system {
>> +                       label = "hc5761:blue:system";
>> +                       gpios = <&gpio0 9 1>;
>> +               };
>> +
>> +               internet {
>> +                       label = "hc5761:blue:internet";
>> +                       gpios = <&gpio0 11 1>;
>> +               };
>> +
>> +               wlan2g {
>> +                       label = "hc5761:blue:wlan2g";
>> +                       gpios = <&gpio3 0 1>;
>> +               };
>> +
>> +               wlan5g {
>> +                       label = "hc5761:blue:wlan5g";
>> +                       gpios = <&gpio0 7 1>;
>> +               };
>> +       };
>> +
>> +       gpio-keys-polled {
>> +               compatible = "gpio-keys-polled";
>> +               #address-cells = <1>;
>> +               #size-cells = <0>;
>> +               poll-interval = <20>;
>> +
>> +               reset {
>> +                       label = "reset";
>> +                       gpios = <&gpio0 12 1>;
>> +                       linux,code = <0x198>;
>> +               };
>> +       };
>> +
>> +       gpio_export {
>> +               compatible = "gpio-export";
>> +               #size-cells = <0>;
>> +
>> +               usbpower {
>> +                       gpio-export,name = "usbpower";
>> +                       gpio-export,output = <1>;
>> +                       gpios = <&gpio0 13 0>;
>> +               };
>> +       };
>> +
>> +};
>> +
>> diff --git a/target/linux/ramips/dts/HC5861.dts b/target/linux/ramips/dts/HC5861.dts
>> new file mode 100644
>> index 0000000..c0d9b93
>> --- /dev/null
>> +++ b/target/linux/ramips/dts/HC5861.dts
>> @@ -0,0 +1,214 @@
>> +/dts-v1/;
>> +
>> +/include/ "mt7620a.dtsi"
>> +
>> +/ {
>> +       compatible = "HC5861", "ralink,mt7620a-soc";
>> +       model = "HiWiFi HC5861";
>> +
>> +       chosen {
>> +               bootargs = "console=ttyS0,115200";
>> +       };
>> +
>> +       palmbus@10000000 {
>> +               sysc@0 {
>> +                       ralink,gpiomux = "i2c", "jtag";
>> +                       ralink,uartmux = "gpio";
>> +                       ralink,wdtmux = <1>;
>> +               };
>> +
>> +               gpio0: gpio@600 {
>> +                       status = "okay";
>> +               };
>> +
>> +               gpio2: gpio@660 {
>> +                       status = "okay";
>> +               };
>> +
>> +               gpio3: gpio@688 {
>> +                       status = "okay";
>> +               };
>> +
>> +               spi@b00 {
>> +                       status = "okay";
>> +
>> +                       m25p80@0 {
>> +                               #address-cells = <1>;
>> +                               #size-cells = <1>;
>> +                               compatible = "w25q128";
>> +                               reg = <0 0>;
>> +                               linux,modalias = "m25p80", "w25q128";
>> +                               spi-max-frequency = <10000000>;
>> +
>> +                               partition@0 {
>> +                                       label = "u-boot";
>> +                                       reg = <0x0 0x30000>;
>> +                               };
>> +
>> +                               partition@30000 {
>> +                                       label = "u-boot-env";
>> +                                       reg = <0x30000 0x10000>;
>> +                                       read-only;
>> +                               };
>> +
>> +                               factory: partition@40000 {
>> +                                       label = "factory";
>> +                                       reg = <0x40000 0x10000>;
>> +                               };
>> +
>> +                               partition@50000 {
>> +                                       label = "firmware";
>> +                                       reg = <0x50000 0xf80000>;
>> +                               };
>> +
>> +                               partition@fd0000 {
>> +                                       label = "hwf_config";
>> +                                       reg = <0xfd0000 0x10000>;
>> +                               };
>> +
>> +                               bdinfo: partition@fe0000 {
>> +                                       label = "bdinfo";
>> +                                       reg = <0xfe0000 0x10000>;
>> +                               };
>> +
>> +                               partition@ff0000 {
>> +                                       label = "backup";
>> +                                       reg = <0xff0000 0x10000>;
>> +                               };
>> +                       };
>> +               };
>> +       };
>> +
>> +       ehci@101c0000 {
>> +               status = "okay";
>> +       };
>> +
>> +       ohci@101c1000 {
>> +               status = "okay";
>> +       };
>> +
>> +       ethernet@10100000 {
>> +               status = "okay";
>> +               mtd-mac-address = <&factory 0x4>;
>> +               pinctrl-names = "default";
>> +               pinctrl-0 = <&rgmii1_pins &rgmii2_pins &mdio_pins>;
>> +               ralink,port-map = "wllll";
>> +
>> +               port@4 {
>> +                       status = "okay";
>> +                       phy-handle = <&phy4>;
>> +                       phy-mode = "rgmii";
>> +               };
>> +
>> +               port@5 {
>> +                       status = "okay";
>> +                       phy-handle = <&phy5>;
>> +                       phy-mode = "rgmii";
>> +               };
>> +
>> +               mdio-bus {
>> +                       status = "okay";
>> +
>> +                       phy4: ethernet-phy@4 {
>> +                               reg = <4>;
>> +                               phy-mode = "rgmii";
>> +                       };
>> +
>> +                       phy5: ethernet-phy@5 {
>> +                               reg = <5>;
>> +                               phy-mode = "rgmii";
>> +                       };
>> +               };
>> +       };
>> +
>> +       gsw@10110000 {
>> +               ralink,port4 = "gmac";
>> +       };
>> +
>> +       sdhci@10130000 {
>> +               status = "okay";
>> +       };
>> +
>> +       wmac@10180000 {
>> +               ralink,mtd-eeprom = <&factory 0>;
>> +       };
>> +
>> +       pcie@10140000 {
>> +               status = "okay";
>> +       };
>> +
>> +       pinctrl {
>> +               state_default: pinctrl0 {
>> +                       gpio {
>> +                               ralink,group = "uartf", "wled", "nd_sd";
>> +                               ralink,function = "gpio";
>> +                       };
>> +
>> +                       pa {
>> +                               ralink,group = "pa";
>> +                               ralink,function = "pa";
>> +                       };
>> +               };
>> +       };
>> +
>> +       gpio-leds {
>> +               compatible = "gpio-leds";
>> +
>> +               system {
>> +                       label = "hc5861:blue:system";
>> +                       gpios = <&gpio0 9 1>;
>> +               };
>> +
>> +               wlan2g {
>> +                       label = "hc5861:blue:wlan2g";
>> +                       gpios = <&gpio0 11 1>;
>> +               };
>> +
>> +               internet {
>> +                       label = "hc5861:blue:internet";
>> +                       gpios = <&gpio3 0 1>;
>> +               };
>> +
>> +               wlan5g {
>> +                       label = "hc5861:blue:wlan5g";
>> +                       gpios = <&gpio0 7 1>;
>> +               };
>> +
>> +               turbo {
>> +                       label = "hc5861:blue:turbo";
>> +                       gpios = <&gpio0 10 1>;
>> +               };
>> +       };
>> +
>> +       gpio-keys-polled {
>> +               compatible = "gpio-keys-polled";
>> +               #address-cells = <1>;
>> +               #size-cells = <0>;
>> +               poll-interval = <20>;
>> +
>> +               reset {
>> +                       label = "reset";
>> +                       gpios = <&gpio0 12 1>;
>> +                       linux,code = <0x198>;
>> +               };
>> +       };
>> +
>> +       gpio_export {
>> +               compatible = "gpio-export";
>> +               #size-cells = <0>;
>> +
>> +               usbpower {
>> +                       gpio-export,name = "usbpower";
>> +                       gpio-export,output = <0>;
>> +                       gpios = <&gpio0 13 0>;
>> +               };
>> +
>> +               sdpower {
>> +                       gpio-export,name = "sdpower";
>> +                       gpio-export,output = <0>;
>> +                       gpios = <&gpio0 8 0>;
>> +               };
>> +       };
>> +
>> +};
>> +
>> _______________________________________________
>> openwrt-devel mailing list
>> openwrt-devel@lists.openwrt.org
>> https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
diff mbox

Patch

diff --git a/target/linux/ramips/dts/HC5661.dts b/target/linux/ramips/dts/HC5661.dts
new file mode 100644
index 0000000..b5b9d1a
--- /dev/null
+++ b/target/linux/ramips/dts/HC5661.dts
@@ -0,0 +1,172 @@ 
+/dts-v1/;
+
+/include/ "mt7620a.dtsi"
+
+/ {
+	compatible = "HC5661", "ralink,mt7620a-soc";
+	model = "HiWiFi HC5661";
+
+	chosen {
+		bootargs = "console=ttyS0,115200";
+	};
+
+	palmbus@10000000 {
+		sysc@0 {
+			ralink,gpiomux = "i2c", "jtag";
+			ralink,uartmux = "gpio";
+			ralink,wdtmux = <1>;
+		};
+
+		gpio0: gpio@600 {
+			status = "okay";
+		};
+
+		gpio2: gpio@660 {
+			status = "okay";
+		};
+
+		gpio3: gpio@688 {
+			status = "okay";
+		};
+
+		spi@b00 {
+			status = "okay";
+
+			m25p80@0 {
+				#address-cells = <1>;
+				#size-cells = <1>;
+				compatible = "w25q128";
+				reg = <0 0>;
+				linux,modalias = "m25p80", "w25q128";
+				spi-max-frequency = <10000000>;
+
+				partition@0 {
+					label = "u-boot";
+					reg = <0x0 0x30000>;
+				};
+
+				partition@30000 {
+					label = "u-boot-env";
+					reg = <0x30000 0x10000>;
+					read-only;
+				};
+
+				factory: partition@40000 {
+					label = "factory";
+					reg = <0x40000 0x10000>;
+				};
+
+				partition@50000 {
+					label = "firmware";
+					reg = <0x50000 0xf80000>;
+				};
+
+				partition@fd0000 {
+					label = "hwf_config";
+					reg = <0xfd0000 0x10000>;
+				};
+
+				bdinfo: partition@fe0000 {
+					label = "bdinfo";
+					reg = <0xfe0000 0x10000>;
+				};
+
+				partition@ff0000 {
+					label = "backup";
+					reg = <0xff0000 0x10000>;
+				};
+			};
+		};
+	};
+
+	ehci@101c0000 {
+		status = "okay";
+	};
+
+	ohci@101c1000 {
+		status = "okay";
+	};
+
+	ethernet@10100000 {
+		pinctrl-names = "default";
+		pinctrl-0 = <&ephy_pins>;
+		mtd-mac-address = <&factory 0x4>;
+		ralink,port-map = "wllll";
+	};
+
+	sdhci@10130000 {
+		status = "okay";
+	};
+
+	wmac@10180000 {
+		ralink,mtd-eeprom = <&factory 0>;
+	};
+
+	pcie@10140000 {
+		status = "okay";
+	};
+
+	pinctrl {
+		state_default: pinctrl0 {
+			gpio {
+				ralink,group = "uartf", "wled", "nd_sd";
+				ralink,function = "gpio";
+			};
+
+			pa {
+				ralink,group = "pa";
+				ralink,function = "pa";
+			};
+		};
+	};
+
+	gpio-leds {
+		compatible = "gpio-leds";
+
+		system {
+			label = "hc5661:blue:system";
+			gpios = <&gpio0 9 1>;
+		};
+
+		internet {
+			label = "hc5661:blue:internet";
+			gpios = <&gpio0 11 1>;
+		};
+
+		wlan2g {
+			label = "hc5661:blue:wlan2g";
+			gpios = <&gpio3 0 1>;
+		};
+
+		wlan5g {
+			label = "hc5661:blue:wlan5g";
+			gpios = <&gpio0 7 1>;
+		};
+	};
+
+	gpio-keys-polled {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&gpio0 12 1>;
+			linux,code = <0x198>;
+		};
+	};
+
+	gpio_export {
+		compatible = "gpio-export";
+		#size-cells = <0>;
+
+		usbpower {
+			gpio-export,name = "usbpower";
+			gpio-export,output = <1>;
+			gpios = <&gpio0 13 0>;
+		};
+	};
+
+};
+
diff --git a/target/linux/ramips/dts/HC5761.dts b/target/linux/ramips/dts/HC5761.dts
new file mode 100644
index 0000000..d271261
--- /dev/null
+++ b/target/linux/ramips/dts/HC5761.dts
@@ -0,0 +1,172 @@ 
+/dts-v1/;
+
+/include/ "mt7620a.dtsi"
+
+/ {
+	compatible = "HC5761", "ralink,mt7620a-soc";
+	model = "HiWiFi HC5761";
+
+	chosen {
+		bootargs = "console=ttyS0,115200";
+	};
+
+	palmbus@10000000 {
+		sysc@0 {
+			ralink,gpiomux = "i2c", "jtag";
+			ralink,uartmux = "gpio";
+			ralink,wdtmux = <1>;
+		};
+
+		gpio0: gpio@600 {
+			status = "okay";
+		};
+
+		gpio2: gpio@660 {
+			status = "okay";
+		};
+
+		gpio3: gpio@688 {
+			status = "okay";
+		};
+
+		spi@b00 {
+			status = "okay";
+
+			m25p80@0 {
+				#address-cells = <1>;
+				#size-cells = <1>;
+				compatible = "w25q128";
+				reg = <0 0>;
+				linux,modalias = "m25p80", "w25q128";
+				spi-max-frequency = <10000000>;
+
+				partition@0 {
+					label = "u-boot";
+					reg = <0x0 0x30000>;
+				};
+
+				partition@30000 {
+					label = "u-boot-env";
+					reg = <0x30000 0x10000>;
+					read-only;
+				};
+
+				factory: partition@40000 {
+					label = "factory";
+					reg = <0x40000 0x10000>;
+				};
+
+				partition@50000 {
+					label = "firmware";
+					reg = <0x50000 0xf80000>;
+				};
+
+				partition@fd0000 {
+					label = "hwf_config";
+					reg = <0xfd0000 0x10000>;
+				};
+
+				bdinfo: partition@fe0000 {
+					label = "bdinfo";
+					reg = <0xfe0000 0x10000>;
+				};
+
+				partition@ff0000 {
+					label = "backup";
+					reg = <0xff0000 0x10000>;
+				};
+			};
+		};
+	};
+
+	ehci@101c0000 {
+		status = "okay";
+	};
+
+	ohci@101c1000 {
+		status = "okay";
+	};
+
+	ethernet@10100000 {
+		pinctrl-names = "default";
+		pinctrl-0 = <&ephy_pins>;
+		mtd-mac-address = <&factory 0x4>;
+		ralink,port-map = "wllll";
+	};
+
+	sdhci@10130000 {
+		status = "okay";
+	};
+
+	wmac@10180000 {
+		ralink,mtd-eeprom = <&factory 0>;
+	};
+
+	pcie@10140000 {
+		status = "okay";
+	};
+
+	pinctrl {
+		state_default: pinctrl0 {
+			gpio {
+				ralink,group = "uartf", "wled", "nd_sd";
+				ralink,function = "gpio";
+			};
+
+			pa {
+				ralink,group = "pa";
+				ralink,function = "pa";
+			};
+		};
+	};
+
+	gpio-leds {
+		compatible = "gpio-leds";
+
+		system {
+			label = "hc5761:blue:system";
+			gpios = <&gpio0 9 1>;
+		};
+
+		internet {
+			label = "hc5761:blue:internet";
+			gpios = <&gpio0 11 1>;
+		};
+
+		wlan2g {
+			label = "hc5761:blue:wlan2g";
+			gpios = <&gpio3 0 1>;
+		};
+
+		wlan5g {
+			label = "hc5761:blue:wlan5g";
+			gpios = <&gpio0 7 1>;
+		};
+	};
+
+	gpio-keys-polled {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&gpio0 12 1>;
+			linux,code = <0x198>;
+		};
+	};
+
+	gpio_export {
+		compatible = "gpio-export";
+		#size-cells = <0>;
+
+		usbpower {
+			gpio-export,name = "usbpower";
+			gpio-export,output = <1>;
+			gpios = <&gpio0 13 0>;
+		};
+	};
+
+};
+
diff --git a/target/linux/ramips/dts/HC5861.dts b/target/linux/ramips/dts/HC5861.dts
new file mode 100644
index 0000000..c0d9b93
--- /dev/null
+++ b/target/linux/ramips/dts/HC5861.dts
@@ -0,0 +1,214 @@ 
+/dts-v1/;
+
+/include/ "mt7620a.dtsi"
+
+/ {
+	compatible = "HC5861", "ralink,mt7620a-soc";
+	model = "HiWiFi HC5861";
+
+	chosen {
+		bootargs = "console=ttyS0,115200";
+	};
+
+	palmbus@10000000 {
+		sysc@0 {
+			ralink,gpiomux = "i2c", "jtag";
+			ralink,uartmux = "gpio";
+			ralink,wdtmux = <1>;
+		};
+
+		gpio0: gpio@600 {
+			status = "okay";
+		};
+
+		gpio2: gpio@660 {
+			status = "okay";
+		};
+
+		gpio3: gpio@688 {
+			status = "okay";
+		};
+
+		spi@b00 {
+			status = "okay";
+
+			m25p80@0 {
+				#address-cells = <1>;
+				#size-cells = <1>;
+				compatible = "w25q128";
+				reg = <0 0>;
+				linux,modalias = "m25p80", "w25q128";
+				spi-max-frequency = <10000000>;
+
+				partition@0 {
+					label = "u-boot";
+					reg = <0x0 0x30000>;
+				};
+
+				partition@30000 {
+					label = "u-boot-env";
+					reg = <0x30000 0x10000>;
+					read-only;
+				};
+
+				factory: partition@40000 {
+					label = "factory";
+					reg = <0x40000 0x10000>;
+				};
+
+				partition@50000 {
+					label = "firmware";
+					reg = <0x50000 0xf80000>;
+				};
+
+				partition@fd0000 {
+					label = "hwf_config";
+					reg = <0xfd0000 0x10000>;
+				};
+
+				bdinfo: partition@fe0000 {
+					label = "bdinfo";
+					reg = <0xfe0000 0x10000>;
+				};
+
+				partition@ff0000 {
+					label = "backup";
+					reg = <0xff0000 0x10000>;
+				};
+			};
+		};
+	};
+
+	ehci@101c0000 {
+		status = "okay";
+	};
+
+	ohci@101c1000 {
+		status = "okay";
+	};
+
+	ethernet@10100000 {
+		status = "okay";
+		mtd-mac-address = <&factory 0x4>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&rgmii1_pins &rgmii2_pins &mdio_pins>;
+		ralink,port-map = "wllll";
+
+		port@4 {
+			status = "okay";
+			phy-handle = <&phy4>;
+			phy-mode = "rgmii";
+		};
+
+		port@5 {
+			status = "okay";
+			phy-handle = <&phy5>;
+			phy-mode = "rgmii";
+		};
+
+		mdio-bus {
+			status = "okay";
+
+			phy4: ethernet-phy@4 {
+				reg = <4>;
+				phy-mode = "rgmii";
+			};
+
+			phy5: ethernet-phy@5 {
+				reg = <5>;
+				phy-mode = "rgmii";
+			};
+		};
+	};
+
+	gsw@10110000 {
+		ralink,port4 = "gmac";
+	};
+
+	sdhci@10130000 {
+		status = "okay";
+	};
+
+	wmac@10180000 {
+		ralink,mtd-eeprom = <&factory 0>;
+	};
+
+	pcie@10140000 {
+		status = "okay";
+	};
+
+	pinctrl {
+		state_default: pinctrl0 {
+			gpio {
+				ralink,group = "uartf", "wled", "nd_sd";
+				ralink,function = "gpio";
+			};
+
+			pa {
+				ralink,group = "pa";
+				ralink,function = "pa";
+			};
+		};
+	};
+
+	gpio-leds {
+		compatible = "gpio-leds";
+
+		system {
+			label = "hc5861:blue:system";
+			gpios = <&gpio0 9 1>;
+		};
+
+		wlan2g {
+			label = "hc5861:blue:wlan2g";
+			gpios = <&gpio0 11 1>;
+		};
+
+		internet {
+			label = "hc5861:blue:internet";
+			gpios = <&gpio3 0 1>;
+		};
+
+		wlan5g {
+			label = "hc5861:blue:wlan5g";
+			gpios = <&gpio0 7 1>;
+		};
+
+		turbo {
+			label = "hc5861:blue:turbo";
+			gpios = <&gpio0 10 1>;
+		};
+	};
+
+	gpio-keys-polled {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&gpio0 12 1>;
+			linux,code = <0x198>;
+		};
+	};
+
+	gpio_export {
+		compatible = "gpio-export";
+		#size-cells = <0>;
+
+		usbpower {
+			gpio-export,name = "usbpower";
+			gpio-export,output = <0>;
+			gpios = <&gpio0 13 0>;
+		};
+
+		sdpower {
+			gpio-export,name = "sdpower";
+			gpio-export,output = <0>;
+			gpios = <&gpio0 8 0>;
+		};
+	};
+
+};
+