176

Odp: ZTE MF18A

Bo sterownik mediateka nie osobnych opcji do DFS. ustaw kraj na jakiś bez DFSu, chyba indonesia nie ma (ID)

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

177 (edytowany przez Leo-PL 2023-01-02 00:53:00)

Odp: ZTE MF18A

MiG25 napisał/a:
Leo-PL napisał/a:

- czy zmiana w 'target/linux/ipq40xx/base-files/etc/board.d/03_gpio_switches' była przetestowana, a dokładniej - czy GPIO się zgadza? Ten router nie ma modemu, ale ciągle może mieć OTA update, jak znam tego producenta, więc ta funkcja ciągle jest przydatna.

Powiedz, co i jak przetestować ? Bo ja nie wnikałem do czego ten GPIO 421 może być , i co się stanie jak go nie będzie. Czego się spodziewać ?
EDIT: Pamiętam ,że coś walczyłeś ,że modem nie chciał ruszać bez jakiegoś GPIO , pewnie to ten. Tu nie ma nic takiego ( chyba ,że podpięte do ZWAVE albo ZIGBEE ) , skompilowałem bez tego i router działa normalnie... Coś z OTA też się wiązało ?

To możesz IMO bezpiecznie wywalić. Ewentualnie ustaw to GPIO jako wysokie i spróbuj wyłączyć router fizycznie, przełącznikiem - powinien pozostać włączony. Ewentualnie sprawdź, czy coś będzie w /sys/kernel/debug/gpio na stocku, tam ja i Królik znaleźliśmy tą "wajchę".

MiG25 napisał/a:
Leo-PL napisał/a:

- Zrzuciłbyś dane spod 0x5000 z partycji ART, albo po prostu całą partycję? Intuicja mi podpowiada, że ten router też występuje w dwóch wariantach, jak MF289F, więc może warto byłoby je przybindować do "wifi1".

Pod adresem w partycji ART jest pustka... Zrzut wszystkich partyci masz tu pod linkiem: https://www.mediafire.com/file/xe25ug78 … A.ZIP/file
ART to mtd9 wg orginału : https://eko.one.pl/forum/viewtopic.php? … 87#p277287
( Bo jest różnica , czy numery partycji patrzy się "z orginału" , czy już z Openwrt .
Różnica wynika z tego ,że na orginale najpierw numeruje flash później nand  , i rozkład ( z grubsza , bo jest jedna partycja więcej) jak w MF289F , a w openwrt nie umiem zeby bylo tak samo i najpierw numeruje nand , przez co rozkłąd wygląda bardziej na mf286d...
Co do wielu wersji ,to może tak być ,tyle że internet jest ubogi w ten model, nikt takiego czegoś nie sprzedaje oficjalnie na wolnym rynku czy coś , jedynie co to tylko w Polsce razem z modemem zewnętrznym MC7010 ( przez co nie znający się piszą , że MC7010 jest "anteną 5G" ).
Coś mi się zdaje ,że to niszowy w Polsce produkt jest z wtórnego rynku...

Ok, to może na razie zostać tak, jak jest - pewnie druga wersja, jeżeli istnieje ma wgrane te drugie dane kalibracyjne. Pewnie wyjdzie to w praniu.

MiG25 napisał/a:
Leo-PL napisał/a:

Jeszcze jedno: fajnie byłoby, gdybyś rozrysował pinout UARTa jako ASCII-art, tak jak ja to zrobiłem z MF286(A) czy z Ruckusami, zalinkowane zdjęcie w commit message może kiedyś spaść z rowerka.

Spróbuję to znaleść jak to masz i wyedytować PRa ( bo commita może bć ciężko..)

EDIT: Skopiowałem do PRa Twój tekst z MF286 ... Nie ma tam ASCIIarta... Myślę ,że opis , plus zdjęcie jako backup jest ok... Jest to poprawione w PR , w commicie wolałbym nie ruszać (bo jeszcze coś spier...)

Edit: ciągle widzę link, nie zapomniałeś wypchać commita?

178

Odp: ZTE MF18A

Wywaliłem (ale tylko u siebie) z 03_gpio_switches, i na razie niczego złego nie widzę. Spróbuję na HiGH ustawić i zobaczę wtedy.
Natomiast MF18A nie ma żadnych fizycznych wyłączników , ma tylko dwa przyciski WPS i RESET ,i to wszystko.
Zresztą MF289F też żadnego fizycznego wyłącznika nie ma , takie coś ma tylko MF286D.
W MF289F było to sprawdzane ?
A co się działo ,jak tego nie było ? Modem w ogóle nie startował ? Bo pamiętam na początku @Królik miał problemy ,że modemu nie mógł uruchomić bez jakiegoś GPIO ,ale czy to ten , czy jakiś inny ustawiony w DTSie...


A co do commita , to pisałem ,że boję się go ruszyć , bo zaraz coś popsuję , wyedytowałem tylko PRa (w PR jest skopiowany Twój opis).

Do commita musiałbym jakoś wrócić w konsoli , ale pewności nie mam jak.

179

Odp: ZTE MF18A

Najwyraźniej z MF289F ten przełącznik można też wyciąć, bo nie jest potrzebny.
To było tylko zabezpieczenie na czas firmware update (OTA) które powodowało, że użytkownik nie wyłączy go przełącznikiem w trakcie aktualizacji i z baterią na pokładzie - być może uniknie cegły.

Od modemu był inny GPIO, który odpowiadał za reset płytki przy pomocy zasilania przy reboocie - bez tego modem nie dogadywał się z uqmi po restarcie urządzenia bez odcięcia zasilania, ale to zdecydowanie nie wina samej płytki tylko niezaimplementowania pewnej logiki w uqmi.

Co do commita - to musisz go wyedytować, opis PRa nie wyląduje w historii gita. Po prostu "git commit --amend" - i tak musisz to zrobić by wyciąć ten GPIO switch. Upewnij się tylko, że nie masz w stagingu jakichś innych, niepożądanych zmian via 'git status'.

180

Odp: ZTE MF18A

No dobra , to teraz ,żęby usunąć ten plik z commita , wkonać mam te komendy :

git reset --soft HEAD^1
git rm --cached target/linux/ipq40xx/base-files/etc/board.d/03_gpio_switches

i wtedy będę mógł zrobić git commit --amend" ? bo nie chciałbym czegoś popsuć...

181

Odp: ZTE MF18A

wystarczy git reset HEAD~ target/linux/ipq40xx/base-files/etc/board.d/03_gpio_switches, potem commit --amend, potem checkout by przywrócić lokalny stan pliku. Jeżeli coś spieprzysz, zawsze masz reflog, z którego możesz przywrócić poprzednią wersję.

182

Odp: ZTE MF18A

Ok , chyba się udało smile Dzięki

183

Odp: ZTE MF18A

Wracając do modułów ,w tym PR  dodającą wsparcie dla Linksys WHW03 V2 gość dodał ten moduł , który jest na spidev (cokolwiek to jest): https://github.com/openwrt/openwrt/pull/11602

Tutaj w devicetree też widzę coś takiego jak spi@78b6000 a w nim zigbee@0...
Mógłbym się pokusi o różne testy tego , tylko pytanie co ten moduł może dać ?
Mam w domu w HA moduł Sonoffa , i steruje on kilkoma lampkami sufitowymi , kilka czujników temperatur... Wystarczyłoby ,żeby można było go sparować z tą siecią , i robił za router...
Tylko pytanie ,cz do tego celu ten moduł jest , czy to coś bardziej jako dedykowana bramka...

184

Odp: ZTE MF18A

Zdejmij ekarny z tego  MF18A i zobacz jaki jest chip. A później znajdź jego datasheet i zobacz za co on robi.

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

185

Odp: ZTE MF18A

Pod ekranem ZIGBEE jest chip EFR32 MG1P232GG....

186

Odp: ZTE MF18A

Jest kilka routerów które mają ten chip, ale żaden jakoś go nie obsługuje. Nikt nie zrobił wsparcia dla niego. Routery gl-inet go też mają, ale zbytnio nie widzę żeby go tez obsługiwali.

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

187 (edytowany przez Leo-PL 2023-01-04 18:25:36)

Odp: ZTE MF18A

IMO chyba nie zaszkodzi, jak dorzucisz tego spideva do EFR32 - przynajmniej będzie wystawiony do userspace i a nuż komuś będzie łatwiej go zreversować.
Na PR rzucę oko później wieczorem, jak wszystko będzie OK to dorzucę swoje Reviewed-by.

188 (edytowany przez MiG25 2023-01-05 09:08:19)

Odp: ZTE MF18A

Ok spróbuję na bazie tego Linksys WHW03 V2 dodać takie coś w dts:

&blsp1_spi2 {
    pinctrl-0 = <&spi_1_pins>;
    pinctrl-names = "default";
    status = "okay";

    cs-gpios = <&tlmm 45 GPIO_ACTIVE_HIGH>;

    zigbee@0 {
        #address-cells = <1>;
        #size-cells = <0>;

        compatible = "silabs,em3581";
        reg = <0>;
        spi-max-frequency = <12000000>;
    };
};

pin od cs-gpio może się zgadzać ,bo taki wyczytałem z devicetree , natomiast co wstawić  compatible ?
z pliku spi frequency odczytuję 01 6E 36 ... może chodzi o 24000000 ...
Najpiew chyba porócę do orginału i podłączę się do tego spidev ,żeby zobaczyć czym ten zigbee może odpowiedzieć ( i ,żeby odpowiedział tak samo ).
EDIT: Może ktoś wie , na jakie to komendy to może odpowiadać  ?:)

189 (edytowany przez Leo-PL 2023-01-05 12:53:11)

Odp: ZTE MF18A

Edit: inaczej, z gołych dumpów to dużo kombinowania by wyłuskać czytelny FDT - jeżeli masz załadowanego stocka, zrzuć plik /sys/firmware/fdt a potem przepuśc go przez "dtc -Idtb -Odts fdt > mf18a_stock.dts". Wtedy wyczytanie wartości będzie dużo łatwiejsze.

190 (edytowany przez MiG25 2023-01-05 13:28:50)

Odp: ZTE MF18A

Cały device tree i z niego ftd  mam:
https://www.mediafire.com/file/q91515sj … ar.gz/file
https://www.mediafire.com/file/swuauxtgiv0nnwd/ftd/file

Ale co to jest ten dtc...

EDIT: ok ,chyba device-tree-compiler , sprubuję..

191

Odp: ZTE MF18A

Kompiler devicetree...

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

192

Odp: ZTE MF18A

Cezary napisał/a:

Kompiler devicetree...

Dzięki smile

Wyszło z tego coś takiego

/dts-v1/;

/memreserve/    0x0000000086ff7000 0x0000000000007000;
/ {
    soc_version_minor = <0x00>;
    soc_version_major = <0x1000000>;
    cpu_type = <0x11010000>;
    flash_type = <0x7000000>;
    tz_version = <0x43524d2d 0x545a2e42 0x462e322e 0x372d3030 0x3132310a>;
    boot_version = [57 49 4e 43 45 2d 53 44 43 2d 31 30 31 2d 42 4f 4f 54 2e 42 46 2e 33 2e 31 2e 31 2d 30 30 31 32 36 0a];
    machid = <0x1000108>;
    #address-cells = <0x01>;
    #size-cells = <0x01>;
    model = "Qualcomm Technologies, Inc. IPQ4019/AP-DK04.1-C1";
    compatible = "qcom,ipq4019";
    interrupt-parent = <0x01>;
    qcom,board-id = <0x08 0x00>;
    qcom,msm-id = <0x110 0x00 0x111 0x00 0x11f 0x00 0x120 0x00>;
    qcom,pmic-id = <0x00 0x00 0x00 0x00>;

    chosen {
        bootargs = "ubi.mtd=rootfs root=mtd:ubi_rootfs rootfstype=squashfs rootwait";
        bootargs-append = " clk_ignore_unused";
    };

    aliases {
        spi0 = "/soc/spi@78b5000";
        spi1 = "/soc/spi@78b6000";
        i2c0 = "/soc/i2c@78b7000";
        i2c1 = "/soc/i2c@78b8000";
        ethernet0 = "/soc/edma/gmac0";
        ethernet1 = "/soc/edma/gmac1";
        mhi1 = "/soc/qcom,mhi@1";
    };

    memory {
        device_type = "memory";
        reg = <0x80000000 0x10000000>;
    };

    cpus {
        #address-cells = <0x01>;
        #size-cells = <0x00>;

        cpu@0 {
            device_type = "cpu";
            compatible = "arm,cortex-a7";
            enable-method = "qcom,arm-cortex-a7acc";
            qcom,acc = <0x02>;
            qcom,saw = <0x03>;
            reg = <0x00>;
            clocks = <0x04 0x09>;
            clock-frequency = <0x00>;
            operating-points = <0xbb80 0x10c8e0 0x30d40 0x10c8e0 0x7a120 0x10c8e0 0xa4100 0x10c8e0 0xaece0 0x10c8e0>;
            clock-latency = <0x186a0>;
        };

        cpu@1 {
            device_type = "cpu";
            compatible = "arm,cortex-a7";
            enable-method = "qcom,arm-cortex-a7acc";
            qcom,acc = <0x05>;
            qcom,saw = <0x06>;
            reg = <0x01>;
            clocks = <0x04 0x09>;
            clock-frequency = <0x00>;
        };

        cpu@2 {
            device_type = "cpu";
            compatible = "arm,cortex-a7";
            enable-method = "qcom,arm-cortex-a7acc";
            qcom,acc = <0x07>;
            qcom,saw = <0x08>;
            reg = <0x02>;
            clocks = <0x04 0x09>;
            clock-frequency = <0x00>;
        };

        cpu@3 {
            device_type = "cpu";
            compatible = "arm,cortex-a7";
            enable-method = "qcom,arm-cortex-a7acc";
            qcom,acc = <0x09>;
            qcom,saw = <0x0a>;
            reg = <0x03>;
            clocks = <0x04 0x09>;
            clock-frequency = <0x00>;
        };
    };

    pmu {
        compatible = "arm,cortex-a7-pmu";
        interrupts = <0x01 0x07 0xf04>;
    };

    reserved-memory {
        #address-cells = <0x01>;
        #size-cells = <0x01>;
        ranges;

        rsvd1@87000000 {
            reg = <0x87000000 0x500000>;
            no-map;
        };

        wifi_dump@87500000 {
            reg = <0x87500000 0x600000>;
            no-map;
        };

        rsvd2@87B00000 {
            reg = <0x87b00000 0x500000>;
            no-map;
        };
    };

    clocks {

        gcc_sleep_clk_src {
            compatible = "fixed-clock";
            clock-frequency = <0x7d00>;
            #clock-cells = <0x00>;
            linux,phandle = <0x12>;
            phandle = <0x12>;
        };

        xo {
            compatible = "fixed-clock";
            clock-frequency = <0x2dc6c00>;
            #clock-cells = <0x00>;
        };
    };

    qseecom {
        compatible = "ipq40xx-qseecom";
        mem-start = <0x87b80000>;
        mem-size = <0x280000>;
    };

    firmware {

        scm {
            compatible = "qcom,scm-ipq40xx";
        };

        qfprom {
            compatible = "qcom,qfprom-sec";
            img-addr = <0x87500000>;
            img-size = <0x600000>;
        };
    };

    soc {
        #address-cells = <0x01>;
        #size-cells = <0x01>;
        ranges;
        compatible = "simple-bus";

        interrupt-controller@b000000 {
            compatible = "qcom,msm-qgic2";
            interrupt-controller;
            #interrupt-cells = <0x03>;
            reg = <0xb000000 0x1000 0xb002000 0x1000>;
            linux,phandle = <0x01>;
            phandle = <0x01>;
        };

        counter {
            compatible = "qcom,qca-gcnt";
            reg = <0x4a1000 0x04>;
        };

        clock-controller@1800000 {
            compatible = "qcom,gcc-ipq4019";
            #clock-cells = <0x01>;
            #reset-cells = <0x01>;
            reg = <0x1800000 0x60000>;
            linux,phandle = <0x04>;
            phandle = <0x04>;
        };

        pinctrl@0x01000000 {
            compatible = "qcom,ipq4019-pinctrl";
            reg = <0x1000000 0x300000>;
            gpio-controller;
            #gpio-cells = <0x02>;
            interrupt-controller;
            #interrupt-cells = <0x02>;
            interrupts = <0x00 0xd0 0x00>;
            linux,phandle = <0x0d>;
            phandle = <0x0d>;

            serial0_pinmux {
                linux,phandle = <0x10>;
                phandle = <0x10>;

                mux {
                    pins = "gpio16\0gpio17";
                    function = "blsp_uart0";
                    bias-disable;
                };
            };

            led0_pinmux {
                linux,phandle = <0x13>;
                phandle = <0x13>;

                mux_1 {
                    pins = "gpio36";
                    function = "led0";
                    bias-pull-down;
                };

                mux_2 {
                    pins = "gpio40";
                    function = "led4";
                    bias-pull-down;
                };
            };

            wifi1_pinmux {
                linux,phandle = <0x1a>;
                phandle = <0x1a>;

                mux_1 {
                    pins = "gpio37";
                    function = "wcss0_dbg16";
                    bias-pull-down;
                    drive-cap = <0x02>;
                };

                mux_2 {
                    pins = "gpio43";
                    function = "wifi_wci1";
                    bias-pull-down;
                    drive-cap = <0x02>;
                };

                mux_3 {
                    pins = "gpio52";
                    output-high;
                    function = "gpio";
                    bias-pull-up;
                    drive-cap = <0x02>;
                };

                mux_4 {
                    pins = "gpio61";
                    output-high;
                    function = "gpio";
                    bias-pull-down;
                };
            };

            serial1_pinmux {
                linux,phandle = <0x11>;
                phandle = <0x11>;

                mux {
                    pins = "gpio8\0gpio9";
                    function = "blsp_uart1";
                    bias-disable;
                };
            };

            spi_0_pinmux {
                linux,phandle = <0x0c>;
                phandle = <0x0c>;

                pinmux {
                    function = "blsp_spi0";
                    pins = "gpio13\0gpio14\0gpio15";
                    bias-disable;
                };

                pinmux_cs {
                    function = "gpio";
                    pins = "gpio12";
                    bias-disable;
                    output-high;
                };
            };

            spi_1_pinmux {
                linux,phandle = <0x0e>;
                phandle = <0x0e>;

                pinmux {
                    function = "blsp_spi1";
                    pins = "gpio44\0gpio46\0gpio47";
                    bias-disable;
                };

                pinmux_cs {
                    function = "gpio";
                    pins = "gpio45";
                    bias-disable;
                    output-high;
                };
            };

            i2c_0_pinmux {
                linux,phandle = <0x0f>;
                phandle = <0x0f>;

                mux {
                    pins = "gpio20\0gpio21";
                    function = "blsp_i2c0";
                    bias-disable;
                };
            };

            ts_0_pinmux {

                mux_1 {
                    pins = "gpio34";
                    output-high;
                };

                mux_2 {
                    pins = "gpio35";
                    input-enable;
                    bias-pull-up;
                };
            };

            mdio_pinmux {
                linux,phandle = <0x17>;
                phandle = <0x17>;

                mux_1 {
                    pins = "gpio6";
                    function = "mdio0";
                    bias-pull-up;
                };

                mux_2 {
                    pins = "gpio7";
                    function = "mdc";
                    bias-pull-up;
                };
            };

            zte_led_pinmux {
                linux,phandle = <0x1d>;
                phandle = <0x1d>;

                mux {
                    pins = "gpio48";
                    function = "gpio";
                    bias-disable;
                };
            };

            zte_gpiokey_pinmux {
                linux,phandle = <0x1c>;
                phandle = <0x1c>;

                mux {
                    pins = "gpio68";
                    function = "gpio";
                    drive-strength = <0x02>;
                    bias-disable;
                };
            };

            nand_pins {
                linux,phandle = <0x19>;
                phandle = <0x19>;

                mux_1 {
                    pins = "gpio52\0gpio53\0gpio54\0gpio55\0gpio56\0gpio62\0gpio63\0gpio69";
                    function = "qpic_pad";
                    bias-disable;
                };

                mux_2 {
                    pins = "gpio67";
                    function = "qpic_pad0";
                    bias-disable;
                };

                mux_3 {
                    pins = "gpio64";
                    function = "qpic_pad1";
                    bias-disable;
                };

                mux_4 {
                    pins = "gpio65";
                    function = "qpic_pad2";
                    bias-disable;
                };

                mux_5 {
                    pins = "gpio66";
                    function = "qpic_pad3";
                    bias-disable;
                };

                mux_6 {
                    pins = "gpio57";
                    function = "qpic_pad4";
                    bias-disable;
                };

                mux_7 {
                    pins = "gpio58";
                    function = "qpic_pad5";
                    bias-disable;
                };

                mux_8 {
                    pins = "gpio59";
                    function = "qpic_pad6";
                    bias-disable;
                };

                mux_9 {
                    pins = "gpio60";
                    function = "qpic_pad7";
                    bias-disable;
                };

                pullups {
                    pins = "gpio52\0gpio53\0gpio58\0gpio59";
                    bias-pull-up;
                };

                pulldowns {
                    pins = "gpio54\0gpio55\0gpio56\0gpio57\0gpio60\0gpio62\0gpio63\0gpio64\0gpio65\0gpio66\0gpio67\0gpio69";
                    bias-pull-down;
                };
            };
        };

        timer {
            compatible = "arm,armv7-timer";
            interrupts = <0x01 0x02 0xf08 0x01 0x03 0xf08 0x01 0x04 0xf08 0x01 0x01 0xf08>;
            clock-frequency = <0x2dc6c00>;
            always-on;
        };

        qca,tzlog {
            compatible = "qca,tzlog";
        };

        dma@7884000 {
            compatible = "qcom,bam-v1.7.0";
            reg = <0x7884000 0x23000>;
            interrupts = <0x00 0xee 0x00>;
            clocks = <0x04 0x15>;
            clock-names = "bam_clk";
            #dma-cells = <0x01>;
            qcom,ee = <0x00>;
            status = "ok";
            linux,phandle = <0x0b>;
            phandle = <0x0b>;
        };

        spi@78b5000 {
            compatible = "qcom,spi-qup-v2.2.1";
            reg = <0x78b5000 0x600>;
            interrupts = <0x00 0x5f 0x04>;
            clocks = <0x04 0x17 0x04 0x15>;
            clock-names = "core\0iface";
            #address-cells = <0x01>;
            #size-cells = <0x00>;
            dmas = <0x0b 0x05 0x0b 0x04>;
            dma-names = "rx\0tx";
            status = "ok";
            pinctrl-0 = <0x0c>;
            pinctrl-names = "default";
            cs-gpios = <0x0d 0x0c 0x00>;

            m25p80@0 {
                density = <0x1000000>;
                sector-size = <0x10000>;
                #address-cells = <0x01>;
                #size-cells = <0x01>;
                reg = <0x00>;
                compatible = "n25q128a11";
                linux,modalias = "m25p80\0n25q128a11";
                spi-max-frequency = <0x16e3600>;
                use-default-sizes;

                partition@0 {
                    label = "0:SBL1";
                    reg = <0x00 0x40000>;
                };

                partition@40000 {
                    label = "0:MIBIB";
                    reg = <0x40000 0x20000>;
                };

                partition@60000 {
                    label = "0:QSEE";
                    reg = <0x60000 0x60000>;
                };

                partition@c0000 {
                    label = "0:CDT";
                    reg = <0xc0000 0x10000>;
                };

                partition@d0000 {
                    label = "0:DDRPARAMS";
                    reg = <0xd0000 0x10000>;
                };

                partition@e0000 {
                    label = "0:APPSBLENV";
                    reg = <0xe0000 0x10000>;
                };

                partition@f0000 {
                    label = "0:APPSBL";
                    reg = <0xf0000 0xc0000>;
                };

                partition@1b0000 {
                    label = "0:reserved1";
                    reg = <0x1b0000 0x50000>;
                };
            };
        };

        spi@78b6000 {
            compatible = "qcom,spi-qup-v2.2.1";
            reg = <0x78b6000 0x600>;
            interrupts = <0x00 0x60 0x04>;
            clocks = <0x04 0x19 0x04 0x15>;
            clock-names = "core\0iface";
            #address-cells = <0x01>;
            #size-cells = <0x00>;
            dmas = <0x0b 0x07 0x0b 0x06>;
            dma-names = "rx\0tx";
            status = "ok";
            pinctrl-0 = <0x0e>;
            pinctrl-names = "default";
            cs-gpios = <0x0d 0x2d 0x00>;

            zigbee@0 {
                #address-cells = <0x01>;
                #size-cells = <0x01>;
                reg = <0x00>;
                compatible = "spidev,zigbee";
                linux,modalias = "zigbee";
                spi-max-frequency = <0x16e3600>;
            };
        };

        rng@0x00022000 {
            compatible = "qcom,prng";
            reg = <0x22000 0x140>;
            clocks = <0x04 0x2b>;
            clock-names = "core";
        };

        i2c@78b7000 {
            compatible = "qcom,i2c-qup-v2.2.1";
            #address-cells = <0x01>;
            #size-cells = <0x00>;
            reg = <0x78b7000 0x600>;
            interrupts = <0x00 0x61 0x04>;
            clocks = <0x04 0x15 0x04 0x16>;
            clock-names = "iface\0core";
            clock-frequency = <0x186a0>;
            qup-clock-frequency = <0x122ae10>;
            dmas = <0x0b 0x09 0x0b 0x08>;
            dma-names = "rx\0tx";
            status = "ok";
            pinctrl-0 = <0x0f>;
            pinctrl-names = "default";

            lcd_ts@40 {
                compatible = "qca,gsl1680_ts";
                reg = <0x40>;
                status = "disabled";
            };
        };

        i2c@78b8000 {
            compatible = "qcom,i2c-qup-v2.2.1";
            #address-cells = <0x01>;
            #size-cells = <0x00>;
            reg = <0x78b8000 0x600>;
            interrupts = <0x00 0x62 0x04>;
            clocks = <0x04 0x15 0x04 0x18>;
            clock-names = "iface\0core";
            clock-frequency = <0x186a0>;
            qup-clock-frequency = <0x122ae10>;
            dmas = <0x0b 0x0b 0x0b 0x0a>;
            dma-names = "rx\0tx";
            status = "disabled";
        };

        qcom,sps {
            compatible = "qcom,msm_sps_4k";
            qcom,device-type = <0x03>;
            qcom,pipe-attr-ee;
        };

        qcrypto@8e20000 {
            compatible = "qcom,qcrypto";
            reg = <0x8e20000 0x20000 0x8e04000 0x20000>;
            reg-names = "crypto-base\0crypto-bam-base";
            interrupts = <0x00 0xcf 0x00>;
            qcom,bam-pipe-pair = <0x01>;
            qcom,ce-hw-instance = <0x00>;
            qcom,ce-hw-shared = <0x01>;
            qcom,ce-device = <0x00>;
            qcom,ce-opp-freq = <0x7735940>;
            clocks = <0x04 0x23 0x04 0x22 0x04 0x21>;
            clock-names = "core_clk\0bus_clk\0iface_clk";
            status = "ok";
        };

        qcedev@8e20000 {
            compatible = "qcom,qcedev";
            reg = <0x8e20000 0x20000 0x8e04000 0x20000>;
            reg-names = "crypto-base\0crypto-bam-base";
            interrupts = <0x00 0xcf 0x00>;
            qcom,bam-pipe-pair = <0x01>;
            qcom,ce-hw-instance = <0x00>;
            qcom,ce-hw-shared = <0x01>;
            qcom,ce-device = <0x00>;
            qcom,ce-opp-freq = <0x7735940>;
            clocks = <0x04 0x23 0x04 0x22 0x04 0x21>;
            clock-names = "core_clk\0bus_clk\0iface_clk";
            status = "ok";
        };

        clock-controller@b088000 {
            compatible = "qcom,arm-cortex-a7acc";
            reg = <0xb088000 0x1000 0xb008000 0x1000>;
            linux,phandle = <0x02>;
            phandle = <0x02>;
        };

        clock-controller@b098000 {
            compatible = "qcom,arm-cortex-a7acc";
            reg = <0xb098000 0x1000 0xb008000 0x1000>;
            linux,phandle = <0x05>;
            phandle = <0x05>;
        };

        clock-controller@b0a8000 {
            compatible = "qcom,arm-cortex-a7acc";
            reg = <0xb0a8000 0x1000 0xb008000 0x1000>;
            linux,phandle = <0x07>;
            phandle = <0x07>;
        };

        clock-controller@b0b8000 {
            compatible = "qcom,arm-cortex-a7acc";
            reg = <0xb0b8000 0x1000 0xb008000 0x1000>;
            linux,phandle = <0x09>;
            phandle = <0x09>;
        };

        regulator@b089000 {
            compatible = "qcom,saw2";
            reg = <0x2089000 0x1000 0xb009000 0x1000>;
            regulator;
            linux,phandle = <0x03>;
            phandle = <0x03>;
        };

        regulator@b099000 {
            compatible = "qcom,saw2";
            reg = <0xb099000 0x1000 0xb009000 0x1000>;
            regulator;
            linux,phandle = <0x06>;
            phandle = <0x06>;
        };

        regulator@b0a9000 {
            compatible = "qcom,saw2";
            reg = <0xb0a9000 0x1000 0xb009000 0x1000>;
            regulator;
            linux,phandle = <0x08>;
            phandle = <0x08>;
        };

        regulator@b0b9000 {
            compatible = "qcom,saw2";
            reg = <0xb0b9000 0x1000 0xb009000 0x1000>;
            regulator;
            linux,phandle = <0x0a>;
            phandle = <0x0a>;
        };

        serial@78af000 {
            compatible = "qcom,msm-uartdm-v1.4\0qcom,msm-uartdm";
            reg = <0x78af000 0x200>;
            interrupts = <0x00 0x6b 0x00>;
            status = "ok";
            clocks = <0x04 0x1a 0x04 0x15>;
            clock-names = "core\0iface";
            tx-watermark = <0x00>;
            pinctrl-0 = <0x10>;
            pinctrl-names = "default";
        };

        serial@78b0000 {
            compatible = "qcom,msm-uartdm-v1.4\0qcom,msm-uartdm";
            reg = <0x78b0000 0x200>;
            interrupts = <0x00 0x6c 0x00>;
            status = "ok";
            clocks = <0x04 0x1b 0x04 0x15>;
            clock-names = "core\0iface";
            dmas = <0x0b 0x03 0x0b 0x02>;
            dma-names = "rx\0tx";
            pinctrl-0 = <0x11>;
            pinctrl-names = "default";
        };

        watchdog@b017000 {
            compatible = "qcom,kpss-wdt-ipq40xx";
            reg = <0xb017000 0x40 0x87b70000 0x10000>;
            reg-names = "kpss_wdt\0tlv";
            interrupt-names = "bark_irq";
            interrupts = <0x00 0x03 0x00>;
            clocks = <0x12>;
            timeout-sec = <0x0a>;
            wdt-max-timeout = <0x20>;
            status = "ok";
        };

        pci@40000000 {
            compatible = "qcom,pcie-ipq4019";
            reg = <0x40000000 0xf1d 0x40000f20 0xa8 0x80000 0x2000 0x40100000 0x1000>;
            reg-names = "dbi\0elbi\0parf\0config";
            device_type = "pci";
            linux,pci-domain = <0x00>;
            bus-range = <0x00 0xff>;
            num-lanes = <0x01>;
            #address-cells = <0x03>;
            #size-cells = <0x02>;
            ranges = <0x81000000 0x00 0x40200000 0x40200000 0x00 0x100000 0x82000000 0x00 0x48000000 0x48000000 0x00 0x10000000>;
            interrupts = <0x00 0x8d 0x00>;
            interrupt-names = "msi";
            #interrupt-cells = <0x01>;
            interrupt-map-mask = <0x00 0x00 0x00 0x07>;
            interrupt-map = <0x00 0x00 0x00 0x01 0x01 0x00 0x8e 0x04 0x00 0x00 0x00 0x02 0x01 0x00 0x8f 0x04 0x00 0x00 0x00 0x03 0x01 0x00 0x90 0x04 0x00 0x00 0x00 0x04 0x01 0x00 0x91 0x04>;
            clocks = <0x04 0x27 0x04 0x28 0x04 0x29>;
            clock-names = "ahb\0axi_m\0axi_s";
            resets = <0x04 0x1c 0x04 0x1b 0x04 0x1a 0x04 0x19 0x04 0x18 0x04 0x17 0x04 0x16 0x04 0x15 0x04 0x14 0x04 0x13 0x04 0x12 0x04 0x11>;
            reset-names = "axi_m\0axi_s\0pipe\0axi_m_vmid\0axi_s_xpu\0parf\0phy\0axi_m_sticky\0pipe_sticky\0pwr\0ahb\0phy_ahb";
            status = "ok";
            perst-gpio = <0x0d 0x26 0x01>;
        };

        pwm {
            compatible = "qca,ipq4019-pwm";
            clocks = <0x04 0x14>;
            clock-names = "core";
            pwm-base-index = <0x00>;
            used-pwm-indices = <0x01 0x01 0x01 0x01>;
            status = "disabled";
        };

        ledc@1937000 {
            compatible = "qca,ledc";
            reg = <0x1937000 0x20070>;
            reg-names = "ledc_base_addr";
            qcom,tcsr_ledc_values = <0x320193 0x14720800 0x20d 0x00 0x00 0xffffffff 0x00 0x07 0x7d0010 0x00 0x10482090 0x3fffdfc>;
            qcom,ledc_blink_indices_cnt = <0x00>;
            qcom,ledc_blink_indices = <0x00>;
            status = "ok";
            pinctrl-0 = <0x13>;
            pinctrl-names = "default";
        };

        restart@4ab000 {
            compatible = "qcom,pshold";
            reg = <0x4ab000 0x04>;
        };

        qca,scm_restart_reason {
            compatible = "qca,scm_restart_reason";
        };

        sdhci@7824000 {
            compatible = "qcom,sdhci-msm";
            reg = <0x7824900 0x11c 0x7824000 0x800>;
            reg-names = "hc_mem\0core_mem";
            interrupts = <0x00 0x7b 0x00 0x00 0x8a 0x00>;
            interrupt-names = "hc_irq\0pwr_irq";
            qcom,bus-width = <0x08>;
            qcom,max_clk = <0xb71b000>;
            clocks = <0x04 0x2f 0x04 0x2e>;
            clock-names = "core_clk\0iface_clk";
            qcom,large-address-bus;
            qcom,disable-aggressive-pm;
            status = "disabled";
        };

        clock-controller@7700038 {
            compatible = "qcom,adcc-ipq4019";
            #clock-cells = <0x01>;
            #reset-cells = <0x01>;
            reg = <0x7700038 0x1dc>;
            status = "disabled";
        };

        tcsr@194b000 {
            compatible = "ipq,tcsr";
            reg = <0x194b000 0x100>;
            ipq,usb-hsphy-mode-select = <0xe700e7>;
            status = "ok";
        };

        ess_tcsr@1953000 {
            compatible = "ipq,tcsr";
            reg = <0x1953000 0x1000>;
            ipq,ess-interface-select = <0x00>;
        };

        ssphy@0 {
            compatible = "qca,uni-ssphy";
            reg = <0x9a000 0x800>;
            reg-names = "phy_base";
            resets = <0x04 0x0c>;
            reset-names = "por_rst";
            qca,host = <0x01>;
            #phy-cells = <0x00>;
            status = "ok";
            linux,phandle = <0x15>;
            phandle = <0x15>;
        };

        hsphy@a6000 {
            compatible = "qca,baldur-usb-hsphy";
            reg = <0xa6000 0x40 0x8af8800 0x100>;
            reg-names = "phy_base\0qscratch_base";
            resets = <0x04 0x0d 0x04 0x0e>;
            reset-names = "por_rst\0srif_rst";
            qca,host = <0x01>;
            #phy-cells = <0x00>;
            status = "ok";
            linux,phandle = <0x14>;
            phandle = <0x14>;
        };

        hsphy@a8000 {
            compatible = "qca,baldur-usb-hsphy";
            reg = <0xa8000 0x40>;
            reg-names = "phy_base";
            resets = <0x04 0x0f 0x04 0x10>;
            reset-names = "por_rst\0srif_rst";
            qca,host = <0x01>;
            #phy-cells = <0x00>;
            status = "ok";
            linux,phandle = <0x16>;
            phandle = <0x16>;
        };

        usb3@8a00000 {
            compatible = "qcom,dwc3";
            #address-cells = <0x01>;
            #size-cells = <0x01>;
            ranges;
            reg = <0x8af8800 0x100>;
            reg-names = "qscratch_base";
            clocks = <0x04 0x38 0x04 0x39 0x04 0x3a>;
            clock-names = "master\0sleep\0mock_utmi";
            qca,host = <0x01>;
            status = "ok";

            dwc3@8a00000 {
                compatible = "snps,dwc3";
                reg = <0x8a00000 0xf8000>;
                interrupts = <0x00 0x84 0x00>;
                #phy-cells = <0x00>;
                phys = <0x14 0x15>;
                phy-names = "usb2-phy\0usb3-phy";
                tx-fifo-resize;
                dr_mode = "host";
                usb2-susphy-quirk;
                usb2-host-discon-quirk;
                usb2-host-discon-phy-misc-reg = <0x24>;
                usb2-host-discon-mask = <0x100>;
            };
        };

        usb2@6000000 {
            compatible = "qcom,dwc3";
            #address-cells = <0x01>;
            #size-cells = <0x01>;
            ranges;
            reg = <0x60f8800 0x100>;
            reg-names = "qscratch_base";
            clocks = <0x04 0x35 0x04 0x36 0x04 0x37>;
            clock-names = "master\0sleep\0mock_utmi";
            qca,host = <0x01>;
            status = "ok";

            dwc3@6000000 {
                compatible = "snps,dwc3";
                reg = <0x6000000 0xf8000>;
                interrupts = <0x00 0x88 0x00>;
                #phy-cells = <0x00>;
                phys = <0x16>;
                phy-names = "usb2-phy";
                tx-fifo-resize;
                dr_mode = "host";
                usb2-susphy-quirk;
                usb2-host-discon-quirk;
                usb2-host-discon-phy-misc-reg = <0x24>;
                usb2-host-discon-mask = <0x100>;
            };
        };

        dma@7984000 {
            compatible = "qcom,bam-v1.7.0";
            reg = <0x7984000 0x1a000>;
            interrupts = <0x00 0x65 0x00>;
            clocks = <0x04 0x2d>;
            clock-names = "bam_clk";
            #dma-cells = <0x01>;
            qcom,ee = <0x00>;
            status = "ok";
            linux,phandle = <0x18>;
            phandle = <0x18>;
        };

        ess-switch@c000000 {
            compatible = "qcom,ess-switch";
            reg = <0xc000000 0x80000>;
            switch_access_mode = "local bus";
            resets = <0x04 0x1d 0x04 0x4e 0x04 0x4f 0x04 0x50 0x04 0x51 0x04 0x52>;
            reset-names = "ess_rst\0ess_mac1_clk_dis\0ess_mac2_clk_dis\0ess_mac3_clk_dis\0ess_mac4_clk_dis\0ess_mac5_clk_dis";
            clocks = <0x04 0x24>;
            clock-names = "ess_clk";
            switch_cpu_bmp = <0x01>;
            switch_lan_bmp = <0x1e>;
            switch_wan_bmp = <0x20>;
            switch_mac_mode = <0x00>;
            switch_initvlas = <0x7c 0x54>;

            led_source@0 {
                led = <0x03>;
                source = <0x01>;
                mode = "normal";
                speed = "all";
                freq = "auto";
            };

            led_source@1 {
                led = <0x04>;
                source = <0x04>;
                mode = "normal";
                speed = "all";
                freq = "auto";
            };

            led_source@2 {
                led = <0x05>;
                source = <0x07>;
                mode = "normal";
                speed = "all";
                freq = "auto";
            };

            led_source@3 {
                led = <0x06>;
                source = <0x0a>;
                mode = "normal";
                speed = "all";
                freq = "auto";
            };

            led_source@4 {
                led = <0x07>;
                source = <0x0d>;
                mode = "normal";
                speed = "all";
                freq = "auto";
            };
        };

        ess-psgmii@98000 {
            compatible = "qcom,ess-psgmii";
            reg = <0x98000 0x800>;
            psgmii_access_mode = "local bus";
            resets = <0x04 0x4d>;
            reset-names = "psgmii_rst";
        };

        mdio@90000 {
            #address-cells = <0x01>;
            #size-cells = <0x01>;
            compatible = "qcom,ipq40xx-mdio";
            reg = <0x90000 0x64>;
            status = "ok";
            pinctrl-0 = <0x17>;
            pinctrl-names = "default";
            phy-reset-gpio = <0x0d 0x2f 0x00>;
            bias-disable;

            ethernet-phy@0 {
                reg = <0x00>;
            };

            ethernet-phy@1 {
                reg = <0x01>;
            };

            ethernet-phy@2 {
                reg = <0x02>;
            };

            ethernet-phy@3 {
                reg = <0x03>;
            };

            ethernet-phy@4 {
                reg = <0x04>;
            };
        };

        qpic-nand@79b0000 {
            compatible = "qcom,ebi2-nandc-bam\0qcom,msm-nand";
            reg = <0x79b0000 0x1000>;
            #address-cells = <0x01>;
            #size-cells = <0x00>;
            clocks = <0x04 0x2d 0x04 0x2c>;
            clock-names = "core\0aon";
            dmas = <0x18 0x00 0x18 0x01 0x18 0x02>;
            dma-names = "tx\0rx\0cmd";
            status = "ok";
            pinctrl-0 = <0x19>;
            pinctrl-names = "default";

            nandcs@0 {
                compatible = "qcom,nandcs";
                reg = <0x00>;
                #address-cells = <0x01>;
                #size-cells = <0x01>;
                nand-ecc-strength = <0x04>;
                nand-ecc-step-size = <0x200>;
                nand-bus-width = <0x08>;

                partition@0 {
                    label = "fota-flag";
                    reg = <0x00 0xa0000>;
                };

                partition@a0000 {
                    label = "0:ART";
                    reg = <0xa0000 0x80000>;
                };

                partition@120000 {
                    label = "mac";
                    reg = <0x120000 0x80000>;
                };

                partition@1a0000 {
                    label = "IMEI";
                    reg = <0x1a0000 0xc0000>;
                };

                partition@260000 {
                    label = "cfg-param";
                    reg = <0x260000 0x400000>;
                };

                partition@660000 {
                    label = "log";
                    reg = <0x660000 0x400000>;
                };

                partition@a60000 {
                    label = "oops";
                    reg = <0xa60000 0xa0000>;
                };

                partition@b00000 {
                    label = "reserved3";
                    reg = <0xb00000 0x500000>;
                };

                partition@1000000 {
                    label = "web";
                    reg = <0x1000000 0x800000>;
                };

                partition@1800000 {
                    label = "rootfs";
                    reg = <0x1800000 0x1d00000>;
                };

                partition@3500000 {
                    label = "data";
                    reg = <0x3500000 0x1900000>;
                };

                partition@4e00000 {
                    label = "fota";
                    reg = <0x4e00000 0x2800000>;
                };

                partition@7600000 {
                    label = "iot-db";
                    reg = <0x7600000 0xa00000>;
                };
            };
        };

        tcsr@1949000 {
            compatible = "ipq,tcsr";
            reg = <0x1949000 0x100>;
            ipq,wifi_glb_cfg = <0x41000000>;
        };

        tcsr@1957000 {
            compatible = "ipq,tcsr";
            reg = <0x1957000 0x100>;
            ipq,wifi_noc_memtype_m0_m2 = <0x2222222>;
        };

        wifi@a000000 {
            compatible = "qca,wifi-ipq40xx";
            reg = <0xa000000 0x200000>;
            core-id = <0x00>;
            resets = <0x04 0x00 0x04 0x01 0x04 0x02 0x04 0x03 0x04 0x04 0x04 0x05>;
            reset-names = "wifi_cpu_init\0wifi_radio_srif\0wifi_radio_warm\0wifi_radio_cold\0wifi_core_warm\0wifi_core_cold";
            clocks = <0x04 0x3b 0x04 0x3c 0x04 0x3d>;
            clock-names = "wifi_wcss_cmd\0wifi_wcss_ref\0wifi_wcss_rtc";
            interrupts = <0x00 0x20 0x01 0x00 0x21 0x01 0x00 0x22 0x01 0x00 0x23 0x01 0x00 0x24 0x01 0x00 0x25 0x01 0x00 0x26 0x01 0x00 0x27 0x01 0x00 0x28 0x01 0x00 0x29 0x01 0x00 0x2a 0x01 0x00 0x2b 0x01 0x00 0x2c 0x01 0x00 0x2d 0x01 0x00 0x2e 0x01 0x00 0x2f 0x01 0x00 0xa8 0x00>;
            interrupt-names = "msi0\0msi1\0msi2\0msi3\0msi4\0msi5\0msi6\0msi7\0msi8\0msi9\0msi10\0msi11\0msi12\0msi13\0msi14\0msi15\0legacy";
            status = "ok";
            qca,msi_addr = <0xb006040>;
            qca,msi_base = <0x40>;
            pinctrl-0 = <0x1a>;
            pinctrl-names = "default";
            btcoex_support = <0x01>;
            wlan_prio_gpio = <0x34>;
            dual_band_switch_gpio = <0x3d>;
            wifi_led_num = <0x02>;
            wifi_led_source = <0x00>;
            qcom,mtd-name = "0:ART";
            qcom,cal-offset = <0x1000>;
            qcom,cal-len = <0x2f20>;
        };

        wifi@a800000 {
            compatible = "qca,wifi-ipq40xx";
            reg = <0xa800000 0x200000>;
            core-id = <0x01>;
            resets = <0x04 0x06 0x04 0x07 0x04 0x08 0x04 0x09 0x04 0x0a 0x04 0x0b>;
            reset-names = "wifi_cpu_init\0wifi_radio_srif\0wifi_radio_warm\0wifi_radio_cold\0wifi_core_warm\0wifi_core_cold";
            clocks = <0x04 0x3e 0x04 0x3f 0x04 0x40>;
            clock-names = "wifi_wcss_cmd\0wifi_wcss_ref\0wifi_wcss_rtc";
            interrupts = <0x00 0x30 0x01 0x00 0x31 0x01 0x00 0x32 0x01 0x00 0x33 0x01 0x00 0x34 0x01 0x00 0x35 0x01 0x00 0x36 0x01 0x00 0x37 0x01 0x00 0x38 0x01 0x00 0x39 0x01 0x00 0x3a 0x01 0x00 0x3b 0x01 0x00 0x3c 0x01 0x00 0x3d 0x01 0x00 0x3e 0x01 0x00 0x3f 0x01 0x00 0xa9 0x00>;
            interrupt-names = "msi0\0msi1\0msi2\0msi3\0msi4\0msi5\0msi6\0msi7\0msi8\0msi9\0msi10\0msi11\0msi12\0msi13\0msi14\0msi15\0legacy";
            status = "ok";
            qca,msi_addr = <0xb006040>;
            qca,msi_base = <0x50>;
            btcoex_support = <0x00>;
            wifi_led_num = <0x01>;
            wifi_led_source = <0x02>;
            qcom,mtd-name = "0:ART";
            qcom,cal-offset = <0x5000>;
            qcom,cal-len = <0x2f20>;
        };

        qcom,msm-imem@86074b0 {
            compatible = "qcom,msm-imem";
            reg = <0x86074b0 0xa50>;
            ranges = <0x00 0x86074b0 0xa50>;
            #address-cells = <0x01>;
            #size-cells = <0x01>;

            mem_dump_table@10 {
                compatible = "qcom,msm-imem-mem_dump_table";
                reg = <0x10 0x08>;
            };

            dload_type@18 {
                compatible = "qcom,msm-imem-dload-type";
                reg = <0x18 0x04>;
            };

            restart_reason@65c {
                compatible = "qcom,msm-imem-restart_reason";
                reg = <0x65c 0x04>;
            };

            boot_stats@6b0 {
                compatible = "qcom,msm-imem-boot_stats";
                reg = <0x6b0 0x20>;
            };

            pil@94c {
                compatible = "qcom,msm-imem-pil";
                reg = <0x94c 0xc8>;
            };
        };

        qcom_mdss_qpic@7980000 {
            compatible = "qcom,mdss_qpic";
            reg = <0x7980000 0x24000>;
            interrupts = <0x00 0x6a 0x00>;
            clocks = <0x04 0x2d 0x04 0x2c>;
            clock-names = "core\0aon";
            dmas = <0x18 0x06>;
            dma-names = "chan";
            status = "disabled";
        };

        qcom_mdss_qpic_panel {
            compatible = "qcom,mdss-qpic-panel";
            label = "qpic lcd panel";
            qcom,mdss-pan-res = <0x320 0x1e0>;
            qcom,mdss-pan-bpp = <0x12>;
            qcom,refresh_rate = <0x3c>;
            status = "disabled";
        };

        edma@c080000 {
            compatible = "qcom,ess-edma";
            reg = <0xc080000 0x8000>;
            qcom,page-mode = <0x00>;
            qcom,rx-head-buf-size = <0x604>;
            qcom,num-gmac = <0x02>;
            qcom,mdio-supported;
            interrupts = <0x00 0x41 0x01 0x00 0x42 0x01 0x00 0x43 0x01 0x00 0x44 0x01 0x00 0x45 0x01 0x00 0x46 0x01 0x00 0x47 0x01 0x00 0x48 0x01 0x00 0x49 0x01 0x00 0x4a 0x01 0x00 0x4b 0x01 0x00 0x4c 0x01 0x00 0x4d 0x01 0x00 0x4e 0x01 0x00 0x4f 0x01 0x00 0x50 0x01 0x00 0xf0 0x01 0x00 0xf1 0x01 0x00 0xf2 0x01 0x00 0xf3 0x01 0x00 0xf4 0x01 0x00 0xf5 0x01 0x00 0xf6 0x01 0x00 0xf7 0x01 0x00 0xf8 0x01 0x00 0xf9 0x01 0x00 0xfa 0x01 0x00 0xfb 0x01 0x00 0xfc 0x01 0x00 0xfd 0x01 0x00 0xfe 0x01 0x00 0xff 0x01>;

            gmac0 {
                local-mac-address = [00 00 00 00 00 00];
                qcom,phy-mdio-addr = <0x01>;
                qcom,poll-required = <0x01>;
                qcom,poll-required-dynamic = <0x01>;
                qcom,forced-speed = <0x3e8>;
                qcom,forced-duplex = <0x01>;
                vlan-tag = <0x02 0x04>;
            };

            gmac1 {
                local-mac-address = [00 00 00 00 00 00];
                qcom,poll-required-dynamic = <0x01>;
                vlan-tag = <0x01 0x08>;
            };
        };

        qcom,ipc_router {
            compatible = "qcom,ipc_router";
            qcom,node-id = <0x01>;
        };

        wifi3@f00000 {
            compatible = "qcom,cnss-qcn9000";
            qcom,mhi = <0x1b>;
            qcom,wlan-ramdump-dynamic = <0x400000>;
            status = "disabled";
        };

        qcom,mhi {
            compatible = "qcom,mhi";
        };

        qcom,mhi@1 {
            compatible = "qcom,mhi";
            qcom,pci-dev_id = <0x1100>;
            qcom,pci-domain = <0x00>;
            qcom,pci-bus = <0x01>;
            qcom,pci-slot = <0x00>;
            qcom,mhi-address-window = <0x00 0x80000000 0x01 0xffffffff>;
            qcom,mhi-ready-timeout = <0x927c0>;
            qcom,bhi-poll-timeout = <0x927c0>;
            qcom,bhi-alignment = <0x40000>;
            qcom,mhi-manage-boot;
            qcom,mhi-fw-image = "amss.bin";
            qcom,mhi-max-sbl = <0x40000>;
            qcom,mhi-sg-size = <0x80000>;
            mhi-chan-cfg-0 = <0x00 0x80 0x01 0x92>;
            mhi-chan-cfg-1 = <0x01 0x80 0x01 0xa2>;
            mhi-chan-cfg-4 = <0x04 0x80 0x01 0x92>;
            mhi-chan-cfg-5 = <0x05 0x80 0x01 0xa2>;
            mhi-chan-cfg-16 = <0x10 0x40 0x01 0x92>;
            mhi-chan-cfg-17 = <0x11 0x40 0x01 0xa2>;
            mhi-event-rings = <0x02>;
            mhi-event-cfg-0 = <0x0a 0x00 0x01 0x00 0x01 0x31>;
            mhi-event-cfg-1 = <0x80 0x01 0x01 0x00 0x01 0x31>;
            linux,phandle = <0x1b>;
            phandle = <0x1b>;
        };

        qcom,ipc_router_external_wlan_xprt {
            compatible = "qcom,ipc_router_mhi_xprt";
            qcom,mhi = <0x1b>;
            qcom,out-chan-id = <0x10>;
            qcom,in-chan-id = <0x11>;
            qcom,xprt-remote = "external-wlan";
            qcom,xprt-linkid = <0x01>;
            qcom,xprt-version = <0x03>;
        };

        qcom,diag@0 {
            compatible = "qcom,diag";
            qcom,mhi = <0x1b>;
            status = "ok";
        };

        gpio_keys {
            compatible = "gpio-keys";
            pinctrl-0 = <0x1c>;
            pinctrl-names = "default";

            button@1 {
                label = "wps";
                linux,code = <0x211>;
                gpios = <0x0d 0x44 0x01>;
                linux,input-type = <0x01>;
                debounce-interval = <0x64>;
            };

            button@2 {
                label = "reset";
                linux,code = <0x166>;
                gpios = <0x0d 0x12 0x01>;
                linux,input-type = <0x01>;
                debounce-interval = <0x64>;
            };
        };

        gpio_leds {
            pinctrl-0 = <0x1d>;
            pinctrl-names = "default";
            compatible = "gpio-leds";

            board_blue {
                label = "led:test-blue";
                gpios = <0x0d 0x0a 0x01>;
                default-state = "off";
            };

            wifi_blue {
                label = "led:wifi-blue";
                gpios = <0x0d 0x17 0x00>;
                default-state = "off";
            };

            wifi_red {
                label = "led:wifi-red";
                gpios = <0x0d 0x1a 0x00>;
                default-state = "off";
            };

            smart_red {
                label = "led:smart-red";
                gpios = <0x0d 0x19 0x00>;
                default-state = "off";
            };

            smart_blue {
                label = "led:smart-blue";
                gpios = <0x0d 0x16 0x00>;
                default-state = "off";
            };

            board-power {
                label = "led:power-blue";
                gpios = <0x0d 0x30 0x00>;
                default-state = "keep";
            };

            zwave-reset {
                label = "ctl:zwave-reset";
                gpios = <0x0d 0x0b 0x01>;
                default-state = "on";
            };
        };
    };
};

No i dużo warningów przy robieniu tego..

193

Odp: ZTE MF18A

Fakt, na spi jest, masz całego noda rozpisanego. To co widzisz w openwrt jest trochę mniejsze bo na początku są includowne domyślne plik, jak byś całość z openwrt zdekompilował to by wyszło coś podobnego. Dodawaj to spi, masz tam wszystkie wartości.

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

194

Odp: ZTE MF18A

Próbowałem to skopiować na żywca , no i stanęło na razie na tym ,że wyświetla się :

Thu Jan  5 14:28:52 2023 kern.warn kernel: [    1.502770] spi_qup: probe of 78b6000.spi failed with error -2

A tak to rozpisałem:
https://github.com/MiG-41/openwrt/blob/ … -mf18a.dts

Do tego wkompilowałem pakiety kmod-spi-gpio i kmod-spi-div ....

195 (edytowany przez Cezary 2023-01-06 06:24:26)

Odp: ZTE MF18A

&blsp1_spi2 {
    pinctrl-0 = <&spi_1_pins>;
    pinctrl-names = "default";
    status = "okay";

    spidev1: spi@0 {
        compatible = "siliconlabs,si3210";
        reg = <0>;
        spi-max-frequency = <24000000>;
    };
};

Tak definiują to w glinecie i w spidev jest tylko ten siliconlabs.

PS. I nie ma żadnego sterownika do zigbee na spi w kernelu...

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

196

Odp: ZTE MF18A

Jakieś urządzenie spidev1.0 się pojawiło, urchomiłem , spidev_test ,no i jakby odpowiedzi brak:

root@MF18A:~# spidev_test -D /dev/spidev1.0 -v
spi mode: 0x0
bits per word: 8
max speed: 500000 Hz (500 kHz)
TX | FF FF FF FF FF FF 40 00 00 00 00 95 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF F0 0D  |......@.........................|
RX | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................................|

197

Odp: ZTE MF18A

I chyba na tym możesz poprzestać. Nie wiem czy coś powinno odpowiadać, nie wiem czy nie trzeba to jakoś zainicjalizować, ale jak drivera nie ma to poza samym faktem istnienia urządzenia nic więcej z tym nie zrobisz. Chyba że gdzieś znajdziesz jakiś driver do tego.

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

198

Odp: ZTE MF18A

Gratulacje, weszło do wersji rozwojowej.

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

199

Odp: ZTE MF18A

No to gratulacje smile

200

Odp: ZTE MF18A

@MiG25 o stary mega szacun, miałem już kupować normalny router, ze względu na to że ten ZTE ma badziewny soft ale coś mnie tknęło, żeby poszperać jeszcze i tak trafiłem na ten wątek. Jeszcze raz dzięki za Twoją pracę! Adapter RS232 na usb tylko trzeba ogarnąć i jazda wink