riptidewave93 / LEDE-MR33

Bringup for the Cisco Meraki MR33 Access Point on LEDE
70 stars 7 forks source link

Bluetooth LE #8

Open jebuskrust opened 6 years ago

jebuskrust commented 6 years ago

Trying to get the Bluetooth working and having some issues.

Question:

1- Do I have to compile a custom toolchained build of openwrt to get bluetooth LE working based off of the commit on the README of the repo? Or is it currently part of original kernel that makes up snapshot of the installation and or latest snapshots on openwrt's website snapshot development builds?

I have the two present devices which appears that the device is actually there. /dev/ttyMSM0 (not it) /dev/ttyMSM1 (this is it)

Ive tried the following

I do not believe I have the diagnostics1 partition. I nuked all of them when going through the guide. This partition appears to have some shell scripts and an BD (backdoor enabled) hex file that's potentially needed. I know its not recoverable, however, Is it possible to obtain it from someone?

So now i've gone ahead and factory reset the unit, and i'm using the base image which was provided in the original flash process documentation.

https://github.com/riptidewave93/LEDE-MR33/commit/43ca7f34e0437ef9384fc38f1c4de6a843f1dd98#diff-ca06bdc419700627c349fe322c116910


Heres what dtc shows when checking the device tree information outputted in dts format.

`root@MR33:/# dtc -I fs -O dts /sys/firmware/devicetree/base Warning (unit_address_vs_reg): Node /soc/ad-hoc-bus has a reg or ranges property, but no unit name Warning (unit_address_vs_reg): Node /memory has a reg or ranges property, but no unit name /dts-v1/;

/ { compatible = "meraki,mr33", "qcom,ipq4019"; model = "Meraki MR33 Access Point"; interrupt-parent = <0x1>;

address-cells = <0x1>;

    #size-cells = <0x1>;

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

            smem@87e00000 {
                    no-map;
                    reg = <0x87e00000 0x80000>;
            };

            tz@87e80000 {
                    no-map;
                    reg = <0x87e80000 0x180000>;
            };
    };

    clocks {

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

            sleep_clk {
                    compatible = "fixed-clock";
                    #clock-cells = <0x0>;
                    phandle = <0x15>;
                    clock-frequency = <0x8000>;
                    linux,phandle = <0x15>;
            };
    };

    opp_table0 {
            compatible = "operating-points-v2";
            phandle = <0x6>;
            opp-shared;
            linux,phandle = <0x6>;

            opp-200000000 {
                    opp-hz = <0x0 0xbebc200>;
                    clock-latency-ns = <0x3e800>;
            };

            opp-716000000 {
                    opp-hz = <0x0 0x2aad4b00>;
                    clock-latency-ns = <0x3e800>;
            };

            opp-48000000 {
                    opp-hz = <0x0 0x2dc6c00>;
                    clock-latency-ns = <0x3e800>;
            };

            opp-500000000 {
                    opp-hz = <0x0 0x1dcd6500>;
                    clock-latency-ns = <0x3e800>;
            };
    };

    gpio-keys {
            compatible = "gpio-keys";

            reset {
                    gpios = <0xe 0x12 0x1>;
                    label = "reset";
                    linux,code = <0x198>;
            };
    };

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

            counter@4a1000 {
                    compatible = "qcom,qca-gcnt";
                    reg = <0x4a1000 0x4>;
            };

            hsphy@a8000 {
                    compatible = "qca,baldur-usb2-hsphy";
                    resets = <0x5 0xf 0x5 0x10>;
                    reg-names = "phy_base";
                    status = "disabled";
                    phandle = <0x1b>;
                    reg = <0xa8000 0x40>;
                    reset-names = "por_rst", "srif_rst";
                    linux,phandle = <0x1b>;
            };

            dma@7884000 {
                    #dma-cells = <0x1>;
                    compatible = "qcom,bam-v1.7.0";
                    clocks = <0x5 0x15>;
                    clock-names = "bam_clk";
                    status = "okay";
                    interrupts = <0x0 0xee 0x0>;
                    phandle = <0xf>;
                    qcom,ee = <0x0>;
                    reg = <0x7884000 0x23000>;
                    linux,phandle = <0xf>;
            };

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

            spi@78b6000 {
                    compatible = "qcom,spi-qup-v2.2.1";
                    clocks = <0x5 0x19 0x5 0x15>;
                    clock-names = "core", "iface";
                    status = "disabled";
                    #address-cells = <0x1>;
                    interrupts = <0x0 0x60 0x4>;
                    #size-cells = <0x0>;
                    dma-names = "rx", "tx";
                    reg = <0x78b6000 0x600>;
                    dmas = <0xf 0x7 0xf 0x6>;
            };

            dma@8e04000 {
                    #dma-cells = <0x1>;
                    compatible = "qcom,bam-v1.7.0";
                    clocks = <0x5 0x21>;
                    clock-names = "bam_clk";
                    status = "okay";
                    interrupts = <0x0 0xcf 0x0>;
                    phandle = <0x12>;
                    qcom,ee = <0x1>;
                    qcom,controlled-remotely;
                    reg = <0x8e04000 0x20000>;
                    linux,phandle = <0x12>;
            };

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

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

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

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

            clock-controller@b0b8000 {
                    compatible = "qcom,kpss-acc-v2";
                    phandle = <0xc>;
                    reg = <0xb0b8000 0x1000 0xb008000 0x1000>;
                    linux,phandle = <0xc>;
            };

            wifi@a800000 {
                    compatible = "qcom,ipq4019-wifi";
                    clocks = <0x5 0x3e 0x5 0x3f 0x5 0x40>;
                    resets = <0x5 0x6 0x5 0x7 0x5 0x8 0x5 0x9 0x5 0xa 0x5 0xb>;
                    clock-names = "wifi_wcss_cmd", "wifi_wcss_ref", "wifi_wcss_rtc";
                    status = "okay";
                    interrupts = <0x0 0x30 0x1 0x0 0x31 0x1 0x0 0x32 0x1 0x0 0x33 0x1 0x0 0x34 0x1 0x0 0x35 0x1 0x0 0x36 0x1 0x0 0x37 0x1 0x0 0x38 0x1 0x0 0x39 0x1 0x0 0x3a 0x1 0x0 0x3b 0x1 0x0 0x3c 0x1 0x0 0x3d 0x1 0x0 0x3e 0x1 0x0 0x3f 0x1 0x0 0xa9 0x0>;
                    reg = <0xa800000 0x200000>;
                    reset-names = "wifi_cpu_init", "wifi_radio_srif", "wifi_radio_warm", "wifi_radio_cold", "wifi_core_warm", "wifi_core_cold";
                    qcom,ath10k-calibration-variant = "Meraki-MR33";
                    interrupt-names = "msi0", "msi1", "msi2", "msi3", "msi4", "msi5", "msi6", "msi7", "msi8", "msi9", "msi10", "msi11", "msi12", "msi13", "msi14", "msi15", "legacy";
            };

            qpic-nand@79b0000 {
                    compatible = "qcom,ipq4019-nand";
                    clocks = <0x5 0x2d 0x5 0x2c>;
                    clock-names = "core", "aon";
                    status = "okay";
                    #address-cells = <0x1>;
                    #size-cells = <0x0>;
                    dma-names = "tx", "rx", "cmd";
                    reg = <0x79b0000 0x1000>;
                    pinctrl-0 = <0x17>;
                    dmas = <0x16 0x0 0x16 0x1 0x16 0x2>;
                    pinctrl-names = "default";

                    nand@0 {
                            nand-ecc-step-size = <0x200>;
                            nand-ecc-strength = <0x4>;
                            reg = <0x0>;
                            nand-bus-width = <0x8>;

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

                                    partition@0 {
                                            read-only;
                                            label = "sbl1";
                                            reg = <0x0 0x100000>;
                                    };

                                    partition@9 {
                                            read-only;
                                            label = "u-boot-backup";
                                            reg = <0x900000 0x200000>;
                                    };

                                    partition@11 {
                                            label = "ubi";
                                            reg = <0xc00000 0x7000000>;
                                    };

                                    partition@7 {
                                            read-only;
                                            label = "ddrparams";
                                            reg = <0x600000 0x80000>;
                                    };

                                    partition@5 {
                                            read-only;
                                            label = "cdt";
                                            reg = <0x500000 0x80000>;
                                    };

                                    partition@3 {
                                            read-only;
                                            label = "qsee";
                                            reg = <0x300000 0x100000>;
                                    };

                                    partition@1 {
                                            read-only;
                                            label = "mibib";
                                            reg = <0x100000 0x100000>;
                                    };

                                    partition@8 {
                                            read-only;
                                            label = "u-boot";
                                            reg = <0x700000 0x200000>;
                                    };

                                    partition@10 {
                                            read-only;
                                            label = "ART";
                                            reg = <0xb00000 0x80000>;
                                    };

                                    partition@6 {
                                            read-only;
                                            label = "cdt_alt";
                                            reg = <0x580000 0x80000>;
                                    };

                                    partition@4 {
                                            read-only;
                                            label = "qsee_alt";
                                            reg = <0x400000 0x100000>;
                                    };

                                    partition@2 {
                                            read-only;
                                            label = "bootconfig";
                                            reg = <0x200000 0x100000>;
                                    };
                            };
                    };
            };

            edma@c080000 {
                    qcom,page-mode = <0x0>;
                    compatible = "qcom,ess-edma";
                    qcom,num_gmac = <0x1>;
                    qcom,single-phy;
                    qcom,poll_required = <0x1>;
                    qcom,rx_head_buf_size = <0x604>;
                    status = "okay";
                    interrupts = <0x0 0x41 0x1 0x0 0x42 0x1 0x0 0x43 0x1 0x0 0x44 0x1 0x0 0x45 0x1 0x0 0x46 0x1 0x0 0x47 0x1 0x0 0x48 0x1 0x0 0x49 0x1 0x0 0x4a 0x1 0x0 0x4b 0x1 0x0 0x4c 0x1 0x0 0x4d 0x1 0x0 0x4e 0x1 0x0 0x4f 0x1 0x0 0x50 0x1 0x0 0xf0 0x1 0x0 0xf1 0x1 0x0 0xf2 0x1 0x0 0xf3 0x1 0x0 0xf4 0x1 0x0 0xf5 0x1 0x0 0xf6 0x1 0x0 0xf7 0x1 0x0 0xf8 0x1 0x0 0xf9 0x1 0x0 0xfa 0x1 0x0 0xfb 0x1 0x0 0xfc 0x1 0x0 0xfd 0x1 0x0 0xfe 0x1 0x0 0xff 0x1>;
                    qcom,mdio_supported;
                    reg = <0xc080000 0x8000>;
                    phy-mode = "rgmii-rxid";

                    gmac0 {
                            local-mac-address = [00 00 00 00 00 00];
                            qcom,poll_required = <0x1>;
                            qcom,phy_mdio_addr = <0x1>;
                            vlan_tag = <0x0 0x20>;
                    };

                    gmac1 {
                            qcom,forced_speed = <0x3e8>;
                            local-mac-address = [00 00 00 00 00 00];
                            qcom,poll_required = <0x1>;
                            qcom,phy_mdio_addr = <0x4>;
                            qcom,forced_duplex = <0x1>;
                            vlan_tag = <0x2 0x20>;
                    };
            };

            serial@78b0000 {
                    compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
                    clocks = <0x5 0x1b 0x5 0x15>;
                    clock-names = "core", "iface";
                    status = "okay";
                    interrupts = <0x0 0x6c 0x0>;
                    dma-names = "rx", "tx";
                    reg = <0x78b0000 0x200>;
                    pinctrl-0 = <0x14>;
                    dmas = <0xf 0x3 0xf 0x2>;
                    pinctrl-names = "default";

                    bluetooth {
                            compatible = "ti,cc2650";
                            enable-gpios = <0xe 0xc 0x1>;
                    };
            };

            i2c@78b8000 {
                    compatible = "qcom,i2c-qup-v2.2.1";
                    clocks = <0x5 0x15 0x5 0x18>;
                    clock-names = "iface", "core";
                    status = "okay";
                    #address-cells = <0x1>;
                    interrupts = <0x0 0x62 0x4>;
                    #size-cells = <0x0>;
                    dma-names = "rx", "tx";
                    reg = <0x78b8000 0x600>;
                    pinctrl-0 = <0x11>;
                    dmas = <0xf 0xb 0xf 0xa>;
                    pinctrl-names = "default";

                    lp5562@30 {
                            compatible = "ti,lp5562";
                            clock-mode = [02];
                            reg = <0x30>;
                            enable-gpio = <0xe 0x30 0x0>;

                            chan2 {
                                    chan-name = "mr33:blue:status";
                                    led-cur = [20];
                                    max-cur = [60];
                            };

                            chan0 {
                                    chan-name = "mr33:red:status";
                                    led-cur = [20];
                                    max-cur = [60];
                            };

                            chan3 {
                                    chan-name = "mr33:white:status";
                                    led-cur = [20];
                                    max-cur = [60];
                            };

                            chan1 {
                                    chan-name = "mr33:green:status";
                                    led-cur = [20];
                                    max-cur = [60];
                            };
                    };
            };

            clock-controller@b088000 {
                    compatible = "qcom,kpss-acc-v2";
                    phandle = <0x3>;
                    reg = <0xb088000 0x1000 0xb008000 0x1000>;
                    linux,phandle = <0x3>;
            };

            spi@78b5000 {
                    compatible = "qcom,spi-qup-v2.2.1";
                    clocks = <0x5 0x17 0x5 0x15>;
                    clock-names = "core", "iface";
                    status = "disabled";
                    #address-cells = <0x1>;
                    interrupts = <0x0 0x5f 0x4>;
                    #size-cells = <0x0>;
                    dma-names = "rx", "tx";
                    reg = <0x78b5000 0x600>;
                    dmas = <0xf 0x5 0xf 0x4>;
            };

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

            wifi@a000000 {
                    compatible = "qcom,ipq4019-wifi";
                    clocks = <0x5 0x3b 0x5 0x3c 0x5 0x3d>;
                    resets = <0x5 0x0 0x5 0x1 0x5 0x2 0x5 0x3 0x5 0x4 0x5 0x5>;
                    clock-names = "wifi_wcss_cmd", "wifi_wcss_ref", "wifi_wcss_rtc";
                    status = "okay";
                    interrupts = <0x0 0x20 0x1 0x0 0x21 0x1 0x0 0x22 0x1 0x0 0x23 0x1 0x0 0x24 0x1 0x0 0x25 0x1 0x0 0x26 0x1 0x0 0x27 0x1 0x0 0x28 0x1 0x0 0x29 0x1 0x0 0x2a 0x1 0x0 0x2b 0x1 0x0 0x2c 0x1 0x0 0x2d 0x1 0x0 0x2e 0x1 0x0 0x2f 0x1 0x0 0xa8 0x0>;
                    reg = <0xa000000 0x200000>;
                    reset-names = "wifi_cpu_init", "wifi_radio_srif", "wifi_radio_warm", "wifi_radio_cold", "wifi_core_warm", "wifi_core_cold";
                    qcom,ath10k-calibration-variant = "Meraki-MR33";
                    interrupt-names = "msi0", "msi1", "msi2", "msi3", "msi4", "msi5", "msi6", "msi7", "msi8", "msi9", "msi10", "msi11", "msi12", "msi13", "msi14", "msi15", "legacy";
            };

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

            pci@40000000 {
                    compatible = "qcom,pcie-ipq4019", "snps,dw-pcie";
                    clocks = <0x5 0x27 0x5 0x28 0x5 0x29>;
                    resets = <0x5 0x1c 0x5 0x1b 0x5 0x1a 0x5 0x19 0x5 0x18 0x5 0x17 0x5 0x16 0x5 0x15 0x5 0x14 0x5 0x13 0x5 0x12 0x5 0x11>;
                    reg-names = "dbi", "elbi", "parf", "config";
                    device_type = "pci";
                    num-lanes = <0x1>;
                    clock-names = "aux", "master_bus", "slave_bus";
                    interrupt-map-mask = <0x0 0x0 0x0 0x7>;
                    ranges = <0x81000000 0x0 0x40200000 0x40200000 0x0 0x100000 0x82000000 0x0 0x40300000 0x40300000 0x0 0x400000>;
                    perst-gpio = <0xe 0x26 0x1>;
                    status = "okay";
                    linux,pci-domain = <0x0>;
                    #interrupt-cells = <0x1>;
                    bus-range = <0x0 0xff>;
                    #address-cells = <0x3>;
                    interrupts = <0x0 0x8d 0x0>;
                    interrupt-map = <0x0 0x0 0x0 0x1 0x1 0x0 0x8e 0x4 0x0 0x0 0x0 0x2 0x1 0x0 0x8f 0x4 0x0 0x0 0x0 0x3 0x1 0x0 0x90 0x4 0x0 0x0 0x0 0x4 0x1 0x0 0x91 0x4>;
                    #size-cells = <0x2>;
                    wake-gpio = <0xe 0x32 0x1>;
                    reg = <0x40000000 0xf1d 0x40000f20 0xa8 0x80000 0x2000 0x40100000 0x1000>;
                    reset-names = "axi_m", "axi_s", "pipe", "axi_m_vmid", "axi_s_xpu", "parf", "phy", "axi_m_sticky", "pipe_sticky", "pwr", "ahb", "phy_ahb";
                    interrupt-names = "msi";
            };

            mdio@90000 {
                    compatible = "qcom,ipq4019-mdio";
                    status = "okay";
                    #address-cells = <0x1>;
                    #size-cells = <0x0>;
                    reg = <0x90000 0x64>;
                    pinctrl-0 = <0x18>;
                    pinctrl-names = "default";

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

            clock-controller@b098000 {
                    compatible = "qcom,kpss-acc-v2";
                    phandle = <0x8>;
                    reg = <0xb098000 0x1000 0xb008000 0x1000>;
                    linux,phandle = <0x8>;
            };

            crypto@8e3a000 {
                    compatible = "qcom,crypto-v5.1";
                    clocks = <0x5 0x21 0x5 0x22 0x5 0x23>;
                    clock-names = "iface", "bus", "core";
                    status = "okay";
                    dma-names = "rx", "tx";
                    reg = <0x8e3a000 0x6000>;
                    dmas = <0x12 0x2 0x12 0x3>;
            };

            i2c@78b7000 {
                    compatible = "qcom,i2c-qup-v2.2.1";
                    clocks = <0x5 0x15 0x5 0x16>;
                    clock-names = "iface", "core";
                    status = "okay";
                    #address-cells = <0x1>;
                    interrupts = <0x0 0x61 0x4>;
                    #size-cells = <0x0>;
                    dma-names = "rx", "tx";
                    reg = <0x78b7000 0x600>;
                    pinctrl-0 = <0x10>;
                    dmas = <0xf 0x9 0xf 0x8>;
                    pinctrl-names = "default";

                    at24@50 {
                            compatible = "atmel,24c64";
                            read-only;
                            pagesize = <0x20>;
                            reg = <0x50>;
                    };
            };

            usb2@60f8800 {
                    compatible = "qca,ipq4019-dwc3";
                    clocks = <0x5 0x35 0x5 0x36 0x5 0x37>;
                    clock-names = "master", "sleep", "mock_utmi";
                    ranges;
                    status = "disabled";
                    #address-cells = <0x1>;
                    #size-cells = <0x1>;
                    reg = <0x60f8800 0x100>;

                    dwc3@6000000 {
                            usb-phy = <0x1b>;
                            compatible = "snps,dwc3";
                            phy-names = "usb2-phy";
                            interrupts = <0x0 0x88 0x0>;
                            reg = <0x6000000 0xf8000>;
                            dr_mode = "host";
                    };
            };

            hsphy@a6000 {
                    compatible = "qca,baldur-usb3-hsphy";
                    resets = <0x5 0xd 0x5 0xe>;
                    reg-names = "phy_base";
                    status = "disabled";
                    phandle = <0x19>;
                    reg = <0xa6000 0x40>;
                    reset-names = "por_rst", "srif_rst";
                    linux,phandle = <0x19>;
            };

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

            regulator@b012000 {
                    compatible = "qcom,saw2";
                    phandle = <0x7>;
                    regulator;
                    reg = <0xb012000 0x1000>;
                    linux,phandle = <0x7>;
            };

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

            ess-psgmii@98000 {
                    compatible = "qcom,ess-psgmii";
                    status = "disabled";
                    psgmii_access_mode = "local bus";
                    reg = <0x98000 0x800>;
            };

            serial@78af000 {
                    compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
                    clocks = <0x5 0x1a 0x5 0x15>;
                    clock-names = "core", "iface";
                    status = "okay";
                    interrupts = <0x0 0x6b 0x0>;
                    dma-names = "rx", "tx";
                    reg = <0x78af000 0x200>;
                    pinctrl-0 = <0x13>;
                    dmas = <0xf 0x1 0xf 0x0>;
                    pinctrl-names = "default";
            };

            ess-switch@c000000 {
                    switch_lan_bmp = <0x0>;
                    compatible = "qcom,ess-switch";
                    clocks = <0x5 0x24>;
                    resets = <0x5 0x1d>;
                    clock-names = "ess_clk";
                    status = "disabled";
                    switch_mac_mode = <0x3>;
                    switch_cpu_bmp = <0x1>;
                    switch_access_mode = "local bus";
                    switch_initvlas = <0x7c 0x54>;
                    reg = <0xc000000 0x80000>;
                    reset-names = "ess_rst";
                    switch_wan_bmp = <0x10>;
            };

            usb3@8af8800 {
                    compatible = "qca,ipq4019-dwc3";
                    clocks = <0x5 0x38 0x5 0x39 0x5 0x3a>;
                    clock-names = "master", "sleep", "mock_utmi";
                    ranges;
                    status = "disabled";
                    #address-cells = <0x1>;
                    #size-cells = <0x1>;
                    reg = <0x8af8800 0x100>;

                    dwc3@8a00000 {
                            usb-phy = <0x19 0x1a>;
                            compatible = "snps,dwc3";
                            phy-names = "usb2-phy", "usb3-phy";
                            interrupts = <0x0 0x84 0x0>;
                            reg = <0x8a00000 0xf8000>;
                            dr_mode = "host";
                    };
            };

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

            pinctrl@1000000 {
                    compatible = "qcom,ipq4019-pinctrl";
                    gpio-controller;
                    gpio-ranges = <0xe 0x0 0x0 0x64>;
                    #interrupt-cells = <0x2>;
                    interrupts = <0x0 0xd0 0x0>;
                    phandle = <0xe>;
                    reg = <0x1000000 0x300000>;
                    #gpio-cells = <0x2>;
                    linux,phandle = <0xe>;
                    interrupt-controller;

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

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

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

                            pinmux {
                                    pins = "gpio20", "gpio21";
                                    function = "blsp_i2c0";
                            };

                            pinconf {
                                    pins = "gpio20", "gpio21";
                                    bias-disable;
                                    drive-strength = <0x10>;
                            };
                    };

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

                            pullups {
                                    pins = "gpio52", "gpio53", "gpio58", "gpio59";
                                    function = "qpic";
                                    bias-pull-up;
                            };

                            pulldowns {
                                    pins = "gpio54", "gpio55", "gpio56", "gpio57", "gpio60", "gpio61", "gpio62", "gpio63", "gpio64", "gpio65", "gpio66", "gpio67", "gpio68", "gpio69";
                                    function = "qpic";
                                    bias-pull-down;
                            };
                    };

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

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

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

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

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

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

                            pinmux {
                                    pins = "gpio34", "gpio35";
                                    function = "blsp_i2c1";
                            };

                            pinconf {
                                    pins = "gpio34", "gpio35";
                                    bias-disable;
                                    drive-strength = <0x10>;
                            };
                    };
            };

            dma@7984000 {
                    #dma-cells = <0x1>;
                    compatible = "qcom,bam-v1.7.0";
                    clocks = <0x5 0x2d>;
                    clock-names = "bam_clk";
                    status = "okay";
                    interrupts = <0x0 0x65 0x4>;
                    phandle = <0x16>;
                    qcom,ee = <0x0>;
                    reg = <0x7984000 0x1a000>;
                    linux,phandle = <0x16>;
            };

            ssphy@9a000 {
                    compatible = "qca,uni-ssphy";
                    resets = <0x5 0xc>;
                    reg-names = "phy_base";
                    status = "disabled";
                    phandle = <0x1a>;
                    reg = <0x9a000 0x800>;
                    reset-names = "por_rst";
                    linux,phandle = <0x1a>;
            };

            rng@22000 {
                    compatible = "qcom,prng";
                    clocks = <0x5 0x2b>;
                    clock-names = "core";
                    status = "disabled";
                    reg = <0x22000 0x140>;
            };

            watchdog@b017000 {
                    compatible = "qcom,kpss-wdt", "qcom,kpss-wdt-ipq4019";
                    clocks = <0x15>;
                    status = "okay";
                    reg = <0xb017000 0x40>;
                    timeout-sec = <0xa>;
            };

            ad-hoc-bus {
                    compatible = "qcom,msm-bus-device";
                    reg-names = "snoc-base", "pcnoc-base";
                    reg = <0x580000 0x14000 0x500000 0x11000>;

                    mas-adss-dma0 {
                            qcom,bus-dev = <0x1d>;
                            cell-id = <0x6f>;
                            label = "mas-adss-dma0";
                            qcom,mas-rpm-id = <0x84>;
                            qcom,blacklist = <0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43>;
                            qcom,connections = <0x45>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                    };

                    slv-srif {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0xc7>;
                            cell-id = <0x2d4>;
                            label = "slv-srif";
                            phandle = <0x2a>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x2a>;
                    };

                    fab-pcnoc {
                            clocks;
                            qcom,bypass-qos-prg;
                            cell-id = <0x1000>;
                            qcom,base-offset = <0x0>;
                            qcom,base-name = "pcnoc-base";
                            label = "fab-pcnoc";
                            phandle = <0x1d>;
                            qcom,bus-type = <0x1>;
                            qcom,fab-dev;
                            linux,phandle = <0x1d>;
                            qcom,qos-off = <0x1000>;
                    };

                    slv-wss1-apu-cfg {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0xdc>;
                            cell-id = <0x2e8>;
                            label = "slv-wss1-apu-cfg";
                            phandle = <0x22>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x22>;
                    };

                    pcnoc-s-9 {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0x7e>;
                            cell-id = <0x2728>;
                            label = "pcnoc-s-9";
                            qcom,mas-rpm-id = <0x61>;
                            phandle = <0x5d>;
                            qcom,connections = <0x22 0x41 0x31 0x2d>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x5d>;
                    };

                    slv-pcnoc-cfg {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0x45>;
                            cell-id = <0x281>;
                            label = "slv-pcnoc-cfg";
                            phandle = <0x27>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x27>;
                    };

                    mas-pcnoc-snoc {
                            qcom,bus-dev = <0x4a>;
                            cell-id = <0x271a>;
                            qcom,prio1 = <0x0>;
                            label = "mas-pcnoc-snoc";
                            qcom,mas-rpm-id = <0x1d>;
                            qcom,qos-mode = "fixed";
                            qcom,qport = <0x180>;
                            qcom,blacklist = <0x4c>;
                            qcom,connections = <0x47 0x48 0x4b>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            qcom,prio0 = <0x0>;
                    };

                    slv-fephy-cfg {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0xc6>;
                            cell-id = <0x2d3>;
                            label = "slv-fephy-cfg";
                            phandle = <0x21>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x21>;
                    };

                    slv-ddrc-mpu0-cfg {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0xca>;
                            cell-id = <0x2dd>;
                            label = "slv-ddrc-mpu0-cfg";
                            phandle = <0x24>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x24>;
                    };

                    mas-crypto {
                            qcom,bus-dev = <0x4a>;
                            cell-id = <0x2f>;
                            qcom,prio1 = <0x0>;
                            label = "mas-crypto";
                            qcom,mas-rpm-id = <0x17>;
                            qcom,qos-mode = "fixed";
                            qcom,qport = <0x5>;
                            qcom,blacklist = <0x4d 0x4e 0x52 0x49 0x53 0x51 0x4c>;
                            qcom,connections = <0x47 0x48 0x4b>;
                            qcom,buswidth = <0x8>;
                            qcom,ap-owned;
                            qcom,prio0 = <0x0>;
                    };

                    slv-srvc-snoc {
                            qcom,bus-dev = <0x4a>;
                            qcom,slv-rpm-id = <0xe6>;
                            cell-id = <0x2f2>;
                            label = "slv-srvc-snoc";
                            phandle = <0x4c>;
                            qcom,buswidth = <0x8>;
                            qcom,ap-owned;
                            linux,phandle = <0x4c>;
                    };

                    pcnoc-s-7 {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0x7c>;
                            cell-id = <0x2752>;
                            label = "pcnoc-s-7";
                            qcom,mas-rpm-id = <0x5f>;
                            phandle = <0x5b>;
                            qcom,connections = <0x28 0x3e 0x38>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x5b>;
                    };

                    slv-ess-cfg {
                            qcom,bus-dev = <0x4a>;
                            qcom,slv-rpm-id = <0xe5>;
                            cell-id = <0x2f1>;
                            label = "slv-ess-cfg";
                            phandle = <0x4e>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x4e>;
                    };

                    mas-ess {
                            qcom,bus-dev = <0x4a>;
                            cell-id = <0x78>;
                            qcom,prio1 = <0x0>;
                            label = "mas-ess";
                            qcom,mas-rpm-id = <0x8d>;
                            qcom,qos-mode = "fixed";
                            qcom,qport = <0x2c>;
                            qcom,blacklist = <0x4d 0x4e 0x52 0x49 0x53 0x4f 0x50 0x51 0x4c>;
                            qcom,connections = <0x47 0x4b>;
                            qcom,buswidth = <0x8>;
                            qcom,ap-owned;
                            qcom,prio0 = <0x0>;
                    };

                    mas-wss-0 {
                            qcom,bus-dev = <0x4a>;
                            cell-id = <0x76>;
                            qcom,prio1 = <0x0>;
                            label = "mas-wss-0";
                            qcom,mas-rpm-id = <0x8b>;
                            qcom,qos-mode = "fixed";
                            qcom,qport = <0x1a>;
                            qcom,blacklist = <0x4d 0x4e 0x49 0x4f 0x50 0x51 0x4c>;
                            qcom,connections = <0x47 0x4b>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            qcom,prio0 = <0x0>;
                    };

                    pcnoc-s-5 {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0xbd>;
                            cell-id = <0x273f>;
                            label = "pcnoc-s-5";
                            qcom,mas-rpm-id = <0x81>;
                            phandle = <0x59>;
                            qcom,connections = <0x39 0x21 0x1f 0x2a>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x59>;
                    };

                    mas-usb2-bam {
                            qcom,bus-dev = <0x1d>;
                            cell-id = <0x6e>;
                            qcom,prio1 = <0x1>;
                            label = "mas-usb2-bam";
                            qcom,mas-rpm-id = <0x83>;
                            qcom,qos-mode = "fixed";
                            qcom,qport = <0xf>;
                            qcom,blacklist = <0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43>;
                            qcom,connections = <0x44>;
                            qcom,buswidth = <0x8>;
                            qcom,ap-owned;
                            qcom,prio0 = <0x1>;
                    };

                    slv-qdss-stm {
                            qcom,bus-dev = <0x4a>;
                            qcom,slv-rpm-id = <0x1e>;
                            cell-id = <0x24c>;
                            label = "slv-qdss-stm";
                            phandle = <0x53>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x53>;
                    };

                    slv-wss0-vmidmt-cfg {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0xd9>;
                            cell-id = <0x2e5>;
                            label = "slv-wss0-vmidmt-cfg";
                            phandle = <0x31>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x31>;
                    };

                    pcnoc-int-0 {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0x72>;
                            cell-id = <0x271c>;
                            label = "pcnoc-int-0";
                            qcom,mas-rpm-id = <0x55>;
                            phandle = <0x46>;
                            qcom,connections = <0x55 0x56 0x57 0x58 0x59 0x5a 0x5b 0x5c 0x5d 0x5e>;
                            qcom,buswidth = <0x8>;
                            qcom,ap-owned;
                            linux,phandle = <0x46>;
                    };

                    slv-security {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0x31>;
                            cell-id = <0x26e>;
                            label = "slv-security";
                            phandle = <0x34>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x34>;
                    };

                    slv-pcnoc-snoc {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0x2d>;
                            cell-id = <0x271b>;
                            label = "slv-pcnoc-snoc";
                            phandle = <0x44>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x44>;
                    };

                    slv-prng-apu-cfg {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0xbe>;
                            cell-id = <0x2cc>;
                            label = "slv-prng-apu-cfg";
                            phandle = <0x32>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x32>;
                    };

                    mas-pcnoc-cfg {
                            qcom,bus-dev = <0x1d>;
                            cell-id = <0x58>;
                            label = "mas-pcnoc-cfg";
                            qcom,mas-rpm-id = <0x54>;
                            qcom,connections = <0x3f>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                    };

                    slv-sdcc-cfg {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0xd8>;
                            cell-id = <0x2e4>;
                            label = "slv-sdcc-cfg";
                            phandle = <0x42>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x42>;
                    };

                    pcnoc-s-3 {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0x79>;
                            cell-id = <0x2725>;
                            label = "pcnoc-s-3";
                            qcom,mas-rpm-id = <0x5c>;
                            phandle = <0x5e>;
                            qcom,connections = <0x2c 0x2f 0x43 0x40>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x5e>;
                    };

                    mas-pcie {
                            qcom,bus-dev = <0x4a>;
                            cell-id = <0x2d>;
                            qcom,prio1 = <0x0>;
                            label = "mas-pcie";
                            qcom,mas-rpm-id = <0x8e>;
                            qcom,qos-mode = "fixed";
                            qcom,qport = <0x6>;
                            qcom,blacklist = <0x4d 0x4e 0x49 0x53 0x4f 0x50 0x51 0x4c>;
                            qcom,connections = <0x47 0x4b>;
                            qcom,buswidth = <0x8>;
                            qcom,ap-owned;
                            qcom,prio0 = <0x0>;
                    };

                    mas-qdss-dap {
                            qcom,bus-dev = <0x1d>;
                            cell-id = <0x4c>;
                            label = "mas-qdss-dap";
                            qcom,mas-rpm-id = <0x31>;
                            qcom,connections = <0x46 0x44>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                    };

                    slv-blsp-cfg {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0xd6>;
                            cell-id = <0x2e2>;
                            label = "slv-blsp-cfg";
                            phandle = <0x3d>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x3d>;
                    };

                    slv-ddrc-mpu1-cfg {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0xcb>;
                            cell-id = <0x2de>;
                            label = "slv-ddrc-mpu1-cfg";
                            phandle = <0x23>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x23>;
                    };

                    slv-pcie {
                            qcom,bus-dev = <0x4a>;
                            qcom,slv-rpm-id = <0xe2>;
                            cell-id = <0x2ee>;
                            label = "slv-pcie";
                            phandle = <0x49>;
                            qcom,buswidth = <0x8>;
                            qcom,ap-owned;
                            linux,phandle = <0x49>;
                    };

                    fab-snoc {
                            clocks;
                            qcom,bypass-qos-prg;
                            cell-id = <0x400>;
                            qcom,base-offset = <0x0>;
                            qcom,base-name = "snoc-base";
                            label = "fab-snoc";
                            phandle = <0x4a>;
                            qcom,bus-type = <0x1>;
                            qcom,fab-dev;
                            linux,phandle = <0x4a>;
                            qcom,qos-off = <0x80>;
                    };

                    slv-prng {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0x2c>;
                            cell-id = <0x26a>;
                            label = "slv-prng";
                            phandle = <0x2b>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x2b>;
                    };

                    mas-adss-dma3 {
                            qcom,bus-dev = <0x1d>;
                            cell-id = <0x72>;
                            label = "mas-adss-dma3";
                            qcom,mas-rpm-id = <0x87>;
                            qcom,blacklist = <0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43>;
                            qcom,connections = <0x45>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                    };

                    mas-qdss-bamndp {
                            qcom,bus-dev = <0x4a>;
                            cell-id = <0x79>;
                            qcom,prio1 = <0x0>;
                            label = "mas-qdss-bamndp";
                            qcom,mas-rpm-id = <0x8f>;
                            qcom,qos-mode = "fixed";
                            qcom,qport = <0x240>;
                            qcom,blacklist = <0x4d 0x4e 0x52 0x49 0x53 0x4f 0x50 0x51 0x4c>;
                            qcom,connections = <0x54>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            qcom,prio0 = <0x0>;
                    };

                    slv-ess-vmidmt-cfg {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0xd3>;
                            cell-id = <0x2df>;
                            label = "slv-ess-vmidmt-cfg";
                            phandle = <0x38>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x38>;
                    };

                    slv-wss0-cfg {
                            qcom,bus-dev = <0x4a>;
                            qcom,slv-rpm-id = <0xe0>;
                            cell-id = <0x2ec>;
                            label = "slv-wss0-cfg";
                            phandle = <0x50>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x50>;
                    };

                    pcnoc-s-1 {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0x77>;
                            cell-id = <0x2723>;
                            label = "pcnoc-s-1";
                            qcom,mas-rpm-id = <0x5a>;
                            phandle = <0x55>;
                            qcom,connections = <0x32 0x2b 0x29>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x55>;
                    };

                    slv-tcsr {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0x32>;
                            cell-id = <0x26f>;
                            label = "slv-tcsr";
                            phandle = <0x1e>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x1e>;
                    };

                    slv-ddrc-apu-cfg {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0xc9>;
                            cell-id = <0x2dc>;
                            label = "slv-ddrc-apu-cfg";
                            phandle = <0x2e>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x2e>;
                    };

                    pcnoc-m-1 {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0x75>;
                            cell-id = <0x271f>;
                            qcom,prio1 = <0x1>;
                            label = "pcnoc-m-1";
                            qcom,mas-rpm-id = <0x58>;
                            phandle = <0x45>;
                            qcom,qos-mode = "fixed";
                            qcom,qport = <0xd>;
                            qcom,connections = <0x44>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            qcom,prio0 = <0x1>;
                            linux,phandle = <0x45>;
                    };

                    snoc-int-0 {
                            qcom,bus-dev = <0x4a>;
                            qcom,slv-rpm-id = <0x82>;
                            cell-id = <0x2714>;
                            label = "snoc-int-0";
                            qcom,mas-rpm-id = <0x63>;
                            phandle = <0x47>;
                            qcom,connections = <0x5f 0x53>;
                            qcom,buswidth = <0x8>;
                            qcom,ap-owned;
                            linux,phandle = <0x47>;
                    };

                    slv-wss1-vmidmt-cfg {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0xdb>;
                            cell-id = <0x2e7>;
                            label = "slv-wss1-vmidmt-cfg";
                            phandle = <0x41>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x41>;
                    };

                    slv-adss-cfg {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0xc1>;
                            cell-id = <0x2cf>;
                            label = "slv-adss-cfg";
                            phandle = <0x20>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x20>;
                    };

                    slv-srvc-pcnoc {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0xdd>;
                            cell-id = <0x2e9>;
                            label = "slv-srvc-pcnoc";
                            phandle = <0x3f>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x3f>;
                    };

                    mas-adss-dma1 {
                            qcom,bus-dev = <0x1d>;
                            cell-id = <0x70>;
                            label = "mas-adss-dma1";
                            qcom,mas-rpm-id = <0x85>;
                            qcom,blacklist = <0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43>;
                            qcom,connections = <0x45>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                    };

                    mas-snoc-cfg {
                            qcom,bus-dev = <0x4a>;
                            cell-id = <0x7a>;
                            label = "mas-snoc-cfg";
                            qcom,mas-rpm-id = <0x90>;
                            qcom,connections = <0x4c>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                    };

                    mas-snoc-pcnoc {
                            qcom,bus-dev = <0x1d>;
                            cell-id = <0x2739>;
                            qcom,prio1 = <0x0>;
                            label = "mas-snoc-pcnoc";
                            qcom,mas-rpm-id = <0x4d>;
                            qcom,qos-mode = "fixed";
                            qcom,qport = <0x10>;
                            qcom,connections = <0x46>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            qcom,prio0 = <0x0>;
                    };

                    slv-snoc-ddrc-m1 {
                            qcom,bus-dev = <0x4a>;
                            qcom,slv-rpm-id = <0xde>;
                            cell-id = <0x2ea>;
                            label = "slv-snoc-ddrc-m1";
                            phandle = <0x4b>;
                            qcom,buswidth = <0x8>;
                            qcom,ap-owned;
                            linux,phandle = <0x4b>;
                    };

                    mas-qpic-bam {
                            qcom,bus-dev = <0x1d>;
                            cell-id = <0x73>;
                            label = "mas-qpic-bam";
                            qcom,mas-rpm-id = <0x88>;
                            qcom,blacklist = <0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43>;
                            qcom,connections = <0x1c>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                    };

                    slv-crypto-cfg {
                            qcom,bus-dev = <0x4a>;
                            qcom,slv-rpm-id = <0xe4>;
                            cell-id = <0x2f0>;
                            label = "slv-crypto-cfg";
                            phandle = <0x51>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x51>;
                    };

                    slv-clk-ctl {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0x2f>;
                            cell-id = <0x26c>;
                            label = "slv-clk-ctl";
                            phandle = <0x3b>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x3b>;
                    };

                    slv-boot-rom {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0x39>;
                            cell-id = <0x276>;
                            label = "slv-boot-rom";
                            phandle = <0x33>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x33>;
                    };

                    slv-qdss-cfg {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0x3f>;
                            cell-id = <0x27b>;
                            label = "slv-qdss-cfg";
                            phandle = <0x2c>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x2c>;
                    };

                    pcnoc-s-8 {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0x7d>;
                            cell-id = <0x2727>;
                            label = "pcnoc-s-8";
                            qcom,mas-rpm-id = <0x60>;
                            phandle = <0x5c>;
                            qcom,connections = <0x42 0x25 0x3d>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x5c>;
                    };

                    slv-a7ss {
                            qcom,bus-dev = <0x4a>;
                            qcom,slv-rpm-id = <0xdf>;
                            cell-id = <0x2eb>;
                            label = "slv-a7ss";
                            phandle = <0x52>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x52>;
                    };

                    slv-usb2-cfg {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0xd5>;
                            cell-id = <0x2e1>;
                            label = "slv-usb2-cfg";
                            phandle = <0x3e>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x3e>;
                    };

                    slv-ddrc-mpu2-cfg {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0xd2>;
                            cell-id = <0x2de>;
                            label = "slv-ddrc-mpu2-cfg";
                            phandle = <0x37>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x37>;
                    };

                    mas-tic {
                            qcom,bus-dev = <0x1d>;
                            cell-id = <0x4d>;
                            label = "mas-tic";
                            qcom,mas-rpm-id = <0x33>;
                            qcom,connections = <0x46 0x44>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                    };

                    slv-wss1-cfg {
                            qcom,bus-dev = <0x4a>;
                            qcom,slv-rpm-id = <0xe1>;
                            cell-id = <0x2ed>;
                            label = "slv-wss1-cfg";
                            phandle = <0x4f>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x4f>;
                    };

                    mas-wss-1 {
                            qcom,bus-dev = <0x4a>;
                            cell-id = <0x77>;
                            qcom,prio1 = <0x0>;
                            label = "mas-wss-1";
                            qcom,mas-rpm-id = <0x8c>;
                            qcom,qos-mode = "fixed";
                            qcom,qport = <0x1b>;
                            qcom,blacklist = <0x4d 0x4e 0x49 0x4f 0x50 0x51 0x4c>;
                            qcom,connections = <0x47 0x4b>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            qcom,prio0 = <0x0>;
                    };

                    pcnoc-s-6 {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0x7b>;
                            cell-id = <0x2740>;
                            label = "pcnoc-s-6";
                            qcom,mas-rpm-id = <0x5e>;
                            phandle = <0x5a>;
                            qcom,connections = <0x24 0x2e 0x37 0x26 0x23>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x5a>;
                    };

                    slv-wss0-apu-cfg {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0xda>;
                            cell-id = <0x2e6>;
                            label = "slv-wss0-apu-cfg";
                            phandle = <0x2d>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x2d>;
                    };

                    slv-imem-cfg {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0x36>;
                            cell-id = <0x273>;
                            label = "slv-imem-cfg";
                            phandle = <0x29>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x29>;
                    };

                    slv-gcnt {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0xc0>;
                            cell-id = <0x2ce>;
                            label = "slv-gcnt";
                            phandle = <0x2f>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x2f>;
                    };

                    slv-pcnoc-mpu-cfg {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0xbf>;
                            cell-id = <0x2cd>;
                            label = "slv-pcnoc-mpu-cfg";
                            phandle = <0x36>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x36>;
                    };

                    slv-tlmm {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0x33>;
                            cell-id = <0x270>;
                            label = "slv-tlmm";
                            phandle = <0x30>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x30>;
                    };

                    pcnoc-s-4 {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0x7a>;
                            cell-id = <0x2726>;
                            label = "pcnoc-s-4";
                            qcom,mas-rpm-id = <0x5d>;
                            phandle = <0x58>;
                            qcom,connections = <0x20 0x3a 0x3c>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x58>;
                    };

                    slv-adss-vmidmt-cfg {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0xc3>;
                            cell-id = <0x2d0>;
                            label = "slv-adss-vmidmt-cfg";
                            phandle = <0x3a>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x3a>;
                    };

                    slv-snoc-mpu-cfg {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0x43>;
                            cell-id = <0x27e>;
                            label = "slv-snoc-mpu-cfg";
                            phandle = <0x40>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x40>;
                    };

                    mas-qdss-etr {
                            qcom,bus-dev = <0x4a>;
                            cell-id = <0x3c>;
                            qcom,prio1 = <0x0>;
                            label = "mas-qdss-etr";
                            qcom,mas-rpm-id = <0x1f>;
                            qcom,qos-mode = "fixed";
                            qcom,qport = <0x220>;
                            qcom,blacklist = <0x4d 0x4e 0x52 0x49 0x53 0x4f 0x50 0x51 0x4c>;
                            qcom,connections = <0x54>;
                            qcom,buswidth = <0x8>;
                            qcom,ap-owned;
                            qcom,prio0 = <0x0>;
                    };

                    slv-usb3-cfg {
                            qcom,bus-dev = <0x4a>;
                            qcom,slv-rpm-id = <0xe3>;
                            cell-id = <0x2ef>;
                            label = "slv-usb3-cfg";
                            phandle = <0x4d>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x4d>;
                    };

                    slv-mdio {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0xc5>;
                            cell-id = <0x2d2>;
                            label = "slv-mdio";
                            phandle = <0x1f>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x1f>;
                    };

                    slv-qpic-cfg {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0xd7>;
                            cell-id = <0x2e3>;
                            label = "slv-qpic-cfg";
                            phandle = <0x25>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x25>;
                    };

                    pcnoc-s-2 {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0x78>;
                            cell-id = <0x2724>;
                            label = "pcnoc-s-2";
                            qcom,mas-rpm-id = <0x5b>;
                            phandle = <0x56>;
                            qcom,connections = <0x35 0x36 0x27 0x33>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x56>;
                    };

                    slv-ocimem {
                            qcom,bus-dev = <0x4a>;
                            qcom,slv-rpm-id = <0x1a>;
                            cell-id = <0x249>;
                            label = "slv-ocimem";
                            phandle = <0x5f>;
                            qcom,buswidth = <0x8>;
                            qcom,ap-owned;
                            linux,phandle = <0x5f>;
                    };

                    qdss-int {
                            qcom,bus-dev = <0x4a>;
                            qcom,slv-rpm-id = <0x80>;
                            cell-id = <0x2719>;
                            label = "qdss-int";
                            qcom,mas-rpm-id = <0x62>;
                            phandle = <0x54>;
                            qcom,connections = <0x47 0x4b>;
                            qcom,buswidth = <0x8>;
                            qcom,ap-owned;
                            linux,phandle = <0x54>;
                    };

                    snoc-int-1 {
                            qcom,bus-dev = <0x4a>;
                            qcom,slv-rpm-id = <0x83>;
                            cell-id = <0x2715>;
                            label = "snoc-int-1";
                            qcom,mas-rpm-id = <0x64>;
                            phandle = <0x48>;
                            qcom,connections = <0x51 0x52 0x4e 0x4d 0x4f 0x50>;
                            qcom,buswidth = <0x8>;
                            qcom,ap-owned;
                            linux,phandle = <0x48>;
                    };

                    mas-spdm {
                            qcom,bus-dev = <0x1d>;
                            cell-id = <0x24>;
                            label = "mas-spdm";
                            qcom,mas-rpm-id = <0x32>;
                            qcom,blacklist = <0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43>;
                            qcom,connections = <0x1c>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                    };

                    mas-adss-dma2 {
                            qcom,bus-dev = <0x1d>;
                            cell-id = <0x71>;
                            label = "mas-adss-dma2";
                            qcom,mas-rpm-id = <0x86>;
                            qcom,blacklist = <0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43>;
                            qcom,connections = <0x45>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                    };

                    mas-sdcc-bam {
                            qcom,bus-dev = <0x1d>;
                            cell-id = <0x74>;
                            qcom,prio1 = <0x0>;
                            label = "mas-sdcc-bam";
                            qcom,mas-rpm-id = <0x89>;
                            qcom,qos-mode = "fixed";
                            qcom,qport = <0xe>;
                            qcom,blacklist = <0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43>;
                            qcom,connections = <0x44>;
                            qcom,buswidth = <0x8>;
                            qcom,ap-owned;
                            qcom,prio0 = <0x0>;
                    };

                    slv-spdm {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0x3c>;
                            cell-id = <0x279>;
                            label = "slv-spdm";
                            phandle = <0x35>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x35>;
                    };

                    mas-usb3 {
                            qcom,bus-dev = <0x4a>;
                            cell-id = <0x3d>;
                            qcom,prio1 = <0x0>;
                            label = "mas-usb3";
                            qcom,mas-rpm-id = <0x20>;
                            qcom,qos-mode = "fixed";
                            qcom,qport = <0x7>;
                            qcom,blacklist = <0x4d 0x4e 0x52 0x49 0x53 0x4f 0x50 0x51 0x4c>;
                            qcom,connections = <0x47 0x4b>;
                            qcom,buswidth = <0x8>;
                            qcom,ap-owned;
                            qcom,prio0 = <0x0>;
                    };

                    slv-ess-apu-cfg {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0xd4>;
                            cell-id = <0x2e0>;
                            label = "slv-ess-apu-cfg";
                            phandle = <0x28>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x28>;
                    };

                    slv-qhss-apu-cfg {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0xc4>;
                            cell-id = <0x2d1>;
                            label = "slv-qhss-apu-cfg";
                            phandle = <0x39>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x39>;
                    };

                    mas-blsp-bam {
                            qcom,bus-dev = <0x1d>;
                            cell-id = <0x6d>;
                            label = "mas-blsp-bam";
                            qcom,mas-rpm-id = <0x82>;
                            qcom,blacklist = <0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43>;
                            qcom,connections = <0x1c>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                    };

                    pcnoc-s-0 {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0x76>;
                            cell-id = <0x2722>;
                            label = "pcnoc-s-0";
                            qcom,mas-rpm-id = <0x59>;
                            phandle = <0x57>;
                            qcom,connections = <0x3b 0x1e 0x34 0x30>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x57>;
                    };

                    slv-adss-apu {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0xc2>;
                            cell-id = <0x2d0>;
                            label = "slv-adss-apu";
                            phandle = <0x3c>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x3c>;
                    };

                    slv-ddrc-cfg {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0xc8>;
                            cell-id = <0x2db>;
                            label = "slv-ddrc-cfg";
                            phandle = <0x26>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x26>;
                    };

                    pcnoc-m-0 {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0x74>;
                            cell-id = <0x271e>;
                            qcom,prio1 = <0x1>;
                            label = "pcnoc-m-0";
                            qcom,mas-rpm-id = <0x57>;
                            phandle = <0x1c>;
                            qcom,qos-mode = "fixed";
                            qcom,qport = <0xc>;
                            qcom,connections = <0x44>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            qcom,prio0 = <0x1>;
                            linux,phandle = <0x1c>;
                    };

                    mas-ddrc-snoc {
                            qcom,bus-dev = <0x4a>;
                            cell-id = <0x75>;
                            label = "mas-ddrc-snoc";
                            qcom,mas-rpm-id = <0x8a>;
                            qcom,blacklist = <0x4b 0x4c>;
                            qcom,connections = <0x47 0x48 0x49>;
                            qcom,buswidth = <0x10>;
                            qcom,ap-owned;
                    };

                    slv-snoc-cfg {
                            qcom,bus-dev = <0x1d>;
                            qcom,slv-rpm-id = <0x46>;
                            cell-id = <0x282>;
                            label = "slv-snoc-cfg";
                            phandle = <0x43>;
                            qcom,buswidth = <0x4>;
                            qcom,ap-owned;
                            linux,phandle = <0x43>;
                    };
            };

            clock-controller@b0a8000 {
                    compatible = "qcom,kpss-acc-v2";
                    phandle = <0xa>;
                    reg = <0xb0a8000 0x1000 0xb008000 0x1000>;
                    linux,phandle = <0xa>;
            };
    };

    aliases {
            i2c1 = "/soc/i2c@78b8000";
            spi0 = "/soc/spi@78b5000";
            ethernet0 = "/soc/edma@c080000/gmac0";
            led-boot = "/soc/i2c@78b8000/lp5562@30/chan1";
            spi1 = "/soc/spi@78b6000";
            led-running = "/soc/i2c@78b8000/lp5562@30/chan1";
            i2c0 = "/soc/i2c@78b7000";
            ethernet1 = "/soc/edma@c080000/gmac1";
            led-upgrade = "/gpio-leds/power";
            led-failsafe = "/soc/i2c@78b8000/lp5562@30/chan0";
    };

    chosen {
    };

    timer {
            compatible = "arm,armv7-timer";
            interrupts = <0x1 0x2 0xf08 0x1 0x3 0xf08 0x1 0x4 0xf08 0x1 0x1 0xf08>;
            clock-frequency = <0x2dc6c00>;
    };

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

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

    cpus {
            #address-cells = <0x1>;
            #size-cells = <0x0>;

            cpu@3 {
                    compatible = "arm,cortex-a7";
                    clocks = <0x5 0x9>;
                    qcom,saw = <0xd>;
                    device_type = "cpu";
                    qcom,acc = <0xc>;
                    next-level-cache = <0x2>;
                    enable-method = "qcom,kpss-acc-v2";
                    operating-points-v2 = <0x6>;
                    reg = <0x3>;
                    clock-frequency = <0x0>;
            };

            cpu@1 {
                    compatible = "arm,cortex-a7";
                    clocks = <0x5 0x9>;
                    qcom,saw = <0x9>;
                    device_type = "cpu";
                    qcom,acc = <0x8>;
                    next-level-cache = <0x2>;
                    enable-method = "qcom,kpss-acc-v2";
                    operating-points-v2 = <0x6>;
                    reg = <0x1>;
                    clock-frequency = <0x0>;
            };

            cpu@2 {
                    compatible = "arm,cortex-a7";
                    clocks = <0x5 0x9>;
                    qcom,saw = <0xb>;
                    device_type = "cpu";
                    qcom,acc = <0xa>;
                    next-level-cache = <0x2>;
                    enable-method = "qcom,kpss-acc-v2";
                    operating-points-v2 = <0x6>;
                    reg = <0x2>;
                    clock-frequency = <0x0>;
            };

            cpu@0 {
                    compatible = "arm,cortex-a7";
                    clocks = <0x5 0x9>;
                    qcom,saw = <0x4>;
                    device_type = "cpu";
                    qcom,acc = <0x3>;
                    next-level-cache = <0x2>;
                    enable-method = "qcom,kpss-acc-v2";
                    operating-points-v2 = <0x6>;
                    reg = <0x0>;
                    clock-frequency = <0x0>;

                    l2-cache {
                            compatible = "qcom,arch-cache";
                            cache-level = <0x2>;
                            qcom,saw = <0x7>;
                            phandle = <0x2>;
                            linux,phandle = <0x2>;
                    };
            };
    };

    gpio-leds {
            compatible = "gpio-leds";

            power {
                    gpios = <0xe 0x31 0x1>;
                    label = "mr33:orange:power";
                    panic-indicator;
            };
    };

}; `

jebuskrust commented 6 years ago

Also everything else is working great, Thanks for the amazing work guys! :) :heart:

jebuskrust commented 6 years ago

Thanks for everything bud ♥️ you're awesome. Will post more later

chunkeey commented 6 years ago

That ubi0_0_diagnostic1 sha256sum matches. In order to extract the files:

 # binwalk -e ubi0_0_diagnostic1
 # cd _ubi_0_0-diagnostic1.extracted
 # cpio -i < 5CFFCC 

(This will extract the diagnostic1 initramfs into the _ubi_0_0-diagnostic1.extracted directory.)

As for what we know about the CC2650. Here are some useful PDF from TI:

The ./cc2538-bsl.py tool identifies the chip as:

As for flashing the chip, I think these files are probably the most interesting in the diagnostics1 image: usr/sbin/senao_check_BLE_and_upgrade_OS.sh usr/sbin/senao_check_BLE_OS.sh usr/sbin/senao_upgrade_BLE_OS.sh

All three use devmem2 utility to toggle GPIO 12 (RESET_N pin) and GPIO 52 (supposedly the backdoor pin - see the Serial Bootloader Interface PDF!).

One issue with the CC2650 is that the backdoor gpio. The GPIO is also muxed as part of the QPIC NAND controller: See https://github.com/openwrt/openwrt/blob/master/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4029-mr33.dts#L345 :

  There are 18 pins. 15 pins are common between LCD and NAND.
  The QPIC controller arbitrates between LCD and NAND. Of the
  remaining 4, 2 are for NAND and 2 are for LCD exclusively.
  The meraki source hints that the bluetooth module claims
  pin 52 as well. But sadly, there's no data whenever this
  is a NAND or LCD exclusive pin or not.

Edit: Since it was mentioned in the top post: ttyMSM0 is the main UART of the IPQ4029 SoC. It is connected to the very same pesky 1x4 low-profile header that you had to connect to during the initial openwrt flashing procedure (so it has no connection to the CC2650).

However, it looks like that next to the CC2650 on the MR33 PCB is a unpopulated 1x4 header. My guess is that can be used to directly hook up the CC2650 on the MR33 PCB to the TI DevKit.

chunkeey commented 6 years ago

Does anyone know if these partitions are unique or are the partitions identical between all MR33s? (for example does my MR33 have minor changes in the partitions with a serial number/mac address etc)

The content of the part.(safe/old/new) and rootfs-# partitions depend on the installed meraki firmware version/release. The storage partition will likely differ from device to device (since the firmware stores logs, caches and other stuff on there). The ART/Caldata should also be different for each device, since every device needs to be calibrated individually.

I've added a list of partitions and their sha254sums to my repo's README.md. If someone can confirm they are identical between all MR33s (using these hashes), I can upload the other partitions.

Yeah, the sums of the diagnostic1, part.safe, part.old, rootfs-25-...-1 and rootfs-25-...-2 matches mine. The ART is a little bit different.

Note: The serial number and Ethernet MAC is not stored in the NAND on the MR33! Instead these are located in the little at24c64 eeprom on i2c-0 @ 0x50. The content of it is accessible through the /sys/bus/i2c/drivers/at24/0-0050/eeprom file. you can make a copy of it if you want:

 # cp /sys/bus/i2c/drivers/at24/0-0050/eeprom /tmp
 # hexdump -C /tmp/eeprom
 # scp /tmp/eeprom $user@$pc:/${mr33-backup-directory}/

(That said, OpenWrt marks the eeprom as read-only in the dts. So it should be safe.) https://github.com/openwrt/openwrt/blob/master/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4029-mr33.dts#L155

chunkeey commented 6 years ago

(It got nuked?)

jebuskrust commented 6 years ago

I deleted the diagnostics partition while installing the first time. Document only said that the only partition that was needed was art. The install worked, its just I think I may need some stuff within diagnostics1 partition for bluetooth LE.

Everything else works.. the wifi radios , network adapter.. I have everything up and running.

jebuskrust commented 6 years ago

image

jebuskrust commented 6 years ago

If there's aproper way to restore this diagnostics partition, it would be neato cheato. I still have my original art partition. Just looking to see how to do it. I was able to extract everything and observe the python scripts and firmware hex files, al etc.

jebuskrust commented 6 years ago

This is what I got from the repo ;) and what I have matches

The marked out one will be my own art partition since i kept it. If I'm able to restore.

image

Cheers,

A handy doc showing how to restore these in the future would be great.

And thanks again!

jebuskrust commented 6 years ago

Sorry posted the md5sums intentionally meant to say. lol checked the sha256s prior lmao

jebuskrust commented 6 years ago

Looks like I am going to have to do this from first boot /uboot because I can't whack the root (data needs to go)partitions via ubi commands since they are attached currently lol 🤣. Not enough space to restore the diagnostic partition. I should be able to whack then

jebuskrust commented 6 years ago

Sweet well that was successful. Back up and running again.


Volume ID:   0 (on ubi0)
Type:        dynamic
Alignment:   1
Size:        137 LEBs (17395712 bytes, 16.6 MiB)
State:       OK
Name:        diagnostic1
Character device major/minor: 247:1
-----------------------------------
Volume ID:   1 (on ubi0)
Type:        static
Alignment:   1
Size:        48 LEBs (6094848 bytes, 5.8 MiB)
Data bytes:  6090888 bytes (5.8 MiB)
State:       OK
Name:        part.old
Character device major/minor: 247:2
-----------------------------------
Volume ID:   2 (on ubi0)
Type:        dynamic
Alignment:   1
Size:        25 LEBs (3174400 bytes, 3.0 MiB)
State:       OK
Name:        part.safe
Character device major/minor: 247:3
-----------------------------------
Volume ID:   3 (on ubi0)
Type:        dynamic
Alignment:   1
Size:        21 LEBs (2666496 bytes, 2.5 MiB)
State:       OK
Name:        rootfs
Character device major/minor: 247:4
-----------------------------------
Volume ID:   4 (on ubi0)
Type:        dynamic
Alignment:   1
Size:        636 LEBs (80756736 bytes, 77.0 MiB)
State:       OK
Name:        rootfs_data
Character device major/minor: 247:5
-----------------------------------
-----------------------------------
Volume ID:   6 (on ubi0)
Type:        dynamic
Alignment:   1
Size:        5 LEBs (634880 bytes, 620.0 KiB)
State:       OK
Name:        ART
Character device major/minor: 247:7

Hopefully Im not missing anything else now, will see tomorrow. Have to put the kids to bed.. thanks again! :)

chunkeey commented 6 years ago

(Did another post [this time from @jebuskrust ] get nuked?)

jebuskrust commented 6 years ago

I deleted it. I was able to load the firmware into it using the cc2536-bsl tool =) I was also able to get the hd0 interface to finally come up as well.

The post i deleted was related to the devmem2 app. I was able to recompile it so it would run on the mr33 openwrt build that I installed. Not sure if it works correctly but its built.

However it wont work, it depends on /dev/mem

Missing CONFIG_DEVMEM=y in the kernel configuration for the device.

chunkeey commented 6 years ago

Missing CONFIG_DEVMEM=y in the kernel configuration for the device.

Hm, openwrt has this as a config option: CONFIG_KERNEL_DEVMEM https://github.com/openwrt/openwrt/blob/master/config/Config-kernel.in#L775

but any free (as in unclaimed) gpio can be set via the "GPIO Sysfs Interface for Userspace": https://www.kernel.org/doc/Documentation/gpio/sysfs.txt

from userspace. The memory addresses of 100c000 and 1034000 match the configuration registers for the pinctrl for gpio12 and gpio52. The usr/sbin/senao_check_BLE_and_upgrade_OS.sh scripts sets gpio52 to output and then high. Next gpio12 is set to output, low and then to high.

The ipq4019's pinctrl code has all the registers and bit definitions. So if someone is interested, all the information is there.

Leo-PL commented 3 years ago

I'm trying to get Bluetooth running on upstream OpenWrt 19.07 build. But for some strange reasons:

My first suspicion was, that I'm missing a pinctrl entry for GPIO12, but in https://github.com/riptidewave93/LEDE-MR33/blob/43ca7f34e0437ef9384fc38f1c4de6a843f1dd98/overlay/target/linux/ipq806x/files-4.9/arch/arm/boot/dts/qcom-ipq4029-mr33.dts I don't see any, only changes being adding RTS/CTS for UART1. Also, do I need to reflash CC2650 first, or should it run HCI firmware from stock SW already? Do you recall any "magic incantations" I need to perform in addition to the above to communicate with CC2650?

chunkeey commented 3 years ago

@Leo-PL , I think you are running up the issue that the CC2650 is not a full bluetooth chip. As explained in: https://github.com/riptidewave93/LEDE-MR33/issues/7#issuecomment-387164702

The cc2650 (in the Meraki) is not a full bluetooth chip. It only supports bluetooth >LE< and needs a firmware to switch between the client/server modes.

the (current) bluez tools (hcitool/hciattach/...) do not really support these pure/only bluetooth LE chips. That's why, if you look into the original meraki MR33 firmware, you'll see that Meraki made custom tools (blescan) to deal with these devices.

Granted, this was the situation back in 2018. No idea if the hcitool/hciattach now has support for these special CC2650 (they are different from the CC2560 - but I remember that the 56<->65 transposed digits had me plenty confused as well.).

Leo-PL commented 3 years ago

So it was PEBKAC problem after all. Too bad that I nuked my original FW dump already. I guess, to make this chip actually usable, a custom firmware implementing HCI bridge would be needed. Good side of this is, that the chip also supports Zigbee as well, so it could in theory be used to act as a bridge for that as well, but all of that would be a lot of effort.

Leo-PL commented 3 years ago

At least, what I managed to find out is to verify, that GPIO52 isn't used by NAND controller - it would make no sense to share it with NAND-flash as a GPIO used for reset - given the way NAND interface works. I took a peek at IPQ4019 datasheet available at the usual sources, and for it, GPIO52 doesn't have an alternate function for QPIC on that one - and these are more-or-less sibling chips.

I successfully booted the unit and verified NAND operation without GPIO52 included in nand_pins pinctrl node.

Regarding exposing HCI interface from CC2650, I found an example in TI documentation, that does just that - I'll look into it soon, hopefully. TL;DR is that host_test example implements LE commands over HCI UART - in a pure network processor fashion.

Source: https://www.ti.com/lit/ug/swru393e/swru393e.pdf, section 5.7.