diff mbox series

[OpenWrt-Devel] ramips: mt7621: Add new device AsiaRF AP7621-001

Message ID 20190621155023.16220-1-daniel@dd-wrt.com
State Superseded, archived
Headers show
Series [OpenWrt-Devel] ramips: mt7621: Add new device AsiaRF AP7621-001 | expand

Commit Message

Daniel Danzberger June 21, 2019, 3:50 p.m. UTC
Signed-off-by: Daniel Danzberger <daniel@dd-wrt.com>
---
 .../ramips/base-files/etc/board.d/02_network  |   5 +
 target/linux/ramips/base-files/lib/ramips.sh  |   3 +
 target/linux/ramips/dts/AP7621-001.dts        | 157 ++++++++++++++++++
 target/linux/ramips/image/mt7621.mk           |  12 ++
 target/linux/ramips/mt7621/config-4.14        |   1 +
 5 files changed, 178 insertions(+)
 create mode 100644 target/linux/ramips/dts/AP7621-001.dts

Comments

Chuanhong Guo June 22, 2019, 2:46 a.m. UTC | #1
Hi!

Some comments inline :)

On Fri, Jun 21, 2019 at 11:50 PM Daniel Danzberger <daniel@dd-wrt.com> wrote:
>
> Signed-off-by: Daniel Danzberger <daniel@dd-wrt.com>

When adding new device support, commit message should include a brief
description of the hardware and an installation guide.
You could check recent commits [1] for some examples.

> ---
>  .../ramips/base-files/etc/board.d/02_network  |   5 +
>  target/linux/ramips/base-files/lib/ramips.sh  |   3 +
>  target/linux/ramips/dts/AP7621-001.dts        | 157 ++++++++++++++++++
>  target/linux/ramips/image/mt7621.mk           |  12 ++
>  target/linux/ramips/mt7621/config-4.14        |   1 +
>  5 files changed, 178 insertions(+)
>  create mode 100644 target/linux/ramips/dts/AP7621-001.dts
>
> diff --git a/target/linux/ramips/base-files/etc/board.d/02_network b/target/linux/ramips/base-files/etc/board.d/02_network
> index 52204eacbf..ee0c23eeb5 100755
> --- a/target/linux/ramips/base-files/etc/board.d/02_network
> +++ b/target/linux/ramips/base-files/etc/board.d/02_network
> @@ -39,6 +39,11 @@ ramips_setup_interfaces()
>                 ucidef_add_switch "switch0" \
>                         "0:lan:4" "1:lan:3" "2:lan:2" "3:lan:1" "4:wan:5" "6@eth0"
>                 ;;
> +       ap7621-001)
> +               ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2"

There is no need to explicitly define lan and wan interfaces here.
This will be handled by ucidef_add_switch.

> +               ucidef_set_interfaces relay ifname "'wwan' 'lan'" protocol relay
> +               ucidef_add_switch "switch0" "0:lan" "4:wan" "6@eth0"
> +               ;;
>         3g150b|\
>         3g300m|\
>         a5-v11|\
> diff --git a/target/linux/ramips/base-files/lib/ramips.sh b/target/linux/ramips/base-files/lib/ramips.sh
> index 093303892c..2350e88354 100755
> --- a/target/linux/ramips/base-files/lib/ramips.sh
> +++ b/target/linux/ramips/base-files/lib/ramips.sh
> @@ -46,6 +46,9 @@ ramips_board_detect() {
>         *"ALL5003")
>                 name="all5003"
>                 ;;
> +       *"AP7621-001")
> +               name="ap7621-001"
> +               ;;

This board detection is deprecated.
The first compatible string will be used as board name if an entry
isn't added here.

>         *"AR670W")
>                 name="ar670w"
>                 ;;
> diff --git a/target/linux/ramips/dts/AP7621-001.dts b/target/linux/ramips/dts/AP7621-001.dts
> new file mode 100644
> index 0000000000..587c26457e
> --- /dev/null
> +++ b/target/linux/ramips/dts/AP7621-001.dts
> @@ -0,0 +1,157 @@
> +/dts-v1/;
> +#include "mt7621.dtsi"
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/input/input.h>
> +
> +/ {
> +       compatible = "asiarf,ap7621-001", "mediatek,mt7621-soc";
> +       model = "AP7621-001";
> +
> +       memory@0 {
> +               device_type = "memory";
> +               reg = <0x0 0x1c000000>, <0x20000000 0x4000000>;
> +       };
> +
> +       chosen {
> +               bootargs = "console=ttyS0,57600";
> +       };
> +
> +       palmbus: palmbus@1E000000 {
> +               i2c@900 {
> +                       status = "okay";
> +               };
> +       };

What is i2c used for? If there isn't something already connected on
board, it should be disabled.

> +
> +       gpio-keys-polled {

Rename this one to "keys" according to Generic Names Recommendation in
device tree specification. [2]

> +               compatible = "gpio-keys-polled";

Interrupt based gpio-keys can be used here instead of gpio-keys-polled.

> +               #address-cells = <1>;
> +               #size-cells = <0>;
> +               poll-interval = <20>;
> +
> +               reset {
> +                       label = "reset";
> +                       gpios = <&gpio0 18 GPIO_ACTIVE_LOW>;
> +                       linux,code = <KEY_RESTART>;
> +               };
> +       };
> +
> +       gpio-leds {

This should be renamed to "leds".

> +               compatible = "gpio-leds";
> +
> +               wlan1 {
> +                       label = "ap7621-001:orange:wlan1";
> +                       gpios = <&gpio0 11 GPIO_ACTIVE_LOW>;
> +               };
> +       };
> +
> +       gpio-leds {
> +               compatible = "gpio-leds";

gpio-leds supports multiple leds in the same platform device and there
is no need to create a second "leds" node here.
Just drop the above 4 lines so that one "leds" node contains both of your leds.

> +
> +               wlan0 {
> +                       label = "ap7621-001:orange:wlan0";
> +                       gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
> +               };
> +       };
> +};
> +
> +&sdhci {
> +       status = "okay";
> +};
> +
> +&spi0 {
> +        status = "okay";
> +
> +        m25p80@0 {

This one could be renamed to "flash@0"

> +                #address-cells = <1>;
> +                #size-cells = <1>;
> +                compatible = "jedec,spi-nor";
> +                reg = <0>;
> +                spi-max-frequency = <10000000>;

10MHz is a pretty low spi frequency. You could try if a higher
frequency (e.g. 40MHz) works for you.

> +                m25p,chunked-io = <32>;

This is for an old m25p80 driver hack that has been replaced. This
line can be dropped.

> +
> +                partition@0 {
> +                        label = "u-boot";
> +                        reg = <0x0 0x30000>;
> +                        read-only;
> +                };
> +
> +//              partition@30000 {
> +//                      label = "u-boot-env";
> +//                      reg = <0x30000 0x10000>;
> +//              };

These comment lines should be dropped.

> +
> +                partition@30000 {
> +                        label = "u-boot-env";
> +                        reg = <0x30000 0x2000>;
> +                };
> +
> +                partition@32000 {
> +                        label = "2860";
> +                        reg = <0x32000 0x4000>;
> +                };
> +
> +                partition@36000 {
> +                        label = "rtdev";
> +                        reg = <0x36000 0x2000>;
> +                };
> +
> +                partition@38000 {
> +                        label = "Reserve";
> +                        reg = <0x38000 0x8000>;
> +                };
> +
> +                factory: partition@40000 {
> +                        label = "factory";
> +                        reg = <0x40000 0x10000>;
> +                        read-only;
> +                };
> +
> +                firmware: partition@50000 {
> +                        label = "firmware";

Add a compatible string here:
 compatible = "denx,uimage";
and then you don't need CONFIG_MTD_SPLIT_FIRMWARE=y which is also deprecated.

> +                        reg = <0x50000 0xfa0000>;
> +                };
> +
> +                partition@ff0000 {
> +                        label = "nvram";
> +                        reg = <0xff0000 0x10000>;
> +                };
> +        };
> +};
> +
> +&pcie {
> +       status = "okay";
> +
> +       pcie0 {
> +               wifi@14c3,7662 {
> +                       compatible = "pci14c3,7662";
> +                       reg = <0x0000 0 0 0 0>;
> +                       mediatek,mtd-eeprom = <&factory 0x0000>;
> +//                     ieee80211-freq-limit = <2400000 2500000>;

Just drop this line if it isn't needed.

> +               };
> +       };
> +
> +       pcie1 {
> +               wifi@14c3,7662 {
> +                       compatible = "pci14c3,7662";
> +                       reg = <0x0000 0 0 0 0>;
> +                       mediatek,mtd-eeprom = <&factory 0x8000>;
> +//                     ieee80211-freq-limit = <5000000 6000000>;

same as above.

> +               };
> +       };
> +};
> +
> +&ethernet {
> +       mtd-mac-address = <&factory 0xe000>;
> +       mediatek,portmap = "llllw";
> +};
> +
> +&pinctrl {
> +       state_default: pinctrl0 {
> +               gpio {
> +                       ralink,group = "wdt", "jtag" ;

gpio11 12 and 18 is used, which belongs to uart2 and wdt group.
So this line should be:
ralink,group = "uart2", "wdt";

> +                       ralink,function = "gpio";
> +               };
> +       };
> +};
> +
> diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
> index 2eb7feb5bf..29e4111ce8 100644
> --- a/target/linux/ramips/image/mt7621.mk
> +++ b/target/linux/ramips/image/mt7621.mk
> @@ -640,3 +640,15 @@ define Device/zbt-wg3526-32M
>         kmod-usb3 kmod-usb-ledtrig-usbport wpad-basic
>  endef
>  TARGET_DEVICES += zbt-wg3526-32M
> +
> +define Device/ap7621-001

image name should be manufacturer_model. In this case it should be
asiarf_ap7621-001

> +  DTS := AP7621-001
> +  IMAGE_SIZE := $(ralink_default_fw_size_16M)
> +  SUPPORTED_DEVICES += ap7621-001

If you use device tree based board detection as said above, this
SUPPORTED_DEVICES can be dropped.
sysupgrade checks board name against SUPPORTED_DEVICES and there is
one generated by replacing "_" with "," in image name.

> +  DEVICE_TITLE := AsiaRF AP7621-001
> +  DEVICE_PACKAGES := \
> +       kmod-ata-core kmod-ata-ahci kmod-sdhci-mt7620 kmod-mt7603 kmod-mt76x2 \

Is there a SATA controller available?
And according to your device tree, this router uses mt76x2 for both
bands. mt7603 isn't needed here.

> +       kmod-usb3 kmod-usb-ledtrig-usbport

There isn't a usb led so usbport trigger can be dropped here.

> +endef
> +TARGET_DEVICES += ap7621-001
> +
> diff --git a/target/linux/ramips/mt7621/config-4.14 b/target/linux/ramips/mt7621/config-4.14
> index b279c69879..3e18fc162e 100644
> --- a/target/linux/ramips/mt7621/config-4.14
> +++ b/target/linux/ramips/mt7621/config-4.14
> @@ -192,6 +192,7 @@ CONFIG_MTD_SPLIT_SEAMA_FW=y
>  CONFIG_MTD_SPLIT_TPLINK_FW=y
>  CONFIG_MTD_SPLIT_TRX_FW=y
>  CONFIG_MTD_SPLIT_UIMAGE_FW=y
> +CONFIG_MTD_SPLIT_FIRMWARE=y

As said above, this is deprecated.

>  CONFIG_MTD_UBI=y
>  CONFIG_MTD_UBI_BEB_LIMIT=20
>  CONFIG_MTD_UBI_BLOCK=y
> --
> 2.20.1
>

Regards,
Chuanhong Guo

[1] https://git.openwrt.org/?p=openwrt/openwrt.git&a=search&h=HEAD&st=commit&s=add+support+for
[2] https://github.com/devicetree-org/devicetree-specification/blob/master/source/devicetree-basics.rst#generic-names-recommendation
Petr Štetiar June 22, 2019, 3:50 a.m. UTC | #2
Daniel Danzberger <daniel@dd-wrt.com> [2019-06-21 17:50:23]:

Hi,

just one addition to the previous comments.

> +	gpio-keys-polled {
> +		compatible = "gpio-keys-polled";
> +		#address-cells = <1>;
> +		#size-cells = <0>;

You can drop `#address-cells = <1>;` and `#size-cells = <0>;` properties, it's a
copy&paste probably, needed by child node with reg property.

-- ynezz
Rafał Miłecki June 22, 2019, 2:04 p.m. UTC | #3
On 21.06.2019 17:50, Daniel Danzberger wrote:
> diff --git a/target/linux/ramips/dts/AP7621-001.dts b/target/linux/ramips/dts/AP7621-001.dts
> new file mode 100644
> index 0000000000..587c26457e
> --- /dev/null
> +++ b/target/linux/ramips/dts/AP7621-001.dts
> @@ -0,0 +1,157 @@
> +/dts-v1/;

Please include licensing info for your DTS file, see
https://openwrt.org/submitting-patches#dts_checklist
e.g. a line like:
`// SPDX-License-Identifier: GPL-2.0-or-later OR MIT`
above the `/dts-v1/;`


> +        m25p80@0 {
> +                #address-cells = <1>;
> +                #size-cells = <1>;
> +                compatible = "jedec,spi-nor";
> +                reg = <0>;
> +                spi-max-frequency = <10000000>;
> +                m25p,chunked-io = <32>;
> +
> +                partition@0 {
> +                        label = "u-boot";
> +                        reg = <0x0 0x30000>;
> +                        read-only;
> +                };

Use "partitions" subnode for storing all partition nodes.
Daniel Danzberger June 24, 2019, 11:13 a.m. UTC | #4
hi,

Once I add in  'ralink,group = "uart2", "wdt";', I get the following errors and
the flash isn't going to be initialized.
---
[    2.823681] mt7621-pci 1e140000.pcie: could not find pctldev for node
/pinctrl/pcie, deferring probe
[    2.842075] spi-mt7621 1e000b00.spi: could not find pctldev for node
/pinctrl/spi_pins, deferring probe
---

The flash works fine with 40Mhz.
I also removed the pcie0/1 wlan nodes, hence the board comes with plain PCIE
slots without any wifi attached.


On 6/22/19 4:46 AM, Chuanhong Guo wrote:
> Hi!
> 
> Some comments inline :)
> 
> On Fri, Jun 21, 2019 at 11:50 PM Daniel Danzberger <daniel@dd-wrt.com> wrote:
>>
>> Signed-off-by: Daniel Danzberger <daniel@dd-wrt.com>
> 
> When adding new device support, commit message should include a brief
> description of the hardware and an installation guide.
> You could check recent commits [1] for some examples.
> 
>> ---
>>  .../ramips/base-files/etc/board.d/02_network  |   5 +
>>  target/linux/ramips/base-files/lib/ramips.sh  |   3 +
>>  target/linux/ramips/dts/AP7621-001.dts        | 157 ++++++++++++++++++
>>  target/linux/ramips/image/mt7621.mk           |  12 ++
>>  target/linux/ramips/mt7621/config-4.14        |   1 +
>>  5 files changed, 178 insertions(+)
>>  create mode 100644 target/linux/ramips/dts/AP7621-001.dts
>>
>> diff --git a/target/linux/ramips/base-files/etc/board.d/02_network b/target/linux/ramips/base-files/etc/board.d/02_network
>> index 52204eacbf..ee0c23eeb5 100755
>> --- a/target/linux/ramips/base-files/etc/board.d/02_network
>> +++ b/target/linux/ramips/base-files/etc/board.d/02_network
>> @@ -39,6 +39,11 @@ ramips_setup_interfaces()
>>                 ucidef_add_switch "switch0" \
>>                         "0:lan:4" "1:lan:3" "2:lan:2" "3:lan:1" "4:wan:5" "6@eth0"
>>                 ;;
>> +       ap7621-001)
>> +               ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2"
> 
> There is no need to explicitly define lan and wan interfaces here.
> This will be handled by ucidef_add_switch.
> 
>> +               ucidef_set_interfaces relay ifname "'wwan' 'lan'" protocol relay
>> +               ucidef_add_switch "switch0" "0:lan" "4:wan" "6@eth0"
>> +               ;;
>>         3g150b|\
>>         3g300m|\
>>         a5-v11|\
>> diff --git a/target/linux/ramips/base-files/lib/ramips.sh b/target/linux/ramips/base-files/lib/ramips.sh
>> index 093303892c..2350e88354 100755
>> --- a/target/linux/ramips/base-files/lib/ramips.sh
>> +++ b/target/linux/ramips/base-files/lib/ramips.sh
>> @@ -46,6 +46,9 @@ ramips_board_detect() {
>>         *"ALL5003")
>>                 name="all5003"
>>                 ;;
>> +       *"AP7621-001")
>> +               name="ap7621-001"
>> +               ;;
> 
> This board detection is deprecated.
> The first compatible string will be used as board name if an entry
> isn't added here.
> 
>>         *"AR670W")
>>                 name="ar670w"
>>                 ;;
>> diff --git a/target/linux/ramips/dts/AP7621-001.dts b/target/linux/ramips/dts/AP7621-001.dts
>> new file mode 100644
>> index 0000000000..587c26457e
>> --- /dev/null
>> +++ b/target/linux/ramips/dts/AP7621-001.dts
>> @@ -0,0 +1,157 @@
>> +/dts-v1/;
>> +#include "mt7621.dtsi"
>> +
>> +#include <dt-bindings/gpio/gpio.h>
>> +#include <dt-bindings/input/input.h>
>> +
>> +/ {
>> +       compatible = "asiarf,ap7621-001", "mediatek,mt7621-soc";
>> +       model = "AP7621-001";
>> +
>> +       memory@0 {
>> +               device_type = "memory";
>> +               reg = <0x0 0x1c000000>, <0x20000000 0x4000000>;
>> +       };
>> +
>> +       chosen {
>> +               bootargs = "console=ttyS0,57600";
>> +       };
>> +
>> +       palmbus: palmbus@1E000000 {
>> +               i2c@900 {
>> +                       status = "okay";
>> +               };
>> +       };
> 
> What is i2c used for? If there isn't something already connected on
> board, it should be disabled.
> 
>> +
>> +       gpio-keys-polled {
> 
> Rename this one to "keys" according to Generic Names Recommendation in
> device tree specification. [2]
> 
>> +               compatible = "gpio-keys-polled";
> 
> Interrupt based gpio-keys can be used here instead of gpio-keys-polled.
> 
>> +               #address-cells = <1>;
>> +               #size-cells = <0>;
>> +               poll-interval = <20>;
>> +
>> +               reset {
>> +                       label = "reset";
>> +                       gpios = <&gpio0 18 GPIO_ACTIVE_LOW>;
>> +                       linux,code = <KEY_RESTART>;
>> +               };
>> +       };
>> +
>> +       gpio-leds {
> 
> This should be renamed to "leds".
> 
>> +               compatible = "gpio-leds";
>> +
>> +               wlan1 {
>> +                       label = "ap7621-001:orange:wlan1";
>> +                       gpios = <&gpio0 11 GPIO_ACTIVE_LOW>;
>> +               };
>> +       };
>> +
>> +       gpio-leds {
>> +               compatible = "gpio-leds";
> 
> gpio-leds supports multiple leds in the same platform device and there
> is no need to create a second "leds" node here.
> Just drop the above 4 lines so that one "leds" node contains both of your leds.
> 
>> +
>> +               wlan0 {
>> +                       label = "ap7621-001:orange:wlan0";
>> +                       gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
>> +               };
>> +       };
>> +};
>> +
>> +&sdhci {
>> +       status = "okay";
>> +};
>> +
>> +&spi0 {
>> +        status = "okay";
>> +
>> +        m25p80@0 {
> 
> This one could be renamed to "flash@0"
> 
>> +                #address-cells = <1>;
>> +                #size-cells = <1>;
>> +                compatible = "jedec,spi-nor";
>> +                reg = <0>;
>> +                spi-max-frequency = <10000000>;
> 
> 10MHz is a pretty low spi frequency. You could try if a higher
> frequency (e.g. 40MHz) works for you.
> 
>> +                m25p,chunked-io = <32>;
> 
> This is for an old m25p80 driver hack that has been replaced. This
> line can be dropped.
> 
>> +
>> +                partition@0 {
>> +                        label = "u-boot";
>> +                        reg = <0x0 0x30000>;
>> +                        read-only;
>> +                };
>> +
>> +//              partition@30000 {
>> +//                      label = "u-boot-env";
>> +//                      reg = <0x30000 0x10000>;
>> +//              };
> 
> These comment lines should be dropped.
> 
>> +
>> +                partition@30000 {
>> +                        label = "u-boot-env";
>> +                        reg = <0x30000 0x2000>;
>> +                };
>> +
>> +                partition@32000 {
>> +                        label = "2860";
>> +                        reg = <0x32000 0x4000>;
>> +                };
>> +
>> +                partition@36000 {
>> +                        label = "rtdev";
>> +                        reg = <0x36000 0x2000>;
>> +                };
>> +
>> +                partition@38000 {
>> +                        label = "Reserve";
>> +                        reg = <0x38000 0x8000>;
>> +                };
>> +
>> +                factory: partition@40000 {
>> +                        label = "factory";
>> +                        reg = <0x40000 0x10000>;
>> +                        read-only;
>> +                };
>> +
>> +                firmware: partition@50000 {
>> +                        label = "firmware";
> 
> Add a compatible string here:
>  compatible = "denx,uimage";
> and then you don't need CONFIG_MTD_SPLIT_FIRMWARE=y which is also deprecated.
> 
>> +                        reg = <0x50000 0xfa0000>;
>> +                };
>> +
>> +                partition@ff0000 {
>> +                        label = "nvram";
>> +                        reg = <0xff0000 0x10000>;
>> +                };
>> +        };
>> +};
>> +
>> +&pcie {
>> +       status = "okay";
>> +
>> +       pcie0 {
>> +               wifi@14c3,7662 {
>> +                       compatible = "pci14c3,7662";
>> +                       reg = <0x0000 0 0 0 0>;
>> +                       mediatek,mtd-eeprom = <&factory 0x0000>;
>> +//                     ieee80211-freq-limit = <2400000 2500000>;
> 
> Just drop this line if it isn't needed.
> 
>> +               };
>> +       };
>> +
>> +       pcie1 {
>> +               wifi@14c3,7662 {
>> +                       compatible = "pci14c3,7662";
>> +                       reg = <0x0000 0 0 0 0>;
>> +                       mediatek,mtd-eeprom = <&factory 0x8000>;
>> +//                     ieee80211-freq-limit = <5000000 6000000>;
> 
> same as above.
> 
>> +               };
>> +       };
>> +};
>> +
>> +&ethernet {
>> +       mtd-mac-address = <&factory 0xe000>;
>> +       mediatek,portmap = "llllw";
>> +};
>> +
>> +&pinctrl {
>> +       state_default: pinctrl0 {
>> +               gpio {
>> +                       ralink,group = "wdt", "jtag" ;
> 
> gpio11 12 and 18 is used, which belongs to uart2 and wdt group.
> So this line should be:
> ralink,group = "uart2", "wdt";
> 
>> +                       ralink,function = "gpio";
>> +               };
>> +       };
>> +};
>> +
>> diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
>> index 2eb7feb5bf..29e4111ce8 100644
>> --- a/target/linux/ramips/image/mt7621.mk
>> +++ b/target/linux/ramips/image/mt7621.mk
>> @@ -640,3 +640,15 @@ define Device/zbt-wg3526-32M
>>         kmod-usb3 kmod-usb-ledtrig-usbport wpad-basic
>>  endef
>>  TARGET_DEVICES += zbt-wg3526-32M
>> +
>> +define Device/ap7621-001
> 
> image name should be manufacturer_model. In this case it should be
> asiarf_ap7621-001
> 
>> +  DTS := AP7621-001
>> +  IMAGE_SIZE := $(ralink_default_fw_size_16M)
>> +  SUPPORTED_DEVICES += ap7621-001
> 
> If you use device tree based board detection as said above, this
> SUPPORTED_DEVICES can be dropped.
> sysupgrade checks board name against SUPPORTED_DEVICES and there is
> one generated by replacing "_" with "," in image name.
> 
>> +  DEVICE_TITLE := AsiaRF AP7621-001
>> +  DEVICE_PACKAGES := \
>> +       kmod-ata-core kmod-ata-ahci kmod-sdhci-mt7620 kmod-mt7603 kmod-mt76x2 \
> 
> Is there a SATA controller available?
> And according to your device tree, this router uses mt76x2 for both
> bands. mt7603 isn't needed here.
> 
>> +       kmod-usb3 kmod-usb-ledtrig-usbport
> 
> There isn't a usb led so usbport trigger can be dropped here.
> 
>> +endef
>> +TARGET_DEVICES += ap7621-001
>> +
>> diff --git a/target/linux/ramips/mt7621/config-4.14 b/target/linux/ramips/mt7621/config-4.14
>> index b279c69879..3e18fc162e 100644
>> --- a/target/linux/ramips/mt7621/config-4.14
>> +++ b/target/linux/ramips/mt7621/config-4.14
>> @@ -192,6 +192,7 @@ CONFIG_MTD_SPLIT_SEAMA_FW=y
>>  CONFIG_MTD_SPLIT_TPLINK_FW=y
>>  CONFIG_MTD_SPLIT_TRX_FW=y
>>  CONFIG_MTD_SPLIT_UIMAGE_FW=y
>> +CONFIG_MTD_SPLIT_FIRMWARE=y
> 
> As said above, this is deprecated.
> 
>>  CONFIG_MTD_UBI=y
>>  CONFIG_MTD_UBI_BEB_LIMIT=20
>>  CONFIG_MTD_UBI_BLOCK=y
>> --
>> 2.20.1
>>
> 
> Regards,
> Chuanhong Guo
> 
> [1] https://git.openwrt.org/?p=openwrt/openwrt.git&a=search&h=HEAD&st=commit&s=add+support+for
> [2] https://github.com/devicetree-org/devicetree-specification/blob/master/source/devicetree-basics.rst#generic-names-recommendation
>
diff mbox series

Patch

diff --git a/target/linux/ramips/base-files/etc/board.d/02_network b/target/linux/ramips/base-files/etc/board.d/02_network
index 52204eacbf..ee0c23eeb5 100755
--- a/target/linux/ramips/base-files/etc/board.d/02_network
+++ b/target/linux/ramips/base-files/etc/board.d/02_network
@@ -39,6 +39,11 @@  ramips_setup_interfaces()
 		ucidef_add_switch "switch0" \
 			"0:lan:4" "1:lan:3" "2:lan:2" "3:lan:1" "4:wan:5" "6@eth0"
 		;;
+	ap7621-001)
+		ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2"
+		ucidef_set_interfaces relay ifname "'wwan' 'lan'" protocol relay
+		ucidef_add_switch "switch0" "0:lan" "4:wan" "6@eth0"
+		;;
 	3g150b|\
 	3g300m|\
 	a5-v11|\
diff --git a/target/linux/ramips/base-files/lib/ramips.sh b/target/linux/ramips/base-files/lib/ramips.sh
index 093303892c..2350e88354 100755
--- a/target/linux/ramips/base-files/lib/ramips.sh
+++ b/target/linux/ramips/base-files/lib/ramips.sh
@@ -46,6 +46,9 @@  ramips_board_detect() {
 	*"ALL5003")
 		name="all5003"
 		;;
+	*"AP7621-001")
+		name="ap7621-001"
+		;;
 	*"AR670W")
 		name="ar670w"
 		;;
diff --git a/target/linux/ramips/dts/AP7621-001.dts b/target/linux/ramips/dts/AP7621-001.dts
new file mode 100644
index 0000000000..587c26457e
--- /dev/null
+++ b/target/linux/ramips/dts/AP7621-001.dts
@@ -0,0 +1,157 @@ 
+/dts-v1/;
+#include "mt7621.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+	compatible = "asiarf,ap7621-001", "mediatek,mt7621-soc";
+	model = "AP7621-001";
+
+	memory@0 {
+		device_type = "memory";
+		reg = <0x0 0x1c000000>, <0x20000000 0x4000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,57600";
+	};
+
+	palmbus: palmbus@1E000000 {
+		i2c@900 {
+			status = "okay";
+		};
+	};
+
+	gpio-keys-polled {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&gpio0 18 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_RESTART>;
+		};
+	};
+
+	gpio-leds {
+		compatible = "gpio-leds";
+
+		wlan1 {
+			label = "ap7621-001:orange:wlan1";
+			gpios = <&gpio0 11 GPIO_ACTIVE_LOW>;
+		};
+	};
+
+	gpio-leds {
+		compatible = "gpio-leds";
+
+		wlan0 {
+			label = "ap7621-001:orange:wlan0";
+			gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
+		};
+	};
+};
+
+&sdhci {
+	status = "okay";
+};
+
+&spi0 {
+        status = "okay";
+
+        m25p80@0 {
+                #address-cells = <1>;
+                #size-cells = <1>;
+                compatible = "jedec,spi-nor";
+                reg = <0>;
+                spi-max-frequency = <10000000>;
+                m25p,chunked-io = <32>;
+
+                partition@0 {
+                        label = "u-boot";
+                        reg = <0x0 0x30000>;
+                        read-only;
+                };
+
+//              partition@30000 {
+//                      label = "u-boot-env";
+//                      reg = <0x30000 0x10000>;
+//              };
+
+                partition@30000 {
+                        label = "u-boot-env";
+                        reg = <0x30000 0x2000>;
+                };
+
+                partition@32000 {
+                        label = "2860";
+                        reg = <0x32000 0x4000>;
+                };
+
+                partition@36000 {
+                        label = "rtdev";
+                        reg = <0x36000 0x2000>;
+                };
+
+                partition@38000 {
+                        label = "Reserve";
+                        reg = <0x38000 0x8000>;
+                };
+
+                factory: partition@40000 {
+                        label = "factory";
+                        reg = <0x40000 0x10000>;
+                        read-only;
+                };
+
+                firmware: partition@50000 {
+                        label = "firmware";
+                        reg = <0x50000 0xfa0000>;
+                };
+
+                partition@ff0000 {
+                        label = "nvram";
+                        reg = <0xff0000 0x10000>;
+                };
+        };
+};
+
+&pcie {
+	status = "okay";
+
+	pcie0 {
+		wifi@14c3,7662 {
+			compatible = "pci14c3,7662";
+			reg = <0x0000 0 0 0 0>;
+			mediatek,mtd-eeprom = <&factory 0x0000>;
+//			ieee80211-freq-limit = <2400000 2500000>;
+		};
+	};
+
+	pcie1 {
+		wifi@14c3,7662 {
+			compatible = "pci14c3,7662";
+			reg = <0x0000 0 0 0 0>;
+			mediatek,mtd-eeprom = <&factory 0x8000>;
+//			ieee80211-freq-limit = <5000000 6000000>;
+		};
+	};
+};
+
+&ethernet {
+	mtd-mac-address = <&factory 0xe000>;
+	mediatek,portmap = "llllw";
+};
+
+&pinctrl {
+	state_default: pinctrl0 {
+		gpio {
+			ralink,group = "wdt", "jtag" ;
+			ralink,function = "gpio";
+		};
+	};
+};
+
diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
index 2eb7feb5bf..29e4111ce8 100644
--- a/target/linux/ramips/image/mt7621.mk
+++ b/target/linux/ramips/image/mt7621.mk
@@ -640,3 +640,15 @@  define Device/zbt-wg3526-32M
 	kmod-usb3 kmod-usb-ledtrig-usbport wpad-basic
 endef
 TARGET_DEVICES += zbt-wg3526-32M
+
+define Device/ap7621-001
+  DTS := AP7621-001
+  IMAGE_SIZE := $(ralink_default_fw_size_16M)
+  SUPPORTED_DEVICES += ap7621-001
+  DEVICE_TITLE := AsiaRF AP7621-001
+  DEVICE_PACKAGES := \
+	kmod-ata-core kmod-ata-ahci kmod-sdhci-mt7620 kmod-mt7603 kmod-mt76x2 \
+	kmod-usb3 kmod-usb-ledtrig-usbport
+endef
+TARGET_DEVICES += ap7621-001
+
diff --git a/target/linux/ramips/mt7621/config-4.14 b/target/linux/ramips/mt7621/config-4.14
index b279c69879..3e18fc162e 100644
--- a/target/linux/ramips/mt7621/config-4.14
+++ b/target/linux/ramips/mt7621/config-4.14
@@ -192,6 +192,7 @@  CONFIG_MTD_SPLIT_SEAMA_FW=y
 CONFIG_MTD_SPLIT_TPLINK_FW=y
 CONFIG_MTD_SPLIT_TRX_FW=y
 CONFIG_MTD_SPLIT_UIMAGE_FW=y
+CONFIG_MTD_SPLIT_FIRMWARE=y
 CONFIG_MTD_UBI=y
 CONFIG_MTD_UBI_BEB_LIMIT=20
 CONFIG_MTD_UBI_BLOCK=y