51

Odp: Oolite-7620a

No masz przecież ttyS1. Co chcesz więcej?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

52

Odp: Oolite-7620a

A pinmux ustawiony by piny uarta nie byly gpio?

Mam i używam: Fujitsu Futro S720, Netgear R6220, Unielec U7621-06, TP-Linki 1043 V1, V2, Linksysy EA7500v2, AeroHive AP350, Linksys EA8500, ZTE MF286d.
Mam: D-Linki DWR-921, DWR-118, DWR-116, TP-Link WDR-4900 v1, Checkpoint L-50, Linksysy 1900ACS, LB-Link BL-W1200,

53 (edytowany przez marcinwijata 2021-02-05 23:08:27)

Odp: Oolite-7620a

Faktycznie linie mogły nie być podłączone do właściwego "peryferium" w tym przypadku UART. W dokumentacji znalazłem, że są takie opcje:
https://drive.google.com/file/d/1VzR41j … sp=sharing
Podpowiedz poproszę jak do tego podejść

54

Odp: Oolite-7620a

Sekcja pinmux, sprawdź czy czy wypisana dana sekcja jako gpio. Możesz się pozbyć wszystkiego, wtedy nie będziesz miał po prostu ledów i przycisków.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

55

Odp: Oolite-7620a

Tak wyglądają oryginalne pliki bez moich zmian:
ZBT-WE826.dtsi

#include "mt7620a.dtsi"

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

/ {
    compatible = "zbtlink,zbt-we826", "ralink,mt7620a-soc";

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

    gpio-leds {
        compatible = "gpio-leds";
        power {
            label = "zbt-we826:green:power";
            gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>;
        };
        usb {
            label = "zbt-we826:green:usb";
            gpios = <&gpio1 15 GPIO_ACTIVE_HIGH>;
        };
        air {
            label = "zbt-we826:green:wifi";
            gpios = <&gpio3 0 GPIO_ACTIVE_LOW>;
        };
    };

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

&gpio0 {
    status = "okay";
};

&gpio1 {
    status = "okay";
};

&gpio3 {
    status = "okay";
};

&sdhci {
    status = "okay";
};

&ehci {
    status = "okay";
};

&ohci {
    status = "okay";
};

&ethernet {
    mtd-mac-address = <&factory 0x4>;
    mediatek,portmap = "wllll";
};

&wmac {
    ralink,mtd-eeprom = <&factory 0>;
};

&pinctrl {
    state_default: pinctrl0 {
        default {
            ralink,group = "i2c", "uartf", "wled", "spi refclk", "pa";
            ralink,function = "gpio";
        };
    };
};

&pcie {
    status = "okay";
};

ZBT-WE826-32M.dts

/dts-v1/;

#include "ZBT-WE826.dtsi"

/ {
    compatible = "zbtlink,zbt-we826-32m", "zbtlink,zbt-we826", "ralink,mt7620a-soc";
    model = "ZBT-WE826 (32M)";
};

&spi0 {
    status = "okay";

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

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

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

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

        firmware: partition@50000 {
            label = "firmware";
            reg = <0x50000 0x1fb0000>;
        };
    };
};

56

Odp: Oolite-7620a

Tak  być powinno:
ZBT-WE826.dtsi

#include "mt7620a.dtsi"

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

/ {
    compatible = "zbtlink,zbt-we826", "ralink,mt7620a-soc";

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

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

&gpio0 {
    status = "okay";
};

&gpio1 {
    status = "okay";
};

&gpio3 {
    status = "okay";
};

&sdhci {
    status = "okay";
};

&uart{
    status = "okay";
};

&ehci {
    status = "okay";
};

&ohci {
    status = "okay";
};

&ethernet {
    mtd-mac-address = <&factory 0x4>;
    mediatek,portmap = "wllll";
};

&wmac {
    ralink,mtd-eeprom = <&factory 0>;
};

&pinctrl {
    state_default: pinctrl0 {
        default {
            ralink,group = "i2c", "wled", "spi refclk", "pa";
            ralink,function = "gpio";
        };
    };
};

&pcie {
    status = "okay";
};
Mam i używam: Fujitsu Futro S720, Netgear R6220, Unielec U7621-06, TP-Linki 1043 V1, V2, Linksysy EA7500v2, AeroHive AP350, Linksys EA8500, ZTE MF286d.
Mam: D-Linki DWR-921, DWR-118, DWR-116, TP-Link WDR-4900 v1, Checkpoint L-50, Linksysy 1900ACS, LB-Link BL-W1200,

57 (edytowany przez marcinwijata 2021-02-12 09:39:18)

Odp: Oolite-7620a

UART ttyS1 ruszył, dodaliśmy jeszcze nasze modyfikacje i działa. Uwaga: przy testach z minicomem trzeba wyłączyć HW flow control w minicom

#include "mt7620a.dtsi"

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

/ {
    compatible = "zbtlink,zbt-we826", "ralink,mt7620a-soc";

    aliases {
        led-boot = &led_power;
        led-failsafe = &led_power;
        led-running = &led_power;
        led-upgrade = &led_power;
        serial1 = &uart;
    };

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

    leds {
        compatible = "gpio-leds";
        led_power: power {
            label = "zbt-we826:green:power";
            gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>;
        };
        usb {
            label = "zbt-we826:green:usb";
            gpios = <&gpio1 15 GPIO_ACTIVE_HIGH>;
            trigger-sources = <&ohci_port1>, <&ehci_port1>;
            linux,default-trigger = "usbport";
        };
        air {
            label = "zbt-we826:green:wifi";
            gpios = <&gpio3 0 GPIO_ACTIVE_LOW>;
        };
    };

    keys {
        compatible = "gpio-keys-polled";
        poll-interval = <20>;
        reset {
            label = "reset";
            gpios = <&gpio0 1 GPIO_ACTIVE_LOW>;
            linux,code = <KEY_RESTART>;
        };
    };
};

&gpio0 {
    status = "okay";
};

&gpio1 {
    status = "okay";
};

&gpio3 {
    status = "okay";
};

&sdhci {
    status = "okay";
};

&ehci {
    status = "okay";
};

&ohci {
    status = "okay";
};

&ethernet {
    mtd-mac-address = <&factory 0x4>;
    mediatek,portmap = "wllll";
};

&wmac {
    ralink,mtd-eeprom = <&factory 0>;
};

&pinctrl {
    state_default: pinctrl0 {
        default {
            ralink,group = "i2c", "wled", "spi refclk", "pa";
            ralink,function = "gpio";
        };
    };
};

&pcie {
    status = "okay";
};

58 (edytowany przez marcinwijata 2021-02-12 09:50:38)

Odp: Oolite-7620a

Teraz działamy przy I2C i mamy kolejną zagwozdkę. Niewłaściwie działa komenda:

i2cdetect -y 0

Na magistrali nie ma nic podłączone, są pull-upy a momo to mamy coś takiego:

root@OpenWrt:~# i2cdetect -y 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
10: 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f
20: 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f
30: -- -- -- -- -- -- -- -- 38 39 3a 3b 3c 3d 3e 3f
40: 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f
70: 70 71 72 73 74 75 76 77

Nie ma nigdzie zwarcia do masy, do zasilania.  Analiza oscylogramów daj takie wyniki, że:
z jakiegoś powodu w zakresie adresów 02-2F, 38-4F, 60-77 mamy stan niski po adresie podawanym przez hosta i wykrywa to jako ACK, a w zakresie adresów: 30-37,50--5F jest wszystko ok
Szczegóły:
https://drive.google.com/file/d/1jibmBT … sp=sharing

59

Odp: Oolite-7620a

Usuń z &pinctrl wpis powodujący, że i2c jest gpio.

Mam i używam: Fujitsu Futro S720, Netgear R6220, Unielec U7621-06, TP-Linki 1043 V1, V2, Linksysy EA7500v2, AeroHive AP350, Linksys EA8500, ZTE MF286d.
Mam: D-Linki DWR-921, DWR-118, DWR-116, TP-Link WDR-4900 v1, Checkpoint L-50, Linksysy 1900ACS, LB-Link BL-W1200,

60

Odp: Oolite-7620a

Na obrazie na którym testujemy, ta zmiana jest już zastosowana. Wrzucam niżej pliki dts i dtsi

ZBT-WE826.dtsi

#include "mt7620a.dtsi"

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

/ {
    compatible = "zbtlink,zbt-we826", "ralink,mt7620a-soc";

    aliases {
        led-boot = &led_power;
        led-failsafe = &led_power;
        led-running = &led_power;
        led-upgrade = &led_power;
        serial1 = &uart;
    };

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

    leds {
        compatible = "gpio-leds";
        led_power: power {
            label = "zbt-we826:green:power";
            gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>;
        };
        usb {
            label = "zbt-we826:green:usb";
            gpios = <&gpio1 15 GPIO_ACTIVE_HIGH>;
            trigger-sources = <&ohci_port1>, <&ehci_port1>;
            linux,default-trigger = "usbport";
        };
        air {
            label = "zbt-we826:green:wifi";
            gpios = <&gpio3 0 GPIO_ACTIVE_LOW>;
        };
    };

    keys {
        compatible = "gpio-keys-polled";
        poll-interval = <20>;
        reset {
            label = "reset";
            gpios = <&gpio0 1 GPIO_ACTIVE_LOW>;
            linux,code = <KEY_RESTART>;
        };
    };
};

&gpio0 {
    status = "okay";
};

&gpio1 {
    status = "okay";
};

&gpio3 {
    status = "okay";
};

&sdhci {
    status = "okay";
};

&ehci {
    status = "okay";
};

&ohci {
    status = "okay";
};

&ethernet {
    mtd-mac-address = <&factory 0x4>;
    mediatek,portmap = "wllll";
};

&wmac {
    ralink,mtd-eeprom = <&factory 0>;
};

&pinctrl {
    state_default: pinctrl0 {
        default {
            ralink,group = "wled", "spi refclk", "pa";
            ralink,function = "gpio";
        };
    };
};

&pcie {
    status = "okay";
};

ZBT-WE826-32M.dts

/dts-v1/;

#include "ZBT-WE826.dtsi"

/ {
    compatible = "zbtlink,zbt-we826-32m", "zbtlink,zbt-we826", "ralink,mt7620a-soc";
    model = "ZBT-WE826 (32M)";
};

&uart {
    status = "okay";
    pinctrl-names = "default";
    pinctrl-0 = <&uartf_gpio_pins>;
};

&i2c {
    status = "okay";
};

&spi0 {
    status = "okay";

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

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

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

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

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

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

61

Odp: Oolite-7620a

To sprawdź dokładnie na płytce czy piny od i2c się gdzieś dodatkowo podłączone.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

62 (edytowany przez marcinwijata 2021-02-12 12:02:31)

Odp: Oolite-7620a

Płytka była przejrzana, nie widać nic takiego. Pikanterii sprawie dodaje fakt że robienie dumpa z RTC się udaje i widać gdy zrobię kilka pod rząd, że zmieniają się sekundy ( RTC:MCP79410)
https://drive.google.com/file/d/13mphdp … sp=sharing

root@OpenWrt:~# i2cdump -y 0 0x6F
No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: a3 57 23 3d 11 02 21 80 00 00 16 45 10 71 28 10    ?W#=??!?..?E?q(?
10: 01 00 00 00 01 00 00 01 48 21 26 d0 00 22 26 d0    ?...?..?H!&?."&?
20: ed 56 16 92 4c 40 b6 00 19 f1 00 ab 50 46 08 d0    ?V??L@?.??.?PF??
30: 22 f1 05 12 48 ba 00 70 95 10 0a 8a 08 e0 c0 04    "???H?.p????????
40: 73 ac dc 36 2c c2 3d 46 14 04 26 c7 0b a1 0e 45    s??6,?=F??&????E
50: 59 ec 08 84 62 c5 a2 01 11 21 ac 80 00 1e 09 44    Y???b????!??.??D
60: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
70: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
80: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
90: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
a0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
b0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
c0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
d0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
e0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
f0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX

A to jest z EERPOM MCP79410

root@OpenWrt:~# i2cdump -y 0 0x57
No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
80: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
90: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
a0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
b0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
c0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
d0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
e0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
f0: ff ff ff ff ff ff ff ff XX XX XX XX XX XX XX 00    ........XXXXXXX.

Na  uwagę zasługuje fakt, że widać to urządzenie jako jedno z wielu ( adr:57h).

root@OpenWrt:~# i2cdetect -y 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
10: 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f
20: 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f
30: -- -- -- -- -- -- -- -- 38 39 3a 3b 3c 3d 3e 3f
40: 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f
50: -- -- -- -- -- -- -- 57 -- -- -- -- -- -- -- --
60: 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f
70: 70 71 72 73 74 75 76 77