ipq40xx: add support for Telco X1 Pro
Telco X1 Pro is a Cat12 LTE-A Pro modem router. Vendor firmware is based on a recent version of OpenWrt. Flashing is possible via CLI using sysupgrade -F -n The serial headers allow bootloader and console access Serial setting: 115200 8N1 Brief Specifications: IPQ4019 SoC 32MB flash 512MB RAM 4x gigabit LAN 1x gigabit WAN Dual-band Wave-2 wifi 2x SMA LTE antenna connectors 2x RP-SMA wifi antennas 1x USB 2.0 port 1x Reset button Serial headers installed 1x Nano SIM tray 1x Quectel EM-12G LTE-A Pro modem 1x M.2 slot attached to USB 3.0 1x internal micro SD card slot Signed-off-by: Nicholas Smith <nicholas@nbembedded.com>
This commit is contained in:
		 Nicholas Smith
					Nicholas Smith
				
			
				
					committed by
					
						 Hauke Mehrtens
						Hauke Mehrtens
					
				
			
			
				
	
			
			
			 Hauke Mehrtens
						Hauke Mehrtens
					
				
			
						parent
						
							42626aef67
						
					
				
				
					commit
					7ea2f3d6e2
				
			| @@ -139,7 +139,8 @@ ipq40xx_setup_interfaces() | |||||||
| 		ucidef_add_switch "switch0" \ | 		ucidef_add_switch "switch0" \ | ||||||
| 			"0u@eth0" "3:lan" "4:lan" "0u@eth1" "5:wan" | 			"0u@eth0" "3:lan" "4:lan" "0u@eth1" "5:wan" | ||||||
| 		;; | 		;; | ||||||
| 	unielec,u4019-32m) | 	unielec,u4019-32m |\ | ||||||
|  | 	tel,x1pro) | ||||||
| 		ucidef_set_interfaces_lan_wan "eth0" "eth1" | 		ucidef_set_interfaces_lan_wan "eth0" "eth1" | ||||||
| 		ucidef_add_switch "switch0" \ | 		ucidef_add_switch "switch0" \ | ||||||
| 			"0u@eth0" "1:lan" "2:lan" "3:lan" "4:lan" "0u@eth1" "5:wan" | 			"0u@eth0" "1:lan" "2:lan" "3:lan" "4:lan" "0u@eth1" "5:wan" | ||||||
|   | |||||||
| @@ -0,0 +1,103 @@ | |||||||
|  | // SPDX-License-Identifier: GPL-2.0-or-later OR MIT | ||||||
|  |  | ||||||
|  | /dts-v1/; | ||||||
|  |  | ||||||
|  | #include "qcom-ipq4019-x1pro.dtsi" | ||||||
|  | #include <dt-bindings/gpio/gpio.h> | ||||||
|  | #include <dt-bindings/input/input.h> | ||||||
|  |  | ||||||
|  | / { | ||||||
|  | 	model = "Telco X1 Pro"; | ||||||
|  | 	compatible = "tel,x1pro","qcom,ipq4019"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &blsp1_spi1 { | ||||||
|  | 	pinctrl-0 = <&spi_0_pins>; | ||||||
|  | 	pinctrl-names = "default"; | ||||||
|  | 	status = "okay"; | ||||||
|  | 	cs-gpios = <&tlmm 12 GPIO_ACTIVE_LOW>; | ||||||
|  |  | ||||||
|  | 	flash@0 { | ||||||
|  | 		reg = <0>; | ||||||
|  | 		compatible = "jedec,spi-nor"; | ||||||
|  | 		spi-max-frequency = <24000000>; | ||||||
|  | 		broken-flash-reset; | ||||||
|  |  | ||||||
|  | 		partitions { | ||||||
|  | 			compatible = "fixed-partitions"; | ||||||
|  | 			#address-cells = <1>; | ||||||
|  | 			#size-cells = <1>; | ||||||
|  |  | ||||||
|  | 			partition@0 { | ||||||
|  | 				label = "0:SBL1"; | ||||||
|  | 				reg = <0x0 0x40000>; | ||||||
|  | 				read-only; | ||||||
|  | 			}; | ||||||
|  | 			partition@40000 { | ||||||
|  | 				label = "0:MIBIB"; | ||||||
|  | 				reg = <0x40000 0x20000>; | ||||||
|  | 				read-only; | ||||||
|  | 			}; | ||||||
|  | 			partition@60000 { | ||||||
|  | 				label = "0:QSEE"; | ||||||
|  | 				reg = <0x60000 0x60000>; | ||||||
|  | 				read-only; | ||||||
|  | 			}; | ||||||
|  | 			partition@c0000 { | ||||||
|  | 				label = "0:CDT"; | ||||||
|  | 				reg = <0xc0000 0x10000>; | ||||||
|  | 				read-only; | ||||||
|  | 			}; | ||||||
|  | 			partition@d0000 { | ||||||
|  | 				label = "0:DDRPARAMS"; | ||||||
|  | 				reg = <0xd0000 0x10000>; | ||||||
|  | 				read-only; | ||||||
|  | 			}; | ||||||
|  | 			partition@e0000 { | ||||||
|  | 				label = "0:APPSBLENV"; | ||||||
|  | 				reg = <0xe0000 0x10000>; | ||||||
|  | 				read-only; | ||||||
|  | 			}; | ||||||
|  | 			partition@f0000 { | ||||||
|  | 				label = "0:APPSBL"; | ||||||
|  | 				reg = <0xf0000 0x80000>; | ||||||
|  | 				read-only; | ||||||
|  | 			}; | ||||||
|  | 			art: partition@170000 { | ||||||
|  | 				label = "0:ART"; | ||||||
|  | 				reg = <0x170000 0x10000>; | ||||||
|  | 				read-only; | ||||||
|  | 				compatible = "nvmem-cells"; | ||||||
|  | 				#address-cells = <1>; | ||||||
|  | 				#size-cells = <1>; | ||||||
|  |  | ||||||
|  | 				precal_art_1000: precal@1000 { | ||||||
|  | 					reg = <0x1000 0x2f20>; | ||||||
|  | 				}; | ||||||
|  |  | ||||||
|  | 				precal_art_5000: precal@5000 { | ||||||
|  | 					reg = <0x5000 0x2f20>; | ||||||
|  | 				}; | ||||||
|  | 			}; | ||||||
|  | 			partition@180000 { | ||||||
|  | 				compatible = "denx,fit"; | ||||||
|  | 				label = "firmware"; | ||||||
|  | 				reg = <0x180000 0x1e80000>; | ||||||
|  | 			}; | ||||||
|  | 		}; | ||||||
|  | 	}; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &gmac0 { | ||||||
|  | 	status = "okay"; | ||||||
|  |  | ||||||
|  | 	mtd-mac-address = <&art 0x5006>; | ||||||
|  | 	mtd-mac-address-increment = <2>; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &gmac1 { | ||||||
|  | 	status = "okay"; | ||||||
|  |  | ||||||
|  | 	mtd-mac-address = <&art 0x5006>; | ||||||
|  | 	mtd-mac-address-increment = <3>; | ||||||
|  | }; | ||||||
| @@ -0,0 +1,228 @@ | |||||||
|  | // SPDX-License-Identifier: GPL-2.0-or-later OR MIT | ||||||
|  |  | ||||||
|  | #include "qcom-ipq4019.dtsi" | ||||||
|  | #include <dt-bindings/gpio/gpio.h> | ||||||
|  | #include <dt-bindings/input/input.h> | ||||||
|  | #include <dt-bindings/soc/qcom,tcsr.h> | ||||||
|  |  | ||||||
|  | / { | ||||||
|  | 	compatible = "tel,x1pro","qcom,ipq4019"; | ||||||
|  | 	aliases { | ||||||
|  | 		led-boot = &led_status; | ||||||
|  | 		led-failsafe = &led_status; | ||||||
|  | 		led-running = &led_status; | ||||||
|  | 		led-upgrade = &led_status; | ||||||
|  | 		serial0 = &blsp1_uart1; | ||||||
|  | 		serial1 = &blsp1_uart2; | ||||||
|  | 	}; | ||||||
|  | 	 | ||||||
|  | 	soc { | ||||||
|  |  | ||||||
|  | 		rng@22000 { | ||||||
|  | 			status = "okay"; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		mdio@90000 { | ||||||
|  | 			status = "okay"; | ||||||
|  | 			pinctrl-0 = <&mdio_pins>; | ||||||
|  | 			pinctrl-names = "default"; | ||||||
|  | 			reset-gpios = <&tlmm 47 GPIO_ACTIVE_LOW>; | ||||||
|  | 			reset-delay-us = <2000>; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		ess-psgmii@98000 { | ||||||
|  | 			status = "okay"; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		tcsr@1949000 { | ||||||
|  | 			compatible = "qcom,tcsr"; | ||||||
|  | 			reg = <0x1949000 0x100>; | ||||||
|  | 			qcom,wifi_glb_cfg = <TCSR_WIFI_GLB_CFG>; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		tcsr@194b000 { | ||||||
|  | 			compatible = "qcom,tcsr"; | ||||||
|  | 			reg = <0x194b000 0x100>; | ||||||
|  | 			qcom,usb-hsphy-mode-select = <TCSR_USB_HSPHY_HOST_MODE>; | ||||||
|  | 			status = "okay"; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		ess_tcsr@1953000 { | ||||||
|  | 			compatible = "qcom,tcsr"; | ||||||
|  | 			reg = <0x1953000 0x1000>; | ||||||
|  | 			qcom,ess-interface-select = <TCSR_ESS_PSGMII>; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		tcsr@1957000 { | ||||||
|  | 			compatible = "qcom,tcsr"; | ||||||
|  | 			reg = <0x1957000 0x100>; | ||||||
|  | 			qcom,wifi_noc_memtype_m0_m2 = <TCSR_WIFI_NOC_MEMTYPE_M0_M2>; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		usb2@60f8800 { | ||||||
|  | 			status = "okay"; | ||||||
|  |  | ||||||
|  | 			dwc3@6000000 { | ||||||
|  | 				#address-cells = <1>; | ||||||
|  | 				#size-cells = <0>; | ||||||
|  |  | ||||||
|  | 				port@1 { | ||||||
|  | 					reg = <1>; | ||||||
|  | 					#trigger-source-cells = <0>; | ||||||
|  | 				}; | ||||||
|  | 			}; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		usb3@8af8800 { | ||||||
|  | 			status = "okay"; | ||||||
|  |  | ||||||
|  | 			dwc3@8a00000 { | ||||||
|  | 				#address-cells = <1>; | ||||||
|  | 				#size-cells = <0>; | ||||||
|  |  | ||||||
|  | 				port@1 { | ||||||
|  | 					reg = <1>; | ||||||
|  | 					#trigger-source-cells = <0>; | ||||||
|  | 				}; | ||||||
|  |  | ||||||
|  | 				port@2 { | ||||||
|  | 					reg = <2>; | ||||||
|  | 					#trigger-source-cells = <0>; | ||||||
|  | 				}; | ||||||
|  | 			}; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		watchdog@b017000 { | ||||||
|  | 			status = "okay"; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		ess-switch@c000000 { | ||||||
|  | 			status = "okay"; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		edma@c080000 { | ||||||
|  | 			status = "okay"; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		leds { | ||||||
|  | 			compatible = "gpio-leds"; | ||||||
|  | 			pinctrl-0 = <&led_pins>; | ||||||
|  | 			pinctrl-names = "default"; | ||||||
|  |  | ||||||
|  | 			led_status: status { | ||||||
|  | 				label = "green:status"; | ||||||
|  | 				gpios = <&tlmm 68 GPIO_ACTIVE_LOW>; | ||||||
|  | 			}; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		keys { | ||||||
|  | 			compatible = "gpio-keys"; | ||||||
|  |  | ||||||
|  | 			reset { | ||||||
|  | 				label = "reset"; | ||||||
|  | 				gpios = <&tlmm 18 GPIO_ACTIVE_LOW>; | ||||||
|  | 				linux,code = <KEY_RESTART>; | ||||||
|  | 			}; | ||||||
|  | 		}; | ||||||
|  | 	}; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &blsp_dma { | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &blsp1_uart1 { | ||||||
|  | 	pinctrl-0 = <&serial_0_pins>; | ||||||
|  | 	pinctrl-names = "default"; | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &blsp1_uart2 { | ||||||
|  | 	pinctrl-0 = <&serial_1_pins>; | ||||||
|  | 	pinctrl-names = "default"; | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &qpic_bam { | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &tlmm { | ||||||
|  | 	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: serial0-pinmux { | ||||||
|  | 		mux { | ||||||
|  | 			pins = "gpio16", "gpio17"; | ||||||
|  | 			function = "blsp_uart0"; | ||||||
|  | 			bias-disable; | ||||||
|  | 		}; | ||||||
|  | 	}; | ||||||
|  | 	serial_1_pins: serial1_pinmux { | ||||||
|  | 		mux { | ||||||
|  | 			pins = "gpio8", "gpio9"; | ||||||
|  | 			function = "blsp_uart1"; | ||||||
|  | 			bias-disable; | ||||||
|  | 		}; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	spi_0_pins: spi_0_pinmux { | ||||||
|  | 		pinmux { | ||||||
|  | 			function = "blsp_spi0"; | ||||||
|  | 			pins = "gpio13", "gpio14", "gpio15"; | ||||||
|  | 			drive-strength = <12>; | ||||||
|  | 			bias-disable; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		pinmux_cs { | ||||||
|  | 			function = "gpio"; | ||||||
|  | 			pins = "gpio12"; | ||||||
|  | 			drive-strength = <2>; | ||||||
|  | 			bias-disable; | ||||||
|  | 			output-high; | ||||||
|  | 		}; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	led_pins: led_pinmux { | ||||||
|  | 		mux { | ||||||
|  | 			function = "gpio"; | ||||||
|  | 			pins = "gpio68"; | ||||||
|  | 			bias-disabled; | ||||||
|  | 			output-low; | ||||||
|  | 		}; | ||||||
|  | 	}; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &usb3_ss_phy { | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &usb3_hs_phy { | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &usb2_hs_phy { | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &wifi0 { | ||||||
|  | 	status = "okay"; | ||||||
|  | 	nvmem-cell-names = "pre-calibration"; | ||||||
|  | 	nvmem-cells = <&precal_art_1000>; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &wifi1 { | ||||||
|  | 	status = "okay"; | ||||||
|  | 	nvmem-cell-names = "pre-calibration"; | ||||||
|  | 	nvmem-cells = <&precal_art_5000>; | ||||||
|  | }; | ||||||
| @@ -963,6 +963,18 @@ define Device/teltonika_rutx10 | |||||||
| endef | endef | ||||||
| TARGET_DEVICES += teltonika_rutx10 | TARGET_DEVICES += teltonika_rutx10 | ||||||
|  |  | ||||||
|  | define Device/tel_x1pro | ||||||
|  | 	$(call Device/FitImage) | ||||||
|  | 	DEVICE_VENDOR := Telco | ||||||
|  | 	DEVICE_MODEL := X1 Pro | ||||||
|  | 	SOC := qcom-ipq4019 | ||||||
|  | 	KERNEL_SIZE := 4096k | ||||||
|  | 	IMAGE_SIZE := 31232k | ||||||
|  | 	IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | append-metadata | ||||||
|  | 	DEVICE_PACKAGES := kmod-usb-net-qmi-wwan kmod-usb-serial-option uqmi | ||||||
|  | endef | ||||||
|  | TARGET_DEVICES += tel_x1pro | ||||||
|  |  | ||||||
| define Device/unielec_u4019-32m | define Device/unielec_u4019-32m | ||||||
| 	$(call Device/FitImage) | 	$(call Device/FitImage) | ||||||
| 	DEVICE_VENDOR := Unielec | 	DEVICE_VENDOR := Unielec | ||||||
|   | |||||||
| @@ -10,7 +10,7 @@ Signed-off-by: John Crispin <john@phrozen.org> | |||||||
|  |  | ||||||
| --- a/arch/arm/boot/dts/Makefile | --- a/arch/arm/boot/dts/Makefile | ||||||
| +++ b/arch/arm/boot/dts/Makefile | +++ b/arch/arm/boot/dts/Makefile | ||||||
| @@ -903,11 +903,74 @@ dtb-$(CONFIG_ARCH_QCOM) += \ | @@ -903,11 +903,75 @@ dtb-$(CONFIG_ARCH_QCOM) += \ | ||||||
|  	qcom-apq8074-dragonboard.dtb \ |  	qcom-apq8074-dragonboard.dtb \ | ||||||
|  	qcom-apq8084-ifc6540.dtb \ |  	qcom-apq8084-ifc6540.dtb \ | ||||||
|  	qcom-apq8084-mtp.dtb \ |  	qcom-apq8084-mtp.dtb \ | ||||||
| @@ -71,6 +71,7 @@ Signed-off-by: John Crispin <john@phrozen.org> | |||||||
| +	qcom-ipq4019-rtl30vw.dtb \ | +	qcom-ipq4019-rtl30vw.dtb \ | ||||||
| +	qcom-ipq4019-srr60.dtb \ | +	qcom-ipq4019-srr60.dtb \ | ||||||
| +	qcom-ipq4019-srs60.dtb \ | +	qcom-ipq4019-srs60.dtb \ | ||||||
|  | +	qcom-ipq4019-x1pro.dtb \ | ||||||
| +	qcom-ipq4019-u4019-32m.dtb \ | +	qcom-ipq4019-u4019-32m.dtb \ | ||||||
| +	qcom-ipq4019-wpj419.dtb \ | +	qcom-ipq4019-wpj419.dtb \ | ||||||
| +	qcom-ipq4019-wtr-m2133hp.dtb \ | +	qcom-ipq4019-wtr-m2133hp.dtb \ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user