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

Daniel Danzberger daniel at dd-wrt.com
Mon Jun 24 07:13:54 EDT 2019


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 at dd-wrt.com> wrote:
>>
>> Signed-off-by: Daniel Danzberger <daniel at 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 at 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 at 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 at 0 {
>> +               device_type = "memory";
>> +               reg = <0x0 0x1c000000>, <0x20000000 0x4000000>;
>> +       };
>> +
>> +       chosen {
>> +               bootargs = "console=ttyS0,57600";
>> +       };
>> +
>> +       palmbus: palmbus at 1E000000 {
>> +               i2c at 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 at 0 {
> 
> This one could be renamed to "flash at 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 at 0 {
>> +                        label = "u-boot";
>> +                        reg = <0x0 0x30000>;
>> +                        read-only;
>> +                };
>> +
>> +//              partition at 30000 {
>> +//                      label = "u-boot-env";
>> +//                      reg = <0x30000 0x10000>;
>> +//              };
> 
> These comment lines should be dropped.
> 
>> +
>> +                partition at 30000 {
>> +                        label = "u-boot-env";
>> +                        reg = <0x30000 0x2000>;
>> +                };
>> +
>> +                partition at 32000 {
>> +                        label = "2860";
>> +                        reg = <0x32000 0x4000>;
>> +                };
>> +
>> +                partition at 36000 {
>> +                        label = "rtdev";
>> +                        reg = <0x36000 0x2000>;
>> +                };
>> +
>> +                partition at 38000 {
>> +                        label = "Reserve";
>> +                        reg = <0x38000 0x8000>;
>> +                };
>> +
>> +                factory: partition at 40000 {
>> +                        label = "factory";
>> +                        reg = <0x40000 0x10000>;
>> +                        read-only;
>> +                };
>> +
>> +                firmware: partition at 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 at ff0000 {
>> +                        label = "nvram";
>> +                        reg = <0xff0000 0x10000>;
>> +                };
>> +        };
>> +};
>> +
>> +&pcie {
>> +       status = "okay";
>> +
>> +       pcie0 {
>> +               wifi at 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 at 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
> 

-- 
Regards

Daniel Danzberger
embeDD GmbH, Alter Postplatz 2, CH-6370 Stans

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list