ipq40xx: add support for Plasma Cloud PA1200
Device specifications:
* QCA IPQ4018
* 256 MB of RAM
* 32 MB of SPI NOR flash (w25q256)
  - 2x 15 MB available; but one of the 15 MB regions is the recovery image
* 2T2R 2.4 GHz
  - QCA4019 hw1.0 (SoC)
  - requires special BDF in QCA4019/hw1.0/board-2.bin with
    bus=ahb,bmi-chip-id=0,bmi-board-id=16,variant=PlasmaCloud-PA1200
* 2T2R 5 GHz
  - QCA4019 hw1.0 (SoC)
  - requires special BDF in QCA4019/hw1.0/board-2.bin with
    bus=ahb,bmi-chip-id=0,bmi-board-id=17,variant=PlasmaCloud-PA1200
* 3x GPIO-LEDs for status (cyan, purple, yellow)
* 1x GPIO-button (reset)
* 1x USB (xHCI)
* TTL pins are on board (arrow points to VCC, then follows: GND, TX, RX)
* 2x gigabit ethernet
  - phy@mdio4:
    + Label: Ethernet 1
    + gmac0 (ethaddr) in original firmware
    + used as LAN interface
  - phy@mdio3:
    + Label: Ethernet 2
    + gmac1 (eth1addr) in original firmware
    + 802.3af/at POE(+)
    + used as WAN interface
* 12V/24V 1A DC
Flashing instructions:
The tool ap51-flash (https://github.com/ap51-flash/ap51-flash) should be
used to transfer the factory image to the u-boot when the device boots up.
Signed-off-by: Marek Lindner <marek.lindner@kaiwoo.ai>
[sven@narfation.org: prepare commit message, rebase, use all LEDs, switch
to dualboot_datachk upgrade script, use eth1 as designated WAN interface]
Signed-off-by: Sven Eckelmann <sven@narfation.org>
			
			
This commit is contained in:
		 Marek Lindner
					Marek Lindner
				
			
				
					committed by
					
						 Petr Štetiar
						Petr Štetiar
					
				
			
			
				
	
			
			
			 Petr Štetiar
						Petr Štetiar
					
				
			
						parent
						
							8a891bfaa0
						
					
				
				
					commit
					ea5bb6bbfe
				
			| @@ -36,7 +36,8 @@ edgecore,ecw5211 |\ | ||||
| glinet,gl-b1300 |\ | ||||
| luma,wrtq-329acn |\ | ||||
| openmesh,a42 |\ | ||||
| openmesh,a62) | ||||
| openmesh,a62 |\ | ||||
| plasmacloud,pa1200) | ||||
| 	ubootenv_add_uci_config "/dev/mtd5" "0x0" "0x10000" "0x10000" | ||||
| 	;; | ||||
| buffalo,wtr-m2133hp) | ||||
|   | ||||
| @@ -42,6 +42,7 @@ ALLWIFIBOARDS:= \ | ||||
| 	linksys_mr8300-v0 \ | ||||
| 	luma_wrtq-329acn \ | ||||
| 	mobipromo_cm520-79f \ | ||||
| 	plasmacloud_pa1200 \ | ||||
| 	qxwlan_e2600ac | ||||
|  | ||||
| ALLWIFIPACKAGES:=$(foreach BOARD,$(ALLWIFIBOARDS),ipq-wifi-$(BOARD)) | ||||
| @@ -120,6 +121,7 @@ $(eval $(call generate-ipq-wifi-package,linksys_ea8300,Linksys EA8300)) | ||||
| $(eval $(call generate-ipq-wifi-package,linksys_mr8300-v0,Linksys MR8300)) | ||||
| $(eval $(call generate-ipq-wifi-package,luma_wrtq-329acn,Luma WRTQ-329ACN)) | ||||
| $(eval $(call generate-ipq-wifi-package,mobipromo_cm520-79f,MobiPromo CM520-79F)) | ||||
| $(eval $(call generate-ipq-wifi-package,plasmacloud_pa1200,Plasma Cloud PA1200)) | ||||
| $(eval $(call generate-ipq-wifi-package,qxwlan_e2600ac,Qxwlan E2600AC)) | ||||
|  | ||||
| $(foreach PACKAGE,$(ALLWIFIPACKAGES),$(eval $(call BuildPackage,$(PACKAGE)))) | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								package/firmware/ipq-wifi/board-plasmacloud_pa1200.ipq4019
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								package/firmware/ipq-wifi/board-plasmacloud_pa1200.ipq4019
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -7,7 +7,7 @@ | ||||
| # | ||||
|  | ||||
| usage() { | ||||
| 	echo "Usage: $0 <OM2P|OM5P|OM5PAC|MR600|MR900|MR1750|A60|A42|A62|PA300> <out file path> <kernel path> <rootfs path>" | ||||
| 	echo "Usage: $0 <OM2P|OM5P|OM5PAC|MR600|MR900|MR1750|A60|A42|A62|PA300|PA1200> <out file path> <kernel path> <rootfs path>" | ||||
| 	rm -f $CFG_OUT | ||||
| 	exit 1 | ||||
| } | ||||
| @@ -33,7 +33,7 @@ case $CE_TYPE in | ||||
| 		SIZE_FACTOR=1 | ||||
| 		SIZE_FORMAT="%d" | ||||
| 		;; | ||||
| 	A42) | ||||
| 	A42|PA1200) | ||||
| 		MAX_PART_SIZE=15616 | ||||
| 		KERNEL_FLASH_ADDR=0x180000 | ||||
| 		SIZE_FACTOR=1024 | ||||
|   | ||||
| @@ -17,7 +17,8 @@ ipq40xx_setup_interfaces() | ||||
| 	alfa-network,ap120c-ac|\ | ||||
| 	engenius,emr3500|\ | ||||
| 	engenius,ens620ext|\ | ||||
| 	luma,wrtq-329acn) | ||||
| 	luma,wrtq-329acn|\ | ||||
| 	plasmacloud,pa1200) | ||||
| 		ucidef_set_interfaces_lan_wan "eth0" "eth1" | ||||
| 		;; | ||||
| 	aruba,ap-303|\ | ||||
|   | ||||
| @@ -101,6 +101,7 @@ case "$FIRMWARE" in | ||||
| 	luma,wrtq-329acn|\ | ||||
| 	openmesh,a42 |\ | ||||
| 	openmesh,a62 |\ | ||||
| 	plasmacloud,pa1200 |\ | ||||
| 	qxwlan,e2600ac-c1 |\ | ||||
| 	qxwlan,e2600ac-c2 |\ | ||||
| 	unielec,u4019-32m) | ||||
| @@ -198,6 +199,7 @@ case "$FIRMWARE" in | ||||
| 	luma,wrtq-329acn|\ | ||||
| 	openmesh,a42 |\ | ||||
| 	openmesh,a62 |\ | ||||
| 	plasmacloud,pa1200 |\ | ||||
| 	qxwlan,e2600ac-c1 |\ | ||||
| 	qxwlan,e2600ac-c2 |\ | ||||
| 	unielec,u4019-32m) | ||||
|   | ||||
| @@ -44,6 +44,7 @@ platform_do_upgrade_dualboot_datachk() { | ||||
| 	# boot anymore to Linux until it was reflashed with ap51-flash. | ||||
| 	local next_boot_part="1" | ||||
| 	case "$(board_name)" in | ||||
| 	plasmacloud,pa1200|\ | ||||
| 	openmesh,a42) | ||||
| 		primary_kernel_mtd=8 | ||||
| 		;; | ||||
|   | ||||
| @@ -111,7 +111,8 @@ platform_do_upgrade() { | ||||
| 		nand_do_upgrade "$1" | ||||
| 		;; | ||||
| 	openmesh,a42 |\ | ||||
| 	openmesh,a62) | ||||
| 	openmesh,a62 |\ | ||||
| 	plasmacloud,pa1200) | ||||
| 		PART_NAME="inactive" | ||||
| 		platform_do_upgrade_dualboot_datachk "$1" | ||||
| 		;; | ||||
|   | ||||
| @@ -0,0 +1,197 @@ | ||||
| // SPDX-License-Identifier: GPL-2.0-or-later OR MIT | ||||
| /* Copyright (c) 2017-2020, Sven Eckelmann <sven@narfation.org> | ||||
|  * Copyright (c) 2018, Marek Lindner <marek.lindner@kaiwoo.ai> | ||||
|  */ | ||||
|  | ||||
| #include "qcom-ipq4019.dtsi" | ||||
| #include <dt-bindings/gpio/gpio.h> | ||||
| #include <dt-bindings/input/input.h> | ||||
| #include <dt-bindings/soc/qcom,tcsr.h> | ||||
|  | ||||
| / { | ||||
| 	model = "Plasma Cloud PA1200"; | ||||
| 	compatible = "plasmacloud,pa1200"; | ||||
|  | ||||
| 	soc { | ||||
| 		rng@22000 { | ||||
| 			status = "okay"; | ||||
| 		}; | ||||
|  | ||||
| 		mdio@90000 { | ||||
| 			status = "okay"; | ||||
| 		}; | ||||
|  | ||||
| 		ess-psgmii@98000 { | ||||
| 			status = "okay"; | ||||
| 		}; | ||||
|  | ||||
| 		tcsr@194b000 { | ||||
| 			/* select hostmode */ | ||||
| 			compatible = "qcom,tcsr"; | ||||
| 			reg = <0x194b000 0x100>; | ||||
| 			qcom,usb-hsphy-mode-select = <TCSR_USB_HSPHY_HOST_MODE>; | ||||
| 			status = "okay"; | ||||
| 		}; | ||||
|  | ||||
| 		tcsr@1949000 { | ||||
| 			compatible = "qcom,tcsr"; | ||||
| 			reg = <0x1949000 0x100>; | ||||
| 			qcom,wifi_glb_cfg = <TCSR_WIFI_GLB_CFG>; | ||||
| 		}; | ||||
|  | ||||
| 		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: usb2@60f8800 { | ||||
| 			status = "okay"; | ||||
| 		}; | ||||
|  | ||||
| 		crypto@8e3a000 { | ||||
| 			status = "okay"; | ||||
| 		}; | ||||
|  | ||||
| 		watchdog@b017000 { | ||||
| 			status = "okay"; | ||||
| 		}; | ||||
|  | ||||
| 		ess-switch@c000000 { | ||||
| 			status = "okay"; | ||||
| 		}; | ||||
|  | ||||
| 		edma@c080000 { | ||||
| 			status = "okay"; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	keys { | ||||
| 		compatible = "gpio-keys"; | ||||
|  | ||||
| 		reset { | ||||
| 			label = "reset"; | ||||
| 			gpios = <&tlmm 59 GPIO_ACTIVE_LOW>; | ||||
| 			linux,code = <KEY_RESTART>; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	aliases { | ||||
| 		led-boot = &led_status_purple; | ||||
| 		led-failsafe = &led_status_yellow; | ||||
| 		led-running = &led_status_cyan; | ||||
| 		led-upgrade = &led_status_yellow; | ||||
| 	}; | ||||
|  | ||||
| 	leds { | ||||
| 		compatible = "gpio-leds"; | ||||
|  | ||||
| 		led_status_cyan: status_cyan { | ||||
| 			label = "cyan:status"; | ||||
| 			gpios = <&tlmm 0 GPIO_ACTIVE_HIGH>; | ||||
| 		}; | ||||
|  | ||||
| 		led_status_purple: status_purple { | ||||
| 			label = "purple:status"; | ||||
| 			gpios = <&tlmm 1 GPIO_ACTIVE_HIGH>; | ||||
| 		}; | ||||
|  | ||||
| 		led_status_yellow: status_yellow { | ||||
| 			label = "yellow:status"; | ||||
| 			gpios = <&tlmm 2 GPIO_ACTIVE_HIGH>; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| }; | ||||
|  | ||||
| &tlmm { | ||||
| 	serial_pins: serial_pinmux { | ||||
| 		mux { | ||||
| 			pins = "gpio60", "gpio61"; | ||||
| 			function = "blsp_uart0"; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	spi_0_pins: spi_0_pinmux { | ||||
| 		pin { | ||||
| 			function = "blsp_spi0"; | ||||
| 			pins = "gpio55", "gpio56", "gpio57"; | ||||
| 			drive-strength = <12>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		pin_cs { | ||||
| 			function = "gpio"; | ||||
| 			pins = "gpio54"; | ||||
| 			drive-strength = <2>; | ||||
| 			bias-disable; | ||||
| 			output-high; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &blsp_dma { | ||||
| 	status = "okay"; | ||||
| }; | ||||
|  | ||||
| &blsp1_spi1 { | ||||
| 	pinctrl-0 = <&spi_0_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "okay"; | ||||
| 	cs-gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>; | ||||
|  | ||||
| 	flash@0 { | ||||
| 		#address-cells = <1>; | ||||
| 		#size-cells = <1>; | ||||
| 		compatible = "jedec,spi-nor"; | ||||
| 		reg = <0>; | ||||
| 		spi-max-frequency = <24000000>; | ||||
| 		/* partitions are passed via bootloader */ | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &blsp1_uart1 { | ||||
| 	pinctrl-0 = <&serial_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "okay"; | ||||
| }; | ||||
|  | ||||
| &cryptobam { | ||||
| 	status = "okay"; | ||||
| }; | ||||
|  | ||||
| &gmac0 { | ||||
| 	qcom,phy_mdio_addr = <4>; | ||||
| 	qcom,poll_required = <1>; | ||||
| 	qcom,forced_speed = <1000>; | ||||
| 	qcom,forced_duplex = <1>; | ||||
| 	vlan_tag = <2 0x20>; | ||||
| }; | ||||
|  | ||||
| &gmac1 { | ||||
| 	qcom,phy_mdio_addr = <3>; | ||||
| 	qcom,poll_required = <1>; | ||||
| 	qcom,forced_speed = <1000>; | ||||
| 	qcom,forced_duplex = <1>; | ||||
| 	vlan_tag = <1 0x10>; | ||||
| }; | ||||
|  | ||||
| &usb2_hs_phy { | ||||
| 	status = "okay"; | ||||
| }; | ||||
|  | ||||
| &wifi0 { | ||||
| 	status = "okay"; | ||||
| 	qcom,ath10k-calibration-variant = "PlasmaCloud-PA1200"; | ||||
| }; | ||||
|  | ||||
| &wifi1 { | ||||
| 	status = "okay"; | ||||
| 	qcom,ath10k-calibration-variant = "PlasmaCloud-PA1200"; | ||||
| }; | ||||
| @@ -648,6 +648,22 @@ define Device/openmesh_a62 | ||||
| endef | ||||
| TARGET_DEVICES += openmesh_a62 | ||||
|  | ||||
| define Device/plasmacloud_pa1200 | ||||
| 	$(call Device/FitImageLzma) | ||||
| 	DEVICE_VENDOR := Plasma Cloud | ||||
| 	DEVICE_MODEL := PA1200 | ||||
| 	SOC := qcom-ipq4018 | ||||
| 	DEVICE_DTS_CONFIG := config@pc.pa1200 | ||||
| 	BLOCKSIZE := 64k | ||||
| 	KERNEL = kernel-bin | lzma | fit lzma $$(DTS_DIR)/$$(DEVICE_DTS).dtb | pad-to $$(BLOCKSIZE) | ||||
| 	IMAGE_SIZE := 15616k | ||||
| 	IMAGES += factory.bin | ||||
| 	IMAGE/factory.bin := append-rootfs | pad-rootfs | openmesh-image ce_type=PA1200 | ||||
| 	IMAGE/sysupgrade.bin/squashfs := append-rootfs | pad-rootfs | sysupgrade-tar rootfs=$$$$@ | append-metadata | ||||
| 	DEVICE_PACKAGES := uboot-envtools ipq-wifi-plasmacloud-pa1200 | ||||
| endef | ||||
| TARGET_DEVICES += plasmacloud_pa1200 | ||||
|  | ||||
| define Device/qcom_ap-dk01.1-c1 | ||||
| 	DEVICE_VENDOR := Qualcomm Atheros | ||||
| 	DEVICE_MODEL := AP-DK01.1 | ||||
|   | ||||
| @@ -10,7 +10,7 @@ Signed-off-by: John Crispin <john@phrozen.org> | ||||
|  | ||||
| --- a/arch/arm/boot/dts/Makefile | ||||
| +++ b/arch/arm/boot/dts/Makefile | ||||
| @@ -837,11 +837,54 @@ dtb-$(CONFIG_ARCH_QCOM) += \ | ||||
| @@ -837,11 +837,55 @@ dtb-$(CONFIG_ARCH_QCOM) += \ | ||||
|  	qcom-apq8074-dragonboard.dtb \ | ||||
|  	qcom-apq8084-ifc6540.dtb \ | ||||
|  	qcom-apq8084-mtp.dtb \ | ||||
| @@ -31,6 +31,7 @@ Signed-off-by: John Crispin <john@phrozen.org> | ||||
| +	qcom-ipq4018-meshpoint-one.dtb \ | ||||
| +	qcom-ipq4018-nbg6617.dtb \ | ||||
| +	qcom-ipq4019-oap100.dtb \ | ||||
| +	qcom-ipq4018-pa1200.dtb \ | ||||
| +	qcom-ipq4018-rt-ac58u.dtb \ | ||||
| +	qcom-ipq4018-wre6606.dtb \ | ||||
| +	qcom-ipq4018-wrtq-329acn.dtb \ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user