mirror of
				https://github.com/Telecominfraproject/wlan-ap.git
				synced 2025-10-31 18:38:10 +00:00 
			
		
		
		
	Compare commits
	
		
			21 Commits
		
	
	
		
			release/4.
			...
			release/v4
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | a15703c413 | ||
|   | d218ba64e3 | ||
|   | dab5ebd31f | ||
|   | f4d2d3d12a | ||
|   | adac3818a4 | ||
|   | a516b035ab | ||
|   | 29b088ef21 | ||
|   | 10b875d42c | ||
|   | 1f0a24a941 | ||
|   | ea3afcda56 | ||
|   | b5987cc2a7 | ||
|   | fc700364d1 | ||
|   | f2fec9dd87 | ||
|   | 2de57bf167 | ||
|   | 7d31bebdb0 | ||
|   | fcb5a972cf | ||
|   | 082d04025c | ||
|   | 9ef7d2c227 | ||
|   | e0d61cb0fb | ||
|   | ed2795b30b | ||
|   | 4c9b22f999 | 
							
								
								
									
										2
									
								
								.github/workflows/build-dev.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/build-dev.yml
									
									
									
									
										vendored
									
									
								
							| @@ -21,7 +21,7 @@ jobs: | |||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
|         target: [ 'cig_wf186h', 'cig_wf186w', 'cig_wf188n', 'cig_wf189', 'cig_wf196', 'cig_wf196', 'cybertan_eww631-a1', 'cybertan_eww631-b1', 'sonicfi_rap630w-312g', 'sonicfi_rap63xc-211g', 'sonicfi_rap630c-311g', 'sonicfi_rap630w-311g', 'sonicfi_rap630w-211g', 'sonicfi_rap7110c-341x', 'sonicfi_rap750w-311a', 'edgecore_eap101', 'edgecore_eap102', 'edgecore_eap104', 'edgecore_eap105', 'edgecore_eap111', 'edgecore_eap112', 'edgecore_oap101', 'edgecore_oap101-6e', 'edgecore_oap101e', 'edgecore_oap101e-6e', 'edgecore_oap103', 'hfcl_ion4xe', 'hfcl_ion4xi', 'hfcl_ion4x', 'hfcl_ion4x_2', 'hfcl_ion4x_3', 'hfcl_ion4xi_w', 'hfcl_ion4x_w', 'indio_um-305ax', 'senao_iap4300m', 'senao_iap2300m', 'senao_jeap6500', 'udaya_a6-id2', 'udaya_a6-od2', 'yuncore_ax820', 'yuncore_ax840', 'yuncore_fap640', 'yuncore_fap650', 'yuncore_fap655' ] |         target: [ 'cig_wf186h', 'cig_wf186w', 'cig_wf188n', 'cig_wf189', 'cig_wf196', 'cig_wf196', 'cybertan_eww631-a1', 'cybertan_eww631-b1', 'sonicfi_rap630w-312g', 'sonicfi_rap63xc-211g', 'sonicfi_rap630c-311g', 'sonicfi_rap630w-311g', 'sonicfi_rap630w-211g', 'sonicfi_rap650c', 'sonicfi_rap7110c-341x', 'sonicfi_rap750w-311a', 'edgecore_eap101', 'edgecore_eap102', 'edgecore_eap104', 'edgecore_eap105', 'edgecore_eap111', 'edgecore_eap112', 'edgecore_oap101', 'edgecore_oap101-6e', 'edgecore_oap101e', 'edgecore_oap101e-6e', 'edgecore_oap103', 'hfcl_ion4xe', 'hfcl_ion4xi', 'hfcl_ion4x', 'hfcl_ion4x_2', 'hfcl_ion4x_3', 'hfcl_ion4xi_w', 'hfcl_ion4x_w', 'indio_um-305ax', 'senao_iap4300m', 'senao_iap2300m', 'senao_jeap6500', 'udaya_a6-id2', 'udaya_a6-od2', 'yuncore_ax820', 'yuncore_ax840', 'yuncore_fap640', 'yuncore_fap650', 'yuncore_fap655' ] | ||||||
|     steps: |     steps: | ||||||
|     - uses: actions/checkout@v3 |     - uses: actions/checkout@v3 | ||||||
|  |  | ||||||
|   | |||||||
| @@ -53,6 +53,7 @@ ALLWIFIBOARDS:= \ | |||||||
| 	sonicfi-rap630c-311g \ | 	sonicfi-rap630c-311g \ | ||||||
| 	sonicfi-rap630w-311g \ | 	sonicfi-rap630w-311g \ | ||||||
| 	sonicfi-rap630w-312g \ | 	sonicfi-rap630w-312g \ | ||||||
|  | 	sonicfi-rap650c \ | ||||||
| 	tplink-ex227 \ | 	tplink-ex227 \ | ||||||
| 	tplink-ex447 \ | 	tplink-ex447 \ | ||||||
| 	yuncore-ax840 \ | 	yuncore-ax840 \ | ||||||
| @@ -410,6 +411,7 @@ $(eval $(call generate-ath11k-wifi-package,indio-um-510axm-v1,Indio UM-510AXM V1 | |||||||
| $(eval $(call generate-ath11k-wifi-package,sonicfi-rap630c-311g,Sonicfi RAP630C 311G)) | $(eval $(call generate-ath11k-wifi-package,sonicfi-rap630c-311g,Sonicfi RAP630C 311G)) | ||||||
| $(eval $(call generate-ath11k-wifi-package,sonicfi-rap630w-311g,Sonicfi RAP630W 311G)) | $(eval $(call generate-ath11k-wifi-package,sonicfi-rap630w-311g,Sonicfi RAP630W 311G)) | ||||||
| $(eval $(call generate-ath11k-wifi-package,sonicfi-rap630w-312g,Sonicfi RAP630W 312G)) | $(eval $(call generate-ath11k-wifi-package,sonicfi-rap630w-312g,Sonicfi RAP630W 312G)) | ||||||
|  | $(eval $(call generate-ath11k-wifi-package,sonicfi-rap650c,SonicFi RAP650C)) | ||||||
| $(eval $(call generate-ath11k-wifi-package,tplink-ex227,TP-Link EX227)) | $(eval $(call generate-ath11k-wifi-package,tplink-ex227,TP-Link EX227)) | ||||||
| $(eval $(call generate-ath11k-wifi-package,tplink-ex447,TP-Link EX447)) | $(eval $(call generate-ath11k-wifi-package,tplink-ex447,TP-Link EX447)) | ||||||
| $(eval $(call generate-ath11k-wifi-package,yuncore-ax840,YunCore AX840)) | $(eval $(call generate-ath11k-wifi-package,yuncore-ax840,YunCore AX840)) | ||||||
|   | |||||||
							
								
								
									
										
											BIN
										
									
								
								feeds/ipq807x_v5.4/ath11k-wifi/board-sonicfi-rap650c.bin.IPQ8074
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/ipq807x_v5.4/ath11k-wifi/board-sonicfi-rap650c.bin.IPQ8074
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -21,6 +21,7 @@ edgecore,oap103) | |||||||
|         ucidef_set_led_wlan "power" "POWER" "green:power" "default-on" |         ucidef_set_led_wlan "power" "POWER" "green:power" "default-on" | ||||||
| 	;; | 	;; | ||||||
| sonicfi,rap630w-311g|\ | sonicfi,rap630w-311g|\ | ||||||
|  | sonicfi,rap650c|\ | ||||||
| cybertan,eww631-b1) | cybertan,eww631-b1) | ||||||
| 	ucidef_set_led_default "power" "POWER" "sys:blue" "on" | 	ucidef_set_led_default "power" "POWER" "sys:blue" "on" | ||||||
| 	;; | 	;; | ||||||
|   | |||||||
| @@ -24,6 +24,7 @@ qcom_setup_interfaces() | |||||||
| 	edgecore,eap102|\ | 	edgecore,eap102|\ | ||||||
| 	edgecore,oap102|\ | 	edgecore,oap102|\ | ||||||
| 	edgecore,oap103|\ | 	edgecore,oap103|\ | ||||||
|  | 	sonicfi,rap650c|\ | ||||||
| 	cig,wf196) | 	cig,wf196) | ||||||
| 		ucidef_set_interface_lan "eth1" | 		ucidef_set_interface_lan "eth1" | ||||||
| 		ucidef_set_interface_wan "eth0" | 		ucidef_set_interface_wan "eth0" | ||||||
| @@ -50,6 +51,16 @@ qcom_setup_macs() | |||||||
| 		ip link set eth1 address $lan_mac | 		ip link set eth1 address $lan_mac | ||||||
| 		ucidef_set_label_macaddr $wan_mac | 		ucidef_set_label_macaddr $wan_mac | ||||||
| 		;; | 		;; | ||||||
|  | 	sonicfi,rap650c) | ||||||
|  | 		mac=$(fw_printenv -n BaseMacAddress) | ||||||
|  | 		[ -z "$mac" ] && return; | ||||||
|  | 		wan_mac=$(macaddr_canonicalize $mac) | ||||||
|  | 		lan_mac=$(macaddr_add "$wan_mac" 1) | ||||||
|  | 		ucidef_set_network_device_mac eth0 $wan_mac | ||||||
|  | 		ucidef_set_network_device_mac eth1 $lan_mac | ||||||
|  | 		ip link set eth0 address $wan_mac | ||||||
|  | 		ip link set eth1 address $lan_mac | ||||||
|  | 		;; | ||||||
| 	*) | 	*) | ||||||
| 		wan_mac=$(cat /sys/class/net/eth0/address) | 		wan_mac=$(cat /sys/class/net/eth0/address) | ||||||
| 		lan_mac=$(macaddr_add "$wan_mac" 1) | 		lan_mac=$(macaddr_add "$wan_mac" 1) | ||||||
|   | |||||||
| @@ -16,6 +16,20 @@ ath11k_generate_macs() { | |||||||
| 	echo -ne \\x${mac3//:/\\x} >> /lib/firmware/ath11k-macs | 	echo -ne \\x${mac3//:/\\x} >> /lib/firmware/ath11k-macs | ||||||
| } | } | ||||||
|  |  | ||||||
|  | ath11k_generate_macs_sonicfi() { | ||||||
|  | 	mac=$(fw_printenv -n BaseMacAddress) | ||||||
|  | 	[ -z "$mac" ] && return; | ||||||
|  |  | ||||||
|  | 	touch /lib/firmware/ath11k-macs | ||||||
|  | 	eth=$(macaddr_canonicalize $mac) | ||||||
|  | 	mac1=$(macaddr_add $eth 2) | ||||||
|  | 	mac2=$(macaddr_add $eth 3) | ||||||
|  | 	mac3=$(macaddr_add $eth 4) | ||||||
|  | 	echo -ne \\x${mac1//:/\\x} >> /lib/firmware/ath11k-macs | ||||||
|  | 	echo -ne \\x${mac2//:/\\x} >> /lib/firmware/ath11k-macs | ||||||
|  | 	echo -ne \\x${mac3//:/\\x} >> /lib/firmware/ath11k-macs | ||||||
|  | } | ||||||
|  |  | ||||||
| ath11k_generate_macs_wf196() { | ath11k_generate_macs_wf196() { | ||||||
| 	touch /lib/firmware/ath11k-macs | 	touch /lib/firmware/ath11k-macs | ||||||
| 	mac=$(grep BaseMacAddress= /dev/mtd18 | cut -dx -f2) | 	mac=$(grep BaseMacAddress= /dev/mtd18 | cut -dx -f2) | ||||||
| @@ -63,6 +77,7 @@ case "$FIRMWARE" in | |||||||
| 	tplink,ex227|\ | 	tplink,ex227|\ | ||||||
| 	tplink,ex447|\ | 	tplink,ex447|\ | ||||||
| 	yuncore,ax840|\ | 	yuncore,ax840|\ | ||||||
|  | 	sonicfi,rap650c|\ | ||||||
| 	sercomm,wallaby) | 	sercomm,wallaby) | ||||||
|                 caldata_extract "0:ART" 0x1000 0x20000 |                 caldata_extract "0:ART" 0x1000 0x20000 | ||||||
| 		;; | 		;; | ||||||
| @@ -97,6 +112,9 @@ ath11k-macs) | |||||||
| 	cig,wf196) | 	cig,wf196) | ||||||
| 		ath11k_generate_macs_wf196 | 		ath11k_generate_macs_wf196 | ||||||
| 		;; | 		;; | ||||||
|  | 	sonicfi*) | ||||||
|  | 		ath11k_generate_macs_sonicfi | ||||||
|  | 		;; | ||||||
| 	esac | 	esac | ||||||
| 	;; | 	;; | ||||||
| ath11k/IPQ8074/hw2.0/board.bin) | ath11k/IPQ8074/hw2.0/board.bin) | ||||||
|   | |||||||
| @@ -10,7 +10,8 @@ case "$board" in | |||||||
|         ln -s /sys/kernel/debug/ath11k/ipq6018\ hw1.0/mac1/fw_stats/pdev_stats /tmp/pdev_stats_phy2g |         ln -s /sys/kernel/debug/ath11k/ipq6018\ hw1.0/mac1/fw_stats/pdev_stats /tmp/pdev_stats_phy2g | ||||||
|         ;; |         ;; | ||||||
|     "edgecore,eap102"|\ |     "edgecore,eap102"|\ | ||||||
|     "edgecore,oap103") |     "edgecore,oap103"|\ | ||||||
|  |     "sonicfi,rap650c") | ||||||
|         ln -s /sys/kernel/debug/ath11k/ipq8074\ hw2.0/mac0/fw_stats/pdev_stats /tmp/pdev_stats_phy5g |         ln -s /sys/kernel/debug/ath11k/ipq8074\ hw2.0/mac0/fw_stats/pdev_stats /tmp/pdev_stats_phy5g | ||||||
|         ln -s /sys/kernel/debug/ath11k/ipq8074\ hw2.0/mac1/fw_stats/pdev_stats /tmp/pdev_stats_phy2g |         ln -s /sys/kernel/debug/ath11k/ipq8074\ hw2.0/mac1/fw_stats/pdev_stats /tmp/pdev_stats_phy2g | ||||||
|         ;; |         ;; | ||||||
|   | |||||||
| @@ -29,6 +29,7 @@ platform_check_image() { | |||||||
| 	edgecore,oap102|\ | 	edgecore,oap102|\ | ||||||
| 	edgecore,oap103|\ | 	edgecore,oap103|\ | ||||||
| 	edgecore,eap106|\ | 	edgecore,eap106|\ | ||||||
|  | 	sonicfi,rap650c|\ | ||||||
| 	tplink,ex227|\ | 	tplink,ex227|\ | ||||||
| 	tplink,ex447) | 	tplink,ex447) | ||||||
| 		[ "$magic_long" = "73797375" ] && return 0 | 		[ "$magic_long" = "73797375" ] && return 0 | ||||||
| @@ -83,5 +84,17 @@ platform_do_upgrade() { | |||||||
| 		fi | 		fi | ||||||
| 		nand_upgrade_tar "$1" | 		nand_upgrade_tar "$1" | ||||||
| 		;; | 		;; | ||||||
|  | 	sonicfi,rap650c) | ||||||
|  | 		boot_part=$(fw_printenv -n bootfrom) | ||||||
|  | 		[ ${#boot_part} -eq 0 ] && boot_part=0 | ||||||
|  | 		echo "Current bootfrom is $boot_part" | ||||||
|  | 		if [[ $boot_part == 1 ]]; then | ||||||
|  | 			CI_UBIPART="rootfs" | ||||||
|  | 			CI_FWSETENV="bootfrom 0" | ||||||
|  | 		elif [[ $boot_part == 0 ]]; then | ||||||
|  | 			CI_UBIPART="rootfs_1" | ||||||
|  | 			CI_FWSETENV="bootfrom 1" | ||||||
|  | 		fi | ||||||
|  | 		nand_upgrade_tar "$1" | ||||||
| 	esac | 	esac | ||||||
| } | } | ||||||
|   | |||||||
| @@ -0,0 +1,650 @@ | |||||||
|  | // SPDX-License-Identifier: GPL-2.0-only | ||||||
|  | /dts-v1/; | ||||||
|  | /* Copyright (c) 2020 The Linux Foundation. All rights reserved. | ||||||
|  |  */ | ||||||
|  | #include "ipq8074.dtsi" | ||||||
|  | #include "ipq8074-hk-cpu.dtsi" | ||||||
|  |  | ||||||
|  | / { | ||||||
|  | 	#address-cells = <0x2>; | ||||||
|  | 	#size-cells = <0x2>; | ||||||
|  | 	model = "SonicFi RAP650C"; | ||||||
|  | 	compatible = "sonicfi,rap650c", "qcom,ipq8074-ap-hk09", "qcom,ipq8074"; | ||||||
|  | 	qcom,msm-id = <0x157 0x0>, <0x187 0x0>; | ||||||
|  | 	interrupt-parent = <&intc>; | ||||||
|  |  | ||||||
|  | 	aliases { | ||||||
|  | 		serial0 = &blsp1_uart5; | ||||||
|  | 		/* Aliases as required by u-boot to patch MAC addresses */ | ||||||
|  | 		ethernet0 = "/soc/dp1"; | ||||||
|  | 		ethernet1 = "/soc/dp2"; | ||||||
|  |  | ||||||
|  | 		led-boot = &led_power; | ||||||
|  | 		led-failsafe = &led_power; | ||||||
|  | 		led-running = &led_power; | ||||||
|  | 		led-upgrade = &led_power; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	chosen { | ||||||
|  | 		stdout-path = "serial0"; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	soc { | ||||||
|  | 		pinctrl@1000000 { | ||||||
|  | 			button_pins: button_pins { | ||||||
|  | 				reset_button { | ||||||
|  | 					pins = "gpio57"; | ||||||
|  | 					function = "gpio"; | ||||||
|  | 					drive-strength = <8>; | ||||||
|  | 					bias-pull-up; | ||||||
|  | 				}; | ||||||
|  | 			}; | ||||||
|  |  | ||||||
|  | 			usb_mux_sel_pins: usb_mux_pins { | ||||||
|  | 				mux { | ||||||
|  | 					pins = "gpio27"; | ||||||
|  | 					function = "gpio"; | ||||||
|  | 					drive-strength = <8>; | ||||||
|  | 					bias-pull-down; | ||||||
|  | 				}; | ||||||
|  | 			}; | ||||||
|  |  | ||||||
|  | 			pcie0_pins: pcie_pins { | ||||||
|  | 				pcie0_rst { | ||||||
|  | 					pins = "gpio58"; | ||||||
|  | 					function = "pcie0_rst"; | ||||||
|  | 					drive-strength = <8>; | ||||||
|  | 					bias-pull-down; | ||||||
|  | 				}; | ||||||
|  | 				pcie0_wake { | ||||||
|  | 					pins = "gpio59"; | ||||||
|  | 					function = "pcie0_wake"; | ||||||
|  | 					drive-strength = <8>; | ||||||
|  | 					bias-pull-down; | ||||||
|  | 				}; | ||||||
|  | 			}; | ||||||
|  |  | ||||||
|  | 			mdio_pins: mdio_pinmux { | ||||||
|  | 				mux_0 { | ||||||
|  | 					pins = "gpio68"; | ||||||
|  | 					function = "mdc"; | ||||||
|  | 					drive-strength = <8>; | ||||||
|  | 					bias-pull-up; | ||||||
|  | 				}; | ||||||
|  | 				mux_1 { | ||||||
|  | 					pins = "gpio69"; | ||||||
|  | 					function = "mdio"; | ||||||
|  | 					drive-strength = <8>; | ||||||
|  | 					bias-pull-up; | ||||||
|  | 				}; | ||||||
|  | 				mux_2 { | ||||||
|  | 					pins = "gpio25"; | ||||||
|  | 					function = "gpio"; | ||||||
|  | 					bias-pull-up; | ||||||
|  | 				}; | ||||||
|  | 				mux_3 { | ||||||
|  | 					pins = "gpio44"; | ||||||
|  | 					function = "gpio"; | ||||||
|  | 					bias-pull-up; | ||||||
|  | 				}; | ||||||
|  | 			}; | ||||||
|  |  | ||||||
|  | 			led_pins: led_pins { | ||||||
|  | 				red { | ||||||
|  | 					pins = "gpio0"; | ||||||
|  | 					function = "gpio"; | ||||||
|  | 					drive-strength = <8>; | ||||||
|  | 					bias-pull-down; | ||||||
|  | 				}; | ||||||
|  |  | ||||||
|  | 				green { | ||||||
|  | 					pins = "gpio2"; | ||||||
|  | 					function = "gpio"; | ||||||
|  | 					drive-strength = <8>; | ||||||
|  | 					bias-pull-down; | ||||||
|  | 				}; | ||||||
|  |  | ||||||
|  | 				blue { | ||||||
|  | 					pins = "gpio9"; | ||||||
|  | 					function = "gpio"; | ||||||
|  | 					drive-strength = <8>; | ||||||
|  | 					bias-pull-down; | ||||||
|  | 				}; | ||||||
|  | 			}; | ||||||
|  |  | ||||||
|  | 			spi_3_pins: spi_3_pins { | ||||||
|  | 				mux { | ||||||
|  | 					pins = "gpio50", "gpio52", "gpio53"; | ||||||
|  | 					function = "blsp3_spi"; | ||||||
|  | 					drive-strength = <8>; | ||||||
|  | 					bias-disable; | ||||||
|  | 				}; | ||||||
|  | 				spi_cs { | ||||||
|  | 					pins = "gpio22"; | ||||||
|  | 					function = "blsp3_spi2"; | ||||||
|  | 					drive-strength = <8>; | ||||||
|  | 					bias-disable; | ||||||
|  | 				}; | ||||||
|  | 				quartz_interrupt { | ||||||
|  | 					pins = "gpio47"; | ||||||
|  | 					function = "gpio"; | ||||||
|  | 					input; | ||||||
|  | 					bias-disable; | ||||||
|  | 				}; | ||||||
|  | 				quartz_reset { | ||||||
|  | 					pins = "gpio21"; | ||||||
|  | 					function = "gpio"; | ||||||
|  | 					output-low; | ||||||
|  | 					bias-disable; | ||||||
|  | 				}; | ||||||
|  | 			}; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		serial@78b3000 { | ||||||
|  | 			status = "ok"; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		dp1 { | ||||||
|  | 			device_type = "network"; | ||||||
|  | 			compatible = "qcom,nss-dp"; | ||||||
|  | 			qcom,id = <5>; | ||||||
|  | 			reg = <0x3a001800 0x200>; | ||||||
|  | 			qcom,mactype = <0>; | ||||||
|  | 			local-mac-address = [000000000000]; | ||||||
|  | 			qcom,link-poll = <1>; | ||||||
|  | 			qcom,phy-mdio-addr = <24>; | ||||||
|  | 			phy-mode = "sgmii"; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		dp2 { | ||||||
|  | 			device_type = "network"; | ||||||
|  | 			compatible = "qcom,nss-dp"; | ||||||
|  | 			qcom,id = <6>; | ||||||
|  | 			reg = <0x3a001a00 0x200>; | ||||||
|  | 			qcom,mactype = <0>; | ||||||
|  | 			local-mac-address = [000000000000]; | ||||||
|  | 			qcom,link-poll = <1>; | ||||||
|  | 			qcom,phy-mdio-addr = <28>; | ||||||
|  | 			phy-mode = "sgmii"; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		spi@78b5000 { | ||||||
|  | 			status = "ok"; | ||||||
|  | 			pinctrl-0 = <&spi_0_pins>; | ||||||
|  | 			pinctrl-names = "default"; | ||||||
|  | 			cs-select = <0>; | ||||||
|  |  | ||||||
|  | 			m25p80@0 { | ||||||
|  | 				  compatible = "n25q128a11"; | ||||||
|  | 				  #address-cells = <1>; | ||||||
|  | 				  #size-cells = <1>; | ||||||
|  | 				  reg = <0>; | ||||||
|  | 				  spi-max-frequency = <50000000>; | ||||||
|  | 			}; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		spi@78b8000 { | ||||||
|  | 			status = "ok"; | ||||||
|  | 			pinctrl-0 = <&spi_3_pins>; | ||||||
|  | 			pinctrl-names = "default"; | ||||||
|  | 			cs-select = <2>; | ||||||
|  | 			quartz-reset-gpio = <&tlmm 21 1>; | ||||||
|  |  | ||||||
|  | 			spidev3: spi@3 { | ||||||
|  | 				  compatible = "qti,spidev"; | ||||||
|  | 				  reg = <0>; | ||||||
|  | 				  spi-max-frequency = <24000000>; | ||||||
|  | 			}; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		dma@7984000 { | ||||||
|  | 			 status = "ok"; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		nand@79b0000 { | ||||||
|  | 			status = "ok"; | ||||||
|  |  | ||||||
|  | 			nand@0 { | ||||||
|  | 				reg = <0>; | ||||||
|  | 				#address-cells = <1>; | ||||||
|  | 				#size-cells = <1>; | ||||||
|  |  | ||||||
|  | 				nand-ecc-strength = <4>; | ||||||
|  | 				nand-ecc-step-size = <512>; | ||||||
|  | 				nand-bus-width = <8>; | ||||||
|  | 			}; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		qusb@79000 { | ||||||
|  | 			status = "ok"; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		ssphy@78000 { | ||||||
|  | 			status = "ok"; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		usb3@8A00000 { | ||||||
|  | 			status = "ok"; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		qusb@59000 { | ||||||
|  | 			status = "ok"; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		ssphy@58000 { | ||||||
|  | 			status = "ok"; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		usb3@8C00000 { | ||||||
|  | 			status = "ok"; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		phy@84000 { | ||||||
|  | 			status = "ok"; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		phy@86000 { | ||||||
|  | 			status = "ok"; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		pci@20000000 { | ||||||
|  | 			perst-gpio = <&tlmm 58 1>; | ||||||
|  | 			status = "ok"; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		gpio_keys { | ||||||
|  | 			compatible = "gpio-keys"; | ||||||
|  | 			pinctrl-0 = <&button_pins>; | ||||||
|  | 			pinctrl-names = "default"; | ||||||
|  | 			status = "ok"; | ||||||
|  |  | ||||||
|  | 			button@1 { | ||||||
|  | 				label = "reset"; | ||||||
|  | 				linux,code = <KEY_RESTART>; | ||||||
|  | 				gpios = <&tlmm 57 GPIO_ACTIVE_LOW>; | ||||||
|  | 				linux,input-type = <1>; | ||||||
|  | 				debounce-interval = <60>; | ||||||
|  | 			}; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		leds { | ||||||
|  | 			compatible = "gpio-leds"; | ||||||
|  | 			pinctrl-0 = <&led_pins>; | ||||||
|  | 			pinctrl-names = "default"; | ||||||
|  |  | ||||||
|  | 			red { | ||||||
|  | 				label = "sys:red"; | ||||||
|  | 				gpio = <&tlmm 0 GPIO_ACTIVE_HIGH>; | ||||||
|  | 				default-state = "off"; | ||||||
|  | 			}; | ||||||
|  |  | ||||||
|  | 			green { | ||||||
|  | 				label = "sys:green"; | ||||||
|  | 				gpio = <&tlmm 2 GPIO_ACTIVE_HIGH>; | ||||||
|  | 				default-state = "off"; | ||||||
|  | 			}; | ||||||
|  |  | ||||||
|  | 			led_power: blue { | ||||||
|  | 				label = "sys:blue"; | ||||||
|  | 				gpio = <&tlmm 9 GPIO_ACTIVE_HIGH>; | ||||||
|  | 				default-state = "off"; | ||||||
|  | 			}; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		mdio: mdio@90000 { | ||||||
|  | 			pinctrl-0 = <&mdio_pins>; | ||||||
|  | 			pinctrl-names = "default"; | ||||||
|  | 			phy-reset-gpio = <&tlmm 37 0 &tlmm 25 0 &tlmm 44 0>; | ||||||
|  | 			phy0: ethernet-phy@0 { | ||||||
|  | 				reg = <0>; | ||||||
|  | 			}; | ||||||
|  | 			phy1: ethernet-phy@1 { | ||||||
|  | 				reg = <1>; | ||||||
|  | 			}; | ||||||
|  | 			phy2: ethernet-phy@2 { | ||||||
|  | 				reg = <2>; | ||||||
|  | 			}; | ||||||
|  | 			phy3: ethernet-phy@3 { | ||||||
|  | 				reg = <3>; | ||||||
|  | 			}; | ||||||
|  | 			phy4: ethernet-phy@4 { | ||||||
|  | 				reg = <24>; | ||||||
|  | 			}; | ||||||
|  | 			phy5: ethernet-phy@5 { | ||||||
|  | 				reg = <28>; | ||||||
|  | 			}; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		ess-switch@3a000000 { | ||||||
|  | 			switch_cpu_bmp = <0x1>;  /* cpu port bitmap */ | ||||||
|  | 			switch_lan_bmp = <0x3e>; /* lan port bitmap */ | ||||||
|  | 			switch_wan_bmp = <0x40>; /* wan port bitmap */ | ||||||
|  | 			switch_mac_mode = <0x0>; /* mac mode for uniphy instance0*/ | ||||||
|  | 			switch_mac_mode1 = <0xf>; /* mac mode for uniphy instance1*/ | ||||||
|  | 			switch_mac_mode2 = <0xf>; /* mac mode for uniphy instance2*/ | ||||||
|  | 			bm_tick_mode = <0>; /* bm tick mode */ | ||||||
|  | 			tm_tick_mode = <0>; /* tm tick mode */ | ||||||
|  | 			qcom,port_phyinfo { | ||||||
|  | 				port@0 { | ||||||
|  | 					port_id = <1>; | ||||||
|  | 					phy_address = <0>; | ||||||
|  | 				}; | ||||||
|  | 				port@1 { | ||||||
|  | 					port_id = <2>; | ||||||
|  | 					phy_address = <1>; | ||||||
|  | 				}; | ||||||
|  | 				port@2 { | ||||||
|  | 					port_id = <3>; | ||||||
|  | 					phy_address = <2>; | ||||||
|  | 				}; | ||||||
|  | 				port@3 { | ||||||
|  | 					port_id = <4>; | ||||||
|  | 					phy_address = <3>; | ||||||
|  | 				}; | ||||||
|  | 				port@4 { | ||||||
|  | 					port_id = <5>; | ||||||
|  | 					phy_address = <24>; | ||||||
|  | 					port_mac_sel = "QGMAC_PORT"; | ||||||
|  | 				}; | ||||||
|  | 				port@5 { | ||||||
|  | 					port_id = <6>; | ||||||
|  | 					phy_address = <28>; | ||||||
|  | 					port_mac_sel = "QGMAC_PORT"; | ||||||
|  | 				}; | ||||||
|  | 			}; | ||||||
|  | 			port_scheduler_resource { | ||||||
|  | 				port@0 { | ||||||
|  | 					port_id = <0>; | ||||||
|  | 					ucast_queue = <0 143>; | ||||||
|  | 					mcast_queue = <256 271>; | ||||||
|  | 					l0sp = <0 35>; | ||||||
|  | 					l0cdrr = <0 47>; | ||||||
|  | 					l0edrr = <0 47>; | ||||||
|  | 					l1cdrr = <0 7>; | ||||||
|  | 					l1edrr = <0 7>; | ||||||
|  | 				}; | ||||||
|  | 				port@1 { | ||||||
|  | 					port_id = <1>; | ||||||
|  | 					ucast_queue = <144 159>; | ||||||
|  | 					mcast_queue = <272 275>; | ||||||
|  | 					l0sp = <36 39>; | ||||||
|  | 					l0cdrr = <48 63>; | ||||||
|  | 					l0edrr = <48 63>; | ||||||
|  | 					l1cdrr = <8 11>; | ||||||
|  | 					l1edrr = <8 11>; | ||||||
|  | 				}; | ||||||
|  | 				port@2 { | ||||||
|  | 					port_id = <2>; | ||||||
|  | 					ucast_queue = <160 175>; | ||||||
|  | 					mcast_queue = <276 279>; | ||||||
|  | 					l0sp = <40 43>; | ||||||
|  | 					l0cdrr = <64 79>; | ||||||
|  | 					l0edrr = <64 79>; | ||||||
|  | 					l1cdrr = <12 15>; | ||||||
|  | 					l1edrr = <12 15>; | ||||||
|  | 				}; | ||||||
|  | 				port@3 { | ||||||
|  | 					port_id = <3>; | ||||||
|  | 					ucast_queue = <176 191>; | ||||||
|  | 					mcast_queue = <280 283>; | ||||||
|  | 					l0sp = <44 47>; | ||||||
|  | 					l0cdrr = <80 95>; | ||||||
|  | 					l0edrr = <80 95>; | ||||||
|  | 					l1cdrr = <16 19>; | ||||||
|  | 					l1edrr = <16 19>; | ||||||
|  | 				}; | ||||||
|  | 				port@4 { | ||||||
|  | 					port_id = <4>; | ||||||
|  | 					ucast_queue = <192 207>; | ||||||
|  | 					mcast_queue = <284 287>; | ||||||
|  | 					l0sp = <48 51>; | ||||||
|  | 					l0cdrr = <96 111>; | ||||||
|  | 					l0edrr = <96 111>; | ||||||
|  | 					l1cdrr = <20 23>; | ||||||
|  | 					l1edrr = <20 23>; | ||||||
|  | 				}; | ||||||
|  | 				port@5 { | ||||||
|  | 					port_id = <5>; | ||||||
|  | 					ucast_queue = <208 223>; | ||||||
|  | 					mcast_queue = <288 291>; | ||||||
|  | 					l0sp = <52 55>; | ||||||
|  | 					l0cdrr = <112 127>; | ||||||
|  | 					l0edrr = <112 127>; | ||||||
|  | 					l1cdrr = <24 27>; | ||||||
|  | 					l1edrr = <24 27>; | ||||||
|  | 				}; | ||||||
|  | 				port@6 { | ||||||
|  | 					port_id = <6>; | ||||||
|  | 					ucast_queue = <224 239>; | ||||||
|  | 					mcast_queue = <292 295>; | ||||||
|  | 					l0sp = <56 59>; | ||||||
|  | 					l0cdrr = <128 143>; | ||||||
|  | 					l0edrr = <128 143>; | ||||||
|  | 					l1cdrr = <28 31>; | ||||||
|  | 					l1edrr = <28 31>; | ||||||
|  | 				}; | ||||||
|  | 				port@7 { | ||||||
|  | 					port_id = <7>; | ||||||
|  | 					ucast_queue = <240 255>; | ||||||
|  | 					mcast_queue = <296 299>; | ||||||
|  | 					l0sp = <60 63>; | ||||||
|  | 					l0cdrr = <144 159>; | ||||||
|  | 					l0edrr = <144 159>; | ||||||
|  | 					l1cdrr = <32 35>; | ||||||
|  | 					l1edrr = <32 35>; | ||||||
|  | 				}; | ||||||
|  | 			}; | ||||||
|  | 			port_scheduler_config { | ||||||
|  | 				port@0 { | ||||||
|  | 					port_id = <0>; | ||||||
|  | 					l1scheduler { | ||||||
|  | 						group@0 { | ||||||
|  | 							sp = <0 1>; /*L0 SPs*/ | ||||||
|  | 							/*cpri cdrr epri edrr*/ | ||||||
|  | 							cfg = <0 0 0 0>; | ||||||
|  | 						}; | ||||||
|  | 					}; | ||||||
|  | 					l0scheduler { | ||||||
|  | 						group@0 { | ||||||
|  | 							/*unicast queues*/ | ||||||
|  | 							ucast_queue = <0 4 8>; | ||||||
|  | 							/*multicast queues*/ | ||||||
|  | 							mcast_queue = <256 260>; | ||||||
|  | 							/*sp cpri cdrr epri edrr*/ | ||||||
|  | 							cfg = <0 0 0 0 0>; | ||||||
|  | 						}; | ||||||
|  | 						group@1 { | ||||||
|  | 							ucast_queue = <1 5 9>; | ||||||
|  | 							mcast_queue = <257 261>; | ||||||
|  | 							cfg = <0 1 1 1 1>; | ||||||
|  | 						}; | ||||||
|  | 						group@2 { | ||||||
|  | 							ucast_queue = <2 6 10>; | ||||||
|  | 							mcast_queue = <258 262>; | ||||||
|  | 							cfg = <0 2 2 2 2>; | ||||||
|  | 						}; | ||||||
|  | 						group@3 { | ||||||
|  | 							ucast_queue = <3 7 11>; | ||||||
|  | 							mcast_queue = <259 263>; | ||||||
|  | 							cfg = <0 3 3 3 3>; | ||||||
|  | 						}; | ||||||
|  | 					}; | ||||||
|  | 				}; | ||||||
|  | 				port@1 { | ||||||
|  | 					port_id = <1>; | ||||||
|  | 					l1scheduler { | ||||||
|  | 						group@0 { | ||||||
|  | 							sp = <36>; | ||||||
|  | 							cfg = <0 8 0 8>; | ||||||
|  | 						}; | ||||||
|  | 						group@1 { | ||||||
|  | 							sp = <37>; | ||||||
|  | 							cfg = <1 9 1 9>; | ||||||
|  | 						}; | ||||||
|  | 					}; | ||||||
|  | 					l0scheduler { | ||||||
|  | 						group@0 { | ||||||
|  | 							ucast_queue = <144>; | ||||||
|  | 							ucast_loop_pri = <16>; | ||||||
|  | 							mcast_queue = <272>; | ||||||
|  | 							mcast_loop_pri = <4>; | ||||||
|  | 							cfg = <36 0 48 0 48>; | ||||||
|  | 						}; | ||||||
|  | 					}; | ||||||
|  | 				}; | ||||||
|  | 				port@2 { | ||||||
|  | 					port_id = <2>; | ||||||
|  | 					l1scheduler { | ||||||
|  | 						group@0 { | ||||||
|  | 							sp = <40>; | ||||||
|  | 							cfg = <0 12 0 12>; | ||||||
|  | 						}; | ||||||
|  | 						group@1 { | ||||||
|  | 							sp = <41>; | ||||||
|  | 							cfg = <1 13 1 13>; | ||||||
|  | 						}; | ||||||
|  | 					}; | ||||||
|  | 					l0scheduler { | ||||||
|  | 						group@0 { | ||||||
|  | 							ucast_queue = <160>; | ||||||
|  | 							ucast_loop_pri = <16>; | ||||||
|  | 							mcast_queue = <276>; | ||||||
|  | 							mcast_loop_pri = <4>; | ||||||
|  | 							cfg = <40 0 64 0 64>; | ||||||
|  | 						}; | ||||||
|  | 					}; | ||||||
|  | 				}; | ||||||
|  | 				port@3 { | ||||||
|  | 					port_id = <3>; | ||||||
|  | 					l1scheduler { | ||||||
|  | 						group@0 { | ||||||
|  | 							sp = <44>; | ||||||
|  | 							cfg = <0 16 0 16>; | ||||||
|  | 						}; | ||||||
|  | 						group@1 { | ||||||
|  | 							sp = <45>; | ||||||
|  | 							cfg = <1 17 1 17>; | ||||||
|  | 						}; | ||||||
|  | 					}; | ||||||
|  | 					l0scheduler { | ||||||
|  | 						group@0 { | ||||||
|  | 							ucast_queue = <176>; | ||||||
|  | 							ucast_loop_pri = <16>; | ||||||
|  | 							mcast_queue = <280>; | ||||||
|  | 							mcast_loop_pri = <4>; | ||||||
|  | 							cfg = <44 0 80 0 80>; | ||||||
|  | 						}; | ||||||
|  | 					}; | ||||||
|  | 				}; | ||||||
|  | 				port@4 { | ||||||
|  | 					port_id = <4>; | ||||||
|  | 					l1scheduler { | ||||||
|  | 						group@0 { | ||||||
|  | 							sp = <48>; | ||||||
|  | 							cfg = <0 20 0 20>; | ||||||
|  | 						}; | ||||||
|  | 						group@1 { | ||||||
|  | 							sp = <49>; | ||||||
|  | 							cfg = <1 21 1 21>; | ||||||
|  | 						}; | ||||||
|  | 					}; | ||||||
|  | 					l0scheduler { | ||||||
|  | 						group@0 { | ||||||
|  | 							ucast_queue = <192>; | ||||||
|  | 							ucast_loop_pri = <16>; | ||||||
|  | 							mcast_queue = <284>; | ||||||
|  | 							mcast_loop_pri = <4>; | ||||||
|  | 							cfg = <48 0 96 0 96>; | ||||||
|  | 						}; | ||||||
|  | 					}; | ||||||
|  | 				}; | ||||||
|  | 				port@5 { | ||||||
|  | 					port_id = <5>; | ||||||
|  | 					l1scheduler { | ||||||
|  | 						group@0 { | ||||||
|  | 							sp = <52>; | ||||||
|  | 							cfg = <0 24 0 24>; | ||||||
|  | 						}; | ||||||
|  | 						group@1 { | ||||||
|  | 							sp = <53>; | ||||||
|  | 							cfg = <1 25 1 25>; | ||||||
|  | 						}; | ||||||
|  | 					}; | ||||||
|  | 					l0scheduler { | ||||||
|  | 						group@0 { | ||||||
|  | 							ucast_queue = <208>; | ||||||
|  | 							ucast_loop_pri = <16>; | ||||||
|  | 							mcast_queue = <288>; | ||||||
|  | 							mcast_loop_pri = <4>; | ||||||
|  | 							cfg = <52 0 112 0 112>; | ||||||
|  | 						}; | ||||||
|  | 					}; | ||||||
|  | 				}; | ||||||
|  | 				port@6 { | ||||||
|  | 					port_id = <6>; | ||||||
|  | 					l1scheduler { | ||||||
|  | 						group@0 { | ||||||
|  | 							sp = <56>; | ||||||
|  | 							cfg = <0 28 0 28>; | ||||||
|  | 						}; | ||||||
|  | 						group@1 { | ||||||
|  | 							sp = <57>; | ||||||
|  | 							cfg = <1 29 1 29>; | ||||||
|  | 						}; | ||||||
|  | 					}; | ||||||
|  | 					l0scheduler { | ||||||
|  | 						group@0 { | ||||||
|  | 							ucast_queue = <224>; | ||||||
|  | 							ucast_loop_pri = <16>; | ||||||
|  | 							mcast_queue = <292>; | ||||||
|  | 							mcast_loop_pri = <4>; | ||||||
|  | 							cfg = <56 0 128 0 128>; | ||||||
|  | 						}; | ||||||
|  | 					}; | ||||||
|  | 				}; | ||||||
|  | 				port@7 { | ||||||
|  | 					port_id = <7>; | ||||||
|  | 					l1scheduler { | ||||||
|  | 						group@0 { | ||||||
|  | 							sp = <60>; | ||||||
|  | 							cfg = <0 32 0 32>; | ||||||
|  | 						}; | ||||||
|  | 						group@1 { | ||||||
|  | 							sp = <61>; | ||||||
|  | 							cfg = <1 33 1 33>; | ||||||
|  | 						}; | ||||||
|  | 					}; | ||||||
|  | 					l0scheduler { | ||||||
|  | 						group@0 { | ||||||
|  | 							ucast_queue = <240>; | ||||||
|  | 							ucast_loop_pri = <16>; | ||||||
|  | 							mcast_queue = <296>; | ||||||
|  | 							cfg = <60 0 144 0 144>; | ||||||
|  | 						}; | ||||||
|  | 					}; | ||||||
|  | 				}; | ||||||
|  | 			}; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		nss-macsec0 { | ||||||
|  | 			compatible = "qcom,nss-macsec"; | ||||||
|  | 			phy_addr = <0x18>; | ||||||
|  | 			phy_access_mode = <0>; | ||||||
|  | 			mdiobus = <&mdio>; | ||||||
|  | 		}; | ||||||
|  | 		nss-macsec1 { | ||||||
|  | 			compatible = "qcom,nss-macsec"; | ||||||
|  | 			phy_addr = <0x1c>; | ||||||
|  | 			phy_access_mode = <0>; | ||||||
|  | 			mdiobus = <&mdio>; | ||||||
|  | 		}; | ||||||
|  | 	}; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &wifi0 { | ||||||
|  | 	qcom,board_id = <0x90>; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &wifi1 { | ||||||
|  | 	qcom,board_id = <0x290>; | ||||||
|  | }; | ||||||
| @@ -57,6 +57,17 @@ define Device/edgecore_eap106 | |||||||
| endef | endef | ||||||
| #TARGET_DEVICES += edgecore_eap106 | #TARGET_DEVICES += edgecore_eap106 | ||||||
|  |  | ||||||
|  | define Device/sonicfi_rap650c | ||||||
|  |   DEVICE_TITLE := SonicFi RAP650C | ||||||
|  |   DEVICE_DTS := qcom-ipq807x-rap650c | ||||||
|  |   DEVICE_DTS_CONFIG=config@hk09 | ||||||
|  |   SUPPORTED_DEVICES := sonicfi,rap650c | ||||||
|  |   DEVICE_PACKAGES := ath11k-wifi-sonicfi-rap650c uboot-envtools | ||||||
|  |   IMAGES := sysupgrade.tar nand-factory.bin nand-factory.ubi | ||||||
|  |   IMAGE/nand-factory.ubi := append-ubi | ||||||
|  | endef | ||||||
|  | TARGET_DEVICES += sonicfi_rap650c | ||||||
|  |  | ||||||
| define Device/tplink_ex227 | define Device/tplink_ex227 | ||||||
|   DEVICE_TITLE := TP-Link EX227 |   DEVICE_TITLE := TP-Link EX227 | ||||||
|   DEVICE_DTS := qcom-ipq807x-ex227 |   DEVICE_DTS := qcom-ipq807x-ex227 | ||||||
|   | |||||||
| @@ -53,11 +53,27 @@ $(call Package/ath12k-wifi-default) | |||||||
|     TITLE:=board-2.bin for RAP750W_311a |     TITLE:=board-2.bin for RAP750W_311a | ||||||
| endef | endef | ||||||
|  |  | ||||||
|  | define Package/ath12k-wifi-cig-wf189h | ||||||
|  | $(call Package/ath12k-wifi-default) | ||||||
|  |     TITLE:=board-2.bin for WF189H | ||||||
|  | endef | ||||||
|  |  | ||||||
| define Package/ath12k-wifi-cig-wf189w | define Package/ath12k-wifi-cig-wf189w | ||||||
| $(call Package/ath12k-wifi-default) | $(call Package/ath12k-wifi-default) | ||||||
|     TITLE:=board-2.bin for WF189W |     TITLE:=board-2.bin for WF189W | ||||||
| endef | endef | ||||||
|  |  | ||||||
|  | define Package/ath12k-wifi-sercomm-ap72tip | ||||||
|  | $(call Package/ath12k-wifi-default) | ||||||
|  |     TITLE:=board-2.bin for AP72TIP | ||||||
|  | endef | ||||||
|  |  | ||||||
|  | define Package/ath12k-wifi-sercomm-ap72tip-v4 | ||||||
|  | $(call Package/ath12k-wifi-default) | ||||||
|  |     TITLE:=board-2.bin for AP72TIP-v4 | ||||||
|  | endef | ||||||
|  |  | ||||||
|  |  | ||||||
| define Package/ath12k-wifi-cig-wf189/install | define Package/ath12k-wifi-cig-wf189/install | ||||||
| 	$(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/ | 	$(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/ | ||||||
| 	$(INSTALL_DIR) $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/ | 	$(INSTALL_DIR) $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/ | ||||||
| @@ -96,8 +112,34 @@ define Package/ath12k-wifi-cig-wf189w/install | |||||||
| 	$(INSTALL_DATA) ./ipq5332_qcn6432.regdb $(1)/lib/firmware/ath12k/QCN6432/hw1.0/regdb.bin | 	$(INSTALL_DATA) ./ipq5332_qcn6432.regdb $(1)/lib/firmware/ath12k/QCN6432/hw1.0/regdb.bin | ||||||
| endef | endef | ||||||
|  |  | ||||||
|  |  | ||||||
|  | define Package/ath12k-wifi-cig-wf189h/install | ||||||
|  | 	$(INSTALL_DIR) $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/ | ||||||
|  | 	$(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN6432/hw1.0/ | ||||||
|  | 	$(INSTALL_DATA) ./board-2.bin.189h.IPQ5332 $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/board-2.bin | ||||||
|  | 	$(INSTALL_DATA) ./board-2.bin.189h.QCN6432 $(1)/lib/firmware/ath12k/QCN6432/hw1.0/board-2.bin | ||||||
|  | 	$(INSTALL_DATA) ./ipq5332_qcn6432.regdb $(1)/lib/firmware/ath12k/QCN6432/hw1.0/regdb.bin | ||||||
|  | endef | ||||||
|  |  | ||||||
|  | define Package/ath12k-wifi-sercomm-ap72tip/install | ||||||
|  | 	$(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/ | ||||||
|  | 	$(INSTALL_DIR) $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/ | ||||||
|  | 	$(INSTALL_DATA) ./board-2.bin.ap72tip.QCN92XX $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/board-2.bin | ||||||
|  | 	$(INSTALL_DATA) ./board-2.bin.ap72tip.IPQ5332 $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/board-2.bin | ||||||
|  | endef | ||||||
|  |  | ||||||
|  | define Package/ath12k-wifi-sercomm-ap72tip-v4/install | ||||||
|  | 	$(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/ | ||||||
|  | 	$(INSTALL_DIR) $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/ | ||||||
|  | 	$(INSTALL_DATA) ./board-2.bin.ap72tip-v4.QCN92XX $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/board-2.bin | ||||||
|  | 	$(INSTALL_DATA) ./board-2.bin.ap72tip-v4.IPQ5332 $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/board-2.bin | ||||||
|  | endef | ||||||
|  |  | ||||||
| $(eval $(call BuildPackage,ath12k-wifi-cig-wf189)) | $(eval $(call BuildPackage,ath12k-wifi-cig-wf189)) | ||||||
| $(eval $(call BuildPackage,ath12k-wifi-edgecore-eap105)) | $(eval $(call BuildPackage,ath12k-wifi-edgecore-eap105)) | ||||||
| $(eval $(call BuildPackage,ath12k-wifi-sonicfi-rap7110c-341x)) | $(eval $(call BuildPackage,ath12k-wifi-sonicfi-rap7110c-341x)) | ||||||
| $(eval $(call BuildPackage,ath12k-wifi-sonicfi-rap750w-311a)) | $(eval $(call BuildPackage,ath12k-wifi-sonicfi-rap750w-311a)) | ||||||
| $(eval $(call BuildPackage,ath12k-wifi-cig-wf189w)) | $(eval $(call BuildPackage,ath12k-wifi-cig-wf189w)) | ||||||
|  | $(eval $(call BuildPackage,ath12k-wifi-cig-wf189h)) | ||||||
|  | $(eval $(call BuildPackage,ath12k-wifi-sercomm-ap72tip)) | ||||||
|  | $(eval $(call BuildPackage,ath12k-wifi-sercomm-ap72tip-v4)) | ||||||
|   | |||||||
							
								
								
									
										
											BIN
										
									
								
								feeds/qca-wifi-7/ath12k-wifi/ap72tip-IPQ5332.bin
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/qca-wifi-7/ath12k-wifi/ap72tip-IPQ5332.bin
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/qca-wifi-7/ath12k-wifi/ap72tip-QCN92XX.bin
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/qca-wifi-7/ath12k-wifi/ap72tip-QCN92XX.bin
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/qca-wifi-7/ath12k-wifi/ap72tip-v4-IPQ5332.bin
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/qca-wifi-7/ath12k-wifi/ap72tip-v4-IPQ5332.bin
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/qca-wifi-7/ath12k-wifi/ap72tip-v4-QCN92XX.bin
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/qca-wifi-7/ath12k-wifi/ap72tip-v4-QCN92XX.bin
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										20
									
								
								feeds/qca-wifi-7/ath12k-wifi/board-2-ap72tip-IPQ5332.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								feeds/qca-wifi-7/ath12k-wifi/board-2-ap72tip-IPQ5332.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | |||||||
|  | [ | ||||||
|  |     { | ||||||
|  |         "board": [ | ||||||
|  |             { | ||||||
|  |                 "names": [ | ||||||
|  |                     "bus=ahb,qmi-chip-id=0,qmi-board-id=255" | ||||||
|  |                 ], | ||||||
|  |                 "data": "ap72tip-IPQ5332.bin" | ||||||
|  |             } | ||||||
|  |         ], | ||||||
|  |         "regdb": [ | ||||||
|  |             { | ||||||
|  |                 "names": [ | ||||||
|  |                     "bus=ahb,qmi-chip-id=0,qmi-board-id=255" | ||||||
|  |                 ], | ||||||
|  |                 "data": "ipq5332.regdb" | ||||||
|  |             } | ||||||
|  |         ] | ||||||
|  |     } | ||||||
|  | ] | ||||||
							
								
								
									
										20
									
								
								feeds/qca-wifi-7/ath12k-wifi/board-2-ap72tip-QCN92XX.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								feeds/qca-wifi-7/ath12k-wifi/board-2-ap72tip-QCN92XX.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | |||||||
|  | [ | ||||||
|  |     { | ||||||
|  |         "board": [ | ||||||
|  |             { | ||||||
|  |                 "names": [ | ||||||
|  |                     "bus=pci,qmi-chip-id=0,qmi-board-id=255" | ||||||
|  |                 ], | ||||||
|  |                 "data": "ap72tip-QCN92XX.bin" | ||||||
|  |             } | ||||||
|  |         ], | ||||||
|  |         "regdb": [ | ||||||
|  |             { | ||||||
|  |                 "names": [ | ||||||
|  |                     "bus=pci,qmi-chip-id=0,qmi-board-id=255" | ||||||
|  |                 ], | ||||||
|  |                 "data": "qcn92xx.regdb" | ||||||
|  |             } | ||||||
|  |         ] | ||||||
|  |     } | ||||||
|  | ] | ||||||
							
								
								
									
										20
									
								
								feeds/qca-wifi-7/ath12k-wifi/board-2-ap72tip-v4-IPQ5332.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								feeds/qca-wifi-7/ath12k-wifi/board-2-ap72tip-v4-IPQ5332.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | |||||||
|  | [ | ||||||
|  |     { | ||||||
|  |         "board": [ | ||||||
|  |             { | ||||||
|  |                 "names": [ | ||||||
|  |                     "bus=ahb,qmi-chip-id=0,qmi-board-id=255" | ||||||
|  |                 ], | ||||||
|  |                 "data": "ap72tip-v4-IPQ5332.bin" | ||||||
|  |             } | ||||||
|  |         ], | ||||||
|  |         "regdb": [ | ||||||
|  |             { | ||||||
|  |                 "names": [ | ||||||
|  |                     "bus=ahb,qmi-chip-id=0,qmi-board-id=255" | ||||||
|  |                 ], | ||||||
|  |                 "data": "ipq5332.regdb" | ||||||
|  |             } | ||||||
|  |         ] | ||||||
|  |     } | ||||||
|  | ] | ||||||
							
								
								
									
										20
									
								
								feeds/qca-wifi-7/ath12k-wifi/board-2-ap72tip-v4-QCN92XX.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								feeds/qca-wifi-7/ath12k-wifi/board-2-ap72tip-v4-QCN92XX.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | |||||||
|  | [ | ||||||
|  |     { | ||||||
|  |         "board": [ | ||||||
|  |             { | ||||||
|  |                 "names": [ | ||||||
|  |                     "bus=pci,qmi-chip-id=0,qmi-board-id=255" | ||||||
|  |                 ], | ||||||
|  |                 "data": "ap72tip-v4-QCN92XX.bin" | ||||||
|  |             } | ||||||
|  |         ], | ||||||
|  |         "regdb": [ | ||||||
|  |             { | ||||||
|  |                 "names": [ | ||||||
|  |                     "bus=pci,qmi-chip-id=0,qmi-board-id=255" | ||||||
|  |                 ], | ||||||
|  |                 "data": "qcn92xx.regdb" | ||||||
|  |             } | ||||||
|  |         ] | ||||||
|  |     } | ||||||
|  | ] | ||||||
							
								
								
									
										
											BIN
										
									
								
								feeds/qca-wifi-7/ath12k-wifi/board-2.bin.189h.IPQ5332
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/qca-wifi-7/ath12k-wifi/board-2.bin.189h.IPQ5332
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/qca-wifi-7/ath12k-wifi/board-2.bin.189h.QCN6432
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/qca-wifi-7/ath12k-wifi/board-2.bin.189h.QCN6432
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/qca-wifi-7/ath12k-wifi/board-2.bin.ap72tip-v4.IPQ5332
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/qca-wifi-7/ath12k-wifi/board-2.bin.ap72tip-v4.IPQ5332
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/qca-wifi-7/ath12k-wifi/board-2.bin.ap72tip-v4.QCN92XX
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/qca-wifi-7/ath12k-wifi/board-2.bin.ap72tip-v4.QCN92XX
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/qca-wifi-7/ath12k-wifi/board-2.bin.ap72tip.IPQ5332
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/qca-wifi-7/ath12k-wifi/board-2.bin.ap72tip.IPQ5332
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								feeds/qca-wifi-7/ath12k-wifi/board-2.bin.ap72tip.QCN92XX
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								feeds/qca-wifi-7/ath12k-wifi/board-2.bin.ap72tip.QCN92XX
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -9,3 +9,9 @@ $encoder -c board-2-eap105-QCN92XX.json -o board-2.bin.eap105.QCN92XX | |||||||
|  |  | ||||||
| $encoder -c board-2-rap7110c_341x-IPQ5332.json -o board-2.bin.rap7110c_341x.IPQ5332 | $encoder -c board-2-rap7110c_341x-IPQ5332.json -o board-2.bin.rap7110c_341x.IPQ5332 | ||||||
| $encoder -c board-2-rap7110c_341x-QCN92XX.json -o board-2.bin.rap7110c_341x.QCN92XX | $encoder -c board-2-rap7110c_341x-QCN92XX.json -o board-2.bin.rap7110c_341x.QCN92XX | ||||||
|  |  | ||||||
|  | $encoder -c board-2-ap72tip-IPQ5332.json -o board-2.bin.ap72tip.IPQ5332 | ||||||
|  | $encoder -c board-2-ap72tip-QCN92XX.json -o board-2.bin.ap72tip.QCN92XX | ||||||
|  |  | ||||||
|  | $encoder -c board-2-ap72tip-v4-IPQ5332.json -o board-2.bin.ap72tip-v4.IPQ5332 | ||||||
|  | $encoder -c board-2-ap72tip-v4-QCN92XX.json -o board-2.bin.ap72tip-v4.QCN92XX | ||||||
|   | |||||||
| @@ -126,12 +126,15 @@ hostapd_common_add_device_config() { | |||||||
| 	config_add_int maxassoc | 	config_add_int maxassoc | ||||||
| 	config_add_int reg_power_type | 	config_add_int reg_power_type | ||||||
| 	config_add_boolean stationary_ap | 	config_add_boolean stationary_ap | ||||||
|  | 	config_add_boolean maxassoc_ignore_probe | ||||||
|  |  | ||||||
| 	config_add_string acs_chan_bias | 	config_add_string acs_chan_bias | ||||||
|  | 	config_add_boolean acs_exclude_dfs | ||||||
| 	config_add_array hostapd_options | 	config_add_array hostapd_options | ||||||
|  |  | ||||||
| 	config_add_int airtime_mode | 	config_add_int airtime_mode | ||||||
| 	config_add_int mbssid | 	config_add_int mbssid | ||||||
|  | 	config_add_boolean rnr_beacon ema | ||||||
|  |  | ||||||
| 	hostapd_add_log_config | 	hostapd_add_log_config | ||||||
| } | } | ||||||
| @@ -142,10 +145,11 @@ hostapd_prepare_device_config() { | |||||||
|  |  | ||||||
| 	local base_cfg= | 	local base_cfg= | ||||||
|  |  | ||||||
| 	json_get_vars country country3 country_ie beacon_int:100 doth require_mode legacy_rates \ | 	json_get_vars country country3 country_ie beacon_int:100 dtim_period:2 doth require_mode legacy_rates \ | ||||||
| 		acs_chan_bias local_pwr_constraint spectrum_mgmt_required airtime_mode cell_density \ | 		acs_chan_bias local_pwr_constraint spectrum_mgmt_required airtime_mode cell_density \ | ||||||
| 		rts_threshold beacon_rate rssi_reject_assoc_rssi rssi_ignore_probe_request maxassoc \ | 		rts_threshold beacon_rate rssi_reject_assoc_rssi rssi_ignore_probe_request maxassoc \ | ||||||
| 		mbssid:0 band reg_power_type stationary_ap | 		rnr_beacon mbssid:0 band reg_power_type stationary_ap acs_exclude_dfs\ | ||||||
|  | 		maxassoc_ignore_probe band | ||||||
|  |  | ||||||
| 	hostapd_set_log_options base_cfg | 	hostapd_set_log_options base_cfg | ||||||
|  |  | ||||||
| @@ -155,6 +159,9 @@ hostapd_prepare_device_config() { | |||||||
| 	set_default legacy_rates 0 | 	set_default legacy_rates 0 | ||||||
| 	set_default airtime_mode 0 | 	set_default airtime_mode 0 | ||||||
| 	set_default cell_density 0 | 	set_default cell_density 0 | ||||||
|  | 	set_default rnr_beacon 0 | ||||||
|  | 	set_default ema 0 | ||||||
|  | 	set_default acs_exclude_dfs 0 | ||||||
|  |  | ||||||
| 	[ -n "$country" ] && { | 	[ -n "$country" ] && { | ||||||
| 		append base_cfg "country_code=$country" "$N" | 		append base_cfg "country_code=$country" "$N" | ||||||
| @@ -244,8 +251,14 @@ hostapd_prepare_device_config() { | |||||||
| 	[ -n "$brlist" ] && append base_cfg "basic_rates=$brlist" "$N" | 	[ -n "$brlist" ] && append base_cfg "basic_rates=$brlist" "$N" | ||||||
| 	append base_cfg "beacon_int=$beacon_int" "$N" | 	append base_cfg "beacon_int=$beacon_int" "$N" | ||||||
| 	[ -n "$rts_threshold" ] && append base_cfg "rts_threshold=$rts_threshold" "$N" | 	[ -n "$rts_threshold" ] && append base_cfg "rts_threshold=$rts_threshold" "$N" | ||||||
|  | 	append base_cfg "dtim_period=$dtim_period" "$N" | ||||||
| 	[ "$airtime_mode" -gt 0 ] && append base_cfg "airtime_mode=$airtime_mode" "$N" | 	[ "$airtime_mode" -gt 0 ] && append base_cfg "airtime_mode=$airtime_mode" "$N" | ||||||
| 	[ -n "$maxassoc" ] && append base_cfg "iface_max_num_sta=$maxassoc" "$N" | 	[ -n "$maxassoc" ] && append base_cfg "iface_max_num_sta=$maxassoc" "$N" | ||||||
|  | 	[ "$maxassoc_ignore_probe" -gt 0 ] && append base_cfg "no_probe_resp_if_max_sta=1" "$N" | ||||||
|  | 	[ "$rnr_beacon" -gt 0 ] && append base_cfg "rnr_beacon=$rnr_beacon" "$N" | ||||||
|  | 	[ "$ema" -gt 0 ] && append base_cfg "ema=$ema" "$N" | ||||||
|  | 	[ "$acs_exclude_dfs" -gt 0 ] && append base_cfg "acs_exclude_dfs=$acs_exclude_dfs" "$N" | ||||||
|  |  | ||||||
| 	[ "$mbssid" -gt 0 ] && [ "$mbssid" -le 2 ] && append base_cfg "mbssid=$mbssid" "$N" | 	[ "$mbssid" -gt 0 ] && [ "$mbssid" -le 2 ] && append base_cfg "mbssid=$mbssid" "$N" | ||||||
|  |  | ||||||
| 	[ "$band" = "6g" ] && { | 	[ "$band" = "6g" ] && { | ||||||
| @@ -287,15 +300,24 @@ hostapd_common_add_bss_config() { | |||||||
| 	config_add_int ieee80211w | 	config_add_int ieee80211w | ||||||
| 	config_add_int eapol_version | 	config_add_int eapol_version | ||||||
|  |  | ||||||
| 	config_add_array auth_server acct_server | 	config_add_string 'auth_server:host' 'server:host' | ||||||
| 	config_add_string 'server:host' |  | ||||||
| 	config_add_string auth_secret key | 	config_add_string auth_secret key | ||||||
| 	config_add_int 'auth_port:port' 'port:port' | 	config_add_int 'auth_port:port' 'port:port' | ||||||
|  |  | ||||||
|  | 	config_add_string acct_server | ||||||
| 	config_add_string acct_secret | 	config_add_string acct_secret | ||||||
| 	config_add_int acct_port | 	config_add_int acct_port | ||||||
|  |  | ||||||
|  | 	config_add_string acct_server_secondary | ||||||
|  | 	config_add_string acct_secret_secondary | ||||||
|  | 	config_add_int acct_port_secondary | ||||||
|  |  | ||||||
| 	config_add_int acct_interval | 	config_add_int acct_interval | ||||||
|  |  | ||||||
|  | 	config_add_string auth_server_secondary | ||||||
|  | 	config_add_string auth_secret_secondary | ||||||
|  | 	config_add_int auth_port_secondary | ||||||
|  |  | ||||||
| 	config_add_int bss_load_update_period chan_util_avg_period | 	config_add_int bss_load_update_period chan_util_avg_period | ||||||
|  |  | ||||||
| 	config_add_string dae_client | 	config_add_string dae_client | ||||||
| @@ -339,8 +361,8 @@ hostapd_common_add_bss_config() { | |||||||
| 	config_add_string lci civic | 	config_add_string lci civic | ||||||
|  |  | ||||||
| 	config_add_boolean ieee80211r pmk_r1_push ft_psk_generate_local ft_over_ds | 	config_add_boolean ieee80211r pmk_r1_push ft_psk_generate_local ft_over_ds | ||||||
| 	config_add_int r0_key_lifetime reassociation_deadline | 	config_add_int r0_key_lifetime reassociation_deadline ft_l2_refresh | ||||||
| 	config_add_string mobility_domain r1_key_holder | 	config_add_string mobility_domain r1_key_holder ft_key | ||||||
| 	config_add_array r0kh r1kh | 	config_add_array r0kh r1kh | ||||||
|  |  | ||||||
| 	config_add_int ieee80211w_max_timeout ieee80211w_retry_timeout | 	config_add_int ieee80211w_max_timeout ieee80211w_retry_timeout | ||||||
| @@ -391,14 +413,18 @@ hostapd_common_add_bss_config() { | |||||||
| 	config_add_array radius_auth_req_attr | 	config_add_array radius_auth_req_attr | ||||||
| 	config_add_array radius_acct_req_attr | 	config_add_array radius_acct_req_attr | ||||||
|  |  | ||||||
| 	config_add_int eap_server radius_server_auth_port | 	config_add_int eap_server | ||||||
| 	config_add_string eap_user_file ca_cert server_cert private_key private_key_passwd server_id radius_server_clients | 	config_add_string eap_user_file ca_cert server_cert private_key private_key_passwd server_id | ||||||
|  |  | ||||||
| 	config_add_boolean fils | 	config_add_boolean fils | ||||||
| 	config_add_string fils_dhcp | 	config_add_string fils_dhcp | ||||||
|  |  | ||||||
|  | 	config_add_boolean ratelimit | ||||||
| 	config_add_int ocv | 	config_add_int ocv | ||||||
|  |  | ||||||
|  | 	config_add_string uci_section | ||||||
|  | 	config_add_boolean dynamic_probe_resp | ||||||
|  |  | ||||||
| 	config_add_boolean apup | 	config_add_boolean apup | ||||||
| 	config_add_string apup_peer_ifname_prefix | 	config_add_string apup_peer_ifname_prefix | ||||||
| } | } | ||||||
| @@ -433,6 +459,7 @@ hostapd_set_psk() { | |||||||
| 	local ifname="$1" | 	local ifname="$1" | ||||||
|  |  | ||||||
| 	rm -f /var/run/hostapd-${ifname}.psk | 	rm -f /var/run/hostapd-${ifname}.psk | ||||||
|  | 	touch /var/run/hostapd-${ifname}.psk | ||||||
| 	for_each_station hostapd_set_psk_file ${ifname} | 	for_each_station hostapd_set_psk_file ${ifname} | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -549,18 +576,83 @@ append_airtime_sta_weight() { | |||||||
| 	[ -n "$1" ] && append bss_conf "airtime_sta_weight=$1" "$N" | 	[ -n "$1" ] && append bss_conf "airtime_sta_weight=$1" "$N" | ||||||
| } | } | ||||||
|  |  | ||||||
| append_auth_server() { | append_radius_server() { | ||||||
| 	[ -n "$1" ] || return |  | ||||||
| 	append bss_conf "auth_server_addr=$1" "$N" |  | ||||||
| 	append bss_conf "auth_server_port=$auth_port" "$N" |  | ||||||
| 	[ -n "$auth_secret" ] && append bss_conf "auth_server_shared_secret=$auth_secret" "$N" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| append_acct_server() { | 	json_get_vars \ | ||||||
| 	[ -n "$1" ] || return | 		auth_server auth_secret auth_port \ | ||||||
| 	append bss_conf "acct_server_addr=$1" "$N" | 		auth_server_secondary auth_secret_secondary auth_port_secondary \ | ||||||
| 	append bss_conf "acct_server_port=$acct_port" "$N" | 		dae_client dae_secret dae_port \ | ||||||
| 	[ -n "$acct_secret" ] && append bss_conf "acct_server_shared_secret=$acct_secret" "$N" | 		dynamic_ownip ownip radius_client_addr \ | ||||||
|  | 		eap_reauth_period request_cui \ | ||||||
|  | 		erp_domain mobility_domain \ | ||||||
|  | 		fils_realm fils_dhcp | ||||||
|  |  | ||||||
|  | 	set_default dynamic_ownip 1 | ||||||
|  |  | ||||||
|  | 	# legacy compatibility | ||||||
|  | 	[ -n "$auth_server" ] || json_get_var auth_server server | ||||||
|  | 	[ -n "$auth_port" ] || json_get_var auth_port port | ||||||
|  | 	[ -n "$auth_secret" ] || json_get_var auth_secret key | ||||||
|  |  | ||||||
|  | 	[ "$fils" -gt 0 ] && { | ||||||
|  | 		set_default erp_domain "$mobility_domain" | ||||||
|  | 		set_default erp_domain "$(echo "$ssid" | md5sum | head -c 8)" | ||||||
|  | 		set_default fils_realm "$erp_domain" | ||||||
|  |  | ||||||
|  | 		append bss_conf "erp_send_reauth_start=1" "$N" | ||||||
|  | 		append bss_conf "erp_domain=$erp_domain" "$N" | ||||||
|  | 		append bss_conf "fils_realm=$fils_realm" "$N" | ||||||
|  | 		append bss_conf "fils_cache_id=$(echo "$fils_realm" | md5sum | head -c 4)" "$N" | ||||||
|  |  | ||||||
|  | 		[ "$fils_dhcp" = "*" ] && { | ||||||
|  | 			json_get_values network network | ||||||
|  | 			fils_dhcp= | ||||||
|  | 			for net in $network; do | ||||||
|  | 				fils_dhcp="$(ifstatus "$net" | jsonfilter -e '@.data.dhcpserver')" | ||||||
|  | 				[ -n "$fils_dhcp" ] && break | ||||||
|  | 			done | ||||||
|  |  | ||||||
|  | 			[ -z "$fils_dhcp" -a -n "$network_bridge" -a -n "$network_ifname" ] && \ | ||||||
|  | 				fils_dhcp="$(udhcpc -B -n -q -s /lib/netifd/dhcp-get-server.sh -t 1 -i "$network_ifname" 2>/dev/null)" | ||||||
|  | 		} | ||||||
|  | 		[ -n "$fils_dhcp" ] && append bss_conf "dhcp_server=$fils_dhcp" "$N" | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	set_default auth_port 1812 | ||||||
|  | 	set_default auth_port_secondary 1812 | ||||||
|  | 	set_default dae_port 3799 | ||||||
|  | 	set_default request_cui 0 | ||||||
|  |  | ||||||
|  | 	[ "$eap_server" -eq 0  -a -n "$auth_server" ] && { | ||||||
|  | 		append bss_conf "auth_server_addr=$auth_server" "$N" | ||||||
|  | 		append bss_conf "auth_server_port=$auth_port" "$N" | ||||||
|  | 		append bss_conf "auth_server_shared_secret=$auth_secret" "$N" | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	[ -n "$auth_server_secondary" ] && { | ||||||
|  | 		append bss_conf "auth_server_addr=$auth_server_secondary" "$N" | ||||||
|  | 		append bss_conf "auth_server_port=$auth_port_secondary" "$N" | ||||||
|  | 		[ -n "$auth_secret_secondary" ] && \ | ||||||
|  | 			append bss_conf "auth_server_shared_secret=$auth_secret_secondary" "$N" | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	[ "$request_cui" -gt 0 ] && append bss_conf "radius_request_cui=$request_cui" "$N" | ||||||
|  | 	[ -n "$eap_reauth_period" ] && append bss_conf "eap_reauth_period=$eap_reauth_period" "$N" | ||||||
|  |  | ||||||
|  | 	[ -n "$dae_client" -a -n "$dae_secret" ] && { | ||||||
|  | 		append bss_conf "radius_das_port=$dae_port" "$N" | ||||||
|  | 		append bss_conf "radius_das_client=$dae_client $dae_secret" "$N" | ||||||
|  | 	} | ||||||
|  | 	json_for_each_item append_radius_auth_req_attr radius_auth_req_attr | ||||||
|  |  | ||||||
|  | 	if [ -n "$ownip" ]; then | ||||||
|  | 		append bss_conf "own_ip_addr=$ownip" "$N" | ||||||
|  | 	elif [ "$dynamic_ownip" -gt 0 ]; then | ||||||
|  | 		append bss_conf "dynamic_own_ip_addr=$dynamic_ownip" "$N" | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	[ -n "$radius_client_addr" ] && append bss_conf "radius_client_addr=$radius_client_addr" "$N" | ||||||
|  | 	[ "$macfilter" = radius ] && append bss_conf "macaddr_acl=2" "$N" | ||||||
| } | } | ||||||
|  |  | ||||||
| hostapd_set_bss_options() { | hostapd_set_bss_options() { | ||||||
| @@ -570,7 +662,7 @@ hostapd_set_bss_options() { | |||||||
|  |  | ||||||
| 	wireless_vif_parse_encryption | 	wireless_vif_parse_encryption | ||||||
|  |  | ||||||
| 	local bss_conf bss_md5sum ft_key | 	local bss_conf bss_md5sum | ||||||
| 	local wep_rekey wpa_group_rekey wpa_pair_rekey wpa_master_rekey wpa_key_mgmt | 	local wep_rekey wpa_group_rekey wpa_pair_rekey wpa_master_rekey wpa_key_mgmt | ||||||
|  |  | ||||||
| 	json_get_vars \ | 	json_get_vars \ | ||||||
| @@ -581,13 +673,14 @@ hostapd_set_bss_options() { | |||||||
| 		wps_independent wps_device_type wps_device_name wps_manufacturer wps_pin \ | 		wps_independent wps_device_type wps_device_name wps_manufacturer wps_pin \ | ||||||
| 		macfilter ssid utf8_ssid wmm uapsd hidden short_preamble rsn_preauth \ | 		macfilter ssid utf8_ssid wmm uapsd hidden short_preamble rsn_preauth \ | ||||||
| 		iapp_interface eapol_version dynamic_vlan ieee80211w nasid \ | 		iapp_interface eapol_version dynamic_vlan ieee80211w nasid \ | ||||||
| 		acct_secret acct_port acct_interval \ | 		acct_server acct_secret acct_port acct_interval \ | ||||||
|  | 		acct_server_secondary acct_secret_secondary acct_port_secondary \ | ||||||
| 		bss_load_update_period chan_util_avg_period sae_require_mfp sae_pwe \ | 		bss_load_update_period chan_util_avg_period sae_require_mfp sae_pwe \ | ||||||
| 		multi_ap multi_ap_backhaul_ssid multi_ap_backhaul_key skip_inactivity_poll \ | 		multi_ap multi_ap_backhaul_ssid multi_ap_backhaul_key skip_inactivity_poll \ | ||||||
| 		ppsk airtime_bss_weight airtime_bss_limit airtime_sta_weight \ | 		ppsk airtime_bss_weight airtime_bss_limit airtime_sta_weight \ | ||||||
| 		multicast_to_unicast_all proxy_arp per_sta_vif \ | 		multicast_to_unicast_all proxy_arp per_sta_vif \ | ||||||
| 		eap_server eap_user_file ca_cert server_cert private_key private_key_passwd server_id radius_server_clients radius_server_auth_port \ | 		eap_server eap_user_file ca_cert server_cert private_key private_key_passwd server_id radius_server_clients radius_server_auth_port \ | ||||||
| 		vendor_elements fils ocv apup multi_psk | 		vendor_elements fils ocv apup uci_section dynamic_probe_resp multi_psk | ||||||
|  |  | ||||||
| 	set_default fils 0 | 	set_default fils 0 | ||||||
| 	set_default isolate 0 | 	set_default isolate 0 | ||||||
| @@ -604,6 +697,7 @@ hostapd_set_bss_options() { | |||||||
| 	set_default tdls_prohibit 0 | 	set_default tdls_prohibit 0 | ||||||
| 	set_default eapol_version $((wpa & 1)) | 	set_default eapol_version $((wpa & 1)) | ||||||
| 	set_default acct_port 1813 | 	set_default acct_port 1813 | ||||||
|  | 	set_default acct_port_secondary 1813 | ||||||
| 	set_default bss_load_update_period 60 | 	set_default bss_load_update_period 60 | ||||||
| 	set_default chan_util_avg_period 600 | 	set_default chan_util_avg_period 600 | ||||||
| 	set_default utf8_ssid 1 | 	set_default utf8_ssid 1 | ||||||
| @@ -612,6 +706,7 @@ hostapd_set_bss_options() { | |||||||
| 	set_default airtime_bss_weight 0 | 	set_default airtime_bss_weight 0 | ||||||
| 	set_default airtime_bss_limit 0 | 	set_default airtime_bss_limit 0 | ||||||
| 	set_default eap_server 0 | 	set_default eap_server 0 | ||||||
|  | 	set_default dynamic_probe_resp 0 | ||||||
| 	set_default apup 0 | 	set_default apup 0 | ||||||
|  |  | ||||||
| 	/usr/sbin/hostapd -vfils || fils=0 | 	/usr/sbin/hostapd -vfils || fils=0 | ||||||
| @@ -638,6 +733,7 @@ hostapd_set_bss_options() { | |||||||
| 	append bss_conf "preamble=$short_preamble" "$N" | 	append bss_conf "preamble=$short_preamble" "$N" | ||||||
| 	append bss_conf "wmm_enabled=$wmm" "$N" | 	append bss_conf "wmm_enabled=$wmm" "$N" | ||||||
| 	append bss_conf "ignore_broadcast_ssid=$hidden" "$N" | 	append bss_conf "ignore_broadcast_ssid=$hidden" "$N" | ||||||
|  | 	append bss_conf "dynamic_probe_resp=$dynamic_probe_resp" "$N" | ||||||
| 	append bss_conf "uapsd_advertisement_enabled=$uapsd" "$N" | 	append bss_conf "uapsd_advertisement_enabled=$uapsd" "$N" | ||||||
| 	append bss_conf "utf8_ssid=$utf8_ssid" "$N" | 	append bss_conf "utf8_ssid=$utf8_ssid" "$N" | ||||||
| 	append bss_conf "multi_ap=$multi_ap" "$N" | 	append bss_conf "multi_ap=$multi_ap" "$N" | ||||||
| @@ -654,10 +750,22 @@ hostapd_set_bss_options() { | |||||||
|  |  | ||||||
| 	[ -n "$nasid" ] && append bss_conf "nas_identifier=$nasid" "$N" | 	[ -n "$nasid" ] && append bss_conf "nas_identifier=$nasid" "$N" | ||||||
|  |  | ||||||
| 	[ -n "$acct_interval" ] && \ | 	[ -n "$acct_server" ] && { | ||||||
| 		append bss_conf "radius_acct_interim_interval=$acct_interval" "$N" | 		append bss_conf "acct_server_addr=$acct_server" "$N" | ||||||
| 	json_for_each_item append_acct_server acct_server | 		append bss_conf "acct_server_port=$acct_port" "$N" | ||||||
| 	json_for_each_item append_radius_acct_req_attr radius_acct_req_attr | 		[ -n "$acct_secret" ] && \ | ||||||
|  | 			append bss_conf "acct_server_shared_secret=$acct_secret" "$N" | ||||||
|  | 		[ -n "$acct_interval" ] && \ | ||||||
|  | 			append bss_conf "radius_acct_interim_interval=$acct_interval" "$N" | ||||||
|  | 		json_for_each_item append_radius_acct_req_attr radius_acct_req_attr | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	[ -n "$acct_server_secondary" ] && { | ||||||
|  | 		append bss_conf "acct_server_addr=$acct_server_secondary" "$N" | ||||||
|  | 		append bss_conf "acct_server_port=$acct_port_secondary" "$N" | ||||||
|  | 		[ -n "$acct_secret_secondary" ] && \ | ||||||
|  | 			append bss_conf "acct_server_shared_secret=$acct_secret_secondary" "$N" | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	[ -n "$ocv" ] && append bss_conf "ocv=$ocv" "$N" | 	[ -n "$ocv" ] && append bss_conf "ocv=$ocv" "$N" | ||||||
|  |  | ||||||
| @@ -690,6 +798,8 @@ hostapd_set_bss_options() { | |||||||
| 			# Here we make the assumption that if we're in open mode | 			# Here we make the assumption that if we're in open mode | ||||||
| 			# with WPS enabled, we got to be in unconfigured state. | 			# with WPS enabled, we got to be in unconfigured state. | ||||||
| 			wps_not_configured=1 | 			wps_not_configured=1 | ||||||
|  | 			vlan_possible=1 | ||||||
|  | 			append_radius_server | ||||||
| 		;; | 		;; | ||||||
| 		psk|sae|psk-sae) | 		psk|sae|psk-sae) | ||||||
| 			json_get_vars key wpa_psk_file | 			json_get_vars key wpa_psk_file | ||||||
| @@ -714,74 +824,15 @@ hostapd_set_bss_options() { | |||||||
| 			} | 			} | ||||||
| 			[ "$eapol_version" -ge "1" -a "$eapol_version" -le "2" ] && append bss_conf "eapol_version=$eapol_version" "$N" | 			[ "$eapol_version" -ge "1" -a "$eapol_version" -le "2" ] && append bss_conf "eapol_version=$eapol_version" "$N" | ||||||
|  |  | ||||||
|  | 			append_radius_server | ||||||
| 			set_default dynamic_vlan 0 | 			set_default dynamic_vlan 0 | ||||||
| 			vlan_possible=1 | 			vlan_possible=1 | ||||||
| 			wps_possible=1 | 			wps_possible=1 | ||||||
| 		;; | 		;; | ||||||
| 		eap|eap2|eap-eap2|eap192) | 		eap|eap192|eap-eap2|eap2) | ||||||
| 			json_get_vars \ | 			append_radius_server | ||||||
| 				auth_server auth_secret auth_port \ |  | ||||||
| 				dae_client dae_secret dae_port \ |  | ||||||
| 				dynamic_ownip ownip radius_client_addr \ |  | ||||||
| 				eap_reauth_period request_cui \ |  | ||||||
| 				erp_domain mobility_domain \ |  | ||||||
| 				fils_realm fils_dhcp |  | ||||||
|  |  | ||||||
| 			# radius can provide VLAN ID for clients | 			# radius can provide VLAN ID for clients | ||||||
| 			vlan_possible=1 | 			vlan_possible=1 | ||||||
|  |  | ||||||
| 			set_default dynamic_ownip 1 |  | ||||||
|  |  | ||||||
| 			# legacy compatibility |  | ||||||
| 			[ -n "$auth_server" ] || json_get_var auth_server server |  | ||||||
| 			[ -n "$auth_port" ] || json_get_var auth_port port |  | ||||||
| 			[ -n "$auth_secret" ] || json_get_var auth_secret key |  | ||||||
|  |  | ||||||
| 			[ "$fils" -gt 0 ] && { |  | ||||||
| 				set_default erp_domain "$mobility_domain" |  | ||||||
| 				set_default erp_domain "$(echo "$ssid" | md5sum | head -c 8)" |  | ||||||
| 				set_default fils_realm "$erp_domain" |  | ||||||
|  |  | ||||||
| 				append bss_conf "erp_send_reauth_start=1" "$N" |  | ||||||
| 				append bss_conf "erp_domain=$erp_domain" "$N" |  | ||||||
| 				append bss_conf "fils_realm=$fils_realm" "$N" |  | ||||||
| 				append bss_conf "fils_cache_id=$(echo "$fils_realm" | md5sum | head -c 4)" "$N" |  | ||||||
|  |  | ||||||
| 				[ "$fils_dhcp" = "*" ] && { |  | ||||||
| 					json_get_values network network |  | ||||||
| 					fils_dhcp= |  | ||||||
| 					for net in $network; do |  | ||||||
| 						fils_dhcp="$(ifstatus "$net" | jsonfilter -e '@.data.dhcpserver')" |  | ||||||
| 						[ -n "$fils_dhcp" ] && break |  | ||||||
| 					done |  | ||||||
|  |  | ||||||
| 					[ -z "$fils_dhcp" -a -n "$network_bridge" -a -n "$network_ifname" ] && \ |  | ||||||
| 						fils_dhcp="$(udhcpc -B -n -q -s /lib/netifd/dhcp-get-server.sh -t 1 -i "$network_ifname" 2>/dev/null)" |  | ||||||
| 				} |  | ||||||
| 				[ -n "$fils_dhcp" ] && append bss_conf "dhcp_server=$fils_dhcp" "$N" |  | ||||||
| 			} |  | ||||||
|  |  | ||||||
| 			set_default auth_port 1812 |  | ||||||
| 			set_default dae_port 3799 |  | ||||||
| 			set_default request_cui 0 |  | ||||||
|  |  | ||||||
| 			[ "$eap_server" -eq 0 ] && json_for_each_item append_auth_server auth_server |  | ||||||
| 			[ "$request_cui" -gt 0 ] && append bss_conf "radius_request_cui=$request_cui" "$N" |  | ||||||
| 			[ -n "$eap_reauth_period" ] && append bss_conf "eap_reauth_period=$eap_reauth_period" "$N" |  | ||||||
|  |  | ||||||
| 			[ -n "$dae_client" -a -n "$dae_secret" ] && { |  | ||||||
| 				append bss_conf "radius_das_port=$dae_port" "$N" |  | ||||||
| 				append bss_conf "radius_das_client=$dae_client $dae_secret" "$N" |  | ||||||
| 			} |  | ||||||
| 			json_for_each_item append_radius_auth_req_attr radius_auth_req_attr |  | ||||||
|  |  | ||||||
| 			if [ -n "$ownip" ]; then |  | ||||||
| 				append bss_conf "own_ip_addr=$ownip" "$N" |  | ||||||
| 			elif [ "$dynamic_ownip" -gt 0 ]; then |  | ||||||
| 				append bss_conf "dynamic_own_ip_addr=$dynamic_ownip" "$N" |  | ||||||
| 			fi |  | ||||||
|  |  | ||||||
| 			[ -n "$radius_client_addr" ] && append bss_conf "radius_client_addr=$radius_client_addr" "$N" |  | ||||||
| 			append bss_conf "eapol_key_index_workaround=1" "$N" | 			append bss_conf "eapol_key_index_workaround=1" "$N" | ||||||
| 			append bss_conf "ieee8021x=1" "$N" | 			append bss_conf "ieee8021x=1" "$N" | ||||||
|  |  | ||||||
| @@ -798,6 +849,7 @@ hostapd_set_bss_options() { | |||||||
| 			append bss_conf "wpa_psk_radius=3" "$N" | 			append bss_conf "wpa_psk_radius=3" "$N" | ||||||
| 			append_radius_server | 			append_radius_server | ||||||
| 			vlan_possible=1 | 			vlan_possible=1 | ||||||
|  | 		;; | ||||||
| 	esac | 	esac | ||||||
|  |  | ||||||
| 	case "$auth_type" in | 	case "$auth_type" in | ||||||
| @@ -921,45 +973,42 @@ hostapd_set_bss_options() { | |||||||
| 		} | 		} | ||||||
| 	fi | 	fi | ||||||
|  |  | ||||||
| 	json_get_vars ieee80211r |  | ||||||
| 	set_default ieee80211r 0 |  | ||||||
| 	if [ "$wpa" -ge "1" ]; then | 	if [ "$wpa" -ge "1" ]; then | ||||||
| 		if [ "$fils" -gt 0 ]; then | 		json_get_vars ieee80211r | ||||||
| 			json_get_vars fils_realm | 		set_default ieee80211r 0 | ||||||
| 			set_default fils_realm "$(echo "$ssid" | md5sum | head -c 8)" |  | ||||||
| 		fi |  | ||||||
|  |  | ||||||
| 		append bss_conf "wpa_disable_eapol_key_retries=$wpa_disable_eapol_key_retries" "$N" |  | ||||||
|  |  | ||||||
| 		hostapd_append_wpa_key_mgmt |  | ||||||
| 		[ -n "$wpa_key_mgmt" ] && append bss_conf "wpa_key_mgmt=$wpa_key_mgmt" "$N" |  | ||||||
| 	fi |  | ||||||
|  |  | ||||||
| 	if [ "$wpa" -ge "2" ]; then |  | ||||||
| 		if [ "$ieee80211r" -gt "0" ]; then | 		if [ "$ieee80211r" -gt "0" ]; then | ||||||
| 			json_get_vars mobility_domain ft_psk_generate_local ft_over_ds reassociation_deadline | 			json_get_vars mobility_domain ft_psk_generate_local ft_over_ds reassociation_deadline ft_l2_refresh | ||||||
|  |  | ||||||
| 			set_default mobility_domain "$(echo "$ssid" | md5sum | head -c 4)" | 			set_default mobility_domain "$(echo "$ssid" | md5sum | head -c 4)" | ||||||
| 			set_default ft_over_ds 0 | 			set_default ft_over_ds 1 | ||||||
|  | 			set_default ft_l2_refresh 30 | ||||||
| 			set_default reassociation_deadline 1000 | 			set_default reassociation_deadline 1000 | ||||||
|  | 			skip_kh_setup=0 | ||||||
|  |  | ||||||
| 			case "$auth_type" in | 			case "$auth_type" in | ||||||
| 				psk) | 				psk|psk-sae) | ||||||
| 					set_default ft_psk_generate_local 1 | 					set_default ft_psk_generate_local 1 | ||||||
|  | 					skip_kh_setup="$ft_psk_generate_local" | ||||||
| 				;; | 				;; | ||||||
| 				*) | 				*) | ||||||
| 					set_default ft_psk_generate_local 0 | 					set_default ft_psk_generate_local 0 | ||||||
| 				;; | 				;; | ||||||
| 			esac | 			esac | ||||||
|  |  | ||||||
|  | 			case "$auth_type" in | ||||||
|  | 				*sae*) skip_kh_setup=0;; | ||||||
|  | 			esac | ||||||
|  |  | ||||||
| 			[ -n "$network_ifname" ] && append bss_conf "ft_iface=$network_ifname" "$N" | 			[ -n "$network_ifname" ] && append bss_conf "ft_iface=$network_ifname" "$N" | ||||||
| 			append bss_conf "mobility_domain=$mobility_domain" "$N" | 			append bss_conf "mobility_domain=$mobility_domain" "$N" | ||||||
| 			append bss_conf "ft_psk_generate_local=$ft_psk_generate_local" "$N" | 			append bss_conf "ft_psk_generate_local=$ft_psk_generate_local" "$N" | ||||||
| 			append bss_conf "ft_over_ds=$ft_over_ds" "$N" | 			append bss_conf "ft_over_ds=$ft_over_ds" "$N" | ||||||
| 			append bss_conf "reassociation_deadline=$reassociation_deadline" "$N" | 			append bss_conf "reassociation_deadline=$reassociation_deadline" "$N" | ||||||
|  | 			[ -n "$ft_l2_refresh" ] && append bss_conf "ft_l2_refresh=$ft_l2_refresh" "$N" | ||||||
|  |  | ||||||
| 			if [ "$ft_psk_generate_local" -eq "0" ]; then | 			if [ "$skip_kh_setup" -eq "0" ]; then | ||||||
| 				json_get_vars r0_key_lifetime r1_key_holder pmk_r1_push | 				json_get_vars r0_key_lifetime r1_key_holder pmk_r1_push ft_key | ||||||
| 				json_get_values r0kh r0kh | 				json_get_values r0kh r0kh | ||||||
| 				json_get_values r1kh r1kh | 				json_get_values r1kh r1kh | ||||||
|  |  | ||||||
| @@ -971,12 +1020,15 @@ hostapd_set_bss_options() { | |||||||
| 						wireless_setup_vif_failed FT_KEY_CANT_BE_DERIVED | 						wireless_setup_vif_failed FT_KEY_CANT_BE_DERIVED | ||||||
| 						return 1 | 						return 1 | ||||||
| 					fi | 					fi | ||||||
| 					ft_key=`echo -n "$mobility_domain/${auth_secret:-${key}}" | md5sum | awk '{print $1}'` | 					[ -z "$ft_key" ] && { | ||||||
|  | 						key=`echo -n "$mobility_domain/$auth_secret" | md5sum | awk '{print $1}'` | ||||||
|  |  | ||||||
| 					set_default r0kh "ff:ff:ff:ff:ff:ff,*,$ft_key" | 						set_default r0kh "ff:ff:ff:ff:ff:ff,*,$key" | ||||||
| 					set_default r1kh "00:00:00:00:00:00,00:00:00:00:00:00,$ft_key" | 						set_default r1kh "00:00:00:00:00:00,00:00:00:00:00:00,$key" | ||||||
|  | 					} | ||||||
| 				} | 				} | ||||||
|  |  | ||||||
|  | 				[ -n "$ft_key" ] && append bss_conf "ft_key=$ft_key" "$N" | ||||||
| 				[ -n "$r1_key_holder" ] && append bss_conf "r1_key_holder=$r1_key_holder" "$N" | 				[ -n "$r1_key_holder" ] && append bss_conf "r1_key_holder=$r1_key_holder" "$N" | ||||||
| 				append bss_conf "r0_key_lifetime=$r0_key_lifetime" "$N" | 				append bss_conf "r0_key_lifetime=$r0_key_lifetime" "$N" | ||||||
| 				append bss_conf "pmk_r1_push=$pmk_r1_push" "$N" | 				append bss_conf "pmk_r1_push=$pmk_r1_push" "$N" | ||||||
| @@ -989,7 +1041,18 @@ hostapd_set_bss_options() { | |||||||
| 				done | 				done | ||||||
| 			fi | 			fi | ||||||
| 		fi | 		fi | ||||||
|  | 		if [ "$fils" -gt 0 ]; then | ||||||
|  | 			json_get_vars fils_realm | ||||||
|  | 			set_default fils_realm "$(echo "$ssid" | md5sum | head -c 8)" | ||||||
|  | 		fi | ||||||
|  |  | ||||||
|  | 		append bss_conf "wpa_disable_eapol_key_retries=$wpa_disable_eapol_key_retries" "$N" | ||||||
|  |  | ||||||
|  | 		hostapd_append_wpa_key_mgmt | ||||||
|  | 		[ -n "$wpa_key_mgmt" ] && append bss_conf "wpa_key_mgmt=$wpa_key_mgmt" "$N" | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	if [ "$wpa" -ge "2" ]; then | ||||||
| 		if [ -n "$network_bridge" -a "$rsn_preauth" = 1 ]; then | 		if [ -n "$network_bridge" -a "$rsn_preauth" = 1 ]; then | ||||||
| 			set_default auth_cache 1 | 			set_default auth_cache 1 | ||||||
| 			append bss_conf "rsn_preauth=1" "$N" | 			append bss_conf "rsn_preauth=1" "$N" | ||||||
| @@ -1189,6 +1252,8 @@ hostapd_set_bss_options() { | |||||||
| 		append bss_conf "per_sta_vif=$per_sta_vif" "$N" | 		append bss_conf "per_sta_vif=$per_sta_vif" "$N" | ||||||
| 	fi | 	fi | ||||||
|  |  | ||||||
|  | 	[ -n "$uci_section" ] && append bss_conf "uci_section=$uci_section" "$N" | ||||||
|  |  | ||||||
| 	if [ "$apup" -gt 0 ]; then | 	if [ "$apup" -gt 0 ]; then | ||||||
| 		append bss_conf "apup=$apup" "$N" | 		append bss_conf "apup=$apup" "$N" | ||||||
|  |  | ||||||
|   | |||||||
| @@ -7,14 +7,14 @@ board_config_update | |||||||
| board=$(board_name) | board=$(board_name) | ||||||
|  |  | ||||||
| case "$board" in | case "$board" in | ||||||
|  | sercomm,ap72tip-v4|\ | ||||||
| sercomm,ap72tip) | sercomm,ap72tip) | ||||||
|  | 	ucidef_set_led_default "power" "POWER" "blue:status" "on" | ||||||
| 	ucidef_set_led_netdev "wan_link" "wan_link" "green:phy" "eth0" "link" | 	ucidef_set_led_netdev "wan_link" "wan_link" "green:phy" "eth0" "link" | ||||||
| 	ucidef_set_led_netdev "wan_act" "wan_act" "yellow:phy" "eth0" "rx tx" | 	ucidef_set_led_netdev "wan_act" "wan_act" "yellow:phy" "eth0" "rx tx" | ||||||
| 	;; | 	;; | ||||||
| sonicfi,rap7110c-341x) | sonicfi,rap7110c-341x|\ | ||||||
| 	ucidef_set_led_default "power" "POWER" "pwm:blue" "on" | sonicfi,rap750w-311a) | ||||||
| 	;; |  | ||||||
| cig,wf189w) |  | ||||||
| 	ucidef_set_led_default "power" "POWER" "pwm:blue" "on" | 	ucidef_set_led_default "power" "POWER" "pwm:blue" "on" | ||||||
| 	;; | 	;; | ||||||
| esac | esac | ||||||
|   | |||||||
| @@ -22,7 +22,15 @@ ipq53xx_setup_interfaces() | |||||||
| 		ucidef_set_interfaces_lan_wan "" "eth0" | 		ucidef_set_interfaces_lan_wan "" "eth0" | ||||||
| 		;; | 		;; | ||||||
| 	cig,wf189w) | 	cig,wf189w) | ||||||
| 		ucidef_add_switch "switch1" "5u@eth0" "3:lan" "2:lan" "1:lan" "0u@eth1" "4:wan" | 		ucidef_set_interfaces_lan_wan "eth1" "eth0" | ||||||
|  | 		ucidef_add_switch "switch1" "0u@eth1" "3:lan" "2:lan" "1:lan" | ||||||
|  | 		;; | ||||||
|  | 	cig,wf189h) | ||||||
|  | 		ucidef_set_interfaces_lan_wan "eth1" "eth0" | ||||||
|  | 		ucidef_add_switch "switch1" "0u@eth1" "3:lan" "2:lan" | ||||||
|  | 		;; | ||||||
|  | 	sercomm,ap72tip-v4) | ||||||
|  | 		ucidef_set_interface_wan "eth0" | ||||||
| 		;;	 | 		;;	 | ||||||
| 	esac | 	esac | ||||||
| } | } | ||||||
| @@ -32,6 +40,7 @@ qcom_setup_macs() | |||||||
|         local board="$1" |         local board="$1" | ||||||
|         case $board in |         case $board in | ||||||
| 	cig,wf189w|\ | 	cig,wf189w|\ | ||||||
|  | 	cig,wf189h|\ | ||||||
|         cig,wf189) |         cig,wf189) | ||||||
| 		mtd=$(find_mtd_chardev "0:APPSBLENV") | 		mtd=$(find_mtd_chardev "0:APPSBLENV") | ||||||
| 		[ -z "$mtd" ] && return; | 		[ -z "$mtd" ] && return; | ||||||
| @@ -46,12 +55,30 @@ qcom_setup_macs() | |||||||
| 		ucidef_set_wireless_macaddr_base 5g $(macaddr_add "$wan_mac" 3) | 		ucidef_set_wireless_macaddr_base 5g $(macaddr_add "$wan_mac" 3) | ||||||
| 		ucidef_set_wireless_macaddr_base 6g $(macaddr_add "$wan_mac" 4) | 		ucidef_set_wireless_macaddr_base 6g $(macaddr_add "$wan_mac" 4) | ||||||
|                 ;; |                 ;; | ||||||
|  |         sercomm,ap72tip) | ||||||
|  |                 wan_mac=$(cat /sys/class/net/eth0/address) | ||||||
|  |                 lan_mac=$(cat /sys/class/net/eth1/address) | ||||||
|  |                 ucidef_set_wireless_macaddr_base 2g $(macaddr_add "$wan_mac" 2) | ||||||
|  |                 ucidef_set_wireless_macaddr_base 5g $(macaddr_add "$wan_mac" 3) | ||||||
|  |                 ucidef_set_wireless_macaddr_base 6g $(macaddr_add "$wan_mac" 4) | ||||||
|  |                 ;; | ||||||
|         edgecore,eap105) |         edgecore,eap105) | ||||||
|                 wan_mac=$(cat /sys/class/net/eth0/address) |                 wan_mac=$(cat /sys/class/net/eth0/address) | ||||||
|                 lan_mac=$(macaddr_add "$wan_mac" 1) |                 lan_mac=$(macaddr_add "$wan_mac" 1) | ||||||
| 		;; | 		;; | ||||||
|         sonicfi,rap7110c-341x|\ |         sonicfi,rap7110c-341x) | ||||||
|  |                 wan_mac=$(cat /sys/class/net/eth0/address) | ||||||
|  |                 ucidef_set_wireless_macaddr_base 2g $(macaddr_add "$wan_mac" 1) | ||||||
|  |                 ucidef_set_wireless_macaddr_base 5g $(macaddr_add "$wan_mac" 2) | ||||||
|  |                 ucidef_set_wireless_macaddr_base 6g $(macaddr_add "$wan_mac" 3) | ||||||
|  |                 ;; | ||||||
|         sonicfi,rap750w-311a) |         sonicfi,rap750w-311a) | ||||||
|  |                 wan_mac=$(cat /sys/class/net/eth0/address) | ||||||
|  |                 lan_mac=$(macaddr_add "$wan_mac" 1) | ||||||
|  |                 ucidef_set_wireless_macaddr_base 2g $(macaddr_add "$wan_mac" 2) | ||||||
|  |                 ucidef_set_wireless_macaddr_base 5g $(macaddr_add "$wan_mac" 3) | ||||||
|  |                 ;; | ||||||
|  |         sercomm,ap72tip-v4) | ||||||
|                 wan_mac=$(cat /sys/class/net/eth0/address) |                 wan_mac=$(cat /sys/class/net/eth0/address) | ||||||
|                 ucidef_set_wireless_macaddr_base 2g $(macaddr_add "$wan_mac" 1) |                 ucidef_set_wireless_macaddr_base 2g $(macaddr_add "$wan_mac" 1) | ||||||
|                 ucidef_set_wireless_macaddr_base 5g $(macaddr_add "$wan_mac" 2) |                 ucidef_set_wireless_macaddr_base 5g $(macaddr_add "$wan_mac" 2) | ||||||
|   | |||||||
| @@ -28,8 +28,10 @@ case "$FIRMWARE" in | |||||||
| ath12k/IPQ5332/hw1.0/caldata.bin) | ath12k/IPQ5332/hw1.0/caldata.bin) | ||||||
| 	case "$board" in | 	case "$board" in | ||||||
| 	cig,wf189w|\ | 	cig,wf189w|\ | ||||||
|  | 	cig,wf189h|\ | ||||||
| 	cig,wf189|\ | 	cig,wf189|\ | ||||||
| 	edgecore,eap105|\ | 	edgecore,eap105|\ | ||||||
|  | 	sercomm,ap72tip-v4|\ | ||||||
| 	sercomm,ap72tip) | 	sercomm,ap72tip) | ||||||
| 		caldata_extract "0:ART" 0x1000 0x20000  | 		caldata_extract "0:ART" 0x1000 0x20000  | ||||||
| 		;; | 		;; | ||||||
| @@ -45,6 +47,7 @@ ath12k/QCN92XX/hw1.0/cal-pci-0001:01:00.0.bin) | |||||||
| 	case "$board" in | 	case "$board" in | ||||||
| 	cig,wf189|\ | 	cig,wf189|\ | ||||||
| 	edgecore,eap105|\ | 	edgecore,eap105|\ | ||||||
|  | 	sercomm,ap72tip-v4|\ | ||||||
| 	sercomm,ap72tip) | 	sercomm,ap72tip) | ||||||
| 		caldata_extract "0:ART" 0x58800 0x2d000 | 		caldata_extract "0:ART" 0x58800 0x2d000 | ||||||
| 		;; | 		;; | ||||||
| @@ -56,12 +59,13 @@ ath12k/QCN92XX/hw1.0/cal-pci-0001:01:00.0.bin) | |||||||
| ath12k/QCN6432/hw1.0/caldata_1.bin) | ath12k/QCN6432/hw1.0/caldata_1.bin) | ||||||
| 	case "$board" in | 	case "$board" in | ||||||
| 	sonicfi,rap750w-311a) | 	sonicfi,rap750w-311a) | ||||||
| 		caldata_extract "0:ART" 0x26800 0x18800 | 		caldata_extract "0:ART" 0x12800 0x18800 | ||||||
| 		;; | 		;; | ||||||
| 	esac | 	esac | ||||||
| 	;; | 	;; | ||||||
| ath12k/QCN6432/hw1.0/cal-ahb-soc@0:wifi1@c0000000.bin) | ath12k/QCN6432/hw1.0/cal-ahb-soc@0:wifi1@c0000000.bin) | ||||||
| 	case "$board" in | 	case "$board" in | ||||||
|  | 	cig,wf189h|\ | ||||||
| 	cig,wf189w) | 	cig,wf189w) | ||||||
| 		caldata_extract "0:ART" 0x26800 0x20000 | 		caldata_extract "0:ART" 0x26800 0x20000 | ||||||
| 		;; | 		;; | ||||||
| @@ -69,6 +73,7 @@ ath12k/QCN6432/hw1.0/cal-ahb-soc@0:wifi1@c0000000.bin) | |||||||
| 	;; | 	;; | ||||||
| ath12k/QCN6432/hw1.0/cal-ahb-soc@0:wifi2@c0000000.bin) | ath12k/QCN6432/hw1.0/cal-ahb-soc@0:wifi2@c0000000.bin) | ||||||
| 	case "$board" in | 	case "$board" in | ||||||
|  | 	cig,wf189h|\ | ||||||
| 	cig,wf189w) | 	cig,wf189w) | ||||||
| 		caldata_extract "0:ART" 0x58800 0x20000 | 		caldata_extract "0:ART" 0x58800 0x20000 | ||||||
| 		;; | 		;; | ||||||
|   | |||||||
							
								
								
									
										77
									
								
								feeds/qca-wifi-7/ipq53xx/base-files/etc/init.d/smp-affinity
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										77
									
								
								feeds/qca-wifi-7/ipq53xx/base-files/etc/init.d/smp-affinity
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,77 @@ | |||||||
|  | #!/bin/sh /etc/rc.common | ||||||
|  |  | ||||||
|  | START=99 | ||||||
|  |  | ||||||
|  | boot() { | ||||||
|  | 	# For CE(assigned 2 core to copy engine) | ||||||
|  | 	# using 3 core will cause firmware crash due to bss channel survey timed out | ||||||
|  | 	i=0 | ||||||
|  | 	cpu_mul=2 | ||||||
|  | 	ce="ce" | ||||||
|  | 	ce1="ce_" | ||||||
|  | 	ce_name="$ce$i" | ||||||
|  | 	ce_name1="$ce1$i" | ||||||
|  | 	while [ $i -lt 15 ] | ||||||
|  | 	do | ||||||
|  | 		cpu=1 | ||||||
|  | 		for irq_num in `grep -e "$ce_name" -e "$ce_name1" /proc/interrupts | cut -d ':' -f 1` | ||||||
|  | 		do | ||||||
|  | 			[ -n "$irq_num" ] && echo $cpu > /proc/irq/$irq_num/smp_affinity | ||||||
|  | 			cpu=$((cpu * cpu_mul)) | ||||||
|  | 			if [ $cpu -gt 4 ] ; then cpu=1; fi | ||||||
|  | 		done | ||||||
|  | 	i=$((i+1)) | ||||||
|  | 	ce_name="$ce$i" | ||||||
|  | 	ce_name1="$ce1$i" | ||||||
|  | 	done | ||||||
|  |  | ||||||
|  | 	#For IPQ5332 2G radio | ||||||
|  | 	irq_affinity_num=`grep -E -m1 'reo2host-destination-ring4' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` | ||||||
|  | 	[ -n "$irq_affinity_num" ] && echo 8 > /proc/irq/$irq_affinity_num/smp_affinity | ||||||
|  | 	irq_affinity_num=`grep -E -m1 'reo2host-destination-ring3' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` | ||||||
|  | 	[ -n "$irq_affinity_num" ] && echo 4 > /proc/irq/$irq_affinity_num/smp_affinity | ||||||
|  | 	irq_affinity_num=`grep -E -m1 'reo2host-destination-ring2' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` | ||||||
|  | 	[ -n "$irq_affinity_num" ] && echo 2 > /proc/irq/$irq_affinity_num/smp_affinity | ||||||
|  | 	irq_affinity_num=`grep -E -m1 'reo2host-destination-ring1' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` | ||||||
|  | 	[ -n "$irq_affinity_num" ] && echo 1 > /proc/irq/$irq_affinity_num/smp_affinity | ||||||
|  | 	irq_affinity_num=`grep -E -m1 'wbm2host-tx-completions-ring4' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` | ||||||
|  | 	[ -n "$irq_affinity_num" ] && echo 8 > /proc/irq/$irq_affinity_num/smp_affinity | ||||||
|  | 	irq_affinity_num=`grep -E -m1 'wbm2host-tx-completions-ring3' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` | ||||||
|  | 	[ -n "$irq_affinity_num" ] && echo 4 > /proc/irq/$irq_affinity_num/smp_affinity | ||||||
|  | 	irq_affinity_num=`grep -E -m1 'wbm2host-tx-completions-ring2' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` | ||||||
|  | 	[ -n "$irq_affinity_num" ] && echo 2 > /proc/irq/$irq_affinity_num/smp_affinity | ||||||
|  | 	irq_affinity_num=`grep -E -m1 'wbm2host-tx-completions-ring1' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` | ||||||
|  | 	[ -n "$irq_affinity_num" ] && echo 1 > /proc/irq/$irq_affinity_num/smp_affinity | ||||||
|  | 	irq_affinity_num=`grep -E -m1 'reo2ost-exception' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` | ||||||
|  | 	[ -n "$irq_affinity_num" ] && echo 8 > /proc/irq/$irq_affinity_num/smp_affinity | ||||||
|  | 	irq_affinity_num=`grep -E -m1 'wbm2host-rx-release' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` | ||||||
|  | 	[ -n "$irq_affinity_num" ] && echo 8 > /proc/irq/$irq_affinity_num/smp_affinity | ||||||
|  | 	irq_affinity_num=`grep -E -m1 'reo2host-status' /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` | ||||||
|  | 	[ -n "$irq_affinity_num" ] && echo 8 > /proc/irq/$irq_affinity_num/smp_affinity | ||||||
|  |  | ||||||
|  | 	# 5G and 6G radio | ||||||
|  | 	# pci0 and pci1 for Wkiki (two radio and one radio split mode) | ||||||
|  | 	# pcic1 and pcic2 are for Pebble | ||||||
|  | 	for j in pci0 pci1 pcic1 pcic2; do | ||||||
|  | 		irq_affinity_num=`grep -E -m1 "$j"_wlan_dp_4 /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` | ||||||
|  | 		[ -n "$irq_affinity_num" ] && echo 1 > /proc/irq/$irq_affinity_num/smp_affinity | ||||||
|  | 		irq_affinity_num=`grep -E -m1 "$j"_wlan_dp_5 /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` | ||||||
|  | 		[ -n "$irq_affinity_num" ] && echo 2 > /proc/irq/$irq_affinity_num/smp_affinity | ||||||
|  | 		irq_affinity_num=`grep -E -m1 "$j"_wlan_dp_6 /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` | ||||||
|  | 		[ -n "$irq_affinity_num" ] && echo 4 > /proc/irq/$irq_affinity_num/smp_affinity | ||||||
|  | 		irq_affinity_num=`grep -E -m1 "$j"_wlan_dp_7 /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` | ||||||
|  | 		[ -n "$irq_affinity_num" ] && echo 8 > /proc/irq/$irq_affinity_num/smp_affinity | ||||||
|  | 		irq_affinity_num=`grep -E -m1 "$j"_wlan_dp_0 /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` | ||||||
|  | 		[ -n "$irq_affinity_num" ] && echo 1 > /proc/irq/$irq_affinity_num/smp_affinity | ||||||
|  | 		irq_affinity_num=`grep -E -m1 "$j"_wlan_dp_1 /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` | ||||||
|  | 		[ -n "$irq_affinity_num" ] && echo 2 > /proc/irq/$irq_affinity_num/smp_affinity | ||||||
|  | 		irq_affinity_num=`grep -E -m1 "$j"_wlan_dp_2 /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` | ||||||
|  | 		[ -n "$irq_affinity_num" ] && echo 4 > /proc/irq/$irq_affinity_num/smp_affinity | ||||||
|  | 		irq_affinity_num=`grep -E -m1 "$j"_wlan_dp_11 /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` | ||||||
|  | 		[ -n "$irq_affinity_num" ] && echo 8 > /proc/irq/$irq_affinity_num/smp_affinity | ||||||
|  | 		irq_affinity_num=`grep -E -m1 "$j"_wlan_dp_3 /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` | ||||||
|  | 		[ -n "$irq_affinity_num" ] && echo 8 > /proc/irq/$irq_affinity_num/smp_affinity | ||||||
|  | 		irq_affinity_num=`grep -E -m1 "$j"_wlan_dp_8 /proc/interrupts | cut -d ':' -f 1 | tail -n1 | tr -d ' '` | ||||||
|  | 		[ -n "$irq_affinity_num" ] && echo 2 > /proc/irq/$irq_affinity_num/smp_affinity | ||||||
|  |         done | ||||||
|  | } | ||||||
| @@ -87,6 +87,7 @@ platform_do_upgrade() { | |||||||
| 	board=$(board_name) | 	board=$(board_name) | ||||||
| 	case $board in | 	case $board in | ||||||
| 	cig,wf189w|\ | 	cig,wf189w|\ | ||||||
|  | 	cig,wf189h|\ | ||||||
| 	cig,wf189) | 	cig,wf189) | ||||||
| 		if [ -f /proc/boot_info/bootconfig0/rootfs/upgradepartition ]; then | 		if [ -f /proc/boot_info/bootconfig0/rootfs/upgradepartition ]; then | ||||||
| 			CI_UBIPART="$(cat /proc/boot_info/bootconfig0/rootfs/upgradepartition)" | 			CI_UBIPART="$(cat /proc/boot_info/bootconfig0/rootfs/upgradepartition)" | ||||||
| @@ -119,5 +120,9 @@ platform_do_upgrade() { | |||||||
| 		sonicfi_dualimage_check | 		sonicfi_dualimage_check | ||||||
| 		nand_upgrade_tar "$1" | 		nand_upgrade_tar "$1" | ||||||
| 		;; | 		;; | ||||||
|  | 	sercomm,ap72tip-v4|\ | ||||||
|  | 	sercomm,ap72tip) | ||||||
|  | 		nand_upgrade_tar "$1" | ||||||
|  | 		;; | ||||||
| 	esac | 	esac | ||||||
| } | } | ||||||
|   | |||||||
| @@ -23,6 +23,10 @@ | |||||||
| 		serial1 = &blsp1_uart1; | 		serial1 = &blsp1_uart1; | ||||||
| 		ethernet0 = "/soc/dp1"; | 		ethernet0 = "/soc/dp1"; | ||||||
| 		ethernet1 = "/soc/dp2"; | 		ethernet1 = "/soc/dp2"; | ||||||
|  | 		led-boot = &led_power_green; | ||||||
|  | 		led-failsafe = &led_power_red; | ||||||
|  | 		led-running = &led_power_green; | ||||||
|  | 		led-upgrade = &led_power_green; | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| 	chosen { | 	chosen { | ||||||
| @@ -40,9 +44,11 @@ | |||||||
| 			uniphyaddr_fixup = <0xC90F014>; | 			uniphyaddr_fixup = <0xC90F014>; | ||||||
| 			mdio_clk_fixup; /* MDIO clock sequence fix up flag */ | 			mdio_clk_fixup; /* MDIO clock sequence fix up flag */ | ||||||
| 			tip,clk_div = <0xff>; /* MDIO Frequency reduction*/ | 			tip,clk_div = <0xff>; /* MDIO Frequency reduction*/ | ||||||
|  | 			limit_rtlphy_10g_ablity; | ||||||
|  |  | ||||||
| 			phy0: ethernet-phy@0 { | 			phy0: ethernet-phy@0 { | ||||||
| 				reg = <8>; | 				reg = <8>; | ||||||
|  | 				compatible ="ethernet-phy-ieee802.3-c45"; | ||||||
| 			}; | 			}; | ||||||
|  |  | ||||||
| 			phy1: ethernet-phy@1 { | 			phy1: ethernet-phy@1 { | ||||||
| @@ -178,13 +184,26 @@ | |||||||
| 			pinctrl-0 = <&gpio_leds_default>; | 			pinctrl-0 = <&gpio_leds_default>; | ||||||
| 			pinctrl-names = "default"; | 			pinctrl-names = "default"; | ||||||
|  |  | ||||||
| 			led-0 { | 		led_power_blue: led@26 { | ||||||
| 				color = <LED_COLOR_ID_GREEN>; |                         label = "status:blue"; | ||||||
| 				function = LED_FUNCTION_WLAN; |                         gpios = <&tlmm 45 GPIO_ACTIVE_HIGH>; | ||||||
| 				gpios = <&tlmm 36 GPIO_ACTIVE_HIGH>; | 			max-brightness = <160>; | ||||||
| 				linux,default-trigger = "phy0tx"; | 			linux,default-trigger = "none"; | ||||||
| 				default-state = "off"; |                 	}; | ||||||
| 			}; |  | ||||||
|  |                 led_power_green:led@30 { | ||||||
|  |                         label = "status:green"; | ||||||
|  |                         gpios = <&tlmm 26 GPIO_ACTIVE_HIGH>; | ||||||
|  | 			max-brightness = <160>; | ||||||
|  | 			linux,default-trigger = "none"; | ||||||
|  |                 }; | ||||||
|  |  | ||||||
|  |                 led_power_red:led@45 { | ||||||
|  |                         label = "status:red"; | ||||||
|  |                         gpios = <&tlmm 30 GPIO_ACTIVE_HIGH>; | ||||||
|  | 			max-brightness = <160>; | ||||||
|  | 			linux,default-trigger = "none"; | ||||||
|  |                 }; | ||||||
| 		}; | 		}; | ||||||
|  |  | ||||||
| 		gpio_keys { | 		gpio_keys { | ||||||
| @@ -194,9 +213,9 @@ | |||||||
| 			status = "okay"; | 			status = "okay"; | ||||||
|  |  | ||||||
| 			button@1 { | 			button@1 { | ||||||
| 				label = "wps"; | 				label = "rst"; | ||||||
| 				linux,code = <KEY_WPS_BUTTON>; | 				linux,code = <KEY_RESTART>; | ||||||
| 				gpios = <&tlmm 35 GPIO_ACTIVE_LOW>; | 				gpios = <&tlmm 17 GPIO_ACTIVE_LOW>; | ||||||
| 				linux,input-type = <1>; | 				linux,input-type = <1>; | ||||||
| 				debounce-interval = <60>; | 				debounce-interval = <60>; | ||||||
| 			}; | 			}; | ||||||
| @@ -462,7 +481,7 @@ | |||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| 	button_pins: button-state { | 	button_pins: button-state { | ||||||
| 		pins = "gpio35"; | 		pins = "gpio17"; | ||||||
| 		function = "gpio"; | 		function = "gpio"; | ||||||
| 		drive-strength = <8>; | 		drive-strength = <8>; | ||||||
| 		bias-pull-up; | 		bias-pull-up; | ||||||
| @@ -481,6 +500,24 @@ | |||||||
| 		bias-pull-up; | 		bias-pull-up; | ||||||
| 		output-low; | 		output-low; | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
|  | 	led_pins: led_pins { | ||||||
|  |                 mux_1 { | ||||||
|  |                         pins = "gpio26"; | ||||||
|  |                         function = "gpio"; | ||||||
|  |                         drive-strength = <8>; | ||||||
|  |                 }; | ||||||
|  |                 mux_2 { | ||||||
|  |                         pins = "gpio30"; | ||||||
|  |                         function = "gpio"; | ||||||
|  |                         drive-strength = <8>; | ||||||
|  |                 }; | ||||||
|  |                 mux_3 { | ||||||
|  |                         pins = "gpio45"; | ||||||
|  |                         function = "gpio"; | ||||||
|  |                         drive-strength = <8>; | ||||||
|  |                 }; | ||||||
|  |         }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| &license_manager { | &license_manager { | ||||||
|   | |||||||
							
								
								
									
										777
									
								
								feeds/qca-wifi-7/ipq53xx/dts/ipq5332-cig-wf189h.dts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										777
									
								
								feeds/qca-wifi-7/ipq53xx/dts/ipq5332-cig-wf189h.dts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,777 @@ | |||||||
|  | // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) | ||||||
|  | /* | ||||||
|  |  * IPQ5332 RDP446 board device tree source | ||||||
|  |  * | ||||||
|  |  * Copyright (c) 2020-2021 The Linux Foundation. All rights reserved. | ||||||
|  |  * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | /dts-v1/; | ||||||
|  |  | ||||||
|  | #include "ipq5332.dtsi" | ||||||
|  | #include <dt-bindings/gpio/gpio.h> | ||||||
|  | #include <dt-bindings/input/input.h> | ||||||
|  | #include <dt-bindings/leds/common.h> | ||||||
|  | #include "ipq5332-default-memory.dtsi" | ||||||
|  |  | ||||||
|  | / { | ||||||
|  | 	model = "CIG WF189H"; | ||||||
|  | 	compatible = "cig,wf189h", "qcom,ipq5332-ap-mi04.1", "qcom,ipq5332-rdp446", "qcom,ipq5332"; | ||||||
|  |  | ||||||
|  | 	/*     1G  Layout for IPQ5332 + QCN6432 + QCN6432 | ||||||
|  | 	 * +==========+==============+========================+ | ||||||
|  | 	 * |         |              |                         | | ||||||
|  | 	 * |  Region | Start Offset |          Size           | | ||||||
|  | 	 * |         |              |                         | | ||||||
|  | 	 * +---------+--------------+-------------------------+ | ||||||
|  | 	 * |   Q6    |              |                         | | ||||||
|  | 	 * |  code/  |  0x4A900000  |          25MB           | | ||||||
|  | 	 * |  data   |              |                         | | ||||||
|  | 	 * +---------+--------------+-------------------------+ | ||||||
|  | 	 * | IPQ5332 |              |                         | | ||||||
|  | 	 * |  data   |  0x4C200000  |          21MB           | | ||||||
|  | 	 * +---------+--------------+-------------------------+ | ||||||
|  | 	 * | IPQ5332 |              |                         | | ||||||
|  | 	 * | M3 Dump |  0x4D700000  |           1MB           | | ||||||
|  | 	 * +---------+--------------+-------------------------+ | ||||||
|  | 	 * | IPQ5332 |              |                         | | ||||||
|  | 	 * |  QDSS   |  0x4D800000  |           1MB           | | ||||||
|  | 	 * +---------+--------------+-------------------------+ | ||||||
|  | 	 * | IPQ5332 |              |                         | | ||||||
|  | 	 * |  CALDB  |  0x4D900000  |           5MB           | | ||||||
|  | 	 * +---------+--------------+-------------------------+ | ||||||
|  | 	 * |QCN6432_1|              |                         | | ||||||
|  | 	 * |  data   |  0x4DE00000  |          21MB           | | ||||||
|  | 	 * +---------+--------------+-------------------------+ | ||||||
|  | 	 * |QCN6432_1|              |                         | | ||||||
|  | 	 * | M3 Dump |  0x4F300000  |           1MB           | | ||||||
|  | 	 * +---------+--------------+-------------------------+ | ||||||
|  | 	 * |QCN6432_1|              |                         | | ||||||
|  | 	 * |  QDSS   |  0x4E400000  |           1MB           | | ||||||
|  | 	 * +---------+--------------+-------------------------+ | ||||||
|  | 	 * |QCN6432_1|              |                         | | ||||||
|  | 	 * |  CALDB  |  0x4F500000  |           5MB           | | ||||||
|  | 	 * +---------+--------------+-------------------------+ | ||||||
|  | 	 * |QCN6432_2|              |                         | | ||||||
|  | 	 * |  data   |  0x4FA00000  |          21MB           | | ||||||
|  | 	 * +---------+--------------+-------------------------+ | ||||||
|  | 	 * |QCN6432_2|              |                         | | ||||||
|  | 	 * | M3 Dump |  0x50F00000  |           1MB           | | ||||||
|  | 	 * +---------+--------------+-------------------------+ | ||||||
|  | 	 * |QCN6432_2|              |                         | | ||||||
|  | 	 * |  QDSS   |  0x51000000  |           1MB           | | ||||||
|  | 	 * +---------+--------------+-------------------------+ | ||||||
|  | 	 * |QCN6432_2|              |                         | | ||||||
|  | 	 * |  CALDB  |  0x51100000  |           5MB           | | ||||||
|  | 	 * +---------+--------------+-------------------------+ | ||||||
|  | 	 * |         |              |                         | | ||||||
|  | 	 * |   MLO   |  0x51600000  |          12MB           | | ||||||
|  | 	 * +==================================================+ | ||||||
|  | 	 * |                                                  | | ||||||
|  | 	 * |                                                  | | ||||||
|  | 	 * |                                                  | | ||||||
|  | 	 * |             Rest of memory for Linux             | | ||||||
|  | 	 * |                                                  | | ||||||
|  | 	 * |                                                  | | ||||||
|  | 	 * |                                                  | | ||||||
|  | 	 * +==================================================+ | ||||||
|  | 	 */ | ||||||
|  |  | ||||||
|  | 	reserved-memory { | ||||||
|  |  | ||||||
|  | 		/delete-node/ m3_dump@4cc00000; | ||||||
|  | 		/delete-node/ q6_etr_dump@1; | ||||||
|  | 		/delete-node/ mlo_global_mem_0@0x4db00000; | ||||||
|  | 		/delete-node/ wcnss@4a900000; | ||||||
|  | 		/delete-node/ q6_caldb_region@4ce00000; | ||||||
|  |  | ||||||
|  | 		q6_mem_regions: q6_mem_regions@4A900000  { | ||||||
|  | 			reg = <0x0 0x4a900000 0x0 0x6D00000>; | ||||||
|  | 			no-map; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		q6_code_data: q6_code_data@4A900000 { | ||||||
|  | 			reg = <0x0 0x4a900000 0x0 0x1900000>; | ||||||
|  | 			no-map; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		q6_ipq5332_data: q6_ipq5332_data@4C200000 { | ||||||
|  | 			reg = <0x0 0x4C200000 0x0 0x1500000>; | ||||||
|  | 			no-map; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		m3_dump: m3_dump@4D700000 { | ||||||
|  | 			reg = <0x0 0x4D700000 0x0 0x100000>; | ||||||
|  | 			no-map; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		q6_etr_region: q6_etr_dump@4D800000 { | ||||||
|  | 			reg = <0x0 0x4D800000 0x0 0x100000>; | ||||||
|  | 			no-map; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		q6_ipq5332_caldb: q6_ipq5332_caldb@4D900000 { | ||||||
|  | 			reg = <0x0 0x4D900000 0x0 0x500000>; | ||||||
|  | 			no-map; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		q6_qcn6432_data_1: q6_qcn6432_data_1@4DE00000 { | ||||||
|  | 			reg = <0x0 0x4DE00000 0x0 0x1500000>; | ||||||
|  | 			no-map; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		m3_dump_qcn6432_1: m3_dump_qcn6432_1@4F300000 { | ||||||
|  | 			reg = <0x0 0x4F300000 0x0 0x100000>; | ||||||
|  | 			no-map; | ||||||
|  |                 }; | ||||||
|  |  | ||||||
|  | 		q6_qcn6432_etr_1: q6_qcn6432_etr_1@4F400000 { | ||||||
|  | 			reg = <0x0 0x4F400000 0x0 0x100000>; | ||||||
|  | 			no-map; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		q6_qcn6432_caldb_1: q6_qcn6432_caldb_1@4F500000 { | ||||||
|  | 			reg = <0x0 0x4F500000 0x0 0x500000>; | ||||||
|  | 			no-map; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		q6_qcn6432_data_2: q6_qcn6432_data_2@4FA00000 { | ||||||
|  | 			reg = <0x0 0x4FA00000 0x0 0x1500000>; | ||||||
|  | 			no-map; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		m3_dump_qcn6432_2: m3_dump_qcn6432_2@50F00000 { | ||||||
|  | 			reg = <0x0 0x50F00000 0x0 0x100000>; | ||||||
|  | 			no-map; | ||||||
|  |                 }; | ||||||
|  |  | ||||||
|  | 		q6_qcn6432_etr_2: q6_qcn6432_etr_2@51000000 { | ||||||
|  | 			reg = <0x0 0x51000000 0x0 0x100000>; | ||||||
|  | 			no-map; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		q6_qcn6432_caldb_2: q6_qcn6432_caldb_2@51100000 { | ||||||
|  | 			reg = <0x0 0x51100000 0x0 0x500000>; | ||||||
|  | 			no-map; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		mlo_global_mem0: mlo_global_mem_0@51600000 { | ||||||
|  | 			reg = <0x0 0x51600000 0x0 0xC00000>; | ||||||
|  | 			no-map; | ||||||
|  | 		}; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	aliases { | ||||||
|  | 		serial0 = &blsp1_uart0; | ||||||
|  | 		serial1 = &blsp1_uart1; | ||||||
|  | 		ethernet0 = "/soc/dp1"; | ||||||
|  | 		ethernet1 = "/soc/dp2"; | ||||||
|  | 		led-boot = &led_power_green; | ||||||
|  | 		led-failsafe = &led_power_red; | ||||||
|  | 		led-running = &led_power_green; | ||||||
|  | 		led-upgrade = &led_power_green; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	chosen { | ||||||
|  | 		stdout-path = "serial0"; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	soc@0 { | ||||||
|  | 		mdio:mdio@90000 { | ||||||
|  | 			pinctrl-0 = <&mdio1_pins &mdio0_pins>; | ||||||
|  | 			pinctrl-names = "default"; | ||||||
|  | 			/*gpio51 for manhattan reset*/ | ||||||
|  |       phy-reset-gpio = <&tlmm 22 GPIO_ACTIVE_LOW>; | ||||||
|  | 			phyaddr_fixup = <0xC90F018>; | ||||||
|  | 			uniphyaddr_fixup = <0xC90F014>; | ||||||
|  | 			mdio_clk_fixup; /* MDIO clock sequence fix up flag */ | ||||||
|  | 			status = "okay"; | ||||||
|  |  | ||||||
|  | 			phy0: ethernet-phy@0 { | ||||||
|  | 				reg = <1>; | ||||||
|  | 				fixup; | ||||||
|  | 			}; | ||||||
|  | 			phy1: ethernet-phy@1 { | ||||||
|  | 				reg = <2>; | ||||||
|  | 				fixup; | ||||||
|  | 			}; | ||||||
|  | 			phy2: ethernet-phy@2 { | ||||||
|  | 				reg = <3>; | ||||||
|  | 				fixup; | ||||||
|  | 			}; | ||||||
|  | 			phy3: ethernet-phy@3 { | ||||||
|  | 				reg = <4>; | ||||||
|  | 				fixup; | ||||||
|  | 			}; | ||||||
|  |  | ||||||
|  | 			switch0@10 { | ||||||
|  | 				compatible = "qca,qca8386"; | ||||||
|  | 				#address-cells = <1>; | ||||||
|  | 				#size-cells = <0>; | ||||||
|  | 				reg = <0x10>; | ||||||
|  |  | ||||||
|  | 				ports { | ||||||
|  | 					#address-cells = <1>; | ||||||
|  | 					#size-cells = <0>; | ||||||
|  |  | ||||||
|  | 					port@0 { | ||||||
|  | 						reg = <0>; | ||||||
|  | 						label = "cpu"; | ||||||
|  | 						ethernet = <&gmac2>; | ||||||
|  | 						dsa-tag-protocol = "qca_4b"; | ||||||
|  | 					}; | ||||||
|  |  | ||||||
|  | 					port@1 { | ||||||
|  | 						reg = <1>; | ||||||
|  | 						label = "lan1"; | ||||||
|  | 						phy-handle = <&phy0>; | ||||||
|  | 						phy-mode = "usxgmii"; | ||||||
|  | 					}; | ||||||
|  |  | ||||||
|  | 					port@2 { | ||||||
|  | 						reg = <2>; | ||||||
|  | 						label = "lan2"; | ||||||
|  | 						phy-handle = <&phy1>; | ||||||
|  | 						phy-mode = "usxgmii"; | ||||||
|  | 					}; | ||||||
|  |  | ||||||
|  | 					port@3 { | ||||||
|  | 						reg = <3>; | ||||||
|  | 						label = "lan3"; | ||||||
|  | 						phy-handle = <&phy2>; | ||||||
|  | 						phy-mode = "usxgmii"; | ||||||
|  | 					}; | ||||||
|  |  | ||||||
|  | 					port@4 { | ||||||
|  | 						reg = <4>; | ||||||
|  | 						label = "lan4"; | ||||||
|  | 						phy-handle = <&phy3>; | ||||||
|  | 						phy-mode = "usxgmii"; | ||||||
|  | 					}; | ||||||
|  |  | ||||||
|  | 					port@5 { | ||||||
|  | 						reg = <5>; | ||||||
|  | 						forced-speed = <2500>; | ||||||
|  | 						forced-duplex = <1>; | ||||||
|  | 					};  | ||||||
|  | 				}; | ||||||
|  | 			}; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		pwmleds { | ||||||
|  | 			compatible = "pwm-leds"; | ||||||
|  |  | ||||||
|  | 			led_power_red: red { | ||||||
|  | 				label = "pwm:red"; | ||||||
|  | 				pwms = <&pwm 3 1250000>; | ||||||
|  | 				max-brightness = <160>; | ||||||
|  | 				linux,default-trigger = "none"; | ||||||
|  | 			}; | ||||||
|  |  | ||||||
|  | 			led_power_green: green { | ||||||
|  | 				label = "pwm:green"; | ||||||
|  | 				pwms = <&pwm 2 1250000>; | ||||||
|  | 				max-brightness = <160>; | ||||||
|  | 				linux,default-trigger = "none"; | ||||||
|  | 			}; | ||||||
|  |  | ||||||
|  | 			led_power_blue: blue { | ||||||
|  | 				label = "pwm:blue"; | ||||||
|  | 				pwms = <&pwm 1 1250000>; | ||||||
|  | 				max-brightness = <160>; | ||||||
|  | 				linux,default-trigger = "none"; | ||||||
|  | 			}; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		gpio_keys { | ||||||
|  | 			compatible = "gpio-keys"; | ||||||
|  | 			pinctrl-0 = <&button_pins>; | ||||||
|  | 			pinctrl-names = "default"; | ||||||
|  | 			status = "okay"; | ||||||
|  |  | ||||||
|  | 			button@1 { | ||||||
|  | 				label = "rst"; | ||||||
|  | 				linux,code = <KEY_RESTART>; | ||||||
|  | 				gpios = <&tlmm 21 GPIO_ACTIVE_LOW>; | ||||||
|  | 				linux,input-type = <1>; | ||||||
|  | 				debounce-interval = <60>; | ||||||
|  | 			}; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		ess-instance { | ||||||
|  | 			num_devices = <0x2>; | ||||||
|  |  | ||||||
|  | 			ess-switch@3a000000 { | ||||||
|  | 				pinctrl-names = "default"; | ||||||
|  | 				switch_cpu_bmp = <0x1>;  /* cpu port bitmap */ | ||||||
|  | 				switch_lan_bmp = <0x2>; /* lan port bitmap */ | ||||||
|  | 				switch_wan_bmp = <0x4>; /* wan port bitmap */ | ||||||
|  | 				switch_mac_mode = <0xc>; /* mac mode for uniphy instance0*/ | ||||||
|  | 				switch_mac_mode1 = <0xf>; /* mac mode for uniphy instance1*/ | ||||||
|  | 				switch_mac_mode2 = <0xff>; /* mac mode for uniphy instance2*/ | ||||||
|  |  | ||||||
|  | 				qcom,port_phyinfo { | ||||||
|  | 					port@0 { | ||||||
|  | 						port_id = <1>; | ||||||
|  | 						forced-speed = <2500>; | ||||||
|  | 						forced-duplex = <1>; | ||||||
|  | 					}; | ||||||
|  | 					port@1 { | ||||||
|  | 						port_id = <2>; | ||||||
|  | 						phy_address = <4>; | ||||||
|  | 					}; | ||||||
|  | 				}; | ||||||
|  | 			}; | ||||||
|  |  | ||||||
|  | 			ess-switch1@1 { | ||||||
|  | 				compatible = "qcom,ess-switch-qca8386"; | ||||||
|  | 				device_id = <1>; | ||||||
|  | 				switch_access_mode = "mdio"; | ||||||
|  | 				mdio-bus = <&mdio>; | ||||||
|  | 				switch_mac_mode = <0xc>; /* mac mode for uniphy instance0 */ | ||||||
|  | 				switch_mac_mode1 = <0xc>; /* mac mode1 for uniphy instance1 */ | ||||||
|  | 				switch_cpu_bmp = <0x1>;  /* cpu port bitmap */ | ||||||
|  | 				switch_lan_bmp = <0x0e>; /* lan port bitmap */ | ||||||
|  | 				switch_wan_bmp = <0x0>;  /* wan port bitmap */ | ||||||
|  | //				link-polling-required = <0>; | ||||||
|  | 				fdb_sync = "interrupt"; | ||||||
|  | 				link-intr-gpio = <&tlmm 24 GPIO_ACTIVE_HIGH>; | ||||||
|  |  | ||||||
|  | 				qcom,port_phyinfo { | ||||||
|  | 					port@0 { | ||||||
|  | 						port_id = <0>; | ||||||
|  | 						forced-speed = <2500>; | ||||||
|  | 						forced-duplex = <1>; | ||||||
|  | 					}; | ||||||
|  | 					port@1 { | ||||||
|  | 						port_id = <1>; | ||||||
|  | 						phy_address = <1>; | ||||||
|  | 					}; | ||||||
|  | 					port@2 { | ||||||
|  | 						port_id = <2>; | ||||||
|  | 						phy_address = <2>; | ||||||
|  | 					}; | ||||||
|  | 					port@3 { | ||||||
|  | 						port_id = <3>; | ||||||
|  | 						phy_address = <3>; | ||||||
|  | 					}; | ||||||
|  | 				}; | ||||||
|  |  | ||||||
|  | 				led_source@2 { | ||||||
|  | 					source = <2>; | ||||||
|  | 					mode = "normal"; | ||||||
|  | 					speed = "all"; | ||||||
|  | 					blink_en = "enable"; | ||||||
|  | 					active = "high"; | ||||||
|  | 				}; | ||||||
|  | 				led_source@5 { | ||||||
|  | 					source = <5>; | ||||||
|  | 					mode = "normal"; | ||||||
|  | 					speed = "all"; | ||||||
|  | 					blink_en = "enable"; | ||||||
|  | 					active = "high"; | ||||||
|  | 				}; | ||||||
|  | 				led_source@8 { | ||||||
|  | 					source = <8>; | ||||||
|  | 					mode = "normal"; | ||||||
|  | 					speed = "all"; | ||||||
|  | 					blink_en = "enable"; | ||||||
|  | 					active = "high"; | ||||||
|  | 				}; | ||||||
|  | 				led_source@11 { | ||||||
|  | 					source = <11>; | ||||||
|  | 					mode = "normal"; | ||||||
|  | 					speed = "all"; | ||||||
|  | 					blink_en = "enable"; | ||||||
|  | 					active = "high"; | ||||||
|  | 				}; | ||||||
|  | 			}; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		dp1 { | ||||||
|  | 			device_type = "network"; | ||||||
|  | 			compatible = "qcom,nss-dp"; | ||||||
|  | 			qcom,id = <2>; | ||||||
|  | 			reg = <0x3a504000 0x4000>; | ||||||
|  | 			qcom,mactype = <1>; | ||||||
|  | 			local-mac-address = [000000000000]; | ||||||
|  | 			qcom,mht-dev = <1>; | ||||||
|  | 			qcom,is_switch_connected = <1>; | ||||||
|  | 			qcom,ppe-offload-disabled = <1>; | ||||||
|  | 			phy-mode = "sgmii"; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		gmac2:dp2 { | ||||||
|  | 			device_type = "network"; | ||||||
|  | 			compatible = "qcom,nss-dp"; | ||||||
|  | 			qcom,id = <1>; | ||||||
|  | 			reg = <0x3a500000 0x4000>; | ||||||
|  | 			qcom,mactype = <1>; | ||||||
|  | 			local-mac-address = [000000000000]; | ||||||
|  | 			phy-mode = "sgmii"; | ||||||
|  | 			qcom,mht-dev = <1>; | ||||||
|  | 			qcom,is_switch_connected = <1>; | ||||||
|  | 			qcom,ppe-offload-disabled = <1>; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		/* EDMA host driver configuration for the board */ | ||||||
|  | 		edma@3ab00000 { | ||||||
|  | 			qcom,txdesc-ring-start = <4>;		/* Tx desc ring start ID */ | ||||||
|  | 			qcom,txdesc-rings = <12>;		/* Total number of Tx desc rings to be provisioned */ | ||||||
|  | 			qcom,mht-txdesc-rings = <8>;            /* Extra Tx desc rings to be provisioned for MHT SW ports */ | ||||||
|  | 			qcom,txcmpl-ring-start = <4>;		/* Tx complete ring start ID */ | ||||||
|  | 			qcom,txcmpl-rings = <12>;		/* Total number of Tx complete rings to be provisioned */ | ||||||
|  | 			qcom,mht-txcmpl-rings = <8>;            /* Extra Tx complete rings to be provisioned for mht sw ports. */ | ||||||
|  | 			qcom,rxfill-ring-start = <4>;		/* Rx fill ring start ID */ | ||||||
|  | 			qcom,rxfill-rings = <4>;		/* Total number of Rx fill rings to be provisioned */ | ||||||
|  | 			qcom,rxdesc-ring-start = <12>;		/* Rx desc ring start ID */ | ||||||
|  | 			qcom,rxdesc-rings = <4>;		/* Total number of Rx desc rings to be provisioned */ | ||||||
|  | 			qcom,rx-page-mode = <0>;		/* Rx fill ring page mode */ | ||||||
|  | 			qcom,tx-map-priority-level = <1>;	/* Tx priority level per port */ | ||||||
|  | 			qcom,rx-map-priority-level = <1>;	/* Rx priority level per core */ | ||||||
|  | 			qcom,ppeds-num = <2>;			/* Number of PPEDS nodes */ | ||||||
|  | 			/* PPE-DS node format: <Rx-fill Tx-cmpl Rx Tx Queue-base Queue-count> */ | ||||||
|  | 			qcom,ppeds-map = <1 1 1 1 32 8>,	/* PPEDS Node#0 ring and queue map */ | ||||||
|  | 					<2 2 2 2 40 8>;		/* PPEDS Node#1 ring and queue map */ | ||||||
|  | 			qcom,txdesc-map = <8 9 10 11>,		/* Port0 per-core Tx ring map */ | ||||||
|  | 					<12 13 14 15>,        /* MHT-Port1 per-core Tx ring map */ | ||||||
|  | 					<4 5 6 7>,            /* MHT-Port2 per-core Tx ring map/packets from  vp*/ | ||||||
|  | 					<16 17 18 19>,        /* MHT-Port3 per-core Tx ring map */ | ||||||
|  | 					<20 21 22 23>;        /* MHT-Port4 per-core Tx ring map */ | ||||||
|  | 			qcom,txdesc-fc-grp-map = <1 2 3 4 5>;   /* Per GMAC flow control group map */ | ||||||
|  | 			qcom,rxfill-map = <4 5 6 7>;		/* Per-core Rx fill ring map */ | ||||||
|  | 			qcom,rxdesc-map = <12 13 14 15>;	/* Per-core Rx desc ring map */ | ||||||
|  | 			qcom,rx-queue-start = <0>;		/* Rx queue start */ | ||||||
|  | 			qcom,rx-ring-queue-map = <0 8 16 24>,	/* Priority 0 queues per-core Rx ring map */ | ||||||
|  | 						<1 9 17 25>,	/* Priority 1 queues per-core Rx ring map */ | ||||||
|  | 						<2 10 18 26>,	/* Priority 2 queues per-core Rx ring map */ | ||||||
|  | 						<3 11 19 27>,	/* Priority 3 queues per-core Rx ring map */ | ||||||
|  | 						<4 12 20 28>,	/* Priority 4 queues per-core Rx ring map */ | ||||||
|  | 						<5 13 21 29>,	/* Priority 5 queues per-core Rx ring map */ | ||||||
|  | 						<6 14 22 30>,	/* Priority 6 queues per-core Rx ring map */ | ||||||
|  | 						<7 15 23 31>;	/* Priority 7 queues per-core Rx ring map */ | ||||||
|  | 			interrupts = <0 163 4>,			/* Tx complete ring id #4 IRQ info */ | ||||||
|  | 				   <0 164 4>,			/* Tx complete ring id #5 IRQ info */ | ||||||
|  | 				   <0 165 4>,			/* Tx complete ring id #6 IRQ info */ | ||||||
|  | 				   <0 166 4>,			/* Tx complete ring id #7 IRQ info */ | ||||||
|  | 				   <0 167 4>,			/* Tx complete ring id #8 IRQ info */ | ||||||
|  | 				   <0 168 4>,			/* Tx complete ring id #9 IRQ info */ | ||||||
|  | 				   <0 169 4>,			/* Tx complete ring id #10 IRQ info */ | ||||||
|  | 				   <0 170 4>,			/* Tx complete ring id #11 IRQ info */ | ||||||
|  | 				   <0 171 4>,			/* Tx complete ring id #12 IRQ info */ | ||||||
|  | 				   <0 172 4>,			/* Tx complete ring id #13 IRQ info */ | ||||||
|  | 				   <0 173 4>,			/* Tx complete ring id #14 IRQ info */ | ||||||
|  | 				   <0 174 4>,			/* Tx complete ring id #15 IRQ info */ | ||||||
|  | 				   <0 139 4>,			/* Rx desc ring id #12 IRQ info */ | ||||||
|  | 				   <0 140 4>,			/* Rx desc ring id #13 IRQ info */ | ||||||
|  | 				   <0 141 4>,			/* Rx desc ring id #14 IRQ info */ | ||||||
|  | 				   <0 142 4>,			/* Rx desc ring id #15 IRQ info */ | ||||||
|  | 				   <0 191 4>,			/* Misc error IRQ info */ | ||||||
|  | 				<0 160 4>,			/* PPEDS Node #1(TxComp ring id #1) TxComplete IRQ info */ | ||||||
|  | 				<0 128 4>,			/* PPEDS Node #1(Rx Desc ring id #1) Rx Desc IRQ info */ | ||||||
|  | 				<0 152 4>,			/* PPEDS Node #1(RxFill Desc ring id #1) Rx Fill IRQ info */ | ||||||
|  | 				<0 161 4>,			/* PPEDS Node #2(TxComp ring id #2) TxComplete IRQ info */ | ||||||
|  | 				<0 129 4>,			/* PPEDS Node #2(Rx Desc ring id #2) Rx Desc IRQ info */ | ||||||
|  | 				<0 153 4>,                      /* PPEDS Node #2(RxFill Desc ring id #2) Rx Fill IRQ info */ | ||||||
|  | 				<0 175 4>,                   /* MHT port Tx complete ring id #16 IRQ info */ | ||||||
|  | 				<0 176 4>,                   /* MHT port Tx complete ring id #17 IRQ info */ | ||||||
|  | 				<0 177 4>,                   /* MHT port Tx complete ring id #18 IRQ info */ | ||||||
|  | 				<0 178 4>,                   /* MHT port Tx complete ring id #19 IRQ info */ | ||||||
|  | 				<0 179 4>,                   /* MHT port Tx complete ring id #20 IRQ info */ | ||||||
|  | 				<0 180 4>,                   /* MHT port Tx complete ring id #21 IRQ info */ | ||||||
|  | 				<0 181 4>,                   /* MHT port Tx complete ring id #22 IRQ info */ | ||||||
|  | 				<0 182 4>;                   /* MHT port Tx complete ring id #23 IRQ info */ | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		wsi: wsi { | ||||||
|  | 			id = <0>; | ||||||
|  | 			num_chip = <3>; | ||||||
|  | 			status = "okay"; | ||||||
|  | 			chip_info = <0 2 1 2>, | ||||||
|  | 				    <1 2 2 0>, | ||||||
|  | 				    <2 2 0 1>; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		q6v5_wcss: remoteproc@d100000 { | ||||||
|  | 			boot-args = <0x1 0x4 0x3 0x1 0x2f 0x2>, | ||||||
|  | 					<0x1 0x4 0x4 0x2 0x2c 0x2>; | ||||||
|  | 			memory-region = <&q6_mem_regions>, | ||||||
|  | 					<&mlo_global_mem0>; | ||||||
|  |  | ||||||
|  | 			/delete-node/ remoteproc_pd1; | ||||||
|  | 			/delete-node/ remoteproc_pd2; | ||||||
|  | 			/delete-node/ remoteproc_pd3; | ||||||
|  |  | ||||||
|  | 			q6_wcss_pd4: remoteproc_pd4 { | ||||||
|  | 				compatible = "qcom,ipq5332-mpd-upd-text"; | ||||||
|  | 				firmware = "IPQ5332/q6_fw4.mdt"; | ||||||
|  |  | ||||||
|  | 				q6_wcss_pd1: remoteproc_pd1 { | ||||||
|  | 					compatible = "qcom,ipq5332-wcss-ahb-mpd"; | ||||||
|  | 					firmware = "IPQ5332/q6_fw1.mdt"; | ||||||
|  | 					m3_firmware = "IPQ5332/iu_fw.mdt"; | ||||||
|  | 					interrupts-extended = <&wcss_smp2p_in 8 0>, | ||||||
|  | 							<&wcss_smp2p_in 9 0>, | ||||||
|  | 							<&wcss_smp2p_in 12 0>, | ||||||
|  | 							<&wcss_smp2p_in 11 0>; | ||||||
|  | 					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"; | ||||||
|  | 				}; | ||||||
|  |  | ||||||
|  | 				q6_wcss_pd2: remoteproc_pd2 { | ||||||
|  | 					compatible = "qcom,ipq5332-wcss-pcie-mpd"; | ||||||
|  | 					firmware = "IPQ5332/q6_fw2.mdt"; | ||||||
|  | 					m3_firmware = "qcn6432/iu_fw.mdt"; | ||||||
|  | 					interrupts-extended = <&wcss_smp2p_in 16 0>, | ||||||
|  | 							<&wcss_smp2p_in 17 0>, | ||||||
|  | 							<&wcss_smp2p_in 20 0>, | ||||||
|  | 							<&wcss_smp2p_in 19 0>; | ||||||
|  | 					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 = "ok"; | ||||||
|  | 				}; | ||||||
|  |  | ||||||
|  | 				q6_wcss_pd3: remoteproc_pd3 { | ||||||
|  | 					compatible = "qcom,ipq5332-wcss-pcie-mpd"; | ||||||
|  | 					firmware = "IPQ5332/q6_fw3.mdt"; | ||||||
|  | 					interrupts-extended = <&wcss_smp2p_in 24 0>, | ||||||
|  | 							<&wcss_smp2p_in 25 0>, | ||||||
|  | 							<&wcss_smp2p_in 28 0>, | ||||||
|  | 							<&wcss_smp2p_in 27 0>; | ||||||
|  | 					interrupt-names = "fatal", | ||||||
|  | 							"ready", | ||||||
|  | 							"spawn-ack", | ||||||
|  | 							"stop-ack"; | ||||||
|  |  | ||||||
|  | 					qcom,smem-states = <&wcss_smp2p_out 24>, | ||||||
|  | 							<&wcss_smp2p_out 25>, | ||||||
|  | 							<&wcss_smp2p_out 26>; | ||||||
|  | 					qcom,smem-state-names = "shutdown", | ||||||
|  | 								"stop", | ||||||
|  | 								"spawn"; | ||||||
|  | 					status = "ok"; | ||||||
|  | 				}; | ||||||
|  | 			}; | ||||||
|  | 		}; | ||||||
|  | 	}; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &blsp1_uart0 { | ||||||
|  | 	pinctrl-0 = <&serial_0_pins>; | ||||||
|  | 	pinctrl-names = "default"; | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &blsp1_uart1 { | ||||||
|  | 	pinctrl-0 = <&serial_1_pins>; | ||||||
|  | 	pinctrl-names = "default"; | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &sleep_clk { | ||||||
|  | 	clock-frequency = <32000>; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &xo { | ||||||
|  | 	clock-frequency = <24000000>; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &qpic_bam { | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &qpic_nand { | ||||||
|  | 	pinctrl-0 = <&qspi_default_state>; | ||||||
|  | 	pinctrl-names = "default"; | ||||||
|  | 	status = "okay"; | ||||||
|  |  | ||||||
|  | 	nandcs@0 { | ||||||
|  | 		reg = <0>; | ||||||
|  | 		#address-cells = <1>; | ||||||
|  | 		#size-cells = <1>; | ||||||
|  |  | ||||||
|  | 		nand-ecc-strength = <8>; | ||||||
|  | 		nand-ecc-step-size = <512>; | ||||||
|  | 		nand-bus-width = <8>; | ||||||
|  | 	}; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &tlmm { | ||||||
|  | 	qspi_default_state: qspi-default-state { | ||||||
|  | 		qspi_clock { | ||||||
|  | 			pins = "gpio13"; | ||||||
|  | 			function = "qspi_clk"; | ||||||
|  | 			drive-strength = <8>; | ||||||
|  | 			bias-pull-down; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		qspi_cs { | ||||||
|  | 			pins = "gpio12"; | ||||||
|  | 			function = "qspi_cs"; | ||||||
|  | 			drive-strength = <8>; | ||||||
|  | 			bias-pull-up; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		qspi_data { | ||||||
|  | 			pins = "gpio8", "gpio9", "gpio10", "gpio11"; | ||||||
|  | 			function = "qspi_data"; | ||||||
|  | 			drive-strength = <8>; | ||||||
|  | 			bias-pull-down; | ||||||
|  | 		}; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	pwm_pins: pwm_pinmux { | ||||||
|  | 		/* PWM LED GREEN */ | ||||||
|  | 		mux_1 { | ||||||
|  | 			pins = "gpio30"; | ||||||
|  | 			function = "pwm1"; | ||||||
|  | 			drive-strength = <8>; | ||||||
|  | 		}; | ||||||
|  | 		/* PWM LED BLUE */ | ||||||
|  | 		mux_2 { | ||||||
|  | 			pins = "gpio31"; | ||||||
|  | 			function = "pwm1"; | ||||||
|  | 			drive-strength = <8>; | ||||||
|  | 		}; | ||||||
|  | 		/* PWM LED RED */ | ||||||
|  | 		mux_3 { | ||||||
|  | 			pins = "gpio29"; | ||||||
|  | 			function = "pwm1"; | ||||||
|  | 			drive-strength = <8>; | ||||||
|  | 		}; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	serial_1_pins: serial1-pinmux { | ||||||
|  | 		pins = "gpio33", "gpio34", "gpio35", "gpio36"; | ||||||
|  | 		function = "blsp1_uart2"; | ||||||
|  | 		drive-strength = <8>; | ||||||
|  | 		bias-pull-up; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	button_pins: button-state { | ||||||
|  | 		pins = "gpio21"; | ||||||
|  | 		function = "gpio"; | ||||||
|  | 		drive-strength = <8>; | ||||||
|  | 		bias-pull-up; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	spi_0_data_clk_pins: spi-0-data-clk-state { | ||||||
|  | 		pins = "gpio14", "gpio15", "gpio16"; | ||||||
|  | 		function = "blsp0_spi"; | ||||||
|  | 		drive-strength = <2>; | ||||||
|  | 		bias-pull-down; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	spi_0_cs_pins: spi-0-cs-state { | ||||||
|  | 		pins = "gpio17"; | ||||||
|  | 		function = "blsp0_spi"; | ||||||
|  | 		drive-strength = <2>; | ||||||
|  | 		bias-pull-up; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	mdio1_pins: mdio1-state { | ||||||
|  | 		mux_0 { | ||||||
|  | 			pins = "gpio27"; | ||||||
|  | 			function = "mdc1"; | ||||||
|  | 			drive-strength = <2>; | ||||||
|  | 			bias-pull-up; | ||||||
|  | 		}; | ||||||
|  | 		mux_1 { | ||||||
|  | 			pins = "gpio28"; | ||||||
|  | 			function = "mdio1"; | ||||||
|  | 			drive-strength = <2>; | ||||||
|  | 			bias-pull-up; | ||||||
|  | 		}; | ||||||
|  | 	}; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &license_manager { | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &pwm { | ||||||
|  |         pinctrl-0 = <&pwm_pins>; | ||||||
|  |         used-pwm-indices = <1>, <1>, <0>, <1>; | ||||||
|  |         pinctrl-names = "default"; | ||||||
|  |         status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &hs_m31phy_0 { | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &wifi0 { | ||||||
|  | 	qcom,multipd_arch; | ||||||
|  | 	qcom,rproc = <&q6_wcss_pd1>; | ||||||
|  | 	qcom,rproc_rpd = <&q6v5_wcss>; | ||||||
|  | 	qcom,userpd-subsys-name = "q6v5_wcss_userpd1"; | ||||||
|  | 	qcom,tgt-mem-mode = <0>; | ||||||
|  | 	qcom,bdf-addr = <0x4C200000 0x4C200000 0x4C200000 0x0 0x0 0x0>; | ||||||
|  | 	qcom,caldb-addr = <0x4D900000 0x4D900000 0x4D900000 0x0 0x0 0x0>; | ||||||
|  | 	qcom,caldb-size = <0x500000>; | ||||||
|  | 	qcom,board_id = <0x41>; | ||||||
|  | 	mem-region = <&q6_ipq5332_data>; | ||||||
|  | 	memory-region = <&q6_ipq5332_data>; | ||||||
|  | 	qcom,wsi = <&wsi>; | ||||||
|  | 	qcom,wsi_index = <0>; | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &wifi1 { | ||||||
|  | 	qcom,multipd_arch; | ||||||
|  | 	qcom,rproc = <&q6_wcss_pd2>; | ||||||
|  | 	qcom,rproc_rpd = <&q6v5_wcss>; | ||||||
|  | 	qcom,userpd-subsys-name = "q6v5_wcss_userpd2"; | ||||||
|  | 	qcom,tgt-mem-mode = <0>; | ||||||
|  | 	qcom,bdf-addr = <0x4DE00000 0x4DE00000 0x4DE00000 0x0 0x0 0x0>; | ||||||
|  | 	qcom,caldb-addr = <0x4F500000 0x4F500000 0x4F500000 0x0 0x0 0x0>; | ||||||
|  | 	qcom,umac-irq-reset-addr = <0x20000884>; | ||||||
|  | 	qcom,caldb-size = <0x500000>; | ||||||
|  | 	qcom,board_id = <0x061>; | ||||||
|  | 	mem-region = <&q6_qcn6432_data_1>; | ||||||
|  | 	memory-region = <&q6_qcn6432_data_1>; | ||||||
|  | 	qcom,wsi = <&wsi>; | ||||||
|  | 	qcom,wsi_index = <1>; | ||||||
|  | 	status = "okay"; | ||||||
|  | 	interrupts = <GIC_SPI 33 IRQ_TYPE_EDGE_RISING>; | ||||||
|  | 	interrupt-names = "umac_reset"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &wifi2 { | ||||||
|  | 	qcom,multipd_arch; | ||||||
|  | 	qcom,rproc = <&q6_wcss_pd3>; | ||||||
|  | 	qcom,rproc_rpd = <&q6v5_wcss>; | ||||||
|  | 	qcom,userpd-subsys-name = "q6v5_wcss_userpd3"; | ||||||
|  | 	qcom,tgt-mem-mode = <0>; | ||||||
|  | 	qcom,bdf-addr = <0x4FA00000 0x4FA00000 0x4FA00000 0x0 0x0 0x0>; | ||||||
|  | 	qcom,caldb-addr = <0x51100000 0x51100000 0x51100000 0x0 0x0 0x0>; | ||||||
|  | 	qcom,umac-irq-reset-addr = <0x18000884>; | ||||||
|  | 	qcom,caldb-size = <0x500000>; | ||||||
|  | 	qcom,board_id = <0x0b1>; | ||||||
|  | 	mem-region = <&q6_qcn6432_data_2>; | ||||||
|  | 	memory-region = <&q6_qcn6432_data_2>; | ||||||
|  | 	qcom,wsi = <&wsi>; | ||||||
|  | 	qcom,wsi_index = <2>; | ||||||
|  | 	status = "okay"; | ||||||
|  | 	interrupts = <GIC_SPI 410 IRQ_TYPE_EDGE_RISING>; | ||||||
|  | 	interrupt-names = "umac_reset"; | ||||||
|  | }; | ||||||
| @@ -166,10 +166,10 @@ | |||||||
| 		serial1 = &blsp1_uart1; | 		serial1 = &blsp1_uart1; | ||||||
| 		ethernet0 = "/soc/dp1"; | 		ethernet0 = "/soc/dp1"; | ||||||
| 		ethernet1 = "/soc/dp2"; | 		ethernet1 = "/soc/dp2"; | ||||||
| 		led-boot = &led_power; | 		led-boot = &led_power_green; | ||||||
| 		led-failsafe = &led_power; | 		led-failsafe = &led_power_red; | ||||||
| 		led-running = &led_power; | 		led-running = &led_power_green; | ||||||
| 		led-upgrade = &led_power; | 		led-upgrade = &led_power_green; | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| 	chosen { | 	chosen { | ||||||
| @@ -261,21 +261,21 @@ | |||||||
| 		pwmleds { | 		pwmleds { | ||||||
| 			compatible = "pwm-leds"; | 			compatible = "pwm-leds"; | ||||||
|  |  | ||||||
| 			red { | 			led_power_red: red { | ||||||
| 				label = "pwm:red"; | 				label = "pwm:red"; | ||||||
| 				pwms = <&pwm 3 1250000>; | 				pwms = <&pwm 3 1250000>; | ||||||
| 				max-brightness = <160>; | 				max-brightness = <160>; | ||||||
| 				linux,default-trigger = "none"; | 				linux,default-trigger = "none"; | ||||||
| 			}; | 			}; | ||||||
|  |  | ||||||
| 			green { | 			led_power_green: green { | ||||||
| 				label = "pwm:green"; | 				label = "pwm:green"; | ||||||
| 				pwms = <&pwm 2 1250000>; | 				pwms = <&pwm 2 1250000>; | ||||||
| 				max-brightness = <160>; | 				max-brightness = <160>; | ||||||
| 				linux,default-trigger = "none"; | 				linux,default-trigger = "none"; | ||||||
| 			}; | 			}; | ||||||
|  |  | ||||||
| 			led_power: blue { | 			led_power_blue: blue { | ||||||
| 				label = "pwm:blue"; | 				label = "pwm:blue"; | ||||||
| 				pwms = <&pwm 1 1250000>; | 				pwms = <&pwm 1 1250000>; | ||||||
| 				max-brightness = <160>; | 				max-brightness = <160>; | ||||||
| @@ -307,7 +307,7 @@ | |||||||
| 				switch_lan_bmp = <0x2>; /* lan port bitmap */ | 				switch_lan_bmp = <0x2>; /* lan port bitmap */ | ||||||
| 				switch_wan_bmp = <0x4>; /* wan port bitmap */ | 				switch_wan_bmp = <0x4>; /* wan port bitmap */ | ||||||
| 				switch_mac_mode = <0xc>; /* mac mode for uniphy instance0*/ | 				switch_mac_mode = <0xc>; /* mac mode for uniphy instance0*/ | ||||||
| 				switch_mac_mode1 = <0xc>; /* mac mode for uniphy instance1*/ | 				switch_mac_mode1 = <0xf>; /* mac mode for uniphy instance1*/ | ||||||
| 				switch_mac_mode2 = <0xff>; /* mac mode for uniphy instance2*/ | 				switch_mac_mode2 = <0xff>; /* mac mode for uniphy instance2*/ | ||||||
|  |  | ||||||
| 				qcom,port_phyinfo { | 				qcom,port_phyinfo { | ||||||
| @@ -318,8 +318,7 @@ | |||||||
| 					}; | 					}; | ||||||
| 					port@1 { | 					port@1 { | ||||||
| 						port_id = <2>; | 						port_id = <2>; | ||||||
| 						forced-speed = <2500>; | 						phy_address = <4>; | ||||||
| 						forced-duplex = <1>; |  | ||||||
| 					}; | 					}; | ||||||
| 				}; | 				}; | ||||||
| 			}; | 			}; | ||||||
| @@ -331,9 +330,9 @@ | |||||||
| 				mdio-bus = <&mdio>; | 				mdio-bus = <&mdio>; | ||||||
| 				switch_mac_mode = <0xc>; /* mac mode for uniphy instance0 */ | 				switch_mac_mode = <0xc>; /* mac mode for uniphy instance0 */ | ||||||
| 				switch_mac_mode1 = <0xc>; /* mac mode1 for uniphy instance1 */ | 				switch_mac_mode1 = <0xc>; /* mac mode1 for uniphy instance1 */ | ||||||
| 				switch_cpu_bmp = <0x21>;  /* cpu port bitmap */ | 				switch_cpu_bmp = <0x1>;  /* cpu port bitmap */ | ||||||
| 				switch_lan_bmp = <0x0e>; /* lan port bitmap */ | 				switch_lan_bmp = <0x0e>; /* lan port bitmap */ | ||||||
| 				switch_wan_bmp = <0x10>;  /* wan port bitmap */ | 				switch_wan_bmp = <0x0>;  /* wan port bitmap */ | ||||||
| //				link-polling-required = <0>; | //				link-polling-required = <0>; | ||||||
| 				fdb_sync = "interrupt"; | 				fdb_sync = "interrupt"; | ||||||
| 				link-intr-gpio = <&tlmm 24 GPIO_ACTIVE_HIGH>; | 				link-intr-gpio = <&tlmm 24 GPIO_ACTIVE_HIGH>; | ||||||
| @@ -356,15 +355,6 @@ | |||||||
| 						port_id = <3>; | 						port_id = <3>; | ||||||
| 						phy_address = <3>; | 						phy_address = <3>; | ||||||
| 					}; | 					}; | ||||||
| 					port@4 { |  | ||||||
| 						port_id = <4>; |  | ||||||
| 						phy_address = <4>; |  | ||||||
| 					}; |  | ||||||
| 					port@5 { |  | ||||||
| 						port_id = <5>; |  | ||||||
| 						forced-speed = <2500>; |  | ||||||
| 						forced-duplex = <1>;  |  | ||||||
| 					}; |  | ||||||
| 				}; | 				}; | ||||||
|  |  | ||||||
| 				led_source@2 { | 				led_source@2 { | ||||||
|   | |||||||
							
								
								
									
										591
									
								
								feeds/qca-wifi-7/ipq53xx/dts/ipq5332-sercomm-ap72tip-v4.dts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										591
									
								
								feeds/qca-wifi-7/ipq53xx/dts/ipq5332-sercomm-ap72tip-v4.dts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,591 @@ | |||||||
|  | // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) | ||||||
|  | /* | ||||||
|  |  * IPQ5332 RDP468 board device tree source | ||||||
|  |  * | ||||||
|  |  * Copyright (c) 2020-2021 The Linux Foundation. All rights reserved. | ||||||
|  |  * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | /dts-v1/; | ||||||
|  |  | ||||||
|  | #include <dt-bindings/gpio/gpio.h> | ||||||
|  | #include <dt-bindings/input/input.h> | ||||||
|  | #include <dt-bindings/leds/common.h> | ||||||
|  | #include "ipq5332.dtsi" | ||||||
|  | #include "ipq5332-default-memory.dtsi" | ||||||
|  |  | ||||||
|  | / { | ||||||
|  | 	model = "Sercomm WiFi-7"; | ||||||
|  | 	compatible = "sercomm,ap72tip-v4", "qcom,ipq5332-ap-mi01.6", "qcom,ipq5332"; | ||||||
|  |  | ||||||
|  | 	aliases { | ||||||
|  | 		serial0 = &blsp1_uart0; /*console*/ | ||||||
|  | 		serial1 = &blsp1_uart1; /*ble*/ | ||||||
|  | 		ethernet0 = "/soc/dp1"; | ||||||
|  | 		ethernet1 = "/soc/dp2"; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	chosen { | ||||||
|  | 		stdout-path = "serial0"; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	soc@0 { | ||||||
|  | 	 | ||||||
|  | #if 0   //AQR114C | ||||||
|  | 		mdio:mdio@90000 { | ||||||
|  | 			pinctrl-0 = <&mdio1_pins>; | ||||||
|  | 			pinctrl-names = "default"; | ||||||
|  | 			phy-reset-gpio = <&tlmm 0 GPIO_ACTIVE_LOW>; | ||||||
|  | 			phyaddr_fixup = <0xC90F018>; | ||||||
|  | 			uniphyaddr_fixup = <0xC90F014>; | ||||||
|  | 			mdio_clk_fixup; /* MDIO clock sequence fix up flag */ | ||||||
|  | 			status = "okay"; | ||||||
|  |  | ||||||
|  | 			phy0: ethernet-phy@0 { | ||||||
|  | 				reg = <24>; | ||||||
|  | 			}; | ||||||
|  |  | ||||||
|  | 			phy1: ethernet-phy@1 {   //aqr114c | ||||||
|  | 				reg = <0>; | ||||||
|  | 				compatible ="ethernet-phy-ieee802.3-c45"; | ||||||
|  | 			}; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		ess-instance { | ||||||
|  | 			ess-switch@3a000000 { | ||||||
|  | 				switch_cpu_bmp = <0x1>;  /* cpu port bitmap */ | ||||||
|  | 				switch_lan_bmp = <0x0>; /* lan port bitmap */ | ||||||
|  | 				switch_wan_bmp = <0x6>; /* wan port bitmap */ | ||||||
|  | 				switch_mac_mode = <0xc>; /* mac mode for uniphy instance0*/ | ||||||
|  | 				switch_mac_mode1 = <0xf>; /* mac mode for uniphy instance1*/ | ||||||
|  | 				switch_mac_mode2 = <0xff>; /* mac mode for uniphy instance2*/ | ||||||
|  |  | ||||||
|  | 				qcom,port_phyinfo { | ||||||
|  | 					port@0 { | ||||||
|  | 						port_id = <1>; | ||||||
|  | 						phy_address = <24>; | ||||||
|  | 						mdiobus = <&mdio>; | ||||||
|  | 					}; | ||||||
|  | 					port@1 { //aqr114c | ||||||
|  | 						port_id = <2>; | ||||||
|  | 						phy_address = <0>; | ||||||
|  | 						mdiobus = <&mdio>; | ||||||
|  | 						ethernet-phy-ieee802.3-c45; | ||||||
|  | 					}; | ||||||
|  | 				}; | ||||||
|  | 			}; | ||||||
|  | 		}; | ||||||
|  | 		 | ||||||
|  | 		dp1 { | ||||||
|  | 			device_type = "network"; | ||||||
|  | 			compatible = "qcom,nss-dp"; | ||||||
|  | 			qcom,id = <1>; | ||||||
|  | 			reg = <0x3a500000 0x4000>; | ||||||
|  | 			qcom,mactype = <1>; | ||||||
|  | 			local-mac-address = [000000000000]; | ||||||
|  | 			mdio-bus = <&mdio>; | ||||||
|  | 			qcom,phy-mdio-addr = <24>; | ||||||
|  | 			qcom,link-poll = <1>; | ||||||
|  | 			phy-mode = "sgmii"; | ||||||
|  | 		};	 | ||||||
|  | 		dp2 { | ||||||
|  | 			device_type = "network"; | ||||||
|  | 			compatible = "qcom,nss-dp"; | ||||||
|  | 			qcom,id = <2>; | ||||||
|  | 			reg = <0x3a504000 0x4000>; | ||||||
|  | 			qcom,mactype = <1>; | ||||||
|  | 			local-mac-address = [000000000000]; | ||||||
|  | 			qcom,phy-mdio-addr = <0>; | ||||||
|  | 			qcom,link-poll = <1>; | ||||||
|  | 			phy-mode = "sgmii"; | ||||||
|  | 		}; | ||||||
|  | #else //SFP	 | ||||||
|  | 		mdio:mdio@90000 {  | ||||||
|  | 			pinctrl-0 = <&mdio1_pins>; | ||||||
|  | 			pinctrl-names = "default"; | ||||||
|  | 			/*gpio0 for napa*/ | ||||||
|  | 			phy-reset-gpio = <&tlmm 0 GPIO_ACTIVE_LOW>; | ||||||
|  | 			status = "okay"; | ||||||
|  | 			phy0: ethernet-phy@0 { | ||||||
|  | 				reg = <24>; | ||||||
|  | 			}; | ||||||
|  | 		}; | ||||||
|  | 		ess-instance { | ||||||
|  | 			ess-switch@3a000000 { | ||||||
|  | 				switch_cpu_bmp = <0x1>;  /* cpu port bitmap */ | ||||||
|  | 				switch_lan_bmp = <0x0>; /* lan port bitmap */ | ||||||
|  | 				switch_wan_bmp = <0x6>; /* wan port bitmap */ | ||||||
|  | 				switch_mac_mode = <0xc>; /* mac mode for uniphy instance0*/ | ||||||
|  | 				switch_mac_mode1 = <0xe>; /* mac mode for uniphy instance1  sfp PORT_WRAPPER_10GBASE_R*/ | ||||||
|  | 				switch_mac_mode2 = <0xff>; /* mac mode for uniphy instance2*/ | ||||||
|  | 				qcom,port_phyinfo { | ||||||
|  | 					port@0 { | ||||||
|  | 						port_id = <1>; | ||||||
|  | 						phy_address = <24>; | ||||||
|  | 						mdiobus = <&mdio>; | ||||||
|  | 					}; | ||||||
|  | 					port@1 { | ||||||
|  | 						port_id = <2>; | ||||||
|  | 						phy_address = <30>; | ||||||
|  | 						media-type = "sfp";  | ||||||
|  | 					}; | ||||||
|  | 				}; | ||||||
|  | 			}; | ||||||
|  | 		}; | ||||||
|  | 		dp1 { | ||||||
|  | 			device_type = "network"; | ||||||
|  | 			compatible = "qcom,nss-dp"; | ||||||
|  | 			qcom,id = <1>; | ||||||
|  | 			reg = <0x3a500000 0x4000>; | ||||||
|  | 			qcom,mactype = <1>; | ||||||
|  | 			local-mac-address = [000000000000]; | ||||||
|  | 			mdio-bus = <&mdio>; | ||||||
|  | 			qcom,phy-mdio-addr = <24>; | ||||||
|  | 			qcom,link-poll = <1>; | ||||||
|  | 			phy-mode = "sgmii"; | ||||||
|  | 		}; | ||||||
|  | 		dp2 { | ||||||
|  | 			device_type = "network"; | ||||||
|  | 			compatible = "qcom,nss-dp"; | ||||||
|  | 			qcom,id = <2>; | ||||||
|  | 			reg = <0x3a504000 0x4000>; | ||||||
|  | 			qcom,mactype = <1>; | ||||||
|  | 			local-mac-address = [000000000000]; | ||||||
|  | 			mdio-bus = <&mdio>; | ||||||
|  | 			qcom,phy-mdio-addr = <30>; | ||||||
|  | 			qcom,link-poll = <1>; | ||||||
|  | 			phy-mode = "sgmii"; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | 		/* EDMA host driver configuration for the board */ | ||||||
|  | 		edma@3ab00000 { | ||||||
|  | 			qcom,txdesc-ring-start = <4>;		/* Tx desc ring start ID */ | ||||||
|  | 			qcom,txdesc-rings = <12>;		/* Total number of Tx desc rings to be provisioned */ | ||||||
|  | 			qcom,mht-txdesc-rings = <8>;            /* Extra Tx desc rings to be provisioned for MHT SW ports */ | ||||||
|  | 			qcom,txcmpl-ring-start = <4>;		/* Tx complete ring start ID */ | ||||||
|  | 			qcom,txcmpl-rings = <12>;		/* Total number of Tx complete rings to be provisioned */ | ||||||
|  | 			qcom,mht-txcmpl-rings = <8>;            /* Extra Tx complete rings to be provisioned for mht sw ports. */ | ||||||
|  | 			qcom,rxfill-ring-start = <4>;		/* Rx fill ring start ID */ | ||||||
|  | 			qcom,rxfill-rings = <4>;		/* Total number of Rx fill rings to be provisioned */ | ||||||
|  | 			qcom,rxdesc-ring-start = <12>;		/* Rx desc ring start ID */ | ||||||
|  | 			qcom,rxdesc-rings = <4>;		/* Total number of Rx desc rings to be provisioned */ | ||||||
|  | 			qcom,rx-page-mode = <0>;		/* Rx fill ring page mode */ | ||||||
|  | 			qcom,tx-map-priority-level = <1>;	/* Tx priority level per port */ | ||||||
|  | 			qcom,rx-map-priority-level = <1>;	/* Rx priority level per core */ | ||||||
|  | 			qcom,ppeds-num = <2>;			/* Number of PPEDS nodes */ | ||||||
|  | 			/* PPE-DS node format: <Rx-fill Tx-cmpl Rx Tx Queue-base Queue-count> */ | ||||||
|  | 			qcom,ppeds-map = <1 1 1 1 32 8>,	/* PPEDS Node#0 ring and queue map */ | ||||||
|  | 					<2 2 2 2 40 8>;		/* PPEDS Node#1 ring and queue map */ | ||||||
|  | 			qcom,txdesc-map = <8 9 10 11>,		/* Port0 per-core Tx ring map */ | ||||||
|  | 					<12 13 14 15>,        /* MHT-Port1 per-core Tx ring map */ | ||||||
|  | 					<4 5 6 7>,            /* MHT-Port2 per-core Tx ring map/packets from  vp*/ | ||||||
|  | 					<16 17 18 19>,        /* MHT-Port3 per-core Tx ring map */ | ||||||
|  | 					<20 21 22 23>;        /* MHT-Port4 per-core Tx ring map */ | ||||||
|  | 			qcom,txdesc-fc-grp-map = <1 2 3 4 5>;   /* Per GMAC flow control group map */ | ||||||
|  | 			qcom,rxfill-map = <4 5 6 7>;		/* Per-core Rx fill ring map */ | ||||||
|  | 			qcom,rxdesc-map = <12 13 14 15>;	/* Per-core Rx desc ring map */ | ||||||
|  | 			qcom,rx-queue-start = <0>;		/* Rx queue start */ | ||||||
|  | 			qcom,rx-ring-queue-map = <0 8 16 24>,	/* Priority 0 queues per-core Rx ring map */ | ||||||
|  | 						<1 9 17 25>,	/* Priority 1 queues per-core Rx ring map */ | ||||||
|  | 						<2 10 18 26>,	/* Priority 2 queues per-core Rx ring map */ | ||||||
|  | 						<3 11 19 27>,	/* Priority 3 queues per-core Rx ring map */ | ||||||
|  | 						<4 12 20 28>,	/* Priority 4 queues per-core Rx ring map */ | ||||||
|  | 						<5 13 21 29>,	/* Priority 5 queues per-core Rx ring map */ | ||||||
|  | 						<6 14 22 30>,	/* Priority 6 queues per-core Rx ring map */ | ||||||
|  | 						<7 15 23 31>;	/* Priority 7 queues per-core Rx ring map */ | ||||||
|  | 			interrupts = <0 163 4>,			/* Tx complete ring id #4 IRQ info */ | ||||||
|  | 				   <0 164 4>,			/* Tx complete ring id #5 IRQ info */ | ||||||
|  | 				   <0 165 4>,			/* Tx complete ring id #6 IRQ info */ | ||||||
|  | 				   <0 166 4>,			/* Tx complete ring id #7 IRQ info */ | ||||||
|  | 				   <0 167 4>,			/* Tx complete ring id #8 IRQ info */ | ||||||
|  | 				   <0 168 4>,			/* Tx complete ring id #9 IRQ info */ | ||||||
|  | 				   <0 169 4>,			/* Tx complete ring id #10 IRQ info */ | ||||||
|  | 				   <0 170 4>,			/* Tx complete ring id #11 IRQ info */ | ||||||
|  | 				   <0 171 4>,			/* Tx complete ring id #12 IRQ info */ | ||||||
|  | 				   <0 172 4>,			/* Tx complete ring id #13 IRQ info */ | ||||||
|  | 				   <0 173 4>,			/* Tx complete ring id #14 IRQ info */ | ||||||
|  | 				   <0 174 4>,			/* Tx complete ring id #15 IRQ info */ | ||||||
|  | 				   <0 139 4>,			/* Rx desc ring id #12 IRQ info */ | ||||||
|  | 				   <0 140 4>,			/* Rx desc ring id #13 IRQ info */ | ||||||
|  | 				   <0 141 4>,			/* Rx desc ring id #14 IRQ info */ | ||||||
|  | 				   <0 142 4>,			/* Rx desc ring id #15 IRQ info */ | ||||||
|  | 				   <0 191 4>,			/* Misc error IRQ info */ | ||||||
|  | 				<0 160 4>,			/* PPEDS Node #1(TxComp ring id #1) TxComplete IRQ info */ | ||||||
|  | 				<0 128 4>,			/* PPEDS Node #1(Rx Desc ring id #1) Rx Desc IRQ info */ | ||||||
|  | 				<0 152 4>,			/* PPEDS Node #1(RxFill Desc ring id #1) Rx Fill IRQ info */ | ||||||
|  | 				<0 161 4>,			/* PPEDS Node #2(TxComp ring id #2) TxComplete IRQ info */ | ||||||
|  | 				<0 129 4>,			/* PPEDS Node #2(Rx Desc ring id #2) Rx Desc IRQ info */ | ||||||
|  | 				<0 153 4>,                      /* PPEDS Node #2(RxFill Desc ring id #2) Rx Fill IRQ info */ | ||||||
|  | 				<0 175 4>,                   /* MHT port Tx complete ring id #16 IRQ info */ | ||||||
|  | 				<0 176 4>,                   /* MHT port Tx complete ring id #17 IRQ info */ | ||||||
|  | 				<0 177 4>,                   /* MHT port Tx complete ring id #18 IRQ info */ | ||||||
|  | 				<0 178 4>,                   /* MHT port Tx complete ring id #19 IRQ info */ | ||||||
|  | 				<0 179 4>,                   /* MHT port Tx complete ring id #20 IRQ info */ | ||||||
|  | 				<0 180 4>,                   /* MHT port Tx complete ring id #21 IRQ info */ | ||||||
|  | 				<0 181 4>,                   /* MHT port Tx complete ring id #22 IRQ info */ | ||||||
|  | 				<0 182 4>;                   /* MHT port Tx complete ring id #23 IRQ info */ | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		leds { | ||||||
|  |                 compatible = "gpio-leds"; | ||||||
|  |  | ||||||
|  | 				led@25 { | ||||||
|  | 					label = "blue:status"; | ||||||
|  | 					gpios = <&tca6416 9 GPIO_ACTIVE_HIGH>; | ||||||
|  |                     default-state = "off"; | ||||||
|  |                 }; | ||||||
|  | 				led@61 { | ||||||
|  | 					label = "green:phy"; | ||||||
|  | 					gpios = <&tca6416 15 GPIO_ACTIVE_HIGH>; | ||||||
|  | 				}; | ||||||
|  | 				led@62 { | ||||||
|  | 					label = "yellow:phy"; | ||||||
|  | 					gpios = <&tca6416 14 GPIO_ACTIVE_HIGH>; | ||||||
|  | 				}; | ||||||
|  | 		}; | ||||||
|  | 		 | ||||||
|  | 		gpio_keys { | ||||||
|  | 			compatible = "gpio-keys"; | ||||||
|  | 			pinctrl-0 = <&button_pins>; | ||||||
|  | 			pinctrl-names = "default"; | ||||||
|  | 			button@1 { | ||||||
|  | 				label = "rst"; | ||||||
|  | 				linux,code = <KEY_RESTART>; | ||||||
|  | 				gpios = <&tlmm 1 GPIO_ACTIVE_LOW>; | ||||||
|  | 				linux,input-type = <1>; | ||||||
|  | 				debounce-interval = <60>; | ||||||
|  | 			}; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		wsi: wsi { | ||||||
|  | 			id = <0>; | ||||||
|  | 			num_chip = <2>; | ||||||
|  | 			status = "okay"; | ||||||
|  | 			chip_info = <0 1 1>, | ||||||
|  | 				    <1 1 0>; | ||||||
|  | 		}; | ||||||
|  | 	}; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &wifi0 { | ||||||
|  | //	led-gpio = <&tlmm 36 GPIO_ACTIVE_HIGH>; | ||||||
|  | 	qcom,rproc = <&q6_wcss_pd1>; | ||||||
|  | 	qcom,rproc_rpd = <&q6v5_wcss>; | ||||||
|  | 	qcom,multipd_arch; | ||||||
|  | 	qcom,userpd-subsys-name = "q6v5_wcss_userpd1"; | ||||||
|  | 	memory-region = <&q6_region>; | ||||||
|  | 	qcom,wsi = <&wsi>; | ||||||
|  | 	qcom,wsi_index = <0>; | ||||||
|  | 	qcom,board_id = <0x16>; | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &qcn9224_pcie1 { | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &blsp1_uart0 { | ||||||
|  | 	pinctrl-0 = <&serial_0_pins>; | ||||||
|  | 	pinctrl-names = "default"; | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &blsp1_uart1 { | ||||||
|  | 	pinctrl-0 = <&serial_1_pins>; | ||||||
|  | 	pinctrl-names = "default"; | ||||||
|  | 	status = "disabled"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &blsp1_i2c2 { | ||||||
|  | 	clock-frequency  = <400000>; | ||||||
|  | 	pinctrl-0 = <&i2c_0_pins>; | ||||||
|  | 	pinctrl-names = "default"; | ||||||
|  | 	status = "okay"; | ||||||
|  |  | ||||||
|  | 	tca6416: gpio@20 { | ||||||
|  | 		compatible = "ti,tca6416"; | ||||||
|  | 		reg = <0x20>; | ||||||
|  | 		gpio-controller; | ||||||
|  | 		#gpio-cells = <2>; | ||||||
|  | 	}; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &blsp1_spi0 {   //nor flash | ||||||
|  | 	pinctrl-0 = <&spi_0_data_clk_pins &spi_0_cs_pins>; | ||||||
|  | 	pinctrl-names = "default"; | ||||||
|  | 	status = "okay"; | ||||||
|  |  | ||||||
|  | 	flash@0 { | ||||||
|  | 		compatible = "n25q128a11";  | ||||||
|  | 		//, "jedec,spi-nor"; | ||||||
|  | 		reg = <0>; | ||||||
|  | 		#address-cells = <1>; | ||||||
|  | 		#size-cells = <1>; | ||||||
|  | 		spi-max-frequency = <50000000>; | ||||||
|  | 	}; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &blsp1_spi1 {   /*tpm*/ | ||||||
|  | 	pinctrl-0 = <&spi_1_pins>; | ||||||
|  | 	pinctrl-names = "default"; | ||||||
|  | 	cs-select = <0>; | ||||||
|  | 	status = "okay"; | ||||||
|  | 	 | ||||||
|  | 	tpm: spi-tpm@0 { | ||||||
|  | 		#address-cells = <1>; | ||||||
|  | 		#size-cells = <1>; | ||||||
|  | 		compatible = "st,st33htpm-spi"; | ||||||
|  | 		reg = <0>; | ||||||
|  | 		spi-max-frequency = <20000000>; | ||||||
|  | 		status = "okay"; | ||||||
|  | 	}; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &pcm { | ||||||
|  | 	pinctrl-0 = <&audio_pins_pri>; | ||||||
|  | 	pinctrl-names = "primary"; | ||||||
|  | 	status = "disabled"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &sdhc { | ||||||
|  | 	bus-width = <4>; | ||||||
|  | 	max-frequency = <192000000>; | ||||||
|  | 	mmc-ddr-1_8v; | ||||||
|  | 	mmc-hs200-1_8v; | ||||||
|  | 	non-removable; | ||||||
|  | 	pinctrl-0 = <&sdc_default_state>; | ||||||
|  | 	pinctrl-names = "default"; | ||||||
|  | 	status = "disabled"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &sleep_clk { | ||||||
|  | 	clock-frequency = <32000>; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &xo { | ||||||
|  | 	clock-frequency = <24000000>; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &qpic_bam { | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &qpic_nand { | ||||||
|  | 	pinctrl-0 = <&qspi_default_state>; | ||||||
|  | 	pinctrl-names = "default"; | ||||||
|  | 	status = "okay"; | ||||||
|  |  | ||||||
|  | 	nandcs@0 { | ||||||
|  | 		reg = <0>; | ||||||
|  | 		#address-cells = <1>; | ||||||
|  | 		#size-cells = <1>; | ||||||
|  |  | ||||||
|  | 		nand-ecc-strength = <8>; | ||||||
|  | 		nand-ecc-step-size = <512>; | ||||||
|  | 		nand-bus-width = <8>; | ||||||
|  | 	}; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &pcie1_phy_x2 { | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &pcie1 { | ||||||
|  | 	pinctrl-0 = <&pcie1_default_state>; | ||||||
|  | 	pinctrl-names = "default"; | ||||||
|  | 	perst-gpios = <&tlmm 47 GPIO_ACTIVE_LOW>; | ||||||
|  | 	status = "okay"; | ||||||
|  |  | ||||||
|  | 	pcie1_rp { | ||||||
|  | 		reg = <0 0 0 0 0>; | ||||||
|  |  | ||||||
|  | 		qcom,mhi@1 { | ||||||
|  | 			reg = <0 0 0 0 0>; | ||||||
|  | 			boot-args = <0x2 0x4 0x34 0x3 0x0 0x0     /* MX Rail, GPIO52, Drive strength 0x3 */ | ||||||
|  | 					0x4 0x4 0x18 0x3 0x0 0x0  /* RFA1p2 Rail, GPIO24, Drive strength 0x3 */ | ||||||
|  | 					0x0 0x4 0x0 0x0 0x0 0x0>; /* End of arguments */ | ||||||
|  | 			memory-region = <&qcn9224_pcie1>; | ||||||
|  | 			qcom,wsi = <&wsi>; | ||||||
|  | 			qcom,wsi_index = <1>; | ||||||
|  | 			qcom,board_id = <0x100f>;  //0x1019->0x100f | ||||||
|  | 		}; | ||||||
|  | 	}; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | /* PINCTRL */ | ||||||
|  |  | ||||||
|  | &tlmm { | ||||||
|  |  | ||||||
|  | 	audio_pins_pri: audio_pinmux_pri { | ||||||
|  | 		mux_1 { | ||||||
|  | 			pins = "gpio29"; | ||||||
|  | 			function = "audio_pri"; | ||||||
|  | 			drive-strength = <8>; | ||||||
|  | 			bias-pull-down; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		mux_2 { | ||||||
|  | 			pins = "gpio30"; | ||||||
|  | 			function = "audio_pri"; | ||||||
|  | 			drive-strength = <8>; | ||||||
|  | 			bias-pull-down; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		mux_3 { | ||||||
|  | 			pins = "gpio31"; | ||||||
|  | 			function = "audio_pri"; | ||||||
|  | 			drive-strength = <4>; | ||||||
|  | 			bias-pull-down; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		mux_4 { | ||||||
|  | 			pins = "gpio32"; | ||||||
|  | 			function = "audio_pri"; | ||||||
|  | 			drive-strength = <4>; | ||||||
|  | 			bias-pull-down; | ||||||
|  | 		}; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	i2c_0_pins: i2c-0-state { | ||||||
|  | 		pins = "gpio43", "gpio45"; | ||||||
|  | 		function = "blsp2_i2c0"; | ||||||
|  | 		drive-strength = <8>; | ||||||
|  | 		bias-pull-up; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	spi_1_pins: spi-1-pins {  /* tpm */ | ||||||
|  | 		pins = "gpio29", "gpio30", "gpio31", "gpio32"; | ||||||
|  | 		function = "blsp1_spi0"; | ||||||
|  | 		drive-strength = <8>; | ||||||
|  | 		bias-pull-down; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	sdc_default_state: sdc-default-state { | ||||||
|  | 		clk-pins { | ||||||
|  | 			pins = "gpio13"; | ||||||
|  | 			function = "sdc_clk"; | ||||||
|  | 			drive-strength = <8>; | ||||||
|  | 			bias-disable; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		cmd-pins { | ||||||
|  | 			pins = "gpio12"; | ||||||
|  | 			function = "sdc_cmd"; | ||||||
|  | 			drive-strength = <8>; | ||||||
|  | 			bias-pull-up; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		data-pins { | ||||||
|  | 			pins = "gpio8", "gpio9", "gpio10", "gpio11"; | ||||||
|  | 			function = "sdc_data"; | ||||||
|  | 			drive-strength = <8>; | ||||||
|  | 			bias-pull-up; | ||||||
|  | 		}; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	spi_0_data_clk_pins: spi-0-data-clk-state { | ||||||
|  | 		pins = "gpio14", "gpio15", "gpio16"; | ||||||
|  | 		function = "blsp0_spi"; | ||||||
|  | 		drive-strength = <2>; | ||||||
|  | 		bias-pull-down; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	spi_0_cs_pins: spi-0-cs-state { | ||||||
|  | 		pins = "gpio17"; | ||||||
|  | 		function = "blsp0_spi"; | ||||||
|  | 		drive-strength = <2>; | ||||||
|  | 		bias-pull-up; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	qspi_default_state: qspi-default-state { | ||||||
|  | 		qspi_clock { | ||||||
|  | 			pins = "gpio13"; | ||||||
|  | 			function = "qspi_clk"; | ||||||
|  | 			drive-strength = <8>; | ||||||
|  | 			bias-pull-down; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		qspi_cs { | ||||||
|  | 			pins = "gpio12"; | ||||||
|  | 			function = "qspi_cs"; | ||||||
|  | 			drive-strength = <8>; | ||||||
|  | 			bias-pull-up; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		qspi_data { | ||||||
|  | 			pins = "gpio8", "gpio9", "gpio10", "gpio11"; | ||||||
|  | 			function = "qspi_data"; | ||||||
|  | 			drive-strength = <8>; | ||||||
|  | 			bias-pull-down; | ||||||
|  | 		}; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	serial_1_pins: serial1-pinmux { /*ble*/ | ||||||
|  | //		pins = "gpio33", "gpio34", "gpio35", "gpio36"; | ||||||
|  | 		pins = "gpio33", "gpio35"; | ||||||
|  | 		function = "blsp1_uart2"; | ||||||
|  | 		drive-strength = <8>; | ||||||
|  | 		bias-pull-up; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | /*	gpio_leds_default: gpio-leds-default-state { | ||||||
|  | 		pins = "gpio36"; | ||||||
|  | 		function = "gpio"; | ||||||
|  | 		drive-strength = <8>; | ||||||
|  | 		bias-pull-down; | ||||||
|  | 	};*/ | ||||||
|  | 	 | ||||||
|  | 	button_pins: button-state { | ||||||
|  | 		pins = "gpio1"; | ||||||
|  | 		function = "gpio"; | ||||||
|  | 		drive-strength = <8>; | ||||||
|  | 		bias-pull-up; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	pwm_pins: pwm-state { | ||||||
|  | 		pins = "gpio46"; | ||||||
|  | 		function = "pwm0"; | ||||||
|  | 		drive-strength = <8>; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	pcie1_default_state: pcie1-default-state { | ||||||
|  | 		pins = "gpio47"; | ||||||
|  | 		function = "gpio"; | ||||||
|  | 		drive-strength = <8>; | ||||||
|  | 		bias-pull-up; | ||||||
|  | 		output-low; | ||||||
|  | 	}; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &license_manager { | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &usb3 { | ||||||
|  | 	qcom,multiplexed-phy; | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &pwm { | ||||||
|  | 	pinctrl-0 = <&pwm_pins>; | ||||||
|  | 	pinctrl-names = "default"; | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &hs_m31phy_0 { | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &ssuniphy_0 { | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | //sercomm add | ||||||
|  | &wifi3 { | ||||||
|  | 	/* QCN9224 5G+6G */ | ||||||
|  | 	hremote_node = <&qcn9224_pcie1>; | ||||||
|  | 	qcom,board_id = <0x100f>;  | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
							
								
								
									
										601
									
								
								feeds/qca-wifi-7/ipq53xx/dts/ipq5332-sercomm-ap72tip.dts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										601
									
								
								feeds/qca-wifi-7/ipq53xx/dts/ipq5332-sercomm-ap72tip.dts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,601 @@ | |||||||
|  | // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) | ||||||
|  | /* | ||||||
|  |  * IPQ5332 RDP468 board device tree source | ||||||
|  |  * | ||||||
|  |  * Copyright (c) 2020-2021 The Linux Foundation. All rights reserved. | ||||||
|  |  * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | /dts-v1/; | ||||||
|  |  | ||||||
|  | #include <dt-bindings/gpio/gpio.h> | ||||||
|  | #include <dt-bindings/input/input.h> | ||||||
|  | #include <dt-bindings/leds/common.h> | ||||||
|  | #include "ipq5332.dtsi" | ||||||
|  | #include "ipq5332-default-memory.dtsi" | ||||||
|  |  | ||||||
|  | / { | ||||||
|  | 	model = "Sercomm WiFi-7"; | ||||||
|  | 	compatible = "sercomm,ap72tip", "qcom,ipq5332-ap-mi01.6", "qcom,ipq5332"; | ||||||
|  |  | ||||||
|  | 	aliases { | ||||||
|  | 		serial0 = &blsp1_uart0; /*console*/ | ||||||
|  | 		serial1 = &blsp1_uart1; /*ble*/ | ||||||
|  | 		ethernet0 = "/soc/dp1"; | ||||||
|  | 		ethernet1 = "/soc/dp2"; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	chosen { | ||||||
|  | 		stdout-path = "serial0"; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	soc@0 { | ||||||
|  | 	 | ||||||
|  | #if 1   //AQR114C | ||||||
|  | 		mdio:mdio@90000 { | ||||||
|  | 			pinctrl-0 = <&mdio1_pins>; | ||||||
|  | 			pinctrl-names = "default"; | ||||||
|  | 			phy-reset-gpio = <&tlmm 0 GPIO_ACTIVE_LOW>; | ||||||
|  | 			phyaddr_fixup = <0xC90F018>; | ||||||
|  | 			uniphyaddr_fixup = <0xC90F014>; | ||||||
|  | 			mdio_clk_fixup; /* MDIO clock sequence fix up flag */ | ||||||
|  | 			status = "okay"; | ||||||
|  |  | ||||||
|  | 			phy0: ethernet-phy@0 { | ||||||
|  | 				reg = <24>; | ||||||
|  | 			}; | ||||||
|  |  | ||||||
|  | 			phy1: ethernet-phy@1 {   //aqr114c | ||||||
|  | 				reg = <0>; | ||||||
|  | 				compatible ="ethernet-phy-ieee802.3-c45"; | ||||||
|  | 			}; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		ess-instance { | ||||||
|  | 			ess-switch@3a000000 { | ||||||
|  | 				switch_cpu_bmp = <0x1>;  /* cpu port bitmap */ | ||||||
|  | 				switch_lan_bmp = <0x0>; /* lan port bitmap */ | ||||||
|  | 				switch_wan_bmp = <0x6>; /* wan port bitmap */ | ||||||
|  | 				switch_mac_mode = <0xc>; /* mac mode for uniphy instance0*/ | ||||||
|  | 				switch_mac_mode1 = <0xf>; /* mac mode for uniphy instance1*/ | ||||||
|  | 				switch_mac_mode2 = <0xff>; /* mac mode for uniphy instance2*/ | ||||||
|  |  | ||||||
|  | 				qcom,port_phyinfo { | ||||||
|  | 					port@0 { | ||||||
|  | 						port_id = <1>; | ||||||
|  | 						phy_address = <24>; | ||||||
|  | 						mdiobus = <&mdio>; | ||||||
|  | 					}; | ||||||
|  | 					port@1 { //aqr114c | ||||||
|  | 						port_id = <2>; | ||||||
|  | 						phy_address = <0>; | ||||||
|  | 						mdiobus = <&mdio>; | ||||||
|  | 						ethernet-phy-ieee802.3-c45; | ||||||
|  | 					}; | ||||||
|  | 				}; | ||||||
|  | 			}; | ||||||
|  | 		}; | ||||||
|  | 		 | ||||||
|  | 		dp1 { | ||||||
|  | 			device_type = "network"; | ||||||
|  | 			compatible = "qcom,nss-dp"; | ||||||
|  | 			qcom,id = <1>; | ||||||
|  | 			reg = <0x3a500000 0x4000>; | ||||||
|  | 			qcom,mactype = <1>; | ||||||
|  | 			local-mac-address = [000000000000]; | ||||||
|  | 			mdio-bus = <&mdio>; | ||||||
|  | 			qcom,phy-mdio-addr = <24>; | ||||||
|  | 			qcom,link-poll = <1>; | ||||||
|  | 			phy-mode = "sgmii"; | ||||||
|  | 		};	 | ||||||
|  | 		dp2 { | ||||||
|  | 			device_type = "network"; | ||||||
|  | 			compatible = "qcom,nss-dp"; | ||||||
|  | 			qcom,id = <2>; | ||||||
|  | 			reg = <0x3a504000 0x4000>; | ||||||
|  | 			qcom,mactype = <1>; | ||||||
|  | 			local-mac-address = [000000000000]; | ||||||
|  | 			qcom,phy-mdio-addr = <0>; | ||||||
|  | 			qcom,link-poll = <1>; | ||||||
|  | 			phy-mode = "sgmii"; | ||||||
|  | 		}; | ||||||
|  | #else //SFP	 | ||||||
|  | 		dp1 { | ||||||
|  | 			device_type = "network"; | ||||||
|  | 			compatible = "qcom,nss-dp"; | ||||||
|  | 			qcom,id = <1>; | ||||||
|  | 			reg = <0x3a500000 0x4000>; | ||||||
|  | 			qcom,mactype = <1>; | ||||||
|  | 			local-mac-address = [000000000000]; | ||||||
|  | 			mdio-bus = <&mdio>; | ||||||
|  | 			qcom,phy-mdio-addr = <24>; | ||||||
|  | 			qcom,link-poll = <1>; | ||||||
|  | 			phy-mode = "sgmii"; | ||||||
|  | 		}; | ||||||
|  | 		dp2 { | ||||||
|  | 			device_type = "network"; | ||||||
|  | 			compatible = "qcom,nss-dp"; | ||||||
|  | 			qcom,id = <2>; | ||||||
|  | 			reg = <0x3a504000 0x4000>; | ||||||
|  | 			qcom,mactype = <1>; | ||||||
|  | 			local-mac-address = [000000000000]; | ||||||
|  | 			mdio-bus = <&mdio>; | ||||||
|  | 			qcom,phy-mdio-addr = <30>; | ||||||
|  | 			qcom,link-poll = <1>; | ||||||
|  | 			phy-mode = "sgmii"; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		mdio:mdio@90000 {  | ||||||
|  | 			status = "okay"; | ||||||
|  | 			pinctrl-0 = <&mdio1_pins>; | ||||||
|  | 			pinctrl-names = "default"; | ||||||
|  | 			/*gpio0 for napa*/ | ||||||
|  | 			phy-reset-gpio = <&tlmm 0 0>; | ||||||
|  |  | ||||||
|  | 			phy0: ethernet-phy@0 { | ||||||
|  | 				reg = <24>; | ||||||
|  | 			}; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		ess-instance { | ||||||
|  | 			ess-switch@3a000000 { | ||||||
|  | 				switch_cpu_bmp = <0x1>;  /* cpu port bitmap */ | ||||||
|  | 				switch_lan_bmp = <0x0>; /* lan port bitmap */ | ||||||
|  | 				switch_wan_bmp = <0x6>; /* wan port bitmap */ | ||||||
|  | 				switch_mac_mode = <0xc>; /* mac mode for uniphy instance0*/ | ||||||
|  | 				switch_mac_mode1 = <0xe>; /* mac mode for uniphy instance1  sfp PORT_WRAPPER_10GBASE_R*/ | ||||||
|  | 				switch_mac_mode2 = <0xff>; /* mac mode for uniphy instance2*/ | ||||||
|  | 				qcom,port_phyinfo { | ||||||
|  | 					port@0 { | ||||||
|  | 						port_id = <1>; | ||||||
|  | 						phy_address = <24>; | ||||||
|  | 					}; | ||||||
|  | 					port@1 { | ||||||
|  | 						port_id = <2>; | ||||||
|  | 						phy_address = <30>; | ||||||
|  | 						media-type = "sfp";  | ||||||
|  | 					}; | ||||||
|  | 				}; | ||||||
|  | 			}; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | 		/* EDMA host driver configuration for the board */ | ||||||
|  | 		edma@3ab00000 { | ||||||
|  | 			qcom,txdesc-ring-start = <4>;		/* Tx desc ring start ID */ | ||||||
|  | 			qcom,txdesc-rings = <12>;		/* Total number of Tx desc rings to be provisioned */ | ||||||
|  | 			qcom,mht-txdesc-rings = <8>;            /* Extra Tx desc rings to be provisioned for MHT SW ports */ | ||||||
|  | 			qcom,txcmpl-ring-start = <4>;		/* Tx complete ring start ID */ | ||||||
|  | 			qcom,txcmpl-rings = <12>;		/* Total number of Tx complete rings to be provisioned */ | ||||||
|  | 			qcom,mht-txcmpl-rings = <8>;            /* Extra Tx complete rings to be provisioned for mht sw ports. */ | ||||||
|  | 			qcom,rxfill-ring-start = <4>;		/* Rx fill ring start ID */ | ||||||
|  | 			qcom,rxfill-rings = <4>;		/* Total number of Rx fill rings to be provisioned */ | ||||||
|  | 			qcom,rxdesc-ring-start = <12>;		/* Rx desc ring start ID */ | ||||||
|  | 			qcom,rxdesc-rings = <4>;		/* Total number of Rx desc rings to be provisioned */ | ||||||
|  | 			qcom,rx-page-mode = <0>;		/* Rx fill ring page mode */ | ||||||
|  | 			qcom,tx-map-priority-level = <1>;	/* Tx priority level per port */ | ||||||
|  | 			qcom,rx-map-priority-level = <1>;	/* Rx priority level per core */ | ||||||
|  | 			qcom,ppeds-num = <2>;			/* Number of PPEDS nodes */ | ||||||
|  | 			/* PPE-DS node format: <Rx-fill Tx-cmpl Rx Tx Queue-base Queue-count> */ | ||||||
|  | 			qcom,ppeds-map = <1 1 1 1 32 8>,	/* PPEDS Node#0 ring and queue map */ | ||||||
|  | 					<2 2 2 2 40 8>;		/* PPEDS Node#1 ring and queue map */ | ||||||
|  | 			qcom,txdesc-map = <8 9 10 11>,		/* Port0 per-core Tx ring map */ | ||||||
|  | 					<12 13 14 15>,        /* MHT-Port1 per-core Tx ring map */ | ||||||
|  | 					<4 5 6 7>,            /* MHT-Port2 per-core Tx ring map/packets from  vp*/ | ||||||
|  | 					<16 17 18 19>,        /* MHT-Port3 per-core Tx ring map */ | ||||||
|  | 					<20 21 22 23>;        /* MHT-Port4 per-core Tx ring map */ | ||||||
|  | 			qcom,txdesc-fc-grp-map = <1 2 3 4 5>;   /* Per GMAC flow control group map */ | ||||||
|  | 			qcom,rxfill-map = <4 5 6 7>;		/* Per-core Rx fill ring map */ | ||||||
|  | 			qcom,rxdesc-map = <12 13 14 15>;	/* Per-core Rx desc ring map */ | ||||||
|  | 			qcom,rx-queue-start = <0>;		/* Rx queue start */ | ||||||
|  | 			qcom,rx-ring-queue-map = <0 8 16 24>,	/* Priority 0 queues per-core Rx ring map */ | ||||||
|  | 						<1 9 17 25>,	/* Priority 1 queues per-core Rx ring map */ | ||||||
|  | 						<2 10 18 26>,	/* Priority 2 queues per-core Rx ring map */ | ||||||
|  | 						<3 11 19 27>,	/* Priority 3 queues per-core Rx ring map */ | ||||||
|  | 						<4 12 20 28>,	/* Priority 4 queues per-core Rx ring map */ | ||||||
|  | 						<5 13 21 29>,	/* Priority 5 queues per-core Rx ring map */ | ||||||
|  | 						<6 14 22 30>,	/* Priority 6 queues per-core Rx ring map */ | ||||||
|  | 						<7 15 23 31>;	/* Priority 7 queues per-core Rx ring map */ | ||||||
|  | 			interrupts = <0 163 4>,			/* Tx complete ring id #4 IRQ info */ | ||||||
|  | 				   <0 164 4>,			/* Tx complete ring id #5 IRQ info */ | ||||||
|  | 				   <0 165 4>,			/* Tx complete ring id #6 IRQ info */ | ||||||
|  | 				   <0 166 4>,			/* Tx complete ring id #7 IRQ info */ | ||||||
|  | 				   <0 167 4>,			/* Tx complete ring id #8 IRQ info */ | ||||||
|  | 				   <0 168 4>,			/* Tx complete ring id #9 IRQ info */ | ||||||
|  | 				   <0 169 4>,			/* Tx complete ring id #10 IRQ info */ | ||||||
|  | 				   <0 170 4>,			/* Tx complete ring id #11 IRQ info */ | ||||||
|  | 				   <0 171 4>,			/* Tx complete ring id #12 IRQ info */ | ||||||
|  | 				   <0 172 4>,			/* Tx complete ring id #13 IRQ info */ | ||||||
|  | 				   <0 173 4>,			/* Tx complete ring id #14 IRQ info */ | ||||||
|  | 				   <0 174 4>,			/* Tx complete ring id #15 IRQ info */ | ||||||
|  | 				   <0 139 4>,			/* Rx desc ring id #12 IRQ info */ | ||||||
|  | 				   <0 140 4>,			/* Rx desc ring id #13 IRQ info */ | ||||||
|  | 				   <0 141 4>,			/* Rx desc ring id #14 IRQ info */ | ||||||
|  | 				   <0 142 4>,			/* Rx desc ring id #15 IRQ info */ | ||||||
|  | 				   <0 191 4>,			/* Misc error IRQ info */ | ||||||
|  | 				<0 160 4>,			/* PPEDS Node #1(TxComp ring id #1) TxComplete IRQ info */ | ||||||
|  | 				<0 128 4>,			/* PPEDS Node #1(Rx Desc ring id #1) Rx Desc IRQ info */ | ||||||
|  | 				<0 152 4>,			/* PPEDS Node #1(RxFill Desc ring id #1) Rx Fill IRQ info */ | ||||||
|  | 				<0 161 4>,			/* PPEDS Node #2(TxComp ring id #2) TxComplete IRQ info */ | ||||||
|  | 				<0 129 4>,			/* PPEDS Node #2(Rx Desc ring id #2) Rx Desc IRQ info */ | ||||||
|  | 				<0 153 4>,                      /* PPEDS Node #2(RxFill Desc ring id #2) Rx Fill IRQ info */ | ||||||
|  | 				<0 175 4>,                   /* MHT port Tx complete ring id #16 IRQ info */ | ||||||
|  | 				<0 176 4>,                   /* MHT port Tx complete ring id #17 IRQ info */ | ||||||
|  | 				<0 177 4>,                   /* MHT port Tx complete ring id #18 IRQ info */ | ||||||
|  | 				<0 178 4>,                   /* MHT port Tx complete ring id #19 IRQ info */ | ||||||
|  | 				<0 179 4>,                   /* MHT port Tx complete ring id #20 IRQ info */ | ||||||
|  | 				<0 180 4>,                   /* MHT port Tx complete ring id #21 IRQ info */ | ||||||
|  | 				<0 181 4>,                   /* MHT port Tx complete ring id #22 IRQ info */ | ||||||
|  | 				<0 182 4>;                   /* MHT port Tx complete ring id #23 IRQ info */ | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		leds { | ||||||
|  |                 compatible = "gpio-leds"; | ||||||
|  |  | ||||||
|  | 				led@25 { | ||||||
|  | 					label = "blue:status"; | ||||||
|  | 					gpios = <&tca6416 9 GPIO_ACTIVE_HIGH>; | ||||||
|  |                     default-state = "off"; | ||||||
|  |                 }; | ||||||
|  | 				led@24 { | ||||||
|  | 					label = "red:status"; | ||||||
|  | 					gpios = <&tca6416 10 GPIO_ACTIVE_HIGH>; | ||||||
|  | 				}; | ||||||
|  | 				led_power: led@16 { | ||||||
|  |                                 label = "green:status"; | ||||||
|  | 					gpios = <&tca6416 11 GPIO_ACTIVE_HIGH>; | ||||||
|  | 				}; | ||||||
|  | 				led@61 { | ||||||
|  | 					label = "green:phy"; | ||||||
|  | 					gpios = <&tca6416 15 GPIO_ACTIVE_HIGH>; | ||||||
|  | 				}; | ||||||
|  | 				led@62 { | ||||||
|  | 					label = "yellow:phy"; | ||||||
|  | 					gpios = <&tca6416 14 GPIO_ACTIVE_HIGH>; | ||||||
|  | 				}; | ||||||
|  | 		}; | ||||||
|  | /* | ||||||
|  | 		gpio_keys { | ||||||
|  | 			compatible = "gpio-keys"; | ||||||
|  | 			pinctrl-0 = <&button_pins>; | ||||||
|  | 			pinctrl-names = "default"; | ||||||
|  | 			button@1 { | ||||||
|  | 				label = "rst"; | ||||||
|  | 				linux,code = <KEY_RESTART>; | ||||||
|  | 				gpios = <&tlmm 25 GPIO_ACTIVE_LOW>; | ||||||
|  | 				linux,input-type = <1>; | ||||||
|  | 				debounce-interval = <60>; | ||||||
|  | 			}; | ||||||
|  | 		};*/ | ||||||
|  |  | ||||||
|  | 		wsi: wsi { | ||||||
|  | 			id = <0>; | ||||||
|  | 			num_chip = <2>; | ||||||
|  | 			status = "okay"; | ||||||
|  | 			chip_info = <0 1 1>, | ||||||
|  | 				    <1 1 0>; | ||||||
|  | 		}; | ||||||
|  | 	}; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &wifi0 { | ||||||
|  | //	led-gpio = <&tlmm 36 GPIO_ACTIVE_HIGH>; | ||||||
|  | 	qcom,rproc = <&q6_wcss_pd1>; | ||||||
|  | 	qcom,rproc_rpd = <&q6v5_wcss>; | ||||||
|  | 	qcom,multipd_arch; | ||||||
|  | 	qcom,userpd-subsys-name = "q6v5_wcss_userpd1"; | ||||||
|  | 	memory-region = <&q6_region>; | ||||||
|  | 	qcom,wsi = <&wsi>; | ||||||
|  | 	qcom,wsi_index = <0>; | ||||||
|  | 	qcom,board_id = <0x16>; | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &qcn9224_pcie1 { | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &blsp1_uart0 { | ||||||
|  | 	pinctrl-0 = <&serial_0_pins>; | ||||||
|  | 	pinctrl-names = "default"; | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &blsp1_uart1 { | ||||||
|  | 	pinctrl-0 = <&serial_1_pins>; | ||||||
|  | 	pinctrl-names = "default"; | ||||||
|  | 	status = "disabled"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &blsp1_i2c2 { | ||||||
|  | 	clock-frequency  = <400000>; | ||||||
|  | 	pinctrl-0 = <&i2c_0_pins>; | ||||||
|  | 	pinctrl-names = "default"; | ||||||
|  | 	status = "okay"; | ||||||
|  |  | ||||||
|  | 	tca6416: gpio@20 { | ||||||
|  | 		compatible = "ti,tca6416"; | ||||||
|  | 		reg = <0x20>; | ||||||
|  | 		gpio-controller; | ||||||
|  | 		#gpio-cells = <2>; | ||||||
|  | 	}; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &blsp1_spi0 {   //nor flash | ||||||
|  | 	pinctrl-0 = <&spi_0_data_clk_pins &spi_0_cs_pins>; | ||||||
|  | 	pinctrl-names = "default"; | ||||||
|  | 	status = "okay"; | ||||||
|  |  | ||||||
|  | 	flash@0 { | ||||||
|  | 		compatible = "n25q128a11";  | ||||||
|  | 		//, "jedec,spi-nor"; | ||||||
|  | 		reg = <0>; | ||||||
|  | 		#address-cells = <1>; | ||||||
|  | 		#size-cells = <1>; | ||||||
|  | 		spi-max-frequency = <50000000>; | ||||||
|  | 	}; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &blsp1_spi1 {   /*tpm*/ | ||||||
|  | 	pinctrl-0 = <&spi_1_pins>; | ||||||
|  | 	pinctrl-names = "default"; | ||||||
|  | 	cs-select = <0>; | ||||||
|  | 	status = "okay"; | ||||||
|  | 	 | ||||||
|  | 	tpm: spi-tpm@0 { | ||||||
|  | 		#address-cells = <1>; | ||||||
|  | 		#size-cells = <1>; | ||||||
|  | 		compatible = "st,st33htpm-spi"; | ||||||
|  | 		reg = <0>; | ||||||
|  | 		spi-max-frequency = <20000000>; | ||||||
|  | 		status = "okay"; | ||||||
|  | 	}; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &pcm { | ||||||
|  | 	pinctrl-0 = <&audio_pins_pri>; | ||||||
|  | 	pinctrl-names = "primary"; | ||||||
|  | 	status = "disabled"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &sdhc { | ||||||
|  | 	bus-width = <4>; | ||||||
|  | 	max-frequency = <192000000>; | ||||||
|  | 	mmc-ddr-1_8v; | ||||||
|  | 	mmc-hs200-1_8v; | ||||||
|  | 	non-removable; | ||||||
|  | 	pinctrl-0 = <&sdc_default_state>; | ||||||
|  | 	pinctrl-names = "default"; | ||||||
|  | 	status = "disabled"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &sleep_clk { | ||||||
|  | 	clock-frequency = <32000>; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &xo { | ||||||
|  | 	clock-frequency = <24000000>; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &qpic_bam { | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &qpic_nand { | ||||||
|  | 	pinctrl-0 = <&qspi_default_state>; | ||||||
|  | 	pinctrl-names = "default"; | ||||||
|  | 	status = "okay"; | ||||||
|  |  | ||||||
|  | 	nandcs@0 { | ||||||
|  | 		reg = <0>; | ||||||
|  | 		#address-cells = <1>; | ||||||
|  | 		#size-cells = <1>; | ||||||
|  |  | ||||||
|  | 		nand-ecc-strength = <8>; | ||||||
|  | 		nand-ecc-step-size = <512>; | ||||||
|  | 		nand-bus-width = <8>; | ||||||
|  | 	}; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &pcie1_phy_x2 { | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &pcie1 { | ||||||
|  | 	pinctrl-0 = <&pcie1_default_state>; | ||||||
|  | 	pinctrl-names = "default"; | ||||||
|  | 	perst-gpios = <&tlmm 47 GPIO_ACTIVE_LOW>; | ||||||
|  | 	status = "okay"; | ||||||
|  |  | ||||||
|  | 	pcie1_rp { | ||||||
|  | 		reg = <0 0 0 0 0>; | ||||||
|  |  | ||||||
|  | 		qcom,mhi@1 { | ||||||
|  | 			reg = <0 0 0 0 0>; | ||||||
|  | 			boot-args = <0x2 0x4 0x34 0x3 0x0 0x0     /* MX Rail, GPIO52, Drive strength 0x3 */ | ||||||
|  | 					0x4 0x4 0x18 0x3 0x0 0x0  /* RFA1p2 Rail, GPIO24, Drive strength 0x3 */ | ||||||
|  | 					0x0 0x4 0x0 0x0 0x0 0x0>; /* End of arguments */ | ||||||
|  | 			memory-region = <&qcn9224_pcie1>; | ||||||
|  | 			qcom,wsi = <&wsi>; | ||||||
|  | 			qcom,wsi_index = <1>; | ||||||
|  | 			qcom,board_id = <0x100f>;  //0x1019->0x100f | ||||||
|  | 		}; | ||||||
|  | 	}; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | /* PINCTRL */ | ||||||
|  |  | ||||||
|  | &tlmm { | ||||||
|  |  | ||||||
|  | 	audio_pins_pri: audio_pinmux_pri { | ||||||
|  | 		mux_1 { | ||||||
|  | 			pins = "gpio29"; | ||||||
|  | 			function = "audio_pri"; | ||||||
|  | 			drive-strength = <8>; | ||||||
|  | 			bias-pull-down; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		mux_2 { | ||||||
|  | 			pins = "gpio30"; | ||||||
|  | 			function = "audio_pri"; | ||||||
|  | 			drive-strength = <8>; | ||||||
|  | 			bias-pull-down; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		mux_3 { | ||||||
|  | 			pins = "gpio31"; | ||||||
|  | 			function = "audio_pri"; | ||||||
|  | 			drive-strength = <4>; | ||||||
|  | 			bias-pull-down; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		mux_4 { | ||||||
|  | 			pins = "gpio32"; | ||||||
|  | 			function = "audio_pri"; | ||||||
|  | 			drive-strength = <4>; | ||||||
|  | 			bias-pull-down; | ||||||
|  | 		}; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	i2c_0_pins: i2c-0-state { | ||||||
|  | 		pins = "gpio43", "gpio45"; | ||||||
|  | 		function = "blsp2_i2c0"; | ||||||
|  | 		drive-strength = <8>; | ||||||
|  | 		bias-pull-up; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	spi_1_pins: spi-1-pins {  /* tpm */ | ||||||
|  | 		pins = "gpio29", "gpio30", "gpio31", "gpio32"; | ||||||
|  | 		function = "blsp1_spi0"; | ||||||
|  | 		drive-strength = <8>; | ||||||
|  | 		bias-pull-down; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	sdc_default_state: sdc-default-state { | ||||||
|  | 		clk-pins { | ||||||
|  | 			pins = "gpio13"; | ||||||
|  | 			function = "sdc_clk"; | ||||||
|  | 			drive-strength = <8>; | ||||||
|  | 			bias-disable; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		cmd-pins { | ||||||
|  | 			pins = "gpio12"; | ||||||
|  | 			function = "sdc_cmd"; | ||||||
|  | 			drive-strength = <8>; | ||||||
|  | 			bias-pull-up; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		data-pins { | ||||||
|  | 			pins = "gpio8", "gpio9", "gpio10", "gpio11"; | ||||||
|  | 			function = "sdc_data"; | ||||||
|  | 			drive-strength = <8>; | ||||||
|  | 			bias-pull-up; | ||||||
|  | 		}; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	spi_0_data_clk_pins: spi-0-data-clk-state { | ||||||
|  | 		pins = "gpio14", "gpio15", "gpio16"; | ||||||
|  | 		function = "blsp0_spi"; | ||||||
|  | 		drive-strength = <2>; | ||||||
|  | 		bias-pull-down; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	spi_0_cs_pins: spi-0-cs-state { | ||||||
|  | 		pins = "gpio17"; | ||||||
|  | 		function = "blsp0_spi"; | ||||||
|  | 		drive-strength = <2>; | ||||||
|  | 		bias-pull-up; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	qspi_default_state: qspi-default-state { | ||||||
|  | 		qspi_clock { | ||||||
|  | 			pins = "gpio13"; | ||||||
|  | 			function = "qspi_clk"; | ||||||
|  | 			drive-strength = <8>; | ||||||
|  | 			bias-pull-down; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		qspi_cs { | ||||||
|  | 			pins = "gpio12"; | ||||||
|  | 			function = "qspi_cs"; | ||||||
|  | 			drive-strength = <8>; | ||||||
|  | 			bias-pull-up; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
|  | 		qspi_data { | ||||||
|  | 			pins = "gpio8", "gpio9", "gpio10", "gpio11"; | ||||||
|  | 			function = "qspi_data"; | ||||||
|  | 			drive-strength = <8>; | ||||||
|  | 			bias-pull-down; | ||||||
|  | 		}; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	serial_1_pins: serial1-pinmux { /*ble*/ | ||||||
|  | //		pins = "gpio33", "gpio34", "gpio35", "gpio36"; | ||||||
|  | 		pins = "gpio33", "gpio35"; | ||||||
|  | 		function = "blsp1_uart2"; | ||||||
|  | 		drive-strength = <8>; | ||||||
|  | 		bias-pull-up; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | /*	gpio_leds_default: gpio-leds-default-state { | ||||||
|  | 		pins = "gpio36"; | ||||||
|  | 		function = "gpio"; | ||||||
|  | 		drive-strength = <8>; | ||||||
|  | 		bias-pull-down; | ||||||
|  | 	};*/ | ||||||
|  | /* | ||||||
|  | 	button_pins: button-state { | ||||||
|  | 		pins = "gpio25"; | ||||||
|  | 		function = "gpio"; | ||||||
|  | 		drive-strength = <8>; | ||||||
|  | 		bias-pull-up; | ||||||
|  | 	};*/ | ||||||
|  |  | ||||||
|  | 	pwm_pins: pwm-state { | ||||||
|  | 		pins = "gpio46"; | ||||||
|  | 		function = "pwm0"; | ||||||
|  | 		drive-strength = <8>; | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	pcie1_default_state: pcie1-default-state { | ||||||
|  | 		pins = "gpio47"; | ||||||
|  | 		function = "gpio"; | ||||||
|  | 		drive-strength = <8>; | ||||||
|  | 		bias-pull-up; | ||||||
|  | 		output-low; | ||||||
|  | 	}; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &license_manager { | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &usb3 { | ||||||
|  | 	qcom,multiplexed-phy; | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &pwm { | ||||||
|  | 	pinctrl-0 = <&pwm_pins>; | ||||||
|  | 	pinctrl-names = "default"; | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &hs_m31phy_0 { | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | &ssuniphy_0 { | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | //sercomm add | ||||||
|  | &wifi3 { | ||||||
|  | 	/* QCN9224 5G+6G */ | ||||||
|  | 	hremote_node = <&qcn9224_pcie1>; | ||||||
|  | 	qcom,board_id = <0x100f>;  | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
| @@ -242,6 +242,10 @@ | |||||||
| 		serial1 = &blsp1_uart1; | 		serial1 = &blsp1_uart1; | ||||||
| 		ethernet0 = "/soc/dp1"; | 		ethernet0 = "/soc/dp1"; | ||||||
| 		ethernet1 = "/soc/dp2"; | 		ethernet1 = "/soc/dp2"; | ||||||
|  | 		led-boot = &led_power; | ||||||
|  | 		led-failsafe = &led_power; | ||||||
|  | 		led-running = &led_power; | ||||||
|  | 		led-upgrade = &led_power; | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| 	chosen { | 	chosen { | ||||||
| @@ -324,19 +328,6 @@ | |||||||
| 			}; | 			}; | ||||||
| 		}; | 		}; | ||||||
|  |  | ||||||
| 		leds { |  | ||||||
| 			compatible = "gpio-leds"; |  | ||||||
| 			pinctrl-0 = <&gpio_leds_default>; |  | ||||||
| 			pinctrl-names = "default"; |  | ||||||
|  |  | ||||||
| 			led-0 { |  | ||||||
| 				color = <LED_COLOR_ID_GREEN>; |  | ||||||
| 				function = LED_FUNCTION_WLAN; |  | ||||||
| 				gpios = <&tlmm 36 GPIO_ACTIVE_HIGH>; |  | ||||||
| 				linux,default-trigger = "phy0tx"; |  | ||||||
| 				default-state = "off"; |  | ||||||
| 			}; |  | ||||||
| 		}; |  | ||||||
|  |  | ||||||
| 		gpio_keys { | 		gpio_keys { | ||||||
| 			compatible = "gpio-keys"; | 			compatible = "gpio-keys"; | ||||||
| @@ -345,14 +336,39 @@ | |||||||
| 			status = "okay"; | 			status = "okay"; | ||||||
|  |  | ||||||
| 			button@1 { | 			button@1 { | ||||||
| 				label = "wps"; | 				label = "reset"; | ||||||
| 				linux,code = <KEY_WPS_BUTTON>; | 				linux,code = <KEY_RESTART>; | ||||||
| 				gpios = <&tlmm 35 GPIO_ACTIVE_LOW>; | 				gpios = <&tlmm 24 GPIO_ACTIVE_LOW>; | ||||||
| 				linux,input-type = <1>; | 				linux,input-type = <1>; | ||||||
| 				debounce-interval = <60>; | 				debounce-interval = <60>; | ||||||
| 			}; | 			}; | ||||||
| 		}; | 		}; | ||||||
|  |  | ||||||
|  | 		pwmleds { | ||||||
|  | 			compatible = "pwm-leds"; | ||||||
|  |  | ||||||
|  | 			red { | ||||||
|  | 				label = "pwm:red"; | ||||||
|  | 				pwms = <&pwm 2 1250000>; | ||||||
|  | 				max-brightness = <1>; | ||||||
|  | 				linux,default-trigger = "none"; | ||||||
|  | 			}; | ||||||
|  | 		 | ||||||
|  | 			green { | ||||||
|  | 				label = "pwm:green"; | ||||||
|  | 				pwms = <&pwm 3 1250000>; | ||||||
|  | 				max-brightness = <1>; | ||||||
|  | 				linux,default-trigger = "none"; | ||||||
|  | 			}; | ||||||
|  | 		 | ||||||
|  | 			led_power: blue { | ||||||
|  | 				label = "pwm:blue"; | ||||||
|  | 				pwms = <&pwm 1 1250000>; | ||||||
|  | 				max-brightness = <1>; | ||||||
|  | 				linux,default-trigger = "none"; | ||||||
|  | 			}; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
| 		ess-instance { | 		ess-instance { | ||||||
| 			num_devices = <0x2>; | 			num_devices = <0x2>; | ||||||
|  |  | ||||||
| @@ -411,34 +427,6 @@ | |||||||
| 					}; | 					}; | ||||||
| 				}; | 				}; | ||||||
|  |  | ||||||
| 				led_source@2 { |  | ||||||
| 					source = <2>; |  | ||||||
| 					mode = "normal"; |  | ||||||
| 					speed = "all"; |  | ||||||
| 					blink_en = "enable"; |  | ||||||
| 					active = "high"; |  | ||||||
| 				}; |  | ||||||
| 				led_source@5 { |  | ||||||
| 					source = <5>; |  | ||||||
| 					mode = "normal"; |  | ||||||
| 					speed = "all"; |  | ||||||
| 					blink_en = "enable"; |  | ||||||
| 					active = "high"; |  | ||||||
| 				}; |  | ||||||
| 				led_source@8 { |  | ||||||
| 					source = <8>; |  | ||||||
| 					mode = "normal"; |  | ||||||
| 					speed = "all"; |  | ||||||
| 					blink_en = "enable"; |  | ||||||
| 					active = "high"; |  | ||||||
| 				}; |  | ||||||
| 				led_source@11 { |  | ||||||
| 					source = <11>; |  | ||||||
| 					mode = "normal"; |  | ||||||
| 					speed = "all"; |  | ||||||
| 					blink_en = "enable"; |  | ||||||
| 					active = "high"; |  | ||||||
| 				}; |  | ||||||
| 			}; | 			}; | ||||||
| 		}; | 		}; | ||||||
|  |  | ||||||
| @@ -549,7 +537,7 @@ | |||||||
| 			memory-region = <&q6_mem_regions>; | 			memory-region = <&q6_mem_regions>; | ||||||
|  |  | ||||||
| 			q6_wcss_pd1: remoteproc_pd1 { | 			q6_wcss_pd1: remoteproc_pd1 { | ||||||
| 				status = "ok"; | 				status = "okay"; | ||||||
| 			}; | 			}; | ||||||
|  |  | ||||||
| 			q6_wcss_pd2: remoteproc_pd2 { | 			q6_wcss_pd2: remoteproc_pd2 { | ||||||
| @@ -570,7 +558,7 @@ | |||||||
| 				qcom,smem-state-names = "shutdown", | 				qcom,smem-state-names = "shutdown", | ||||||
| 							"stop", | 							"stop", | ||||||
| 							"spawn"; | 							"spawn"; | ||||||
| 				status = "ok"; | 				status = "okay"; | ||||||
| 			}; | 			}; | ||||||
| 		}; | 		}; | ||||||
| 	}; | 	}; | ||||||
| @@ -581,13 +569,13 @@ | |||||||
| 	pinctrl-names = "default"; | 	pinctrl-names = "default"; | ||||||
| 	status = "okay"; | 	status = "okay"; | ||||||
| }; | }; | ||||||
|  | /* | ||||||
| &blsp1_uart1 { | &blsp1_uart1 { | ||||||
|         pinctrl-0 = <&serial_1_pins>; |         pinctrl-0 = <&serial_1_pins>; | ||||||
|         pinctrl-names = "default"; |         pinctrl-names = "default"; | ||||||
|         status = "disabled"; |         status = "disabled"; | ||||||
| }; | }; | ||||||
|  | */ | ||||||
| &blsp1_i2c1 { | &blsp1_i2c1 { | ||||||
| 	clock-frequency  = <400000>; | 	clock-frequency  = <400000>; | ||||||
| 	pinctrl-0 = <&i2c_1_pins>; | 	pinctrl-0 = <&i2c_1_pins>; | ||||||
| @@ -664,29 +652,50 @@ | |||||||
| 		}; | 		}; | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
|  | 	pwm_pins: pwm_pinmux { | ||||||
|  | 			/* PWM LED GREEN */ | ||||||
|  | 			mux_1 { | ||||||
|  | 				pins = "gpio43"; | ||||||
|  | 				function = "pwm0"; | ||||||
|  | 				drive-strength = <8>; | ||||||
|  | 			}; | ||||||
|  | 			/* PWM LED BLUE */ | ||||||
|  | 			mux_2 { | ||||||
|  | 				pins = "gpio45"; | ||||||
|  | 				function = "pwm0"; | ||||||
|  | 				drive-strength = <8>; | ||||||
|  | 			}; | ||||||
|  | 			/* PWM LED RED */ | ||||||
|  | 			mux_3 { | ||||||
|  | 				pins = "gpio44"; | ||||||
|  | 				function = "pwm0"; | ||||||
|  | 				drive-strength = <8>; | ||||||
|  | 			}; | ||||||
|  | 	}; | ||||||
|  | /* | ||||||
| 	serial_1_pins: serial1-pinmux { | 	serial_1_pins: serial1-pinmux { | ||||||
| 		pins = "gpio33", "gpio34", "gpio35", "gpio36"; | 		pins = "gpio33", "gpio34", "gpio35", "gpio36"; | ||||||
| 		function = "blsp1_uart2"; | 		function = "blsp1_uart2"; | ||||||
| 		drive-strength = <8>; | 		drive-strength = <8>; | ||||||
| 		bias-pull-up; | 		bias-pull-up; | ||||||
| 	}; | 	}; | ||||||
|  | */ | ||||||
| 	i2c_1_pins: i2c-1-state { | 	i2c_1_pins: i2c-1-state { | ||||||
| 		pins = "gpio29", "gpio30"; | 		pins = "gpio29", "gpio30"; | ||||||
| 		function = "blsp1_i2c0"; | 		function = "blsp1_i2c0"; | ||||||
| 		drive-strength = <8>; | 		drive-strength = <8>; | ||||||
| 		bias-pull-up; | 		bias-pull-up; | ||||||
| 	}; | 	}; | ||||||
|  | /* | ||||||
| 	gpio_leds_default: gpio-leds-default-state { | 	gpio_leds_default: gpio-leds-default-state { | ||||||
| 		pins = "gpio36"; | 		pins = "gpio36"; | ||||||
| 		function = "gpio"; | 		function = "gpio"; | ||||||
| 		drive-strength = <8>; | 		drive-strength = <8>; | ||||||
| 		bias-pull-down; | 		bias-pull-down; | ||||||
| 	};  | 	};  | ||||||
|  | */ | ||||||
| 	button_pins: button-state { | 	button_pins: button-state { | ||||||
| 		pins = "gpio35"; | 		pins = "gpio24"; | ||||||
| 		function = "gpio"; | 		function = "gpio"; | ||||||
| 		drive-strength = <8>; | 		drive-strength = <8>; | ||||||
| 		bias-pull-up; | 		bias-pull-up; | ||||||
| @@ -725,6 +734,13 @@ | |||||||
| 	status = "disabled"; | 	status = "disabled"; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | &pwm { | ||||||
|  | 	pinctrl-0 = <&pwm_pins>; | ||||||
|  | 	used-pwm-indices = <0>, <1>, <1>, <1>; | ||||||
|  | 	pinctrl-names = "default"; | ||||||
|  | 	status = "okay"; | ||||||
|  | }; | ||||||
|  |  | ||||||
| &hs_m31phy_0 { | &hs_m31phy_0 { | ||||||
| 	status = "okay"; | 	status = "okay"; | ||||||
| }; | }; | ||||||
| @@ -747,7 +763,7 @@ | |||||||
| 	memory-region = <&q6_ipq5332_data>; | 	memory-region = <&q6_ipq5332_data>; | ||||||
| 	qcom,wsi = <&wsi>; | 	qcom,wsi = <&wsi>; | ||||||
| 	qcom,wsi_index = <0>; | 	qcom,wsi_index = <0>; | ||||||
| 	status = "ok"; | 	status = "okay"; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| &wifi1 { | &wifi1 { | ||||||
| @@ -768,7 +784,7 @@ | |||||||
| 	memory-region = <&q6_qcn6432_data_1>; | 	memory-region = <&q6_qcn6432_data_1>; | ||||||
| 	qcom,wsi = <&wsi>; | 	qcom,wsi = <&wsi>; | ||||||
| 	qcom,wsi_index = <1>; | 	qcom,wsi_index = <1>; | ||||||
| 	status = "ok"; | 	status = "okay"; | ||||||
| 	interrupts = <GIC_SPI 33 IRQ_TYPE_EDGE_RISING>; | 	interrupts = <GIC_SPI 33 IRQ_TYPE_EDGE_RISING>; | ||||||
| 	interrupt-names = "umac_reset"; | 	interrupt-names = "umac_reset"; | ||||||
| }; | }; | ||||||
|   | |||||||
| @@ -736,6 +736,36 @@ | |||||||
| 			status = "disabled"; | 			status = "disabled"; | ||||||
| 		}; | 		}; | ||||||
|  |  | ||||||
|  | 		blsp1_spi1: spi@78b6000 { | ||||||
|  | 			compatible = "qcom,spi-qup-v2.2.1"; | ||||||
|  | 			#address-cells = <1>; | ||||||
|  | 			#size-cells = <0>; | ||||||
|  | 			reg = <0x078b6000 0x600>; | ||||||
|  | 			interrupts = <GIC_SPI 293 IRQ_TYPE_LEVEL_HIGH>; | ||||||
|  | 			spi-max-frequency = <50000000>; | ||||||
|  | 			clocks = <&gcc GCC_BLSP1_QUP2_SPI_APPS_CLK>, | ||||||
|  | 				<&gcc GCC_BLSP1_AHB_CLK>; | ||||||
|  | 			clock-names = "core", "iface"; | ||||||
|  | 			dmas = <&blsp_dma 6>, <&blsp_dma 7>; | ||||||
|  | 			dma-names = "tx", "rx"; | ||||||
|  | 			status = "disabled"; | ||||||
|  | 		}; | ||||||
|  | 		 | ||||||
|  | 		blsp1_i2c2: i2c@78b7000 { | ||||||
|  | 			compatible = "qcom,i2c-qup-v2.2.1"; | ||||||
|  | 			#address-cells = <1>; | ||||||
|  | 			#size-cells = <0>; | ||||||
|  | 			reg = <0x78b7000 0x600>; | ||||||
|  | 			interrupts = <GIC_SPI 294 IRQ_TYPE_LEVEL_HIGH>; | ||||||
|  | 			clocks = <&gcc GCC_BLSP1_AHB_CLK>, | ||||||
|  | 				<&gcc GCC_BLSP1_QUP3_I2C_APPS_CLK>; | ||||||
|  | 			clock-names = "iface", "core"; | ||||||
|  | 			clock-frequency  = <400000>; | ||||||
|  | 			dmas = <&blsp_dma 8>, <&blsp_dma 9>; | ||||||
|  | 			dma-names = "rx", "tx"; | ||||||
|  | 			status = "disabled"; | ||||||
|  | 		}; | ||||||
|  |  | ||||||
| 		blsp1_i2c1: i2c@78b6000 { | 		blsp1_i2c1: i2c@78b6000 { | ||||||
| 			compatible = "qcom,i2c-qup-v2.2.1"; | 			compatible = "qcom,i2c-qup-v2.2.1"; | ||||||
| 			reg = <0x078b6000 0x600>; | 			reg = <0x078b6000 0x600>; | ||||||
|   | |||||||
							
								
								
									
										20
									
								
								feeds/qca-wifi-7/ipq53xx/files-6.1/drivers/net/phy/rtk/rtk_phy.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										20
									
								
								feeds/qca-wifi-7/ipq53xx/files-6.1/drivers/net/phy/rtk/rtk_phy.c
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							| @@ -7,6 +7,7 @@ | |||||||
| #include <linux/module.h> | #include <linux/module.h> | ||||||
| #include <linux/phy.h> | #include <linux/phy.h> | ||||||
| #include <linux/delay.h> | #include <linux/delay.h> | ||||||
|  | #include <linux/of.h> | ||||||
|  |  | ||||||
| #include "phy_rtl826xb_patch.h" | #include "phy_rtl826xb_patch.h" | ||||||
| #include "phy_rtl8251b_patch.h" | #include "phy_rtl8251b_patch.h" | ||||||
| @@ -30,6 +31,7 @@ static int rtl8251_match_phy_device(struct phy_device *phydev) | |||||||
| static int rtl826xb_get_features(struct phy_device *phydev) | static int rtl826xb_get_features(struct phy_device *phydev) | ||||||
| { | { | ||||||
|     int ret; |     int ret; | ||||||
|  |     struct device_node *np; | ||||||
|     ret = genphy_c45_pma_read_abilities(phydev); |     ret = genphy_c45_pma_read_abilities(phydev); | ||||||
|     if (ret) |     if (ret) | ||||||
|         return ret; |         return ret; | ||||||
| @@ -48,6 +50,14 @@ static int rtl826xb_get_features(struct phy_device *phydev) | |||||||
|     linkmode_clear_bit(ETHTOOL_LINK_MODE_10baseT_Full_BIT, |     linkmode_clear_bit(ETHTOOL_LINK_MODE_10baseT_Full_BIT, | ||||||
|                        phydev->supported); |                        phydev->supported); | ||||||
|  |  | ||||||
|  |     np = of_find_node_by_name(NULL, "mdio"); | ||||||
|  |     if (np) | ||||||
|  | 	if (of_property_read_bool(np, "limit_rtlphy_10g_ablity")) | ||||||
|  | 	{ | ||||||
|  | 		linkmode_clear_bit(ETHTOOL_LINK_MODE_10000baseT_Full_BIT, phydev->supported); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -80,7 +90,6 @@ static int rtkphy_config_init(struct phy_device *phydev) | |||||||
|         case REALTEK_PHY_ID_RTL8261N: |         case REALTEK_PHY_ID_RTL8261N: | ||||||
|         case REALTEK_PHY_ID_RTL8264B: |         case REALTEK_PHY_ID_RTL8264B: | ||||||
|             phydev_info(phydev, "%s:%u [RTL8261N/RTL826XB] phy_id: 0x%X PHYAD:%d\n", __FUNCTION__, __LINE__, phydev->drv->phy_id, phydev->mdio.addr); |             phydev_info(phydev, "%s:%u [RTL8261N/RTL826XB] phy_id: 0x%X PHYAD:%d\n", __FUNCTION__, __LINE__, phydev->drv->phy_id, phydev->mdio.addr); | ||||||
| 	    phy_modify_mmd_changed(phydev, 7, 0x20, BIT(12), 0); |  | ||||||
|  |  | ||||||
|           #if 1 /* toggle reset */ |           #if 1 /* toggle reset */ | ||||||
|             phy_modify_mmd_changed(phydev, 30, 0x145, BIT(0)  , 1); |             phy_modify_mmd_changed(phydev, 30, 0x145, BIT(0)  , 1); | ||||||
| @@ -213,7 +222,6 @@ static int rtkphy_c45_aneg_done(struct phy_device *phydev) | |||||||
| static int rtkphy_c45_read_status(struct phy_device *phydev) | static int rtkphy_c45_read_status(struct phy_device *phydev) | ||||||
| { | { | ||||||
|     int ret = 0, status = 0; |     int ret = 0, status = 0; | ||||||
|     uint16_t local; |  | ||||||
|     phydev->speed = SPEED_UNKNOWN; |     phydev->speed = SPEED_UNKNOWN; | ||||||
|     phydev->duplex = DUPLEX_UNKNOWN; |     phydev->duplex = DUPLEX_UNKNOWN; | ||||||
|     phydev->pause = 0; |     phydev->pause = 0; | ||||||
| @@ -232,9 +240,6 @@ static int rtkphy_c45_read_status(struct phy_device *phydev) | |||||||
|         if (ret) |         if (ret) | ||||||
|             return ret; |             return ret; | ||||||
| 	 | 	 | ||||||
| 	phy_write_mmd(phydev, 7, 0x20, 0x181); |  | ||||||
| 	local = phy_read_mmd(phydev, 7, 0x20); |  | ||||||
|  |  | ||||||
|         status =  phy_read_mmd(phydev, 31, 0xA414); |         status =  phy_read_mmd(phydev, 31, 0xA414); | ||||||
|         if (status < 0) |         if (status < 0) | ||||||
|             return status; |             return status; | ||||||
| @@ -242,11 +247,6 @@ static int rtkphy_c45_read_status(struct phy_device *phydev) | |||||||
|             phydev->lp_advertising, status & BIT(11)); |             phydev->lp_advertising, status & BIT(11)); | ||||||
|  |  | ||||||
|         phy_resolve_aneg_linkmode(phydev); |         phy_resolve_aneg_linkmode(phydev); | ||||||
| 	if((phydev->speed == 10000) && (local == 0x181)) |  | ||||||
|         { |  | ||||||
|                 phydev->speed = 5000; |  | ||||||
|                 phydev->duplex = DUPLEX_FULL; |  | ||||||
|         } |  | ||||||
|     } |     } | ||||||
|     else |     else | ||||||
|     { |     { | ||||||
|   | |||||||
| @@ -2288,7 +2288,7 @@ CONFIG_GPIOLIB_FASTPATH_LIMIT=512 | |||||||
| # CONFIG_GPIO_ML_IOH is not set | # CONFIG_GPIO_ML_IOH is not set | ||||||
| # CONFIG_GPIO_MOCKUP is not set | # CONFIG_GPIO_MOCKUP is not set | ||||||
| # CONFIG_GPIO_MPC8XXX is not set | # CONFIG_GPIO_MPC8XXX is not set | ||||||
| # CONFIG_GPIO_PCA953X is not set | CONFIG_GPIO_PCA953X=y | ||||||
| # CONFIG_GPIO_PCA953X_IRQ is not set | # CONFIG_GPIO_PCA953X_IRQ is not set | ||||||
| # CONFIG_GPIO_PCA9570 is not set | # CONFIG_GPIO_PCA9570 is not set | ||||||
| # CONFIG_GPIO_PCF857X is not set | # CONFIG_GPIO_PCF857X is not set | ||||||
|   | |||||||
| @@ -14,16 +14,30 @@ endef | |||||||
| TARGET_DEVICES += cig_wf189 | TARGET_DEVICES += cig_wf189 | ||||||
|  |  | ||||||
| define Device/sercomm_ap72tip | define Device/sercomm_ap72tip | ||||||
|   DEVICE_TITLE := Sercomm AP72 TIP |   DEVICE_TITLE := Sercomm AP72TIP | ||||||
|   DEVICE_DTS := ipq5332-sercomm-ap72tip |   DEVICE_DTS := ipq5332-sercomm-ap72tip | ||||||
|   DEVICE_DTS_CONFIG := config@mi01.2-qcn9160-c1 |   DEVICE_DTS_DIR := ../dts | ||||||
|  |   DEVICE_DTS_CONFIG := config@mi01.6 | ||||||
|   IMAGES := sysupgrade.tar nand-factory.bin nand-factory.ubi |   IMAGES := sysupgrade.tar nand-factory.bin nand-factory.ubi | ||||||
|   IMAGE/sysupgrade.tar := sysupgrade-tar | append-metadata |   IMAGE/sysupgrade.tar := sysupgrade-tar | append-metadata | ||||||
|   IMAGE/nand-factory.bin := append-ubi | qsdk-ipq-factory-nand |   IMAGE/nand-factory.bin := append-ubi | qsdk-ipq-factory-nand | ||||||
|   IMAGE/nand-factory.ubi := append-ubi |   IMAGE/nand-factory.ubi := append-ubi | ||||||
|   DEVICE_PACKAGES := ath12k-wifi-sercomm-ap72tip ath12k-firmware-qcn92xx ath12k-firmware-ipq5332 |   DEVICE_PACKAGES := ath12k-wifi-sercomm-ap72tip ath12k-firmware-qcn92xx ath12k-firmware-ipq5332 | ||||||
| endef | endef | ||||||
| #TARGET_DEVICES += sercomm_ap72tip | TARGET_DEVICES += sercomm_ap72tip | ||||||
|  |  | ||||||
|  | define Device/sercomm_ap72tip-v4 | ||||||
|  |   DEVICE_TITLE := Sercomm AP72TIP-v4 | ||||||
|  |   DEVICE_DTS := ipq5332-sercomm-ap72tip-v4 | ||||||
|  |   DEVICE_DTS_DIR := ../dts | ||||||
|  |   DEVICE_DTS_CONFIG := config@mi01.6 | ||||||
|  |   IMAGES := sysupgrade.tar nand-factory.bin nand-factory.ubi | ||||||
|  |   IMAGE/sysupgrade.tar := sysupgrade-tar | append-metadata | ||||||
|  |   IMAGE/nand-factory.bin := append-ubi | qsdk-ipq-factory-nand | ||||||
|  |   IMAGE/nand-factory.ubi := append-ubi | ||||||
|  |   DEVICE_PACKAGES := ath12k-wifi-sercomm-ap72tip-v4 ath12k-firmware-qcn92xx ath12k-firmware-ipq5332 | ||||||
|  | endef | ||||||
|  | TARGET_DEVICES += sercomm_ap72tip-v4 | ||||||
|  |  | ||||||
| define Device/edgecore_eap105 | define Device/edgecore_eap105 | ||||||
|   DEVICE_TITLE := Edgecore EAP105 |   DEVICE_TITLE := Edgecore EAP105 | ||||||
| @@ -61,7 +75,7 @@ define Device/sonicfi_rap750w_311a | |||||||
|   IMAGE/sysupgrade.tar := sysupgrade-tar | append-metadata |   IMAGE/sysupgrade.tar := sysupgrade-tar | append-metadata | ||||||
|   IMAGE/nand-factory.bin := append-ubi | qsdk-ipq-factory-nand |   IMAGE/nand-factory.bin := append-ubi | qsdk-ipq-factory-nand | ||||||
|   IMAGE/nand-factory.ubi := append-ubi |   IMAGE/nand-factory.ubi := append-ubi | ||||||
|   DEVICE_PACKAGES := ath12k-wifi-sonicfi-rap750w-311a ath12k-firmware-ipq5332-peb |   DEVICE_PACKAGES := ath12k-wifi-sonicfi-rap750w-311a ath12k-firmware-ipq5332-peb -ath12k-firmware-qcn92xx | ||||||
| endef | endef | ||||||
| TARGET_DEVICES += sonicfi_rap750w_311a | TARGET_DEVICES += sonicfi_rap750w_311a | ||||||
|  |  | ||||||
| @@ -77,3 +91,17 @@ define Device/cig_wf189w | |||||||
|   DEVICE_PACKAGES := ath12k-wifi-cig-wf189w ath12k-firmware-ipq5332-peb-peb |   DEVICE_PACKAGES := ath12k-wifi-cig-wf189w ath12k-firmware-ipq5332-peb-peb | ||||||
| endef | endef | ||||||
| TARGET_DEVICES += cig_wf189w | TARGET_DEVICES += cig_wf189w | ||||||
|  |  | ||||||
|  |  | ||||||
|  | define Device/cig_wf189h | ||||||
|  |   DEVICE_TITLE := CIG WF189H | ||||||
|  |   DEVICE_DTS := ipq5332-cig-wf189h | ||||||
|  |   DEVICE_DTS_DIR := ../dts | ||||||
|  |   DEVICE_DTS_CONFIG := config@mi04.1 | ||||||
|  |   IMAGES := sysupgrade.tar nand-factory.bin nand-factory.ubi | ||||||
|  |   IMAGE/sysupgrade.tar := sysupgrade-tar | append-metadata | ||||||
|  |   IMAGE/nand-factory.bin := append-ubi | qsdk-ipq-factory-nand | ||||||
|  |   IMAGE/nand-factory.ubi := append-ubi | ||||||
|  |   DEVICE_PACKAGES := ath12k-wifi-cig-wf189h ath12k-firmware-ipq5332-peb-peb | ||||||
|  | endef | ||||||
|  | TARGET_DEVICES += cig_wf189h | ||||||
|   | |||||||
| @@ -0,0 +1,116 @@ | |||||||
|  | From 85a7c62d4e3385de1a379959dd45148cfdc95b3b Mon Sep 17 00:00:00 2001 | ||||||
|  | From: huangyunxiang <huangyunxiang@cigtech.com> | ||||||
|  | Date: Tue, 29 Apr 2025 09:56:28 +0800 | ||||||
|  | Subject: [PATCH] qca-ssdk modify rtl826x phy mdio read/write as c45 mode and | ||||||
|  |  clear 10G ablity | ||||||
|  |  | ||||||
|  | --- | ||||||
|  |  src/hsl/phy/rtl826xb_phy.c                | 55 ++++++------------- | ||||||
|  |  1 file changed, 17 insertions(+), 38 deletions(-) | ||||||
|  |  | ||||||
|  | diff --git a/src/hsl/phy/rtl826xb_phy.c b/src/hsl/phy/rtl826xb_phy.c | ||||||
|  | index a336348aa9..9a67b45948 100644 | ||||||
|  | --- a/src/hsl/phy/rtl826xb_phy.c | ||||||
|  | +++ b/src/hsl/phy/rtl826xb_phy.c | ||||||
|  | @@ -48,46 +48,39 @@ void rtl826xb_phy_lock_init(void) | ||||||
|  |   | ||||||
|  |  static a_uint16_t rtl826x_phy_mmd_read(a_uint32_t dev_id, a_uint32_t phy_id, a_uint16_t reg_mmd, a_uint16_t reg_id) | ||||||
|  |  { | ||||||
|  | -	a_uint32_t reg_id_c45 = RTL826XB_REG_ADDRESS(reg_mmd, reg_id); | ||||||
|  | - | ||||||
|  | -	return __hsl_phy_mii_reg_read(dev_id, phy_id, reg_id_c45); | ||||||
|  | +	return hsl_phy_mmd_reg_read(dev_id, phy_id, A_TRUE, reg_mmd, reg_id); | ||||||
|  |  } | ||||||
|  |   | ||||||
|  |   | ||||||
|  |  static sw_error_t rtl826x_phy_mmd_write(a_uint32_t dev_id, a_uint32_t phy_id, a_uint16_t reg_mmd, a_uint16_t reg_id, a_uint16_t reg_val) | ||||||
|  |  { | ||||||
|  | -	a_uint32_t reg_id_c45 = RTL826XB_REG_ADDRESS(reg_mmd, reg_id); | ||||||
|  | - | ||||||
|  | -	return __hsl_phy_mii_reg_write(dev_id, phy_id, reg_id_c45, reg_val); | ||||||
|  | +	return hsl_phy_mmd_reg_write(dev_id, phy_id, A_TRUE, reg_mmd, reg_id, reg_val); | ||||||
|  |  } | ||||||
|  |   | ||||||
|  |   | ||||||
|  |  static a_uint16_t rtl826x_phy_reg_read(a_uint32_t dev_id, a_uint32_t phy_id, a_uint32_t reg) | ||||||
|  |  { | ||||||
|  | -	return __hsl_phy_mii_reg_read(dev_id, phy_id, reg); | ||||||
|  | +	return hsl_phy_mii_reg_read(dev_id, phy_id, reg); | ||||||
|  |  } | ||||||
|  |   | ||||||
|  |   | ||||||
|  |  static sw_error_t rtl826x_phy_reg_write(a_uint32_t dev_id, a_uint32_t phy_id, a_uint32_t reg, a_uint16_t reg_val) | ||||||
|  |  { | ||||||
|  | -	return __hsl_phy_mii_reg_write(dev_id, phy_id, reg, reg_val); | ||||||
|  | + | ||||||
|  | +	return hsl_phy_mii_reg_write(dev_id, phy_id, reg, reg_val); | ||||||
|  |  } | ||||||
|  |   | ||||||
|  |   | ||||||
|  |  static a_int16_t hal_miim_mmd_read(a_uint32_t dev_id, a_uint32_t phy_id, a_uint16_t mmdAddr, a_uint16_t mmdReg) | ||||||
|  |  { | ||||||
|  | -	a_uint32_t reg_id_c45 = RTL826XB_REG_ADDRESS(mmdAddr, mmdReg); | ||||||
|  | - | ||||||
|  | -	return __hsl_phy_mii_reg_read(dev_id, phy_id, reg_id_c45); | ||||||
|  | +	return hsl_phy_mmd_reg_read(dev_id, phy_id, A_TRUE, mmdAddr, mmdReg); | ||||||
|  |  } | ||||||
|  |   | ||||||
|  |   | ||||||
|  |   | ||||||
|  |  static a_int32_t hal_miim_mmd_write(a_uint32_t dev_id, a_uint32_t phy_id, a_uint16_t mmdAddr, a_uint16_t mmdReg, a_uint16_t phy_data) | ||||||
|  |  { | ||||||
|  | -	a_uint32_t reg_id_c45 = RTL826XB_REG_ADDRESS(mmdAddr, mmdReg); | ||||||
|  | - | ||||||
|  | -	return __hsl_phy_mii_reg_write(dev_id, phy_id, reg_id_c45, phy_data); | ||||||
|  | +	return hsl_phy_mmd_reg_write(dev_id, phy_id, A_TRUE, mmdAddr, mmdReg, phy_data); | ||||||
|  |  } | ||||||
|  |   | ||||||
|  |   | ||||||
|  | @@ -1281,34 +1274,20 @@ phy_826xb_autoNegoAbility_set(a_uint32_t dev_id, a_uint32_t phy_id, a_uint32_t a | ||||||
|  |  	hsl_phy_phydev_autoneg_update(dev_id, phy_id, A_TRUE, autoneg); | ||||||
|  |  	 | ||||||
|  |  	phyData = phy_common_general_reg_mmd_get(dev_id, phy_id, PHY_MMD_AN, 16); | ||||||
|  | +	phyData &= (~(0x0020 | 0x0040 | FAL_PHY_ADV_100TX_HD | FAL_PHY_ADV_100TX_FD | FAL_PHY_ADV_PAUSE | FAL_PHY_ADV_ASY_PAUSE)); | ||||||
|  | +	phyData |= (autoneg & FAL_PHY_ADV_100TX_HD) ? (FAL_PHY_ADV_100TX_HD) : (0); | ||||||
|  | +	phyData |= ((autoneg & FAL_PHY_ADV_100TX_FD)) ? (FAL_PHY_ADV_100TX_FD) : (0); | ||||||
|  |   | ||||||
|  | -    phyData &= (~(0x0020 | 0x0040 | 0x0080 | 0x0100 | 0x0400 | 0x0800)); | ||||||
|  | -	phyData |= ((autoneg & 1 << 1)) ? (0x0040) : (0); | ||||||
|  | -    phyData |= ((autoneg & 1 << 2)) ? (0x0080) : (0); | ||||||
|  | -    phyData |= ((autoneg & 1 << 3)) ? (0x0100) : (0); | ||||||
|  | -	phyData |= ((autoneg & 1 << 4)) ? (0x0400) : (0); | ||||||
|  | -	phyData |= ((autoneg & 1 << 5)) ? (0x0800) : (0); | ||||||
|  | -//    phyData |= ((autoneg & 1 << 9)) ? (0x0400) : (0); | ||||||
|  | -//    phyData |= ((autoneg & 1 << 10)) ? (0x0800) : (0); | ||||||
|  | - | ||||||
|  | -    phy_common_general_reg_mmd_set(dev_id, phy_id, PHY_MMD_AN, 16, phyData); | ||||||
|  | -	 | ||||||
|  | +	phy_common_general_reg_mmd_set(dev_id, phy_id, PHY_MMD_AN, 16, phyData); | ||||||
|  |  	phyData = phy_common_general_reg_mmd_get(dev_id, phy_id, PHY_MMD_AN, 32); | ||||||
|  | +	phyData &= (~(FAL_PHY_ADV_2500T_FD | FAL_PHY_ADV_5000T_FD | FAL_PHY_ADV_10000T_FD)); | ||||||
|  | +	phyData |= (autoneg & FAL_PHY_ADV_2500T_FD) ? (FAL_PHY_ADV_2500T_FD) : (0); | ||||||
|  | +	phyData |= (autoneg & FAL_PHY_ADV_5000T_FD) ? (FAL_PHY_ADV_5000T_FD) : (0); | ||||||
|  |   | ||||||
|  | -    phyData &= (~(0x4000 | 0x2000 | 0x1000)); | ||||||
|  | -    phyData |= (autoneg & 1 << 12) ? (0x0080) : (0); | ||||||
|  | -    phyData |= (autoneg & 1 << 13) ? (0x0100) : (0); | ||||||
|  | -    phyData |= (autoneg & 1 << 14) ? (0x1000) : (0); | ||||||
|  | - | ||||||
|  | -    phy_common_general_reg_mmd_set(dev_id, phy_id, PHY_MMD_AN, 32, phyData); | ||||||
|  | -      | ||||||
|  | -	 | ||||||
|  | +	phy_common_general_reg_mmd_set(dev_id, phy_id, PHY_MMD_AN, 32, phyData); | ||||||
|  |  	phyData = phy_common_general_reg_mmd_get(dev_id, phy_id, PHY_MMD_VEND2, 0xA412); | ||||||
|  | - | ||||||
|  | - | ||||||
|  | -    phyData &= (~(0x0100 | 0x0200)); | ||||||
|  | -    phyData |= (autoneg & 1 << 9) ? (0x0200) : (0); | ||||||
|  | -//    phyData |= (autoneg & 1 << 5) ? (0x0200) : (0); | ||||||
|  | +	phyData &= (~(0x0100 | FAL_PHY_ADV_1000T_FD)); | ||||||
|  | +	phyData |= (autoneg & FAL_PHY_ADV_1000T_FD) ? (FAL_PHY_ADV_1000T_FD) : (0); | ||||||
|  |   | ||||||
|  |      phy_common_general_reg_mmd_set(dev_id, phy_id, PHY_MMD_VEND2, 0xA412, phyData); | ||||||
|  |           | ||||||
|  | --  | ||||||
|  | 2.34.1 | ||||||
|  |  | ||||||
| @@ -79,6 +79,8 @@ hfcl,ion4xe) | |||||||
| 	;; | 	;; | ||||||
| cig,wf186w|\ | cig,wf186w|\ | ||||||
| cig,wf189|\ | cig,wf189|\ | ||||||
|  | cig,wf189w|\ | ||||||
|  | cig,wf189h|\ | ||||||
| cig,wf186h|\ | cig,wf186h|\ | ||||||
| yuncore,ax840|\ | yuncore,ax840|\ | ||||||
| yuncore,fap655) | yuncore,fap655) | ||||||
|   | |||||||
| @@ -6,8 +6,8 @@ STOP=01 | |||||||
| USE_PROCD=1 | USE_PROCD=1 | ||||||
|  |  | ||||||
| start_service() { | start_service() { | ||||||
| 	rm -rf /tmp/threshold_breach_count_phy* | 	rm -rf /tmp/threshold_breach_count* | ||||||
| 	rm -rf /tmp/fixed_channel_phy* | 	rm -rf /tmp/fixed_channel* | ||||||
|  |  | ||||||
| 	procd_open_instance | 	procd_open_instance | ||||||
| 	procd_set_param command /usr/bin/rrmd.uc | 	procd_set_param command /usr/bin/rrmd.uc | ||||||
|   | |||||||
| @@ -265,7 +265,7 @@ function dfs_chan_check(iface_num, rcs_channel) { | |||||||
| } | } | ||||||
|  |  | ||||||
| function fixed_channel_config(iface, iface_num, fixed_channel_f, auto_channel_f, fixed_chan_bkp, channel_config) { | function fixed_channel_config(iface, iface_num, fixed_channel_f, auto_channel_f, fixed_chan_bkp, channel_config) { | ||||||
|     // if fixed channel config is stored in the /tmp/fixed_channel_phyX file |     // if fixed channel config is stored in the /tmp/fixed_channel_<radio_iface> file | ||||||
|     if (fixed_channel_f == 1) { |     if (fixed_channel_f == 1) { | ||||||
|         if (auto_channel_f == 1) { |         if (auto_channel_f == 1) { | ||||||
|             // if current channel is auto => change to fixed |             // if current channel is auto => change to fixed | ||||||
| @@ -290,6 +290,7 @@ function fixed_channel_config(iface, iface_num, fixed_channel_f, auto_channel_f, | |||||||
| function get_chan_util(radio_band, sleep_time) { | function get_chan_util(radio_band, sleep_time) { | ||||||
| 	let pdev_stats = {}; | 	let pdev_stats = {}; | ||||||
| 	let chan_util = 0; | 	let chan_util = 0; | ||||||
|  |     let total_usage = 0; | ||||||
|  |  | ||||||
|     let prev_values = { |     let prev_values = { | ||||||
| 		txFrameCount: null, | 		txFrameCount: null, | ||||||
| @@ -348,7 +349,8 @@ function get_chan_util(radio_band, sleep_time) { | |||||||
|             if (ignore != 1) { |             if (ignore != 1) { | ||||||
|                 let cycle_count_delta = curr_values.cycleCount - prev_values.cycleCount; |                 let cycle_count_delta = curr_values.cycleCount - prev_values.cycleCount; | ||||||
|                 let rx_clear_delta = curr_values.rxClearCount - prev_values.rxClearCount; |                 let rx_clear_delta = curr_values.rxClearCount - prev_values.rxClearCount; | ||||||
|                 let total_usage = (rx_clear_delta * 100) / cycle_count_delta; |                 if (cycle_count_delta && cycle_count_delta > 0) | ||||||
|  |                     total_usage = (rx_clear_delta * 100) / cycle_count_delta; | ||||||
|                 chan_util = total_usage; |                 chan_util = total_usage; | ||||||
|             } |             } | ||||||
|  |  | ||||||
| @@ -673,7 +675,7 @@ function channel_optimize() { | |||||||
|                 ulog_info(`[%s] Allowed consecutive Channel Utilization threshold breach count = %d \n`, radio_iface[j], config.consecutive_threshold_breach); |                 ulog_info(`[%s] Allowed consecutive Channel Utilization threshold breach count = %d \n`, radio_iface[j], config.consecutive_threshold_breach); | ||||||
|  |  | ||||||
|                 if (!current_threshold_breach_count || current_threshold_breach_count == null || current_threshold_breach_count == 'NaN') { |                 if (!current_threshold_breach_count || current_threshold_breach_count == null || current_threshold_breach_count == 'NaN') { | ||||||
|                     // /tmp/phyX_breachcount file doesn't exist yet or has invalid value |                     // /tmp/threshold_breach_count_<radio_iface> file doesn't exist yet or has invalid value | ||||||
|                     current_threshold_breach_count = 0; |                     current_threshold_breach_count = 0; | ||||||
|                 } |                 } | ||||||
|                 ulog_info(`[%s] Previous consecutive Channel Utilization threshold breach count = %d \n`, radio_iface[j], current_threshold_breach_count); |                 ulog_info(`[%s] Previous consecutive Channel Utilization threshold breach count = %d \n`, radio_iface[j], current_threshold_breach_count); | ||||||
|   | |||||||
| @@ -4,10 +4,10 @@ PKG_NAME:=ucentral-schema | |||||||
| PKG_RELEASE:=1 | PKG_RELEASE:=1 | ||||||
|  |  | ||||||
| PKG_SOURCE_URL=https://github.com/Telecominfraproject/wlan-ucentral-schema.git | PKG_SOURCE_URL=https://github.com/Telecominfraproject/wlan-ucentral-schema.git | ||||||
| PKG_MIRROR_HASH:=fe33f072d7bcbbb14c7c3415e0750699bb5dae8a9af06c59c90c020f8b192a15 | PKG_MIRROR_HASH:=280d87658fa36c1d5d6852dcb8203042eba6bbc9101ac317a2088e2dd68249da | ||||||
| PKG_SOURCE_PROTO:=git | PKG_SOURCE_PROTO:=git | ||||||
| PKG_SOURCE_DATE:=2025-01-27 | PKG_SOURCE_DATE:=2025-01-27 | ||||||
| PKG_SOURCE_VERSION:=5a6d23b76bc51289ae99d22fdf406516b0c630e6 | PKG_SOURCE_VERSION:=52afdf8f1d1cb8445b6b56eba3768d0edffa63e1 | ||||||
| PKG_MAINTAINER:=John Crispin <john@phrozen.org> | PKG_MAINTAINER:=John Crispin <john@phrozen.org> | ||||||
| PKG_LICENSE:=BSD-3-Clause | PKG_LICENSE:=BSD-3-Clause | ||||||
|  |  | ||||||
|   | |||||||
| @@ -3,12 +3,6 @@ include $(TOPDIR)/rules.mk | |||||||
| PKG_NAME:=ucentral-tools | PKG_NAME:=ucentral-tools | ||||||
| PKG_RELEASE:=1 | PKG_RELEASE:=1 | ||||||
|  |  | ||||||
| PKG_SOURCE_URL=https://github.com/blogic/ucentral-tools.git |  | ||||||
| PKG_MIRROR_HASH:=9ae6a0cd431595871c233550427c4043c2ba7ddb3c5d87e46ab74a03b2b5a947 |  | ||||||
| PKG_SOURCE_PROTO:=git |  | ||||||
| PKG_SOURCE_DATE:=2021-01-28 |  | ||||||
| PKG_SOURCE_VERSION:=b013fc636e48d407870a46aaa68a09ed74de8d6f |  | ||||||
|  |  | ||||||
| PKG_MAINTAINER:=John Crispin <john@phrozen.org> | PKG_MAINTAINER:=John Crispin <john@phrozen.org> | ||||||
| PKG_LICENSE:=BSD-3-Clause | PKG_LICENSE:=BSD-3-Clause | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										36
									
								
								feeds/ucentral/ucentral-tools/src/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								feeds/ucentral/ucentral-tools/src/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,36 @@ | |||||||
|  | cmake_minimum_required(VERSION 2.6) | ||||||
|  |  | ||||||
|  | PROJECT(openwifi-tools C) | ||||||
|  | INCLUDE(GNUInstallDirs) | ||||||
|  | ADD_DEFINITIONS(-Os -ggdb -Wall -Werror --std=gnu99 -Wmissing-declarations) | ||||||
|  |  | ||||||
|  | SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") | ||||||
|  |  | ||||||
|  | ADD_EXECUTABLE(firstcontact firstcontact.c) | ||||||
|  | TARGET_LINK_LIBRARIES(firstcontact curl crypto ssl ubox) | ||||||
|  | INSTALL(TARGETS firstcontact | ||||||
|  | 	RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR} | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | ADD_EXECUTABLE(dhcpdiscover dhcpdiscover.c) | ||||||
|  | INSTALL(TARGETS dhcpdiscover | ||||||
|  | 	RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR} | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | ADD_EXECUTABLE(dnsprobe dnsprobe.c) | ||||||
|  | TARGET_LINK_LIBRARIES(dnsprobe ubox resolv) | ||||||
|  | INSTALL(TARGETS dnsprobe | ||||||
|  | 	RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR} | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | ADD_EXECUTABLE(radiusprobe radiusprobe.c) | ||||||
|  | TARGET_LINK_LIBRARIES(radiusprobe radcli) | ||||||
|  | INSTALL(TARGETS radiusprobe | ||||||
|  | 	RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR} | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | ADD_EXECUTABLE(ip-collide ip-collide.c) | ||||||
|  | TARGET_LINK_LIBRARIES(ip-collide ubox) | ||||||
|  | INSTALL(TARGETS ip-collide | ||||||
|  | 	RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR} | ||||||
|  | ) | ||||||
							
								
								
									
										1345
									
								
								feeds/ucentral/ucentral-tools/src/dhcpdiscover.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1345
									
								
								feeds/ucentral/ucentral-tools/src/dhcpdiscover.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										690
									
								
								feeds/ucentral/ucentral-tools/src/dnsprobe.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										690
									
								
								feeds/ucentral/ucentral-tools/src/dnsprobe.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,690 @@ | |||||||
|  | /* | ||||||
|  |  * nslookup_lede - musl compatible replacement for busybox nslookup | ||||||
|  |  * | ||||||
|  |  * Copyright (C) 2017 Jo-Philipp Wich <jo@mein.io> | ||||||
|  |  * | ||||||
|  |  * Permission to use, copy, modify, and/or distribute this software for any | ||||||
|  |  * purpose with or without fee is hereby granted, provided that the above | ||||||
|  |  * copyright notice and this permission notice appear in all copies. | ||||||
|  |  * | ||||||
|  |  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||||||
|  |  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||||||
|  |  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||||||
|  |  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||||||
|  |  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||||||
|  |  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||||||
|  |  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | //config:config NSLOOKUP_OPENWRT | ||||||
|  | //config:	bool "nslookup_openwrt" | ||||||
|  | //config:	depends on !NSLOOKUP | ||||||
|  | //config:	default y | ||||||
|  | //config:	help | ||||||
|  | //config:	  nslookup is a tool to query Internet name servers (LEDE flavor). | ||||||
|  | //config: | ||||||
|  | //config:config FEATURE_NSLOOKUP_OPENWRT_LONG_OPTIONS | ||||||
|  | //config:       bool "Enable long options" | ||||||
|  | //config:       default y | ||||||
|  | //config:       depends on NSLOOKUP_OPENWRT && LONG_OPTS | ||||||
|  | //config:       help | ||||||
|  | //config:         Support long options for the nslookup applet. | ||||||
|  |  | ||||||
|  | //applet:IF_NSLOOKUP_OPENWRT(APPLET(nslookup, BB_DIR_USR_BIN, BB_SUID_DROP)) | ||||||
|  |  | ||||||
|  | //kbuild:lib-$(CONFIG_NSLOOKUP_OPENWRT) += nslookup_lede.o | ||||||
|  |  | ||||||
|  | //usage:#define nslookup_lede_trivial_usage | ||||||
|  | //usage:       "[HOST] [SERVER]" | ||||||
|  | //usage:#define nslookup_lede_full_usage "\n\n" | ||||||
|  | //usage:       "Query the nameserver for the IP address of the given HOST\n" | ||||||
|  | //usage:       "optionally using a specified DNS server" | ||||||
|  | //usage: | ||||||
|  | //usage:#define nslookup_lede_example_usage | ||||||
|  | //usage:       "$ nslookup localhost\n" | ||||||
|  | //usage:       "Server:     default\n" | ||||||
|  | //usage:       "Address:    default\n" | ||||||
|  | //usage:       "\n" | ||||||
|  | //usage:       "Name:       debian\n" | ||||||
|  | //usage:       "Address:    127.0.0.1\n" | ||||||
|  |  | ||||||
|  | #include <stdio.h> | ||||||
|  | #include <resolv.h> | ||||||
|  | #include <string.h> | ||||||
|  | #include <errno.h> | ||||||
|  | #include <time.h> | ||||||
|  | #include <poll.h> | ||||||
|  | #include <unistd.h> | ||||||
|  | #include <stdlib.h> | ||||||
|  | #include <sys/socket.h> | ||||||
|  | #include <arpa/inet.h> | ||||||
|  | #include <net/if.h> | ||||||
|  | #include <netdb.h> | ||||||
|  |  | ||||||
|  | #include <libubox/ulog.h> | ||||||
|  |  | ||||||
|  | #define ENABLE_FEATURE_IPV6	1 | ||||||
|  |  | ||||||
|  | typedef struct len_and_sockaddr { | ||||||
|  | 	socklen_t len; | ||||||
|  | 	union { | ||||||
|  | 		struct sockaddr sa; | ||||||
|  | 		struct sockaddr_in sin; | ||||||
|  | #if ENABLE_FEATURE_IPV6 | ||||||
|  | 		struct sockaddr_in6 sin6; | ||||||
|  | #endif | ||||||
|  | 	} u; | ||||||
|  | } len_and_sockaddr; | ||||||
|  |  | ||||||
|  | struct ns { | ||||||
|  | 	const char *name; | ||||||
|  | 	len_and_sockaddr addr; | ||||||
|  | 	int failures; | ||||||
|  | 	int replies; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | struct query { | ||||||
|  | 	const char *name; | ||||||
|  | 	size_t qlen, rlen; | ||||||
|  | 	unsigned char query[512], reply[512]; | ||||||
|  | 	unsigned long latency; | ||||||
|  | 	int rcode, n_ns; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | static const char *rcodes[] = { | ||||||
|  | 	"NOERROR", | ||||||
|  | 	"FORMERR", | ||||||
|  | 	"SERVFAIL", | ||||||
|  | 	"NXDOMAIN", | ||||||
|  | 	"NOTIMP", | ||||||
|  | 	"REFUSED", | ||||||
|  | 	"YXDOMAIN", | ||||||
|  | 	"YXRRSET", | ||||||
|  | 	"NXRRSET", | ||||||
|  | 	"NOTAUTH", | ||||||
|  | 	"NOTZONE", | ||||||
|  | 	"RESERVED11", | ||||||
|  | 	"RESERVED12", | ||||||
|  | 	"RESERVED13", | ||||||
|  | 	"RESERVED14", | ||||||
|  | 	"RESERVED15", | ||||||
|  | 	"BADVERS" | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | static unsigned int default_port = 53; | ||||||
|  | static unsigned int default_retry = 1; | ||||||
|  | static unsigned int default_timeout = 2; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | static int parse_reply(const unsigned char *msg, size_t len, int *bb_style_counter) | ||||||
|  | { | ||||||
|  | 	ns_msg handle; | ||||||
|  | 	ns_rr rr; | ||||||
|  | 	int i, n, rdlen; | ||||||
|  | 	const char *format = NULL; | ||||||
|  | 	char astr[INET6_ADDRSTRLEN], dname[MAXDNAME]; | ||||||
|  | 	const unsigned char *cp; | ||||||
|  |  | ||||||
|  | 	if (ns_initparse(msg, len, &handle) != 0) { | ||||||
|  | 		//fprintf(stderr, "Unable to parse reply: %s\n", strerror(errno)); | ||||||
|  | 		return -1; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	for (i = 0; i < ns_msg_count(handle, ns_s_an); i++) { | ||||||
|  | 		if (ns_parserr(&handle, ns_s_an, i, &rr) != 0) { | ||||||
|  | 			//fprintf(stderr, "Unable to parse resource record: %s\n", strerror(errno)); | ||||||
|  | 			return -1; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		rdlen = ns_rr_rdlen(rr); | ||||||
|  |  | ||||||
|  | 		switch (ns_rr_type(rr)) | ||||||
|  | 		{ | ||||||
|  | 		case ns_t_a: | ||||||
|  | 			if (rdlen != 4) { | ||||||
|  | 				//fprintf(stderr, "Unexpected A record length\n"); | ||||||
|  | 				return -1; | ||||||
|  | 			} | ||||||
|  | 			inet_ntop(AF_INET, ns_rr_rdata(rr), astr, sizeof(astr)); | ||||||
|  | 			printf("Name:\t%s\nAddress: %s\n", ns_rr_name(rr), astr); | ||||||
|  | 			break; | ||||||
|  |  | ||||||
|  | #if ENABLE_FEATURE_IPV6 | ||||||
|  | 		case ns_t_aaaa: | ||||||
|  | 			if (rdlen != 16) { | ||||||
|  | 				//fprintf(stderr, "Unexpected AAAA record length\n"); | ||||||
|  | 				return -1; | ||||||
|  | 			} | ||||||
|  | 			inet_ntop(AF_INET6, ns_rr_rdata(rr), astr, sizeof(astr)); | ||||||
|  | 			printf("%s\thas AAAA address %s\n", ns_rr_name(rr), astr); | ||||||
|  | 			break; | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | 		case ns_t_ns: | ||||||
|  | 			if (!format) | ||||||
|  | 				format = "%s\tnameserver = %s\n"; | ||||||
|  | 			/* fall through */ | ||||||
|  |  | ||||||
|  | 		case ns_t_cname: | ||||||
|  | 			if (!format) | ||||||
|  | 				format = "%s\tcanonical name = %s\n"; | ||||||
|  | 			/* fall through */ | ||||||
|  |  | ||||||
|  | 		case ns_t_ptr: | ||||||
|  | 			if (!format) | ||||||
|  | 				format = "%s\tname = %s\n"; | ||||||
|  | 			if (ns_name_uncompress(ns_msg_base(handle), ns_msg_end(handle), | ||||||
|  | 				ns_rr_rdata(rr), dname, sizeof(dname)) < 0) { | ||||||
|  | 				//fprintf(stderr, "Unable to uncompress domain: %s\n", strerror(errno)); | ||||||
|  | 				return -1; | ||||||
|  | 			} | ||||||
|  | 			printf(format, ns_rr_name(rr), dname); | ||||||
|  | 			break; | ||||||
|  |  | ||||||
|  | 		case ns_t_mx: | ||||||
|  | 			if (rdlen < 2) { | ||||||
|  | 				fprintf(stderr, "MX record too short\n"); | ||||||
|  | 				return -1; | ||||||
|  | 			} | ||||||
|  | 			n = ns_get16(ns_rr_rdata(rr)); | ||||||
|  | 			if (ns_name_uncompress(ns_msg_base(handle), ns_msg_end(handle), | ||||||
|  | 				ns_rr_rdata(rr) + 2, dname, sizeof(dname)) < 0) { | ||||||
|  | 				//fprintf(stderr, "Cannot uncompress MX domain: %s\n", strerror(errno)); | ||||||
|  | 				return -1; | ||||||
|  | 			} | ||||||
|  | 			printf("%s\tmail exchanger = %d %s\n", ns_rr_name(rr), n, dname); | ||||||
|  | 			break; | ||||||
|  |  | ||||||
|  | 		case ns_t_txt: | ||||||
|  | 			if (rdlen < 1) { | ||||||
|  | 				//fprintf(stderr, "TXT record too short\n"); | ||||||
|  | 				return -1; | ||||||
|  | 			} | ||||||
|  | 			n = *(unsigned char *)ns_rr_rdata(rr); | ||||||
|  | 			if (n > 0) { | ||||||
|  | 				memset(dname, 0, sizeof(dname)); | ||||||
|  | 				memcpy(dname, ns_rr_rdata(rr) + 1, n); | ||||||
|  | 				printf("%s\ttext = \"%s\"\n", ns_rr_name(rr), dname); | ||||||
|  | 			} | ||||||
|  | 			break; | ||||||
|  |  | ||||||
|  | 		case ns_t_soa: | ||||||
|  | 			if (rdlen < 20) { | ||||||
|  | 				//fprintf(stderr, "SOA record too short\n"); | ||||||
|  | 				return -1; | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			printf("%s\n", ns_rr_name(rr)); | ||||||
|  |  | ||||||
|  | 			cp = ns_rr_rdata(rr); | ||||||
|  | 			n = ns_name_uncompress(ns_msg_base(handle), ns_msg_end(handle), | ||||||
|  | 			                       cp, dname, sizeof(dname)); | ||||||
|  |  | ||||||
|  | 			if (n < 0) { | ||||||
|  | 				//fprintf(stderr, "Unable to uncompress domain: %s\n", strerror(errno)); | ||||||
|  | 				return -1; | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			printf("\torigin = %s\n", dname); | ||||||
|  | 			cp += n; | ||||||
|  |  | ||||||
|  | 			n = ns_name_uncompress(ns_msg_base(handle), ns_msg_end(handle), | ||||||
|  | 			                       cp, dname, sizeof(dname)); | ||||||
|  |  | ||||||
|  | 			if (n < 0) { | ||||||
|  | 				//fprintf(stderr, "Unable to uncompress domain: %s\n", strerror(errno)); | ||||||
|  | 				return -1; | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			printf("\tmail addr = %s\n", dname); | ||||||
|  | 			cp += n; | ||||||
|  |  | ||||||
|  | 			printf("\tserial = %lu\n", ns_get32(cp)); | ||||||
|  | 			cp += 4; | ||||||
|  |  | ||||||
|  | 			printf("\trefresh = %lu\n", ns_get32(cp)); | ||||||
|  | 			cp += 4; | ||||||
|  |  | ||||||
|  | 			printf("\tretry = %lu\n", ns_get32(cp)); | ||||||
|  | 			cp += 4; | ||||||
|  |  | ||||||
|  | 			printf("\texpire = %lu\n", ns_get32(cp)); | ||||||
|  | 			cp += 4; | ||||||
|  |  | ||||||
|  | 			printf("\tminimum = %lu\n", ns_get32(cp)); | ||||||
|  | 			break; | ||||||
|  |  | ||||||
|  | 		default: | ||||||
|  | 			break; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return i; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | static int parse_nsaddr(const char *addrstr, len_and_sockaddr *lsa) | ||||||
|  | { | ||||||
|  | 	char *eptr, *hash, ifname[IFNAMSIZ]; | ||||||
|  | 	unsigned int port = default_port; | ||||||
|  | 	unsigned int scope = 0; | ||||||
|  |  | ||||||
|  | 	hash = strchr(addrstr, '#'); | ||||||
|  |  | ||||||
|  | 	if (hash) { | ||||||
|  | 		*hash++ = '\0'; | ||||||
|  | 		port = strtoul(hash, &eptr, 10); | ||||||
|  |  | ||||||
|  | 		if (eptr == hash || *eptr != '\0' || port > 65535) { | ||||||
|  | 			errno = EINVAL; | ||||||
|  | 			return -1; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	hash = strchr(addrstr, '%'); | ||||||
|  |  | ||||||
|  | 	if (hash) { | ||||||
|  | 		for (eptr = ++hash; *eptr != '\0' && *eptr != '#'; eptr++) { | ||||||
|  | 			if ((eptr - hash) >= IFNAMSIZ) { | ||||||
|  | 				errno = ENODEV; | ||||||
|  | 				return -1; | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			ifname[eptr - hash] = *eptr; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		ifname[eptr - hash] = '\0'; | ||||||
|  | 		scope = if_nametoindex(ifname); | ||||||
|  |  | ||||||
|  | 		if (scope == 0) { | ||||||
|  | 			errno = ENODEV; | ||||||
|  | 			return -1; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | #if ENABLE_FEATURE_IPV6 | ||||||
|  | 	if (inet_pton(AF_INET6, addrstr, &lsa->u.sin6.sin6_addr)) { | ||||||
|  | 		lsa->u.sin6.sin6_family = AF_INET6; | ||||||
|  | 		lsa->u.sin6.sin6_port = htons(port); | ||||||
|  | 		lsa->u.sin6.sin6_scope_id = scope; | ||||||
|  | 		lsa->len = sizeof(lsa->u.sin6); | ||||||
|  | 		return 0; | ||||||
|  | 	} | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | 	if (!scope && inet_pton(AF_INET, addrstr, &lsa->u.sin.sin_addr)) { | ||||||
|  | 		lsa->u.sin.sin_family = AF_INET; | ||||||
|  | 		lsa->u.sin.sin_port = htons(port); | ||||||
|  | 		lsa->len = sizeof(lsa->u.sin); | ||||||
|  | 		return 0; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	errno = EINVAL; | ||||||
|  | 	return -1; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | static unsigned long mtime(void) | ||||||
|  | { | ||||||
|  | 	struct timespec ts; | ||||||
|  | 	clock_gettime(CLOCK_REALTIME, &ts); | ||||||
|  | 	return (unsigned long)ts.tv_sec * 1000 + ts.tv_nsec / 1000000; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #if ENABLE_FEATURE_IPV6 | ||||||
|  | static void to_v4_mapped(len_and_sockaddr *a) | ||||||
|  | { | ||||||
|  | 	if (a->u.sa.sa_family != AF_INET) | ||||||
|  | 		return; | ||||||
|  |  | ||||||
|  | 	memcpy(a->u.sin6.sin6_addr.s6_addr + 12, | ||||||
|  | 	       &a->u.sin.sin_addr, 4); | ||||||
|  |  | ||||||
|  | 	memcpy(a->u.sin6.sin6_addr.s6_addr, | ||||||
|  | 	       "\0\0\0\0\0\0\0\0\0\0\xff\xff", 12); | ||||||
|  |  | ||||||
|  | 	a->u.sin6.sin6_family = AF_INET6; | ||||||
|  | 	a->u.sin6.sin6_flowinfo = 0; | ||||||
|  | 	a->u.sin6.sin6_scope_id = 0; | ||||||
|  | 	a->len = sizeof(a->u.sin6); | ||||||
|  | } | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |  * Function logic borrowed & modified from musl libc, res_msend.c | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | static int send_queries(struct ns *ns, int n_ns, struct query *queries, int n_queries) | ||||||
|  | { | ||||||
|  | 	int fd; | ||||||
|  | 	int timeout = default_timeout * 1000, retry_interval, servfail_retry = 0; | ||||||
|  | 	len_and_sockaddr from = { }; | ||||||
|  | #if ENABLE_FEATURE_IPV6 | ||||||
|  | 	int one = 1; | ||||||
|  | #endif | ||||||
|  | 	int recvlen = 0; | ||||||
|  | 	int n_replies = 0; | ||||||
|  | 	struct pollfd pfd; | ||||||
|  | 	unsigned long t0, t1, t2; | ||||||
|  | 	int nn, qn, next_query = 0; | ||||||
|  |  | ||||||
|  | 	from.u.sa.sa_family = AF_INET; | ||||||
|  | 	from.len = sizeof(from.u.sin); | ||||||
|  |  | ||||||
|  | #if ENABLE_FEATURE_IPV6 | ||||||
|  | 	for (nn = 0; nn < n_ns; nn++) { | ||||||
|  | 		if (ns[nn].addr.u.sa.sa_family == AF_INET6) { | ||||||
|  | 			from.u.sa.sa_family = AF_INET6; | ||||||
|  | 			from.len = sizeof(from.u.sin6); | ||||||
|  | 			break; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | 	/* Get local address and open/bind a socket */ | ||||||
|  | 	fd = socket(from.u.sa.sa_family, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0); | ||||||
|  |  | ||||||
|  | #if ENABLE_FEATURE_IPV6 | ||||||
|  | 	/* Handle case where system lacks IPv6 support */ | ||||||
|  | 	if (fd < 0 && from.u.sa.sa_family == AF_INET6 && errno == EAFNOSUPPORT) { | ||||||
|  | 		fd = socket(AF_INET, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0); | ||||||
|  | 		from.u.sa.sa_family = AF_INET; | ||||||
|  | 	} | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | 	if (fd < 0) | ||||||
|  | 		return -1; | ||||||
|  |  | ||||||
|  | 	if (bind(fd, &from.u.sa, from.len) < 0) { | ||||||
|  | 		close(fd); | ||||||
|  | 		return -1; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | #if ENABLE_FEATURE_IPV6 | ||||||
|  | 	/* Convert any IPv4 addresses in a mixed environment to v4-mapped */ | ||||||
|  | 	if (from.u.sa.sa_family == AF_INET6) { | ||||||
|  | 		setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &one, sizeof(one)); | ||||||
|  |  | ||||||
|  | 		for (nn = 0; nn < n_ns; nn++) | ||||||
|  | 			to_v4_mapped(&ns[nn].addr); | ||||||
|  | 	} | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | 	pfd.fd = fd; | ||||||
|  | 	pfd.events = POLLIN; | ||||||
|  | 	retry_interval = timeout / default_retry; | ||||||
|  | 	t0 = t2 = mtime(); | ||||||
|  | 	t1 = t2 - retry_interval; | ||||||
|  |  | ||||||
|  | 	for (; t2 - t0 < timeout; t2 = mtime()) { | ||||||
|  | 		if (t2 - t1 >= retry_interval) { | ||||||
|  | 			for (qn = 0; qn < n_queries; qn++) { | ||||||
|  | 				if (queries[qn].rlen) | ||||||
|  | 					continue; | ||||||
|  |  | ||||||
|  | 				for (nn = 0; nn < n_ns; nn++) { | ||||||
|  | 					sendto(fd, queries[qn].query, queries[qn].qlen, | ||||||
|  | 					       MSG_NOSIGNAL, &ns[nn].addr.u.sa, ns[nn].addr.len); | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			t1 = t2; | ||||||
|  | 			servfail_retry = 2 * n_queries; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		/* Wait for a response, or until time to retry */ | ||||||
|  | 		if (poll(&pfd, 1, t1+retry_interval-t2) <= 0) | ||||||
|  | 			continue; | ||||||
|  |  | ||||||
|  | 		while (1) { | ||||||
|  | 			recvlen = recvfrom(fd, queries[next_query].reply, | ||||||
|  | 			                   sizeof(queries[next_query].reply), 0, | ||||||
|  | 			                   &from.u.sa, &from.len); | ||||||
|  |  | ||||||
|  | 			/* read error */ | ||||||
|  | 			if (recvlen < 0) | ||||||
|  | 				break; | ||||||
|  |  | ||||||
|  | 			/* Ignore non-identifiable packets */ | ||||||
|  | 			if (recvlen < 4) | ||||||
|  | 				continue; | ||||||
|  |  | ||||||
|  | 			/* Ignore replies from addresses we didn't send to */ | ||||||
|  | 			for (nn = 0; nn < n_ns; nn++) | ||||||
|  | 				if (memcmp(&from.u.sa, &ns[nn].addr.u.sa, from.len) == 0) | ||||||
|  | 					break; | ||||||
|  |  | ||||||
|  | 			if (nn >= n_ns) | ||||||
|  | 				continue; | ||||||
|  |  | ||||||
|  | 			/* Find which query this answer goes with, if any */ | ||||||
|  | 			for (qn = next_query; qn < n_queries; qn++) | ||||||
|  | 				if (!memcmp(queries[next_query].reply, queries[qn].query, 2)) | ||||||
|  | 					break; | ||||||
|  |  | ||||||
|  | 			if (qn >= n_queries || queries[qn].rlen) | ||||||
|  | 				continue; | ||||||
|  |  | ||||||
|  | 			queries[qn].rcode = queries[next_query].reply[3] & 15; | ||||||
|  | 			queries[qn].latency = mtime() - t0; | ||||||
|  | 			queries[qn].n_ns = nn; | ||||||
|  |  | ||||||
|  | 			ns[nn].replies++; | ||||||
|  |  | ||||||
|  | 			/* Only accept positive or negative responses; | ||||||
|  | 			 * retry immediately on server failure, and ignore | ||||||
|  | 			 * all other codes such as refusal. */ | ||||||
|  | 			switch (queries[qn].rcode) { | ||||||
|  | 			case 0: | ||||||
|  | 			case 3: | ||||||
|  | 				break; | ||||||
|  |  | ||||||
|  | 			case 2: | ||||||
|  | 				if (servfail_retry && servfail_retry--) { | ||||||
|  | 					ns[nn].failures++; | ||||||
|  | 					sendto(fd, queries[qn].query, queries[qn].qlen, | ||||||
|  | 					       MSG_NOSIGNAL, &ns[nn].addr.u.sa, ns[nn].addr.len); | ||||||
|  | 				} | ||||||
|  | 				/* fall through */ | ||||||
|  |  | ||||||
|  | 			default: | ||||||
|  | 				continue; | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			/* Store answer */ | ||||||
|  | 			n_replies++; | ||||||
|  |  | ||||||
|  | 			queries[qn].rlen = recvlen; | ||||||
|  |  | ||||||
|  | 			if (qn == next_query) { | ||||||
|  | 				while (next_query < n_queries) { | ||||||
|  | 					if (!queries[next_query].rlen) | ||||||
|  | 						break; | ||||||
|  |  | ||||||
|  | 					next_query++; | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 			else { | ||||||
|  | 				memcpy(queries[qn].reply, queries[next_query].reply, recvlen); | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			if (next_query >= n_queries) | ||||||
|  | 				return n_replies; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return n_replies; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | static struct ns *add_ns(struct ns **ns, int *n_ns, const char *addr) | ||||||
|  | { | ||||||
|  | 	char portstr[sizeof("65535")], *p; | ||||||
|  | 	len_and_sockaddr a = { }; | ||||||
|  | 	struct ns *tmp; | ||||||
|  | 	struct addrinfo *ai, *aip, hints = { | ||||||
|  | 		.ai_flags = AI_NUMERICSERV, | ||||||
|  | 		.ai_socktype = SOCK_DGRAM | ||||||
|  | 	}; | ||||||
|  |  | ||||||
|  | 	if (parse_nsaddr(addr, &a)) { | ||||||
|  | 		/* Maybe we got a domain name, attempt to resolve it using the standard | ||||||
|  | 		 * resolver routines */ | ||||||
|  |  | ||||||
|  | 		p = strchr(addr, '#'); | ||||||
|  | 		snprintf(portstr, sizeof(portstr), "%hu", | ||||||
|  | 		         (unsigned short)(p ? strtoul(p, NULL, 10) : default_port)); | ||||||
|  |  | ||||||
|  | 		if (!getaddrinfo(addr, portstr, &hints, &ai)) { | ||||||
|  | 			for (aip = ai; aip; aip = aip->ai_next) { | ||||||
|  | 				if (aip->ai_addr->sa_family != AF_INET && | ||||||
|  | 				    aip->ai_addr->sa_family != AF_INET6) | ||||||
|  | 					continue; | ||||||
|  |  | ||||||
|  | #if ! ENABLE_FEATURE_IPV6 | ||||||
|  | 				if (aip->ai_addr->sa_family != AF_INET) | ||||||
|  | 					continue; | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | 				tmp = realloc(*ns, sizeof(**ns) * (*n_ns + 1)); | ||||||
|  |  | ||||||
|  | 				if (!tmp) | ||||||
|  | 					return NULL; | ||||||
|  |  | ||||||
|  | 				*ns = tmp; | ||||||
|  |  | ||||||
|  | 				(*ns)[*n_ns].name = addr; | ||||||
|  | 				(*ns)[*n_ns].replies = 0; | ||||||
|  | 				(*ns)[*n_ns].failures = 0; | ||||||
|  | 				(*ns)[*n_ns].addr.len = aip->ai_addrlen; | ||||||
|  |  | ||||||
|  | 				memcpy(&(*ns)[*n_ns].addr.u.sa, aip->ai_addr, aip->ai_addrlen); | ||||||
|  |  | ||||||
|  | 				(*n_ns)++; | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			freeaddrinfo(ai); | ||||||
|  |  | ||||||
|  | 			return &(*ns)[*n_ns]; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		return NULL; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	tmp = realloc(*ns, sizeof(**ns) * (*n_ns + 1)); | ||||||
|  |  | ||||||
|  | 	if (!tmp) | ||||||
|  | 		return NULL; | ||||||
|  |  | ||||||
|  | 	*ns = tmp; | ||||||
|  |  | ||||||
|  | 	(*ns)[*n_ns].addr = a; | ||||||
|  | 	(*ns)[*n_ns].name = addr; | ||||||
|  | 	(*ns)[*n_ns].replies = 0; | ||||||
|  | 	(*ns)[*n_ns].failures = 0; | ||||||
|  |  | ||||||
|  | 	return &(*ns)[(*n_ns)++]; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | static struct query *add_query(struct query **queries, int *n_queries, | ||||||
|  |                                int type, const char *dname) | ||||||
|  | { | ||||||
|  | 	struct query *tmp; | ||||||
|  | 	ssize_t qlen; | ||||||
|  |  | ||||||
|  | 	tmp = realloc(*queries, sizeof(**queries) * (*n_queries + 1)); | ||||||
|  |  | ||||||
|  | 	if (!tmp) | ||||||
|  | 		return NULL; | ||||||
|  |  | ||||||
|  | 	memset(&tmp[*n_queries], 0, sizeof(*tmp)); | ||||||
|  |  | ||||||
|  | 	qlen = res_mkquery(QUERY, dname, C_IN, type, NULL, 0, NULL, | ||||||
|  | 	                   tmp[*n_queries].query, sizeof(tmp[*n_queries].query)); | ||||||
|  |  | ||||||
|  | 	tmp[*n_queries].qlen = qlen; | ||||||
|  | 	tmp[*n_queries].name = dname; | ||||||
|  | 	*queries = tmp; | ||||||
|  |  | ||||||
|  | 	return &tmp[(*n_queries)++]; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | int main(int argc, char **argv) | ||||||
|  | { | ||||||
|  | 	int rc = 1; | ||||||
|  | 	struct ns *ns = NULL; | ||||||
|  | 	struct query *queries = NULL; | ||||||
|  | 	int n_ns = 0, n_queries = 0; | ||||||
|  | 	int c = 0; | ||||||
|  |  | ||||||
|  | 	char *url = "telecominfraproject.com"; | ||||||
|  | 	char *server = "127.0.0.1"; | ||||||
|  | 	int v6 = 0; | ||||||
|  |  | ||||||
|  | 	while (1) { | ||||||
|  | 		int option = getopt(argc, argv, "u:s:i:6"); | ||||||
|  |  | ||||||
|  | 		if (option == -1) | ||||||
|  | 			break; | ||||||
|  |  | ||||||
|  | 		switch (option) { | ||||||
|  | 		case '6': | ||||||
|  | 			v6 = 1; | ||||||
|  | 			break; | ||||||
|  | 		case 'u': | ||||||
|  | 			url = optarg; | ||||||
|  | 			break; | ||||||
|  | 		case 's': | ||||||
|  | 			server = optarg; | ||||||
|  | 			break; | ||||||
|  | 		default: | ||||||
|  | 		case 'h': | ||||||
|  | 			printf("Usage: dnsprobe OPTIONS\n" | ||||||
|  | 			       "  -6 - use ipv6\n" | ||||||
|  | 			       "  -u <url>\n" | ||||||
|  | 			       "  -s <server>\n"); | ||||||
|  | 			return -1; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	ulog_open(ULOG_SYSLOG | ULOG_STDIO, LOG_DAEMON, "dnsprobe"); | ||||||
|  |  | ||||||
|  | 	ULOG_INFO("attempting to probe dns - %s %s %s\n", | ||||||
|  | 		url, server, v6 ? "ipv6" : ""); | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	add_query(&queries, &n_queries, v6 ? T_AAAA : T_A, url); | ||||||
|  |  | ||||||
|  | 	add_ns(&ns, &n_ns, server); | ||||||
|  |  | ||||||
|  | 	rc = send_queries(&ns[0], 1, queries, n_queries); | ||||||
|  | 	if (rc <= 0) { | ||||||
|  | 		fprintf(stderr, "Failed to send queries: %s\n", strerror(errno)); | ||||||
|  | 		rc = -1; | ||||||
|  | 		goto out; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if (queries[0].rcode != 0) { | ||||||
|  | 		printf("** server can't find %s: %s\n", queries[0].name, | ||||||
|  | 		rcodes[queries[0].rcode]); | ||||||
|  | 		goto out; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if (queries[0].rlen) { | ||||||
|  | 		c = parse_reply(queries[0].reply, queries[0].rlen, NULL); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if (c == 0) | ||||||
|  | 		printf("*** Can't find %s: No answer\n", queries[0].name); | ||||||
|  | 	else if (c < 0) | ||||||
|  | 		printf("*** Can't find %s: Parse error\n", queries[0].name); | ||||||
|  | 	else | ||||||
|  | 		rc = 0; | ||||||
|  |  | ||||||
|  | out: | ||||||
|  | 	if (n_ns) | ||||||
|  | 		free(ns); | ||||||
|  |  | ||||||
|  | 	if (n_queries) | ||||||
|  | 		free(queries); | ||||||
|  |  | ||||||
|  | 	return rc; | ||||||
|  | } | ||||||
							
								
								
									
										100
									
								
								feeds/ucentral/ucentral-tools/src/firstcontact.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										100
									
								
								feeds/ucentral/ucentral-tools/src/firstcontact.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,100 @@ | |||||||
|  | #define _GNU_SOURCE | ||||||
|  | #include <stdio.h> | ||||||
|  | #include <getopt.h> | ||||||
|  |  | ||||||
|  | #include <curl/curl.h> | ||||||
|  |  | ||||||
|  | #include <libubox/ulog.h> | ||||||
|  |  | ||||||
|  | static const char *file_cert = "/etc/open-wifi/client.pem"; | ||||||
|  | static const char *file_key  = "/etc/open-wifi/client_dec.key"; | ||||||
|  | static const char *file_json = "/etc/open-wifi/redirector.json"; | ||||||
|  | static const char *file_dbg  = "/tmp/firstcontact.hdr"; | ||||||
|  |  | ||||||
|  | int main(int argc, char **argv) | ||||||
|  | { | ||||||
|  | 	FILE *fp_json; | ||||||
|  | 	FILE *fp_dbg; | ||||||
|  | 	CURLcode res; | ||||||
|  | 	CURL *curl; | ||||||
|  | 	char *devid = NULL; | ||||||
|  | 	char *url; | ||||||
|  |  | ||||||
|  | 	while (1) { | ||||||
|  | 		int option = getopt(argc, argv, "k:c:o:hi:"); | ||||||
|  |  | ||||||
|  | 		if (option == -1) | ||||||
|  | 			break; | ||||||
|  |  | ||||||
|  | 		switch (option) { | ||||||
|  | 		case 'k': | ||||||
|  | 			file_key = optarg; | ||||||
|  | 			break; | ||||||
|  | 		case 'c': | ||||||
|  | 			file_cert = optarg; | ||||||
|  | 			break; | ||||||
|  | 		case 'o': | ||||||
|  | 			file_json = optarg; | ||||||
|  | 			break; | ||||||
|  | 		case 'i': | ||||||
|  | 			devid = optarg; | ||||||
|  | 			break; | ||||||
|  | 		default: | ||||||
|  | 		case 'h': | ||||||
|  | 			printf("Usage: firstcontact OPTIONS\n" | ||||||
|  | 			       "  -k <keyfile>\n" | ||||||
|  | 			       "  -c <certfile>\n" | ||||||
|  | 			       "  -o <outfile>\n" | ||||||
|  | 			       "  -i <devid>\n"); | ||||||
|  | 			return -1; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if (!devid) { | ||||||
|  | 		fprintf(stderr, "missing devid\n"); | ||||||
|  | 		return -1; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	ulog_open(ULOG_SYSLOG | ULOG_STDIO, LOG_DAEMON, "firstcontact"); | ||||||
|  | 	ULOG_INFO("attempting first contact\n"); | ||||||
|  |  | ||||||
|  | 	fp_dbg = fopen(file_dbg, "wb"); | ||||||
|  | 	fp_json = fopen(file_json, "wb"); | ||||||
|  | 	if (!fp_json) { | ||||||
|  | 		ULOG_ERR("failed to create %s\n", file_json); | ||||||
|  | 		return -1; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	curl_global_init(CURL_GLOBAL_DEFAULT); | ||||||
|  | 	curl = curl_easy_init(); | ||||||
|  | 	if (!curl) { | ||||||
|  | 		ULOG_ERR("curl_easy_init failed\n"); | ||||||
|  | 		return -1; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if (asprintf(&url, "https://clientauth.demo.one.digicert.com/iot/api/v2/device/%s", devid) < 0) { | ||||||
|  | 		ULOG_ERR("failed to assemble url\n"); | ||||||
|  | 		return -1; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	curl_easy_setopt(curl, CURLOPT_URL, url); | ||||||
|  | 	curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp_json); | ||||||
|  | 	curl_easy_setopt(curl, CURLOPT_HEADERDATA, fp_dbg); | ||||||
|  | 	curl_easy_setopt(curl, CURLOPT_SSLCERTTYPE, "PEM"); | ||||||
|  | 	curl_easy_setopt(curl, CURLOPT_SSLCERT, file_cert); | ||||||
|  | 	curl_easy_setopt(curl, CURLOPT_SSLKEYTYPE, "PEM"); | ||||||
|  | 	curl_easy_setopt(curl, CURLOPT_SSLKEY, file_key); | ||||||
|  | 	curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1L); | ||||||
|  |  | ||||||
|  | 	res = curl_easy_perform(curl); | ||||||
|  | 	if (res != CURLE_OK) | ||||||
|  | 		ULOG_ERR("curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); | ||||||
|  | 	else | ||||||
|  | 		ULOG_INFO("downloaded first contact data\n"); | ||||||
|  | 	curl_easy_cleanup(curl); | ||||||
|  | 	curl_global_cleanup(); | ||||||
|  |  | ||||||
|  | 	ulog_close(); | ||||||
|  |  | ||||||
|  | 	return (res != CURLE_OK); | ||||||
|  | } | ||||||
							
								
								
									
										86
									
								
								feeds/ucentral/ucentral-tools/src/ip-collide.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								feeds/ucentral/ucentral-tools/src/ip-collide.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,86 @@ | |||||||
|  | #include <arpa/inet.h> | ||||||
|  | #include <net/if.h> | ||||||
|  |  | ||||||
|  | #include <libubox/list.h> | ||||||
|  | #include <libubox/ulog.h> | ||||||
|  |  | ||||||
|  | #include <stdio.h> | ||||||
|  | #include <stdlib.h> | ||||||
|  | #include <string.h> | ||||||
|  |  | ||||||
|  | struct route { | ||||||
|  | 	struct list_head list; | ||||||
|  | 	char devname[64]; | ||||||
|  | 	uint32_t domain; | ||||||
|  | 	uint32_t mask; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | static struct list_head routes = LIST_HEAD_INIT(routes); | ||||||
|  |  | ||||||
|  | static int parse_routes(void) | ||||||
|  | { | ||||||
|  | 	FILE *fp = fopen("/proc/net/route", "r"); | ||||||
|  | 	int flgs, ref, use, metric, mtu, win, ir; | ||||||
|  | 	struct route *route; | ||||||
|  | 	unsigned long g; | ||||||
|  | 	int r; | ||||||
|  |  | ||||||
|  | 	r = fscanf(fp, "%*[^\n]\n"); | ||||||
|  | 	if (r < 0) { | ||||||
|  | 		fprintf(stderr, "failed to parse routes\n"); | ||||||
|  | 		return -1; | ||||||
|  | 	} | ||||||
|  | 	while (1) { | ||||||
|  | 		route = malloc(sizeof(*route)); | ||||||
|  | 		if (!route) | ||||||
|  | 			break; | ||||||
|  | 		memset(route, 0, sizeof(*route)); | ||||||
|  | 		r = fscanf(fp, "%63s%x%lx%X%d%d%d%x%d%d%d\n", | ||||||
|  | 			route->devname, &route->domain, &g, &flgs, &ref, &use, &metric, &route->mask, | ||||||
|  | 			&mtu, &win, &ir); | ||||||
|  | 		if (r != 11 && (r < 0) && feof(fp)) | ||||||
|  | 			break; | ||||||
|  | 		list_add(&route->list, &routes); | ||||||
|  | 		printf("1 %s %x %x\n", route->devname, ntohl(route->domain), ntohl(route->mask)); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	fclose(fp); | ||||||
|  |  | ||||||
|  | 	return 0; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | static int find_collisions(void) | ||||||
|  | { | ||||||
|  | 	struct route *route; | ||||||
|  |  | ||||||
|  | 	list_for_each_entry(route, &routes, list) { | ||||||
|  | 		struct route *compare; | ||||||
|  |  | ||||||
|  | 		if (!route->domain || !route->mask) | ||||||
|  | 			continue; | ||||||
|  | 		list_for_each_entry(compare, &routes, list) { | ||||||
|  | 			if (!compare->domain || !compare->mask) | ||||||
|  | 				continue; | ||||||
|  | 			if (compare == route) | ||||||
|  | 				continue; | ||||||
|  | 			if (((route->domain & route->mask) == (compare->domain & route->mask)) || | ||||||
|  | 			    ((route->domain & compare->mask) == (compare->domain & compare->mask))) { | ||||||
|  | 				ULOG_ERR("collision detected\n"); | ||||||
|  | 				return 1; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	ULOG_INFO("no collision detected\n"); | ||||||
|  | 	return 0; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | int main(int argc, char **argv) | ||||||
|  | { | ||||||
|  | 	ulog_open(ULOG_SYSLOG | ULOG_STDIO, LOG_DAEMON, "ip-collide"); | ||||||
|  |  | ||||||
|  | 	parse_routes(); | ||||||
|  | 	if (!list_empty(&routes)) | ||||||
|  | 		return find_collisions(); | ||||||
|  |  | ||||||
|  | 	return 0; | ||||||
|  | } | ||||||
							
								
								
									
										47
									
								
								feeds/ucentral/ucentral-tools/src/radiusprobe.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								feeds/ucentral/ucentral-tools/src/radiusprobe.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,47 @@ | |||||||
|  | #include <stdio.h> | ||||||
|  | #include <string.h> | ||||||
|  | #include <radcli/radcli.h> | ||||||
|  |  | ||||||
|  | int | ||||||
|  | main(int argc, char **argv) | ||||||
|  | { | ||||||
|  | 	int result; | ||||||
|  | 	char username[128]; | ||||||
|  | 	char passwd[AUTH_PASS_LEN + 1]; | ||||||
|  | 	VALUE_PAIR *send, *received; | ||||||
|  | 	uint32_t service; | ||||||
|  | 	rc_handle *rh; | ||||||
|  |  | ||||||
|  | 	/* Not needed if you already used openlog() */ | ||||||
|  | 	rc_openlog("radiusprobe"); | ||||||
|  |  | ||||||
|  | 	if ((rh = rc_read_config("/tmp/radius.conf")) == NULL) | ||||||
|  | 		return ERROR_RC; | ||||||
|  |  | ||||||
|  | 	strcpy(username, "healthcheck"); | ||||||
|  | 	strcpy(passwd, "uCentral"); | ||||||
|  |  | ||||||
|  | 	send = NULL; | ||||||
|  |  | ||||||
|  | 	if (rc_avpair_add(rh, &send, PW_USER_NAME, username, -1, 0) == NULL) | ||||||
|  | 		return ERROR_RC; | ||||||
|  |  | ||||||
|  | 	if (rc_avpair_add(rh, &send, PW_USER_PASSWORD, passwd, -1, 0) == NULL) | ||||||
|  | 		return ERROR_RC; | ||||||
|  |  | ||||||
|  | 	service = PW_AUTHENTICATE_ONLY; | ||||||
|  | 	if (rc_avpair_add(rh, &send, PW_SERVICE_TYPE, &service, -1, 0) == NULL) | ||||||
|  | 		return ERROR_RC; | ||||||
|  |  | ||||||
|  | 	result = rc_auth(rh, 0, send, &received, NULL); | ||||||
|  |  | ||||||
|  | 	if (result == OK_RC || result == REJECT_RC) { | ||||||
|  | 		fprintf(stderr, "RADIUS server OK\n"); | ||||||
|  | 		result = 0; | ||||||
|  | 	} else { | ||||||
|  | 		fprintf(stderr, "RADIUS server failure\n"); | ||||||
|  | 		result = -1; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return result; | ||||||
|  | } | ||||||
| @@ -5,3 +5,6 @@ | |||||||
| #   list ssid 'EAP101-ERICHI' | #   list ssid 'EAP101-ERICHI' | ||||||
| #   list ssid 'EAP101-AKIHO' | #   list ssid 'EAP101-AKIHO' | ||||||
| #   list ssid 'EAP101-DAMAYU' | #   list ssid 'EAP101-DAMAYU' | ||||||
|  | # | ||||||
|  | # config dhcpinject 'dhcpinject' | ||||||
|  | #   option iface_count '6' | ||||||
|   | |||||||
| @@ -9,9 +9,9 @@ SERVICE_NAME="dhcpinject" | |||||||
| PROG=/usr/bin/udhcpinject | PROG=/usr/bin/udhcpinject | ||||||
|  |  | ||||||
| start_service() { | start_service() { | ||||||
|     local ssid_list="" |  | ||||||
|     local ssids="" |     local ssids="" | ||||||
|     local ports="" |     local ports="" | ||||||
|  |     local ifaces="" | ||||||
|  |  | ||||||
|     # Function to process each ssid |     # Function to process each ssid | ||||||
|     append_ssid() { |     append_ssid() { | ||||||
| @@ -41,17 +41,20 @@ start_service() { | |||||||
|     # Get the list of ports |     # Get the list of ports | ||||||
|     config_list_foreach uplink port append_port |     config_list_foreach uplink port append_port | ||||||
|  |  | ||||||
|  |     # Get the iface_count | ||||||
|  |     config_get ifaces dhcpinject iface_count | ||||||
|  |      | ||||||
|     # Fallback to eth0 if no ports are specified |     # Fallback to eth0 if no ports are specified | ||||||
|     if [ -z "$ports" ]; then |     if [ -z "$ports" ]; then | ||||||
|         ports="eth0" |         ports="eth0" | ||||||
|     fi |     fi | ||||||
|  |  | ||||||
|     # Optional: Log or echo for debugging |     # Optional: Log or echo for debugging | ||||||
|     logger -t dhcp_inject "Generated SSIDs=$ssids, Uplink=$ports" |     logger -t dhcp_inject "Generated SSIDs=$ssids, Uplink=$ports, IFACEs=$ifaces" | ||||||
|  |  | ||||||
|     procd_open_instance "$SERVICE_NAME" |     procd_open_instance "$SERVICE_NAME" | ||||||
|     procd_set_param command $PROG |     procd_set_param command $PROG | ||||||
|     procd_set_param env SSIDs="$ssids" PORTs="$ports" |     procd_set_param env SSIDs="$ssids" PORTs="$ports" IFACEs="$ifaces" | ||||||
|     procd_set_param respawn 3600 10 10 |     procd_set_param respawn 3600 10 10 | ||||||
|     procd_set_param file /etc/config/dhcpinject |     procd_set_param file /etc/config/dhcpinject | ||||||
|     procd_set_param reload_signal SIGHUP |     procd_set_param reload_signal SIGHUP | ||||||
|   | |||||||
| @@ -26,6 +26,7 @@ struct iface_info *iface_map = NULL; | |||||||
| static struct port_info *ports = NULL; | static struct port_info *ports = NULL; | ||||||
| int iface_count = 0; | int iface_count = 0; | ||||||
| int port_count = 0; | int port_count = 0; | ||||||
|  | int total_iface = 0; | ||||||
| static pcap_t *handle = NULL; | static pcap_t *handle = NULL; | ||||||
| static char *provided_ssids = NULL; | static char *provided_ssids = NULL; | ||||||
| static char *provided_ports = NULL; | static char *provided_ports = NULL; | ||||||
| @@ -192,6 +193,11 @@ int parse_ssids(const char *ssids) { | |||||||
|         return -1; |         return -1; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     if (iface_count != total_iface) { | ||||||
|  |         syslog(LOG_ERR, "Expect %d but only %d interfaces were found.\n", total_iface, iface_count); | ||||||
|  |         return -1; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     syslog(LOG_INFO, "Found %d matching interfaces\n", iface_count); |     syslog(LOG_INFO, "Found %d matching interfaces\n", iface_count); | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
| @@ -310,7 +316,6 @@ void signal_handler(int sig) { | |||||||
|         exit(0); |         exit(0); | ||||||
|     } else if (sig == SIGHUP) { |     } else if (sig == SIGHUP) { | ||||||
|         syslog(LOG_INFO, "Received reload signal, reconfiguring...\n"); |         syslog(LOG_INFO, "Received reload signal, reconfiguring...\n"); | ||||||
|         sleep(5); |  | ||||||
|         // Clean up existing resources |         // Clean up existing resources | ||||||
|         cleanup_tc(); |         cleanup_tc(); | ||||||
|          |          | ||||||
| @@ -561,7 +566,19 @@ int main(int argc, char *argv[]) { | |||||||
|     signal(SIGTERM, signal_handler); |     signal(SIGTERM, signal_handler); | ||||||
|     signal(SIGHUP, signal_handler); |     signal(SIGHUP, signal_handler); | ||||||
|  |  | ||||||
|     sleep(5); |     // Read IFACEs from environment variable | ||||||
|  |     char *iface_env = getenv("IFACEs"); | ||||||
|  |     if (!iface_env) { | ||||||
|  |         syslog(LOG_ERR, "No IFACEs provided. Exiting...\n"); | ||||||
|  |         cleanup(); | ||||||
|  |         return 1; | ||||||
|  |     } | ||||||
|  |     total_iface = atoi(iface_env); | ||||||
|  |     if (total_iface <= 0) { | ||||||
|  |         syslog(LOG_ERR, "Invalid IFACEs value: %s. Exiting...\n", iface_env); | ||||||
|  |         cleanup(); | ||||||
|  |         return 1; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     provided_ssids = getenv("SSIDs"); |     provided_ssids = getenv("SSIDs"); | ||||||
|     syslog(LOG_INFO, "Provided SSIDs: %s\n", provided_ssids); |     syslog(LOG_INFO, "Provided SSIDs: %s\n", provided_ssids); | ||||||
|   | |||||||
| @@ -12,3 +12,4 @@ include: | |||||||
| packages: | packages: | ||||||
|   - ipq53xx |   - ipq53xx | ||||||
|   - ftm |   - ftm | ||||||
|  |   - qca-ssdk-shell | ||||||
|   | |||||||
							
								
								
									
										14
									
								
								profiles/cig_wf189h.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								profiles/cig_wf189h.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | |||||||
|  | --- | ||||||
|  | profile: cig_wf189h | ||||||
|  | target: ipq53xx | ||||||
|  | subtarget: generic | ||||||
|  | description: Build image for the CIG WF189h | ||||||
|  | image: bin/targets/ipq53xx/generic/openwrt-ipq53xx-cig_wf189h-squashfs-sysupgrade.tar | ||||||
|  | feeds: | ||||||
|  |   - name: qca | ||||||
|  |     path: ../../feeds/qca-wifi-7 | ||||||
|  | include: | ||||||
|  |   - ucentral-ap | ||||||
|  | packages: | ||||||
|  |   - ipq53xx | ||||||
|  |   - qca-ssdk-shell | ||||||
							
								
								
									
										16
									
								
								profiles/sercomm_ap72tip-v4.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								profiles/sercomm_ap72tip-v4.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | |||||||
|  | --- | ||||||
|  | profile: sercomm_ap72tip-v4 | ||||||
|  | target: ipq53xx | ||||||
|  | subtarget: generic | ||||||
|  | description: Build image for the Sercomm AP72TIP-v4 | ||||||
|  | image: bin/targets/ipq53xx/generic/openwrt-ipq53xx-sercomm_ap72tip-v4-squashfs-sysupgrade.tar | ||||||
|  | feeds: | ||||||
|  |   - name: qca | ||||||
|  |     path: ../../feeds/qca-wifi-7 | ||||||
|  | include: | ||||||
|  |   - ucentral-ap | ||||||
|  | packages: | ||||||
|  |   - ipq53xx | ||||||
|  |   - qca-ssdk-shell | ||||||
|  | diffconfig: | | ||||||
|  |   CONFIG_KERNEL_IPQ_MEM_PROFILE=0 | ||||||
| @@ -2,14 +2,14 @@ | |||||||
| profile: sercomm_ap72tip | profile: sercomm_ap72tip | ||||||
| target: ipq53xx | target: ipq53xx | ||||||
| subtarget: generic | subtarget: generic | ||||||
| description: Build image for the Sercomm AP72 TIP | description: Build image for the Sercomm AP72TIP | ||||||
| image: bin/targets/ipq53xx/generic/openwrt-ipq53xx-sercomm_ap72tip-squashfs-sysupgrade.tar | image: bin/targets/ipq53xx/generic/openwrt-ipq53xx-sercomm_ap72tip-squashfs-sysupgrade.tar | ||||||
| feeds: | feeds: | ||||||
|   - name: ipq95xx |   - name: qca | ||||||
|     path: ../../feeds/ipq95xx |     path: ../../feeds/qca-wifi-7 | ||||||
| packages: |  | ||||||
|   - ipq53xx |  | ||||||
| include: | include: | ||||||
|   - ucentral-ap |   - ucentral-ap | ||||||
|  | packages: | ||||||
|  |   - ipq53xx | ||||||
| diffconfig: | | diffconfig: | | ||||||
|   CONFIG_KERNEL_IPQ_MEM_PROFILE=0 |   CONFIG_KERNEL_IPQ_MEM_PROFILE=0 | ||||||
|   | |||||||
							
								
								
									
										15
									
								
								profiles/sonicfi_rap650c.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								profiles/sonicfi_rap650c.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | --- | ||||||
|  | profile: sonicfi_rap650c | ||||||
|  | target: ipq807x | ||||||
|  | subtarget: generic | ||||||
|  | description: Build image for the SonicFi RAP650C | ||||||
|  | image: bin/targets/ipq807x/generic/openwrt-ipq807x-sonicfi_rap650c-squashfs-sysupgrade.tar | ||||||
|  | feeds: | ||||||
|  |   - name: ipq807x | ||||||
|  |     path: ../../feeds/ipq807x_v5.4 | ||||||
|  | include: | ||||||
|  |   - ucentral-ap | ||||||
|  | packages: | ||||||
|  |   - ipq807x | ||||||
|  | diffconfig: | | ||||||
|  |   CONFIG_KERNEL_IPQ_MEM_PROFILE=0 | ||||||
| @@ -45,6 +45,7 @@ packages: | |||||||
|   - ucentral-schema |   - ucentral-schema | ||||||
|   - ucentral-state |   - ucentral-state | ||||||
|   - ucentral-tools |   - ucentral-tools | ||||||
|  |   - udhcpinject | ||||||
|   - udhcprelay |   - udhcprelay | ||||||
|   - ufp |   - ufp | ||||||
|   - ugps |   - ugps | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user