OpenWrt – Rev 3

Subversion Repositories:
Rev:
/*
 * Device Tree Source for Meraki MR33 (Stinkbug)
 *
 * Copyright (C) 2017 Chris Blake <chrisrblake93@gmail.com>
 * Copyright (C) 2017 Christian Lamparter <chunkeey@googlemail.com>
 *
 * Based on Cisco Meraki DTS from GPL release r25-linux-3.14-20170427
 *
 * This file is licensed under the terms of the GNU General Public
 * License version 2.  This program is licensed "as is" without
 * any warranty of any kind, whether express or implied.
 */

#include "qcom-ipq4019.dtsi"
#include "qcom-ipq4019-bus.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/soc/qcom,tcsr.h>

/ {
        model = "Meraki MR33 Access Point";
        compatible = "meraki,mr33", "qcom,ipq4019";

        aliases {
                led-boot = &status_green;
                led-failsafe = &status_red;
                led-running = &status_green;
                led-upgrade = &power_orange;
        };

        /* Do we really need this defined? */
        memory {
                device_type = "memory";
                reg = <0x80000000 0x10000000>;
        };

        soc {
                mdio@90000 {
                        status = "okay";
                        pinctrl-0 = <&mdio_pins>;
                        pinctrl-names = "default";
                        /delete-node/ ethernet-phy@0;
                        /delete-node/ ethernet-phy@2;
                        /delete-node/ ethernet-phy@3;
                        /delete-node/ ethernet-phy@4;
                };

                /* It is a 56-bit counter that supplies the count to the ARM arch
                   timers and without upstream driver */
                counter@4a1000 {
                        compatible = "qcom,qca-gcnt";
                        reg = <0x4a1000 0x4>;
                };

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

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

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

                serial@78af000 {
                        pinctrl-0 = <&serial_0_pins>;
                        pinctrl-names = "default";
                        status = "okay";
                };

                serial@78b0000 {
                        pinctrl-0 = <&serial_1_pins>;
                        pinctrl-names = "default";
                        status = "okay";

                        bluetooth {
                                compatible = "ti,cc2650";
                                enable-gpios = <&tlmm 12 GPIO_ACTIVE_LOW>;
                        };
                };

                crypto@8e3a000 {
                        status = "okay";
                };

                watchdog@b017000 {
                        status = "okay";
                };

                ess-switch@c000000 {
                        switch_mac_mode = <0x3>; /* mac mode for RGMII RMII */
                        switch_lan_bmp = <0x0>; /* lan port bitmap */
                        switch_wan_bmp = <0x10>; /* wan port bitmap */
                };

                edma@c080000 {
                        qcom,single-phy;
                        qcom,num_gmac = <1>;
                        phy-mode = "rgmii-rxid";
                        status = "okay";
                };
        };

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

                reset {
                        label = "reset";
                        gpios = <&tlmm 18 GPIO_ACTIVE_LOW>;
                        linux,code = <KEY_RESTART>;
                };
        };

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

                power_orange: power {
                        label = "mr33:orange:power";
                        gpios = <&tlmm 49 GPIO_ACTIVE_LOW>;
                        panic-indicator;
                };
        };
};

&blsp_dma {
        status = "okay";
};

&cryptobam {
        status = "okay";
};

&gmac0 {
        qcom,phy_mdio_addr = <1>;
        qcom,poll_required = <1>;
        vlan_tag = <0 0x20>;
};

&i2c_0 {
        pinctrl-0 = <&i2c_0_pins>;
        pinctrl-names = "default";
        status = "okay";
        at24@50 {
                compatible = "atmel,24c64";
                pagesize = <32>;
                reg = <0x50>;
                read-only; /* This holds our MAC & Meraki board-data */
        };
};

&i2c_1 {
        pinctrl-0 = <&i2c_1_pins>;
        pinctrl-names = "default";
        status = "okay";

        lp5562@30 {
                enable-gpio = <&tlmm 48 GPIO_ACTIVE_HIGH>;
                compatible = "ti,lp5562";
                clock-mode = /bits/8 <2>;
                reg = <0x30>;

                /* RGB led */
                status_red: chan0 {
                        chan-name = "mr33:red:status";
                        led-cur = /bits/ 8 <0x20>;
                        max-cur = /bits/ 8 <0x60>;
                };

                status_green: chan1 {
                        chan-name = "mr33:green:status";
                        led-cur = /bits/ 8 <0x20>;
                        max-cur = /bits/ 8 <0x60>;
                };

                chan2 {
                        chan-name = "mr33:blue:status";
                        led-cur = /bits/ 8 <0x20>;
                        max-cur = /bits/ 8 <0x60>;
                };

                chan3 {
                        chan-name = "mr33:white:status";
                        led-cur = /bits/ 8 <0x20>;
                        max-cur = /bits/ 8 <0x60>;
                };
        };
};

&nand {
        pinctrl-0 = <&nand_pins>;
        pinctrl-names = "default";
        status = "okay";

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

                        partition@0 {
                                label = "sbl1";
                                reg = <0x000000000000 0x000000100000>;
                                read-only;
                        };
                        partition@1 {
                                label = "mibib";
                                reg = <0x000000100000 0x000000100000>;
                                read-only;
                        };
                        partition@2 {
                                label = "bootconfig";
                                reg = <0x000000200000 0x000000100000>;
                                read-only;
                        };
                        partition@3 {
                                label = "qsee";
                                reg = <0x000000300000 0x000000100000>;
                                read-only;
                        };
                        partition@4 {
                                label = "qsee_alt";
                                reg = <0x000000400000 0x000000100000>;
                                read-only;
                        };
                        partition@5 {
                                label = "cdt";
                                reg = <0x000000500000 0x000000080000>;
                                read-only;
                        };
                        partition@6 {
                                label = "cdt_alt";
                                reg = <0x000000580000 0x000000080000>;
                                read-only;
                        };
                        partition@7 {
                                label = "ddrparams";
                                reg = <0x000000600000 0x000000080000>;
                                read-only;
                        };
                        partition@8 {
                                label = "u-boot";
                                reg = <0x000000700000 0x000000200000>;
                                read-only;
                        };
                        partition@9 {
                                label = "u-boot-backup";
                                reg = <0x000000900000 0x000000200000>;
                                read-only;
                        };
                        partition@10 {
                                label = "ART";
                                reg = <0x000000b00000 0x000000080000>;
                                read-only;
                        };
                        partition@11 {
                                label = "ubi";
                                reg = <0x000000c00000 0x000007000000>;
                        };
                };
        };
};

&pcie0 {
        status = "okay";
        perst-gpio = <&tlmm 38 GPIO_ACTIVE_LOW>;
        wake-gpio = <&tlmm 50 GPIO_ACTIVE_LOW>;
};

&qpic_bam {
        status = "okay";
};

&tlmm {
        /*
         * GPIO43 should be 0/1 whenever the unit is
         * powered through PoE or AC-Adapter.
         * That said, playing with this seems to
         * reset the AP.
         */

        mdio_pins: mdio_pinmux {
                mux_1 {
                        pins = "gpio6";
                        function = "mdio";
                        bias-pull-up;
                };
                mux_2 {
                        pins = "gpio7";
                        function = "mdc";
                        bias-pull-up;
                };
        };

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

        serial_1_pins: serial1_pinmux {
                mux {
                        /* We use the i2c-0 pins for serial_1 */
                        pins = "gpio8", "gpio9";
                        function = "blsp_uart1";
                        bias-disable;
                };
        };

        i2c_0_pins: i2c_0_pinmux {
                pinmux {
                        function = "blsp_i2c0";
                        pins = "gpio20", "gpio21";
                };
                pinconf {
                        pins = "gpio20", "gpio21";
                        drive-strength = <16>;
                        bias-disable;
                };
        };

        i2c_1_pins: i2c_1_pinmux {
                pinmux {
                        function = "blsp_i2c1";
                        pins = "gpio34", "gpio35";
                };
                pinconf {
                        pins = "gpio34", "gpio35";
                        drive-strength = <16>;
                        bias-disable;
                };
        };

        nand_pins: nand_pins {
                /*
                 * 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.
                 */

                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;
                };
        };
};

&wifi0 {
        status = "okay";
        qcom,ath10k-calibration-variant = "Meraki-MR33";
};

&wifi1 {
        status = "okay";
        qcom,ath10k-calibration-variant = "Meraki-MR33";
};