|
@@ -0,0 +1,262 @@
|
|
|
|
|
+/dts-v1/;
|
|
|
|
|
+
|
|
|
|
|
+#include "ipq5018.dtsi"
|
|
|
|
|
+#include "ipq5018-mx-base.dtsi"
|
|
|
|
|
+
|
|
|
|
|
+/ {
|
|
|
|
|
+ model = "Linksys MX2000";
|
|
|
|
|
+ compatible = "linksys,mx2000", "qcom,ipq5018";
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+/*
|
|
|
|
|
+ * ===============================================================
|
|
|
|
|
+ * _______________________ _______________________
|
|
|
|
|
+ * | IPQ5018 | | QCA8337 |
|
|
|
|
|
+ * | +------+ +--------+ | | +--------+ +------+ |
|
|
|
|
|
+ * | | MAC0 |---| GE Phy | | | | Phy0 |---| MAC1 | |
|
|
|
|
|
+ * | +------+ +--------+ | | +--------+ +------+ |
|
|
|
|
|
+ * | +------+ +--------+ | | +--------+ +------+ |
|
|
|
|
|
+ * | | MAC1 |---| Uniphy |-+-SGMII-+-| SerDes |---| MAC6 | |
|
|
|
|
|
+ * | +------+ +--------+ | | +--------+ +------+ |
|
|
|
|
|
+ * |_______________________| |_______________________|
|
|
|
|
|
+ *
|
|
|
|
|
+ * ===============================================================
|
|
|
|
|
+ */
|
|
|
|
|
+
|
|
|
|
|
+&switch {
|
|
|
|
|
+ status = "okay";
|
|
|
|
|
+
|
|
|
|
|
+ switch_mac_mode = <MAC_MODE_SGMII_CHANNEL0>;
|
|
|
|
|
+
|
|
|
|
|
+ qcom,port_phyinfo {
|
|
|
|
|
+ // MAC0 -> GE Phy -> QCA8337 Phy4
|
|
|
|
|
+ port@0 {
|
|
|
|
|
+ port_id = <1>;
|
|
|
|
|
+ mdiobus = <&mdio0>;
|
|
|
|
|
+ phy_address = <7>;
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ // MAC1 ---SGMII---> QCA8337 SerDes
|
|
|
|
|
+ port@1 {
|
|
|
|
|
+ port_id = <2>;
|
|
|
|
|
+ forced-speed = <1000>;
|
|
|
|
|
+ forced-duplex = <1>;
|
|
|
|
|
+ };
|
|
|
|
|
+ };
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+// MAC1 ---SGMII---> QCA8337 SerDes
|
|
|
|
|
+&dp2 {
|
|
|
|
|
+ status = "okay";
|
|
|
|
|
+ phy-mode = "sgmii";
|
|
|
|
|
+
|
|
|
|
|
+ fixed-link {
|
|
|
|
|
+ speed = <1000>;
|
|
|
|
|
+ full-duplex;
|
|
|
|
|
+ };
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+&mdio0 {
|
|
|
|
|
+ status = "okay";
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+/* IPQ5018 GE Phy -> Not connected
|
|
|
|
|
+ * needs to be enabled for QSDK to identify the IPQ5018 dummy switch
|
|
|
|
|
+ */
|
|
|
|
|
+&ge_phy {
|
|
|
|
|
+ status = "okay";
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+&mdio1 {
|
|
|
|
|
+ status = "okay";
|
|
|
|
|
+
|
|
|
|
|
+ pinctrl-0 = <&mdio1_pins>;
|
|
|
|
|
+ pinctrl-names = "default";
|
|
|
|
|
+ reset-gpios = <&tlmm 39 GPIO_ACTIVE_LOW>;
|
|
|
|
|
+
|
|
|
|
|
+ // QCA8337 Phy0 not connected
|
|
|
|
|
+ qca8337_0: ethernet-phy@0 {
|
|
|
|
|
+ reg = <0>;
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ // QCA8337 Phy1 -> WAN
|
|
|
|
|
+ qca8337_1: ethernet-phy@1 {
|
|
|
|
|
+ reg = <1>;
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ // QCA8337 Phy2 -> LAN1
|
|
|
|
|
+ qca8337_2: ethernet-phy@2 {
|
|
|
|
|
+ reg = <2>;
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ // QCA8337 Phy3 -> LAN2
|
|
|
|
|
+ qca8337_3: ethernet-phy@3 {
|
|
|
|
|
+ reg = <3>;
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ // QCA8337 Phy4 -> LAN3
|
|
|
|
|
+ qca8337_4: ethernet-phy@4 {
|
|
|
|
|
+ reg = <4>;
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ // QCA8337 switch
|
|
|
|
|
+ switch1: ethernet-switch@17 {
|
|
|
|
|
+ compatible = "qca,qca8337";
|
|
|
|
|
+ reg = <17>;
|
|
|
|
|
+ #address-cells = <1>;
|
|
|
|
|
+ #size-cells = <0>;
|
|
|
|
|
+
|
|
|
|
|
+ ports {
|
|
|
|
|
+ #address-cells = <1>;
|
|
|
|
|
+ #size-cells = <0>;
|
|
|
|
|
+
|
|
|
|
|
+ port@2 {
|
|
|
|
|
+ reg = <2>;
|
|
|
|
|
+ label = "wan";
|
|
|
|
|
+ phy-handle = <&qca8337_1>;
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ port@3 {
|
|
|
|
|
+ reg = <3>;
|
|
|
|
|
+ label = "lan3";
|
|
|
|
|
+ phy-handle = <&qca8337_2>;
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ port@4 {
|
|
|
|
|
+ reg = <4>;
|
|
|
|
|
+ label = "lan2";
|
|
|
|
|
+ phy-handle = <&qca8337_3>;
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ port@5 {
|
|
|
|
|
+ reg = <5>;
|
|
|
|
|
+ label = "lan1";
|
|
|
|
|
+ phy-handle = <&qca8337_4>;
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ port@6 {
|
|
|
|
|
+ reg = <6>;
|
|
|
|
|
+ label = "cpu";
|
|
|
|
|
+ phy-mode = "sgmii";
|
|
|
|
|
+ ethernet = <&dp2>;
|
|
|
|
|
+ qca,sgmii-enable-pll;
|
|
|
|
|
+
|
|
|
|
|
+ fixed-link {
|
|
|
|
|
+ speed = <1000>;
|
|
|
|
|
+ full-duplex;
|
|
|
|
|
+ };
|
|
|
|
|
+ };
|
|
|
|
|
+ };
|
|
|
|
|
+ };
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+&q6v5_wcss {
|
|
|
|
|
+ status = "okay";
|
|
|
|
|
+
|
|
|
|
|
+ memory-region = <&q6_mem_regions>;
|
|
|
|
|
+ firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt",
|
|
|
|
|
+ "ath11k/IPQ5018/hw1.0/m3_fw.mdt",
|
|
|
|
|
+ "ath11k/QCN6122/hw1.0/m3_fw.mdt";
|
|
|
|
|
+
|
|
|
|
|
+ /* The QCN6102 radio should map to UPD ID 2. Without */
|
|
|
|
|
+ /* bootargs, the firmware will expect it to be on UPD ID 3 */
|
|
|
|
|
+ boot-args = <
|
|
|
|
|
+ /* type: */ 0x1 /* PCIE0 */
|
|
|
|
|
+ /* length: */ 4
|
|
|
|
|
+ /* UPD ID: */ 2
|
|
|
|
|
+ /* reset GPIO: */ 15
|
|
|
|
|
+ /* reserved: */ 0 0>;
|
|
|
|
|
+
|
|
|
|
|
+ // IPQ5018
|
|
|
|
|
+ q6_wcss_pd1: pd-1 {
|
|
|
|
|
+ firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt";
|
|
|
|
|
+
|
|
|
|
|
+ resets =
|
|
|
|
|
+ <&gcc GCC_WCSSAON_RESET>,
|
|
|
|
|
+ <&gcc GCC_WCSS_BCR>,
|
|
|
|
|
+ <&gcc GCC_CE_BCR>;
|
|
|
|
|
+ reset-names =
|
|
|
|
|
+ "wcss_aon_reset",
|
|
|
|
|
+ "wcss_reset",
|
|
|
|
|
+ "ce_reset";
|
|
|
|
|
+
|
|
|
|
|
+ clocks =
|
|
|
|
|
+ <&gcc GCC_WCSS_AHB_S_CLK>,
|
|
|
|
|
+ <&gcc GCC_WCSS_ACMT_CLK>,
|
|
|
|
|
+ <&gcc GCC_WCSS_AXI_M_CLK>;
|
|
|
|
|
+ clock-names =
|
|
|
|
|
+ "gcc_wcss_ahb_s_clk",
|
|
|
|
|
+ "gcc_wcss_acmt_clk",
|
|
|
|
|
+ "gcc_wcss_axi_m_clk";
|
|
|
|
|
+
|
|
|
|
|
+ // qcom,halt-regs = <&tcsr_q6_block 0xa000 0xd000 0x0>;
|
|
|
|
|
+ interrupts-extended =
|
|
|
|
|
+ <&wcss_smp2p_in 8 IRQ_TYPE_NONE>,
|
|
|
|
|
+ <&wcss_smp2p_in 9 IRQ_TYPE_NONE>,
|
|
|
|
|
+ <&wcss_smp2p_in 12 IRQ_TYPE_NONE>,
|
|
|
|
|
+ <&wcss_smp2p_in 11 IRQ_TYPE_NONE>;
|
|
|
|
|
+ interrupt-names =
|
|
|
|
|
+ "fatal",
|
|
|
|
|
+ "ready",
|
|
|
|
|
+ "spawn-ack",
|
|
|
|
|
+ "stop-ack";
|
|
|
|
|
+
|
|
|
|
|
+ qcom,smem-states =
|
|
|
|
|
+ <&wcss_smp2p_out 8>,
|
|
|
|
|
+ <&wcss_smp2p_out 9>,
|
|
|
|
|
+ <&wcss_smp2p_out 10>;
|
|
|
|
|
+ qcom,smem-state-names =
|
|
|
|
|
+ "shutdown",
|
|
|
|
|
+ "stop",
|
|
|
|
|
+ "spawn";
|
|
|
|
|
+ status = "okay";
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ // QCN6102 5G
|
|
|
|
|
+ q6_wcss_pd2: pd-2 {
|
|
|
|
|
+ firmware-name = "ath11k/IPQ5018/hw1.0/q6_fw.mdt";
|
|
|
|
|
+
|
|
|
|
|
+ interrupts-extended =
|
|
|
|
|
+ <&wcss_smp2p_in 16 IRQ_TYPE_NONE>,
|
|
|
|
|
+ <&wcss_smp2p_in 17 IRQ_TYPE_NONE>,
|
|
|
|
|
+ <&wcss_smp2p_in 20 IRQ_TYPE_NONE>,
|
|
|
|
|
+ <&wcss_smp2p_in 19 IRQ_TYPE_NONE>;
|
|
|
|
|
+ interrupt-names =
|
|
|
|
|
+ "fatal",
|
|
|
|
|
+ "ready",
|
|
|
|
|
+ "spawn-ack",
|
|
|
|
|
+ "stop-ack";
|
|
|
|
|
+
|
|
|
|
|
+ qcom,smem-states =
|
|
|
|
|
+ <&wcss_smp2p_out 16>,
|
|
|
|
|
+ <&wcss_smp2p_out 17>,
|
|
|
|
|
+ <&wcss_smp2p_out 18>;
|
|
|
|
|
+ qcom,smem-state-names =
|
|
|
|
|
+ "shutdown",
|
|
|
|
|
+ "stop",
|
|
|
|
|
+ "spawn";
|
|
|
|
|
+ status = "okay";
|
|
|
|
|
+ };
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+&wifi0 {
|
|
|
|
|
+ // IPQ5018
|
|
|
|
|
+ qcom,rproc = <&q6_wcss_pd1>;
|
|
|
|
|
+ qcom,ath11k-calibration-variant = "Linksys-MX2000";
|
|
|
|
|
+ qcom,ath11k-fw-memory-mode = <2>;
|
|
|
|
|
+ qcom,bdf-addr = <0x4c400000>;
|
|
|
|
|
+
|
|
|
|
|
+ status = "okay";
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+&wifi1 {
|
|
|
|
|
+ // QCN6102 5G
|
|
|
|
|
+ qcom,rproc = <&q6_wcss_pd2>;
|
|
|
|
|
+ qcom,userpd-subsys-name = "q6v5_wcss_userpd2";
|
|
|
|
|
+ qcom,ath11k-calibration-variant = "Linksys-MX2000";
|
|
|
|
|
+ qcom,ath11k-fw-memory-mode = <2>;
|
|
|
|
|
+ qcom,bdf-addr = <0x4d100000>;
|
|
|
|
|
+ qcom,m3-dump-addr = <0x4df00000>;
|
|
|
|
|
+
|
|
|
|
|
+ status = "okay";
|
|
|
|
|
+};
|