mirror of
				https://github.com/Telecominfraproject/wlan-ap.git
				synced 2025-10-31 02:17:58 +00:00 
			
		
		
		
	Compare commits
	
		
			152 Commits
		
	
	
		
			v2.6.0-rc1
			...
			v2.7.1-rc1
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 26391d3524 | ||
|   | a4b663b824 | ||
|   | 736ab2b803 | ||
|   | cd2fbd11f2 | ||
|   | 708fe70e75 | ||
|   | 0c9499c085 | ||
|   | d52d4ff627 | ||
|   | 324df56861 | ||
|   | a21a08e8bf | ||
|   | 393db0ec2a | ||
|   | 9ea3e4ce9b | ||
|   | c56b7adea8 | ||
|   | 84d31765db | ||
|   | fb617ea136 | ||
|   | 47468145c6 | ||
|   | 854c8a44d4 | ||
|   | 86948e1052 | ||
|   | 39053d366d | ||
|   | daaed910da | ||
|   | bf6abd80dd | ||
|   | e74e22e184 | ||
|   | b8f5e17e38 | ||
|   | 956a31db8f | ||
|   | 26be5ba20e | ||
|   | dc2feb3cc7 | ||
|   | ed397f5ce4 | ||
|   | 19f0260c0a | ||
|   | 49c55bdec5 | ||
|   | 2ab86ee29d | ||
|   | 888aa40057 | ||
|   | 2291ccf198 | ||
|   | 1d031a0535 | ||
|   | cb7ed7a37b | ||
|   | e692aea19e | ||
|   | a8bb06fb1c | ||
|   | 63b5803086 | ||
|   | 68689674b7 | ||
|   | fccdccdba3 | ||
|   | 21176badf7 | ||
|   | 87adc56e60 | ||
|   | 0f8be3bbde | ||
|   | a3fc407f25 | ||
|   | 30c2c68579 | ||
|   | 736e3e58cf | ||
|   | b38cd9bb9f | ||
|   | d69a8f159d | ||
|   | baaa31f445 | ||
|   | cf18242ee5 | ||
|   | fdcfffd81d | ||
|   | c9a76b8d76 | ||
|   | 9bd53e7d91 | ||
|   | 812fb18160 | ||
|   | 0571cc73da | ||
|   | 6bdd93ce0f | ||
|   | 0603953d9f | ||
|   | 098c81376f | ||
|   | 7ef10fcfb4 | ||
|   | 823ac590ff | ||
|   | 9b68205dc0 | ||
|   | d8216dc583 | ||
|   | 2e3c52160c | ||
|   | 8686846a09 | ||
|   | 8de22ca44b | ||
|   | 3e692ed95a | ||
|   | 128bd3a17e | ||
|   | cc54c8654f | ||
|   | 200f627a9c | ||
|   | 0134c1cb64 | ||
|   | 5519ab913b | ||
|   | 530332fb51 | ||
|   | 8bb8c16b34 | ||
|   | a6a7d82607 | ||
|   | f78dc0cd77 | ||
|   | aaf830ae27 | ||
|   | 555e1a2b1b | ||
|   | 0fbe2e9089 | ||
|   | e87c1ca2dd | ||
|   | c0b3e38215 | ||
|   | 0bf5ea74b3 | ||
|   | 1c4c82a9df | ||
|   | 4d1022f29b | ||
|   | a652e6c8d2 | ||
|   | 7b91863cba | ||
|   | c7ad6eaf2c | ||
|   | c06923a022 | ||
|   | d9a8e771ae | ||
|   | 7e2cec9d91 | ||
|   | 84add765fe | ||
|   | f050d53ed4 | ||
|   | 26be8ab162 | ||
|   | 3f93f7c972 | ||
|   | 7bab50dd3c | ||
|   | cf657dbd94 | ||
|   | 33c9876760 | ||
|   | 4d6d7405d6 | ||
|   | e249701c34 | ||
|   | 0d50975152 | ||
|   | 6d87847d15 | ||
|   | eebe021780 | ||
|   | c6e0384f21 | ||
|   | 23ae850f72 | ||
|   | 708cf2dec6 | ||
|   | a95745d95b | ||
|   | 83ccea0abf | ||
|   | bfeaf89238 | ||
|   | 7439217b3c | ||
|   | ae2377f4d2 | ||
|   | b81d0aaf0e | ||
|   | 1546bef93f | ||
|   | 32b1aade42 | ||
|   | 2a92b75fe1 | ||
|   | cb30d9e20a | ||
|   | 588206b93b | ||
|   | 6399649038 | ||
|   | aa3cb95233 | ||
|   | 3ea06dac40 | ||
|   | a70dda4a8e | ||
|   | a01f1add81 | ||
|   | 57849591d7 | ||
|   | b4a09e7167 | ||
|   | 96bb8b1372 | ||
|   | 99ea9da785 | ||
|   | bfe7fadfc5 | ||
|   | ad1dcc4f45 | ||
|   | f371c789d0 | ||
|   | 386eca1f65 | ||
|   | 8b9047952d | ||
|   | 5a105ef06e | ||
|   | c60dc1e045 | ||
|   | 1e1bd19429 | ||
|   | cfe07f6e15 | ||
|   | a64039db20 | ||
|   | 7f81ddb8cc | ||
|   | 3c0d495334 | ||
|   | 38a7c54cce | ||
|   | 1aead07444 | ||
|   | d2f44cbb12 | ||
|   | 43d7ca31d6 | ||
|   | 0985c573b0 | ||
|   | d9ed861c1d | ||
|   | 8ef9989147 | ||
|   | 7d5eab4bf3 | ||
|   | 5e03e04bbd | ||
|   | 6fabaeca53 | ||
|   | be4ca445f5 | ||
|   | e99c8b27e1 | ||
|   | e9055b4f08 | ||
|   | cfcafb676b | ||
|   | 899b4d6bfd | ||
|   | 2003632ddb | ||
|   | d4a14106b7 | ||
|   | 85af9d7e0b | 
							
								
								
									
										2
									
								
								.github/workflows/build-dev.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/build-dev.yml
									
									
									
									
										vendored
									
									
								
							| @@ -21,7 +21,7 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         target: ['actiontec_web7200', 'cig_wf188n', 'cig_wf194c', 'cig_wf194c4', 'cig_wf196', 'cig_wf610d', 'cig_wf808', 'cybertan_eww622-a1', 'edgecore_eap101', 'edgecore_eap102', 'edgecore_eap104', 'edgecore_ecs4100-12ph', 'edgecore_ecw5211', 'edgecore_ecw5410', 'edgecore_oap100', 'edgecore_ssw2ac2600', 'edgecore_spw2ac1200', 'edgecore_spw2ac1200-lan-poe', 'hfcl_ion4', 'hfcl_ion4xe', 'hfcl_ion4xi', 'indio_um-305ac', 'indio_um-305ax', 'indio_um-325ac', 'indio_um-510ac-v3', 'indio_um-550ac', 'linksys_ea6350-v4', 'linksys_e8450-ubi', 'linksys_ea8300', 'tp-link_ec420-g1', 'tplink_ex227', 'tplink_ex228', 'tplink_ex447', 'udaya_a5-id2', 'wallys_dr40x9', 'x64_vm' ] | ||||
|         target: ['actiontec_web7200', 'cig_wf188n', 'cig_wf196', 'cig_wf610d', 'cig_wf808', 'cybertan_eww622-a1', 'edgecore_eap101', 'edgecore_eap102', 'edgecore_eap104', 'liteon_wpx8324', 'edgecore_ecs4100-12ph', 'edgecore_ecw5211', 'edgecore_ecw5410', 'edgecore_oap100', 'edgecore_ssw2ac2600', 'edgecore_spw2ac1200', 'edgecore_spw2ac1200-lan-poe', 'hfcl_ion4', 'hfcl_ion4xe', 'hfcl_ion4xi', 'indio_um-305ac', 'indio_um-305ax', 'indio_um-325ac', 'indio_um-510ac-v3', 'indio_um-550ac', 'linksys_ea6350-v4', 'linksys_e8450-ubi', 'linksys_ea8300', 'meshpp_s618_cp03', 'meshpp_s618_cp01', 'udaya_a5-id2', 'wallys_dr40x9', 'wallys_dr6018', 'x64_vm' ] | ||||
|  | ||||
|     steps: | ||||
|     - uses: actions/checkout@v2 | ||||
|   | ||||
| @@ -1,77 +0,0 @@ | ||||
| # Copyright (c) Facebook, Inc. and its affiliates. | ||||
| # All rights reserved. | ||||
| # | ||||
| # This source code is licensed under the license found in the | ||||
| # LICENSE file in the root directory of this source tree. | ||||
| # | ||||
|  | ||||
|  | ||||
| include $(TOPDIR)/rules.mk | ||||
|  | ||||
| PKG_NAME:=fbwifi | ||||
| PKG_VERSION:=2 | ||||
| PKG_RELEASE:=0 | ||||
| PKG_LICENSE:=GPL-2.0 | ||||
|  | ||||
| PKG_MAINTAINER:=Simon Kinane <skinane@fb.com> | ||||
|  | ||||
| PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) | ||||
|  | ||||
| include $(INCLUDE_DIR)/package.mk | ||||
|  | ||||
| define Package/fbwifi | ||||
|   SUBMENU:=Captive Portals | ||||
|   SECTION:=net | ||||
|   CATEGORY:=Network | ||||
|   DEPENDS:=+iptables +luasec +luasocket \ | ||||
| 	+libuci-lua +luaposix \ | ||||
| 	+lua-cjson +uhttpd | ||||
|   TITLE:=Facebook Wi-Fi | ||||
|   PKGARCH:=all | ||||
| endef | ||||
|  | ||||
| define Package/fbwifi/description | ||||
|   Facebook Wi-Fi, an AP authorisation solution | ||||
| endef | ||||
|  | ||||
|  | ||||
| define Package/luci-app-fbwifi | ||||
|   SUBMENU:=3. Applications | ||||
|   SECTION:=luci | ||||
|   CATEGORY:=LuCI | ||||
|   TITLE:=LuCI support for Facebook Wi-Fi | ||||
|   DEPENDS:= \ | ||||
| 	+fbwifi \ | ||||
| 	+luci-base +luci-mod-network +luci-mod-status +luci-theme-bootstrap | ||||
| endef | ||||
|  | ||||
| define Package/luci-app-fbwifi/description | ||||
|   LuCI support for Facebook Wi-Fi | ||||
| endef | ||||
|  | ||||
|  | ||||
| define Package/fbwifi/conffiles | ||||
| /etc/config/fbwifi | ||||
| endef | ||||
|  | ||||
| define Build/Prepare | ||||
| endef | ||||
|  | ||||
| define Build/Configure | ||||
| endef | ||||
|  | ||||
| define Build/Compile | ||||
| endef | ||||
|  | ||||
| define Package/fbwifi/install | ||||
| 	$(INSTALL_DIR) $(1) | ||||
| 	$(CP) ./files/fbwifi/* $(1)/ | ||||
| endef | ||||
|  | ||||
| define Package/luci-app-fbwifi/install | ||||
| 	$(INSTALL_DIR) $(1) | ||||
| 	$(CP) ./files/luci-app-fbwifi/* $(1) | ||||
| endef | ||||
|  | ||||
| $(eval $(call BuildPackage,fbwifi)) | ||||
| $(eval $(call BuildPackage,luci-app-fbwifi)) | ||||
| @@ -1,22 +0,0 @@ | ||||
| # Facebook Wi-Fi v2.0 Reference Implementation for OpenWrt  | ||||
|  | ||||
| ## Getting started | ||||
|  | ||||
| Case studies for OEM customers are available at the official page of [Facebook Wi-Fi](https://www.facebook.com/facebook-wifi). | ||||
|  | ||||
| For OEM engineers, start by reading the init script in [files/etc/init.d/fbwifi](https://github.com/facebookincubator/fbc_owrt_feed/blob/master/fbwifi/files/etc/init.d/fbwifi) | ||||
|  | ||||
| To enable Facebook Wi-Fi, configure the gateway_token in `/etc/config/fbwifi`, and run `fbwifi enable`. | ||||
| To disable Facebook Wi-Fi, run `fbwifi disable`. | ||||
|  | ||||
| ## Contents | ||||
|  | ||||
| The 'files' subdirectory contains two subdirectories, one for the fbwifi | ||||
| package that implements the Facebook Wi-Fi v2.0 standard for OpenWrt, and | ||||
| another one containing a LuCI application to configure Facebook Wi-Fi. | ||||
|  | ||||
| The folder structures follow *nix conventions: | ||||
| - 'etc' is the boot time scripts and configuration | ||||
| - 'usr' contains procedural scripts, lua common code module and GUI prototype for luci | ||||
| - 'www' contains the HTTP endpoints as CGI handlers  | ||||
|  | ||||
| @@ -1,6 +0,0 @@ | ||||
| config fbwifi 'main' | ||||
| 	option enabled '0' | ||||
| 	option gateway_token 'FBWIFI:GATEWAY|123456789|0123456789|abcdeABCDE123456789' | ||||
| 	option http_port '2060' | ||||
| 	option https_port '2061' | ||||
| 	option zone 'lan' | ||||
| @@ -1,10 +0,0 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| [ "$ACTION" = ifup ] || exit 0 | ||||
|  | ||||
| /etc/init.d/fbwifi enabled || exit 0 | ||||
|  | ||||
| ip route get fibmatch 1.1.1.1 | grep -q "$DEVICE" || exit 0 | ||||
|  | ||||
| logger -t fbwifi "Reloading fbwifi due to $ACTION of $INTERFACE ($DEVICE)" | ||||
| /etc/init.d/fbwifi restart | ||||
| @@ -1,43 +0,0 @@ | ||||
| #!/bin/sh /etc/rc.common | ||||
|  | ||||
| START=90 | ||||
|  | ||||
| USE_PROCD=1 | ||||
|  | ||||
| reload_service() { | ||||
| 	restart | ||||
| } | ||||
|  | ||||
| service_triggers() { | ||||
| 	procd_add_reload_trigger fbwifi | ||||
| } | ||||
|  | ||||
| start_service() { | ||||
|  | ||||
| 	config_load fbwifi | ||||
| 	config_get_bool enabled 'main' 'enabled' '0' | ||||
| 	[ "$enabled" -eq 0 ] && return | ||||
|  | ||||
| 	config_get http_port main http_port | ||||
| 	[ -z "$http_port" ] && { | ||||
| 		logger -t fbwifi "required option http_port not set" | ||||
| 		exit 1 | ||||
| 	} | ||||
|  | ||||
| 	config_get https_port main https_port | ||||
| 	[ -z "$https_port" ] && { | ||||
| 		logger -t fbwifi "required option https_port not set" | ||||
| 		exit 1 | ||||
| 	} | ||||
|  | ||||
| 	logger "[fbwifi] Enabled; starting" | ||||
|  | ||||
| 	mkdir -p /tmp/fbwifi | ||||
|  | ||||
| 	/usr/sbin/fbwifi reload | ||||
|  | ||||
| 	procd_open_instance | ||||
| 	procd_set_param command /usr/sbin/fbwifi_validate_token_db | ||||
| 	procd_set_param respawn 1 300 0 | ||||
| 	procd_close_instance | ||||
| } | ||||
| @@ -1,156 +0,0 @@ | ||||
| -- SPDX-License-Identifier: GPL-2.0-only | ||||
| -- Copyright (c) Facebook, Inc. and its affiliates. | ||||
| -- | ||||
| -- FBWIFI Lua library | ||||
| -- function table | ||||
| local fbwifi = {} | ||||
|  | ||||
| local http = require("ssl.https") | ||||
| local json = require("cjson") | ||||
| local log = require("posix.syslog") | ||||
| local uci = require("uci") | ||||
|  | ||||
| function fbwifi.gateway_token() | ||||
| 	token = uci.get("fbwifi.main.gateway_token") | ||||
| 	if token and string.len(token) > 0 then | ||||
| 		return token | ||||
| 	else | ||||
| 		log.syslog( log.LOG_WARNING, "[fbwifi] UCI option fbwifi.main.gateway_token is missing" ) | ||||
| 		return nil | ||||
| 	end  | ||||
| end | ||||
|  | ||||
| function fbwifi.validate_token( token ) | ||||
|  | ||||
| 	local valid = false | ||||
|  | ||||
| 	if string.len(token or '' ) > 0 then | ||||
|  | ||||
| 	        GATEWAY_TOKEN = fbwifi.gateway_token() | ||||
|  | ||||
| 	        URL="https://api.fbwifi.com/v2.0/token" | ||||
| 	        BODY="token="..token | ||||
| 	        body, code, headers = http.request(URL.."?access_token="..GATEWAY_TOKEN, BODY) | ||||
|  | ||||
| 	        if code==200 then | ||||
| 	                valid = true | ||||
| 	        else | ||||
| 	                log.syslog(log.LOG_WARNING, "[fbwifi] validate_token:"..body) | ||||
| 	        end | ||||
|  | ||||
| 	end | ||||
|  | ||||
| 	return valid | ||||
| end | ||||
|  | ||||
| local mac_to_purge='' | ||||
| function remove_client_by_mac(client) | ||||
| 	state = uci.cursor("/var/state", "/tmp/fbwifi") | ||||
|  | ||||
| 	for key, value in pairs(client) do | ||||
| 		if | ||||
| 			key == 'mac' and | ||||
| 			value == mac_to_purge | ||||
| 		then | ||||
| 			log.syslog(log.LOG_INFO, string.format("[fbwifi] Purging DB entry %s for MAC %s", client['.name'] or 'unknown', mac_to_purge) ) | ||||
| 			state:delete("fbwifi", client['.name']) | ||||
| 			return | ||||
| 		end | ||||
| 	end | ||||
| end | ||||
|  | ||||
| function fbwifi.instate_client_rule( token, client_mac ) | ||||
|  | ||||
| 	log.syslog(log.LOG_INFO, "[fbwifi] Validating client "..client_mac) | ||||
|  | ||||
| 	state = uci.cursor("/var/state", "/tmp/fbwifi") | ||||
| 	state_name = "token_" .. token | ||||
|  | ||||
| 	RULE_COND="iptables -w -L FBWIFI_CLIENT_TO_INTERNET -t mangle | grep -i -q \"%s\"" | ||||
| 	RULE_FMT="iptables -w -t mangle -%s FBWIFI_CLIENT_TO_INTERNET -m mac --mac-source \"%s\" -j MARK --set-mark 0xfb" | ||||
| 	local RULE | ||||
|  | ||||
| 	log.syslog(log.LOG_INFO, string.format("[fbwifi] Cleaning DB for MAC %s", client_mac) ) | ||||
| 	mac_to_purge = client_mac | ||||
| 	state:foreach("fbwifi", "client", remove_client_by_mac) | ||||
| 	 | ||||
| 		 | ||||
| 	log.syslog(log.LOG_INFO, string.format("[fbwifi] Adding DB entry %s for MAC %s", state_name, client_mac) ) | ||||
| 	state:set("fbwifi", state_name, "client") | ||||
| 	state:set("fbwifi", state_name, "token", token) | ||||
| 	state:set("fbwifi", state_name, "mac", client_mac) | ||||
| 	state:set("fbwifi", state_name, "authenticated", "true") | ||||
| 				 | ||||
| 	-- verify a rule exists for the given client MAC,  | ||||
| 	--   OR install it | ||||
| 	RULE=string.format(RULE_COND.." || "..RULE_FMT, client_mac, "A", client_mac) | ||||
|  | ||||
| 	log.syslog(log.LOG_INFO, string.format( "[fbwifi] Opening iptables for %s", client_mac ) ) | ||||
| 	res = os.execute(RULE) | ||||
| 	if res ~= 0 then  | ||||
| 		log.syslog(log.LOG_WARNING, string.format( "[fbwifi] Failed to update iptables (%s)", res ) ) | ||||
| 	end | ||||
| 	log.syslog(log.LOG_INFO, "[fbwifi] "..RULE) | ||||
|  | ||||
| 	state:save('fbwifi') | ||||
| 	state:commit('fbwifi') | ||||
| end | ||||
|  | ||||
| function fbwifi.revoke_client_rule( token ) | ||||
|          | ||||
|         if (token == nil) then | ||||
|                 log.syslog(log.LOG_INFO, "[fbwifi] Invalidating token, but token is Nil") | ||||
|                 return | ||||
|         end | ||||
|  | ||||
| 	log.syslog(log.LOG_INFO, string.format( "[fbwifi] Invalidating token (%s)", token) ) | ||||
|  | ||||
| 	state = uci.cursor("/var/state", "/tmp/fbwifi") | ||||
| 	state_name = "token_" .. token | ||||
| 	 | ||||
| 	client_mac = state:get("fbwifi", state_name, "mac") | ||||
|  | ||||
| 	if client_mac then | ||||
| 		RULE_COND="iptables -w -L FBWIFI_CLIENT_TO_INTERNET -t mangle | grep -i -q \"%s\"" | ||||
| 		RULE_FMT="iptables -w -t mangle -%s FBWIFI_CLIENT_TO_INTERNET -m mac --mac-source \"%s\" -j MARK --set-mark 0xfb" | ||||
|  | ||||
| 		-- verify a rule exists for the given client MAC,  | ||||
| 		--  AND delete it | ||||
| 		RULE=string.format(RULE_COND.." && "..RULE_FMT, client_mac, "D", client_mac) | ||||
|  | ||||
| 		res = os.execute(RULE) | ||||
| 		if res ~= 0 then  | ||||
| 			log.syslog(log.LOG_WARNING, string.format( "[fbwifi] Failed to update iptables (%s)", res ) ) | ||||
| 		end | ||||
| 		log.syslog(log.LOG_INFO, "[fbwifi] "..RULE) | ||||
|  | ||||
| 		state:delete("fbwifi", state_name) | ||||
| 		state:save('fbwifi') | ||||
| 		state:commit('fbwifi') | ||||
| 	else | ||||
| 		log.syslog(log.LOG_WARNING, string.format( "[fbwifi] Client MAC not found in DB (%s)", state_name ) ) | ||||
| 	end | ||||
| end | ||||
|  | ||||
| function fbwifi.reset() | ||||
|  | ||||
| 	local success = false | ||||
|         GATEWAY_TOKEN = fbwifi.gateway_token() | ||||
|         URL="https://api.fbwifi.com/v2.0/gateway/reset" | ||||
| 	BODY="{}" | ||||
|         body, code, headers = http.request(URL.."?access_token="..GATEWAY_TOKEN, BODY) | ||||
|  | ||||
|         if code==200 then | ||||
|                 log.syslog(log.LOG_INFO, "[fbwifi] Reset committed") | ||||
|                 success = true | ||||
|         else | ||||
|                 log.syslog(log.LOG_WARNING, "[fbwifi] Reset failed : "..body) | ||||
|         end | ||||
|  | ||||
| 	return success | ||||
| end | ||||
|  | ||||
| -- | ||||
| -- Return the function table to the host script | ||||
| -- | ||||
| return fbwifi | ||||
| @@ -1,58 +0,0 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| case "$1" in | ||||
| disable) | ||||
| 	uci set fbwifi.main.enabled=0 | ||||
|  | ||||
| 	uci delete firewall.fbwifi | ||||
|  | ||||
| 	uci delete uhttpd.fbwifi_redirect | ||||
|  | ||||
| 	uci delete uhttpd.main.json_script | ||||
| 	uci set uhttpd.main.cert='/etc/uhttpd.crt' | ||||
| 	uci set uhttpd.main.key='/etc/uhttpd.key' | ||||
| 	uci set uhttpd.main.rfc1918_filter=1 | ||||
| 	;; | ||||
| enable) | ||||
| 	uci set fbwifi.main.enabled=1 | ||||
|  | ||||
| 	uci set firewall.fbwifi=include | ||||
| 	uci set firewall.fbwifi.enabled=1 | ||||
| 	uci set firewall.fbwifi.family=ipv4 | ||||
| 	uci set firewall.fbwifi.path=/usr/share/fbwifi/firewall.include | ||||
| 	uci set firewall.fbwifi.reload=1 | ||||
| 	uci set firewall.fbwifi.type=script | ||||
|  | ||||
| 	uci set uhttpd.fbwifi_redirect=uhttpd | ||||
| 	uci set uhttpd.fbwifi_redirect.enabled=1 | ||||
| 	uci set uhttpd.fbwifi_redirect.cert='/tmp/fbwifi/https_server_cert' | ||||
| 	uci set uhttpd.fbwifi_redirect.home='/dev/null' | ||||
| 	uci set uhttpd.fbwifi_redirect.json_script='/tmp/fbwifi/uhttpd-redirect.json' | ||||
| 	uci set uhttpd.fbwifi_redirect.key='/tmp/fbwifi/https_server_key' | ||||
| 	uci set uhttpd.fbwifi_redirect.listen_http='0.0.0.0:2060' | ||||
| 	uci set uhttpd.fbwifi_redirect.listen_https='0.0.0.0:2061' | ||||
|  | ||||
| 	uci set uhttpd.main.cert='/tmp/fbwifi/https_server_cert' | ||||
| 	uci set uhttpd.main.json_script='/usr/share/fbwifi/uhttpd.json' | ||||
| 	uci set uhttpd.main.key='/tmp/fbwifi/https_server_key' | ||||
| 	uci set uhttpd.main.rfc1918_filter=0 | ||||
| 	;; | ||||
| reload) | ||||
| 	/usr/sbin/fbwifi_get_config | ||||
|  | ||||
| 	login_url=$(uci -c /var/state get fbwifi.main.captive_portal_url) | ||||
| 	[ -z "$login_url" ] && { | ||||
| 		logger -t fbwifi "captive_portal_url not available yet" | ||||
| 		exit 1 | ||||
| 	} | ||||
| 	printf '{ "request": [ ["redirect", "%s", 302] ] }' "$login_url" > /tmp/fbwifi/uhttpd-redirect.json | ||||
|  | ||||
| 	/etc/init.d/uhttpd restart | ||||
|  | ||||
| 	exit 0 | ||||
| 	;; | ||||
| esac | ||||
|  | ||||
| uci commit | ||||
| /etc/init.d/uhttpd restart | ||||
| reload_config | ||||
| @@ -1,8 +0,0 @@ | ||||
| echo -e "Runtime configuration and token DB\n" | ||||
| uci -c /var/state export fbwifi | ||||
|  | ||||
| echo -e "\nDynamic firewall flow rules\n" | ||||
| iptables -t mangle -L FBWIFI_CLIENT_TO_INTERNET | ||||
|  | ||||
| echo -e "\nDHCP leases\n" | ||||
| cat /tmp/dhcp.leases | ||||
| @@ -1,39 +0,0 @@ | ||||
| #!/usr/bin/lua | ||||
|  | ||||
| http = require("ssl.https") | ||||
| json = require("cjson") | ||||
| log = require("posix.syslog") | ||||
| socket = require("socket") | ||||
| require("uci") | ||||
| fbwifi = require("fbwifi") | ||||
|  | ||||
| GATEWAY_TOKEN = fbwifi.gateway_token() | ||||
| state = uci.cursor("/var/state", "/tmp/fbwifi") | ||||
|  | ||||
| payload="name="..socket.dns.gethostname() | ||||
|  | ||||
| function queue_ssid_update(iface) | ||||
| 	bssid_file="/sys/class/net/br-"..iface["network"].."/address" | ||||
| 	local file = io.open(bssid_file) | ||||
|         if file then | ||||
|             for line in file:lines() do | ||||
| 		payload=payload.."&bssid[]="..line | ||||
|             end | ||||
| 	    file:close() | ||||
| 	    payload=payload.."ssid[]="..iface["ssid"] | ||||
|         else | ||||
| 	    log.syslog(log.LOG_WARNING, "[fbwifi] Failed to find BSSID for interface br-"..iface["network"]) | ||||
|         end | ||||
| end | ||||
|  | ||||
| state:foreach("wireless", "wifi-iface", queue_ssid_update) | ||||
|  | ||||
| URL="https://api.fbwifi.com/v2.0/gateway" | ||||
| body, code, headers = http.request(URL.."?access_token="..GATEWAY_TOKEN, payload) | ||||
| if code == 200 then  | ||||
| 	log.syslog(log.LOG_INFO, "[fbwifi] gateway information updated "..body) | ||||
| 	os.exit(0) | ||||
| else | ||||
| 	log.syslog(log.LOG_WARNING, "[fbwifi] gateway API failed "..body) | ||||
| 	os.exit(code) | ||||
| end | ||||
| @@ -1,111 +0,0 @@ | ||||
| #!/usr/bin/lua | ||||
| http = require("ssl.https") | ||||
| json = require("cjson") | ||||
| require("uci") | ||||
| log = require("posix.syslog") | ||||
| fbwifi = require("fbwifi") | ||||
|  | ||||
| GATEWAY_TOKEN = fbwifi.gateway_token() | ||||
|  | ||||
| http_port = uci.get("fbwifi.main.http_port") | ||||
| https_port = uci.get("fbwifi.main.https_port") | ||||
|  | ||||
| statefile = assert(io.open("/var/state/fbwifi", "a"), "could not create state file") | ||||
| statefile:close() | ||||
|  | ||||
| state = uci.cursor("/var/state", "/tmp/fbwifi") | ||||
|  | ||||
| URL="https://api.fbwifi.com/v2.0/gateway" | ||||
| body, code, headers = http.request(URL.."?access_token="..GATEWAY_TOKEN.."&fields=config,config_version") | ||||
|  | ||||
| if code == 200 then | ||||
| 	log.syslog(log.LOG_INFO, "[fbwifi] Got gateway config ("..code..")") | ||||
| else | ||||
| 	log.syslog(log.LOG_CRIT, "[fbwifi] Failed to get gateway config ("..code..")") | ||||
| 	os.exit(1) | ||||
| end | ||||
|  | ||||
| obj = json.decode(body) | ||||
|  | ||||
| function save_cert(name, value) | ||||
| 	log.syslog(log.LOG_INFO, "[fbwifi] Saving cert "..name) | ||||
| 	local f = assert(io.open("/tmp/fbwifi/"..name, "w")) | ||||
| 	f:write(value) | ||||
| 	f:close() | ||||
| end | ||||
|  | ||||
| function process_redirect(ix, host) | ||||
| 	IP_SET = "ip addr replace dev lo "..host | ||||
| 	local result = os.execute(IP_SET) | ||||
| 	if result == 0 then | ||||
| 		log.syslog(log.LOG_INFO, "[fbwifi] Redirect address applied "..host) | ||||
| 	else | ||||
| 		log.syslog(log.LOG_WARNING, "[fbwifi] Failed to apply redirect address "..host) | ||||
| 	end | ||||
|  | ||||
| 	ip = string.match(host, '([0-9\.]*)/([0-9]*)') | ||||
| 	RULE_FMT="grep -q \"%s\" /etc/hosts || echo \"%s\tstar.fbwifigateway.net\" >> /etc/hosts" | ||||
| 	HOSTS_RULE = string.format(RULE_FMT, ip, ip) | ||||
| 	result = os.execute(HOSTS_RULE) | ||||
| 	if result == 0 then | ||||
| 		log.syslog(log.LOG_INFO, "[fbwifi] Cached redirect host for DNS") | ||||
| 	else | ||||
| 		log.syslog(log.LOG_WARNING, "[fbwifi] Failed to amend /etc/hosts") | ||||
| 		log.syslog(log.LOG_INFO, "[fbwifi] "..HOSTS_RULE) | ||||
| 	end | ||||
|  | ||||
| 	result = os.execute("iptables -t nat -A FBWIFI_HOST_REDIRLIST -p tcp --dport 80 -d "..ip.." -j ACCEPT # REDIRECT --to-ports "..http_port) | ||||
| 	--print(result) | ||||
| 	result = os.execute("iptables -t nat -A FBWIFI_HOST_REDIRLIST -p tcp --dport 443 -d "..ip.."  -j ACCEPT # REDIRECT --to-ports "..https_port) | ||||
| 	--print(result) | ||||
| end | ||||
|  | ||||
| save_cert("https_server_cert", obj['config']['https_server_cert']) | ||||
| save_cert("https_server_key", obj['config']['https_server_key']) | ||||
|  | ||||
| result = os.execute("iptables -t nat -F FBWIFI_HOST_REDIRLIST") | ||||
| --print(result) | ||||
| table.foreach(obj['config']['host_redirect_ips'], process_redirect) | ||||
|  | ||||
| RULE_FORMAT = "iptables -t mangle -A FBWIFI_TRAFFIC_ALLOWLIST -d %s -p %s --dport %s -j MARK --set-mark 0xfb" | ||||
| function process_traffic_rule(ix, rule) | ||||
| 	log.syslog(log.LOG_INFO, "[fbwifi] Traffic rule "..ix) | ||||
| 	 | ||||
| 	if rule["protocol"] == 6 then | ||||
| 		PROTO = "tcp" | ||||
| 	elseif rule["protocol"] == 17 then | ||||
| 		PROTO = "udp" | ||||
| 	end | ||||
| 	RULE = string.format(RULE_FORMAT, rule["ip"], PROTO, rule["port"]) | ||||
| 	local result = os.execute(RULE) | ||||
| 	if result == 0 then | ||||
| 		log.syslog(log.LOG_INFO, "[fbwifi] Traffic rule "..ix) | ||||
| 	else | ||||
| 		log.syslog(log.LOG_WARNING, "[fbwifi] Failed to install traffic rule ; "..RULE) | ||||
| 	end | ||||
| end | ||||
|  | ||||
| local cross_origin_list = {} | ||||
| function process_cross_origin_rule(ix, url) | ||||
| 	log.syslog(log.LOG_INFO, "[fbwifi] Cross origin rule "..url) | ||||
| 	table.insert(cross_origin_list, url) | ||||
| end | ||||
|  | ||||
| function process_url(url_purpose, fqdn) | ||||
| 	log.syslog(log.LOG_INFO, "[fbwifi] Caching "..url_purpose) | ||||
| 	state:set("fbwifi", "main", url_purpose, fqdn)	 | ||||
| end | ||||
|  | ||||
| state:set("fbwifi", "main", "config") | ||||
|  | ||||
| result = os.execute("iptables -t mangle -F FBWIFI_TRAFFIC_ALLOWLIST ") | ||||
| --print(result) | ||||
| table.foreach(obj['config']['traffic_allowlist'], process_traffic_rule) | ||||
| table.foreach(obj['config']['cross_origin_allowlist'], process_cross_origin_rule) | ||||
| table.foreach(obj['config']['urls'], process_url) | ||||
|  | ||||
| state:set("fbwifi", "main", "cross_origin_allow_rules", cross_origin_list) | ||||
| state:set("fbwifi", "main", "config_version", obj['config_version']) | ||||
|  | ||||
| state:save('fbwifi') | ||||
| state:commit('fbwifi') | ||||
| @@ -1,75 +0,0 @@ | ||||
| #!/usr/bin/lua | ||||
|  | ||||
| https = require("ssl.https") | ||||
| json = require("cjson") | ||||
| log = require("posix.syslog") | ||||
| fbwifi = require("fbwifi") | ||||
| require("uci") | ||||
|  | ||||
| state = uci.cursor("/var/state", "/tmp/fbwifi") | ||||
| GATEWAY_TOKEN = fbwifi.gateway_token() | ||||
|  | ||||
| request = {  | ||||
| 	tokens = {},  | ||||
| 	traffic_type = "total", | ||||
| 	config_version = state:get("fbwifi", "main", "config_version") | ||||
| } | ||||
|  | ||||
| function queue_token(client) | ||||
|  | ||||
| 	request.tokens[client.token]={ | ||||
| 		incoming = json.null, | ||||
| 		outgoing = json.null, | ||||
| 		connected_time_sec = json.null, | ||||
| 		inactive_time_sec = json.null, | ||||
| 		signal_rssi_dbm = json.null, | ||||
| 		--expected_tpus_mbps = json.null, | ||||
| 		is_connected = true | ||||
| 	} | ||||
|  | ||||
| end | ||||
|  | ||||
| state:foreach("fbwifi", "client", queue_token) | ||||
| print( "\nRequest:\n"..json.encode(request) ) | ||||
|  | ||||
| URL="https://api.fbwifi.com/v2.0/tokens" | ||||
| BODY=string.format( | ||||
| 	"tokens=%s&traffic_type=%s&config_version=%s", | ||||
| 	json.encode(request.tokens), | ||||
| 	"total", | ||||
| 	state:get("fbwifi", "main", "config_version") | ||||
| ) | ||||
|  | ||||
| body, code, headers = https.request(URL.."?access_token="..GATEWAY_TOKEN, BODY) | ||||
|  | ||||
| if code then | ||||
| 	print( "\nResponse:\n"..body ) | ||||
| end | ||||
|  | ||||
| response = json.decode(body) | ||||
| --print(response) | ||||
| --table.foreach(response,print) | ||||
| --table.foreach(response.tokens,print) | ||||
|  | ||||
| if response.config_valid then | ||||
| 	log.syslog(log.LOG_INFO, "[fbwifi] Config validated") | ||||
| else | ||||
| 	log.syslog(log.LOG_WARNING, "[fbwifi] config is stale, refreshing config") | ||||
|         local result = os.execute("/usr/sbin/fbwifi reload") | ||||
|         if result == 0 then | ||||
|                 log.syslog(log.LOG_INFO, "[fbwifi] successfully fetched and loaded new config ") | ||||
|         else | ||||
|                 log.syslog(log.LOG_WARNING, "[fbwifi] failed to fetch and load new config, possible stale config") | ||||
|         end | ||||
| end | ||||
|  | ||||
| function process_token(token, metadata) | ||||
| 	table.foreach(metadata,print) | ||||
| 	if metadata.valid then | ||||
| 		print("OK: "..token)	 | ||||
| 	else | ||||
| 		print("Nok: "..token)	 | ||||
| 		fbwifi.revoke_client_rule( token ) | ||||
| 	end | ||||
| end | ||||
| table.foreach(response.tokens,process_token) | ||||
| @@ -1,75 +0,0 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| # SPDX-License-Identifier: GPL-2.0-only | ||||
| # Copyright (c) Facebook, Inc. and its affiliates. | ||||
|  | ||||
| IPT4="/usr/sbin/iptables" | ||||
|  | ||||
| set -- --wait 1 --wait-interval 100 | ||||
|  | ||||
| fbwifi_http_port="$(uci get fbwifi.main.http_port)" | ||||
| [ -n "$fbwifi_http_port" ] || { | ||||
| 	logger -t fbwifi "required option http_port not set" | ||||
| 	exit 1 | ||||
| } | ||||
|  | ||||
| fbwifi_https_port="$(uci get fbwifi.main.https_port)" | ||||
| [ -n "$fbwifi_https_port" ] || { | ||||
| 	logger -t fbwifi "required option https_port not set" | ||||
| 	exit 1 | ||||
| } | ||||
|  | ||||
| fbwifi_zone="$(uci get fbwifi.main.zone)" | ||||
| [ -n "$fbwifi_zone" ] || { | ||||
| 	logger -t fbwifi "required option zone  not set" | ||||
| 	exit 1 | ||||
| } | ||||
|  | ||||
| fbwifi_ifaces="$(fw3 -q zone "$fbwifi_zone")" | ||||
|  | ||||
| ## Create custom chains | ||||
| "$IPT4" "$@" -t filter -N FBWIFI_FORWARD 2>/dev/null | ||||
| "$IPT4" "$@" -t filter -N FBWIFI_INPUT 2>/dev/null | ||||
| "$IPT4" "$@" -t mangle -N FBWIFI_CLIENT_TO_INTERNET 2>/dev/null | ||||
| "$IPT4" "$@" -t mangle -N FBWIFI_PREROUTING 2>/dev/null | ||||
| "$IPT4" "$@" -t mangle -N FBWIFI_TRAFFIC_ALLOWLIST 2>/dev/null | ||||
| "$IPT4" "$@" -t nat -N FBWIFI_CLIENT_TO_INTERNET 2>/dev/null | ||||
| "$IPT4" "$@" -t nat -N FBWIFI_PREROUTING 2>/dev/null | ||||
| "$IPT4" "$@" -t nat -N FBWIFI_HOST_REDIRLIST 2>/dev/null | ||||
|  | ||||
| ## Flush custom chains | ||||
| "$IPT4" "$@" -t filter -F FBWIFI_FORWARD | ||||
| "$IPT4" "$@" -t filter -F FBWIFI_INPUT | ||||
| "$IPT4" "$@" -t mangle -F FBWIFI_CLIENT_TO_INTERNET | ||||
| "$IPT4" "$@" -t mangle -F FBWIFI_PREROUTING | ||||
| "$IPT4" "$@" -t mangle -F FBWIFI_TRAFFIC_ALLOWLIST | ||||
| "$IPT4" "$@" -t nat -F FBWIFI_CLIENT_TO_INTERNET | ||||
| "$IPT4" "$@" -t nat -F FBWIFI_PREROUTING | ||||
| "$IPT4" "$@" -t nat -F FBWIFI_HOST_REDIRLIST | ||||
|  | ||||
| ## Populate custom chains | ||||
| "$IPT4" "$@" -t filter -A FBWIFI_FORWARD -p udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT | ||||
| "$IPT4" "$@" -t filter -A FBWIFI_FORWARD -m conntrack --ctstate NEW -m mark --mark 0xfb -j ACCEPT | ||||
| "$IPT4" "$@" -t filter -A FBWIFI_FORWARD -j REJECT | ||||
| "$IPT4" "$@" -t filter -A FBWIFI_INPUT -p tcp --dport "$fbwifi_http_port" -m conntrack --ctstate NEW -j ACCEPT | ||||
| "$IPT4" "$@" -t filter -A FBWIFI_INPUT -p tcp --dport "$fbwifi_https_port"  -m conntrack --ctstate NEW -j ACCEPT | ||||
| "$IPT4" "$@" -t filter -A FBWIFI_INPUT -p tcp --dport 443 -m conntrack --ctstate NEW -j ACCEPT | ||||
| "$IPT4" "$@" -t mangle -A FBWIFI_PREROUTING -j FBWIFI_CLIENT_TO_INTERNET | ||||
| "$IPT4" "$@" -t mangle -A FBWIFI_PREROUTING -j FBWIFI_TRAFFIC_ALLOWLIST | ||||
| "$IPT4" "$@" -t nat -A FBWIFI_PREROUTING -j FBWIFI_CLIENT_TO_INTERNET | ||||
| "$IPT4" "$@" -t nat -A FBWIFI_CLIENT_TO_INTERNET -p tcp --dport 80 -m conntrack --ctstate NEW -j FBWIFI_HOST_REDIRLIST | ||||
| "$IPT4" "$@" -t nat -A FBWIFI_CLIENT_TO_INTERNET -p tcp --dport 443 -m conntrack --ctstate NEW -j FBWIFI_HOST_REDIRLIST | ||||
| "$IPT4" "$@" -t nat -A FBWIFI_CLIENT_TO_INTERNET -p udp --dport 443 -m conntrack --ctstate NEW -j FBWIFI_HOST_REDIRLIST | ||||
| "$IPT4" "$@" -t nat -A FBWIFI_CLIENT_TO_INTERNET -p tcp --dport 80 -m conntrack --ctstate NEW -m mark --mark 0xfb -j ACCEPT | ||||
| "$IPT4" "$@" -t nat -A FBWIFI_CLIENT_TO_INTERNET -p tcp --dport 443 -m conntrack --ctstate NEW -m mark --mark 0xfb -j ACCEPT | ||||
| "$IPT4" "$@" -t nat -A FBWIFI_CLIENT_TO_INTERNET -p udp --dport 443 -m conntrack --ctstate NEW -m mark --mark 0xfb -j ACCEPT | ||||
| "$IPT4" "$@" -t nat -A FBWIFI_CLIENT_TO_INTERNET -p tcp --dport 80 -m conntrack --ctstate NEW -j REDIRECT --to-ports "$fbwifi_http_port" | ||||
|  | ||||
| ## Hook custom chains in firewall3 chains | ||||
| "$IPT4" "$@" -t filter -I "zone_${fbwifi_zone}_input" 2 -j FBWIFI_INPUT | ||||
| "$IPT4" "$@" -t filter -I "zone_${fbwifi_zone}_forward" 2 -j FBWIFI_FORWARD | ||||
| "$IPT4" "$@" -t nat -I "zone_${fbwifi_zone}_prerouting" 2 -j FBWIFI_PREROUTING | ||||
| # There are no firewall3 zone chains in the mangle table so we need to do this for all interfaces in the zone | ||||
| for iface in $fbwifi_ifaces; do | ||||
| 	"$IPT4" "$@" -t mangle -I PREROUTING -i "$iface" -j FBWIFI_PREROUTING | ||||
| done | ||||
| @@ -1,8 +0,0 @@ | ||||
| { | ||||
|   "request": [ | ||||
|     [ "if", | ||||
|       [ "regex", "REQUEST_URI", "^/fbwifi" ], | ||||
|       [ "rewrite", "/cgi-bin%REQUEST_URI%" ] | ||||
|     ] | ||||
|   ] | ||||
| } | ||||
| @@ -1,70 +0,0 @@ | ||||
| #!/usr/bin/lua | ||||
| require("uci") | ||||
| log = require("posix.syslog") | ||||
| fbwifi = require("fbwifi") | ||||
|  | ||||
| state = uci.cursor("/var/state", "/tmp/fbwifi") | ||||
| function process_cors() | ||||
| 	origin = os.getenv("HTTP_ORIGIN") | ||||
| 	log.syslog(log.LOG_INFO, string.format("[fbwifi] [auth] process_cors origin %s", origin or 'not found') ) | ||||
| 	if string.len(origin or '') > 0 then | ||||
| 		allow_list = state:get("fbwifi", "main", "cross_origin_allow_rules") | ||||
| 		for _, value in pairs(allow_list) do | ||||
|     			if value == origin then | ||||
| 				log.syslog(log.LOG_INFO, "[fbwifi] [auth] process_cors Appending CORS Headers to HTTP") | ||||
| 				print("Access-Control-Allow-Origin: "..origin) | ||||
| 				print("Vary: Origin") | ||||
| 				break | ||||
| 			end | ||||
| 		end | ||||
| 	else	 | ||||
| 		log.syslog(log.LOG_INFO, "[fbwifi] [auth] process_cors No CORS Headers added to Response") | ||||
| 	end | ||||
| end | ||||
|  | ||||
| method = os.getenv("REQUEST_METHOD") | ||||
| if method == 'GET' then | ||||
| 	log.syslog(log.LOG_INFO, "[fbwifi] [auth] GET handler") | ||||
| 	print("Status: 302 Found") | ||||
| 	print("Location: "..state:get("fbwifi", "main", "landing_page_url")) | ||||
| 	process_cors() | ||||
| 	print ('\n') | ||||
|  | ||||
| elseif method == 'POST' then | ||||
| 	local token | ||||
| 	 | ||||
| 	log.syslog(log.LOG_INFO, "[fbwifi] [auth] POST handler") | ||||
| 	process_cors() | ||||
| 	print("Status: 200 OK") | ||||
|  | ||||
| 	form_data=io.read() | ||||
| 	while form_data do | ||||
| 		token = string.match(form_data, '[%d]+') | ||||
| 		if string.len(token or '') > 14 then | ||||
|  | ||||
| 			client = os.getenv("REMOTE_ADDR") | ||||
| 			f = io.popen("awk '/"..client..".*0x2/ { printf(\"%s\", $4) }' /proc/net/arp", 'r') | ||||
| 			client_mac = assert(f:read('*a')) | ||||
| 			f:close() | ||||
|  | ||||
| 			if fbwifi.validate_token(token) then | ||||
|                                 log.syslog(log.LOG_INFO, string.format( "[fbwifi] [auth] POST handler : Validating Token (%s) for MAC (%s)", token or 'nil', client_mac or 'nil') ) | ||||
| 				fbwifi.instate_client_rule(token, client_mac) | ||||
| 				print("\n{\"valid\":true}\n") | ||||
| 			else | ||||
|                                 log.syslog(log.LOG_WARNING, string.format( "[fbwifi] [auth] POST handler : ! Invalid token (%s) for mac (%s) !", token or 'nil', client_mac or 'nil') ) | ||||
| 				fbwifi.revoke_client_rule(token) | ||||
| 				print("\n{\"valid\":false}\n") | ||||
| 			end | ||||
| 			log.syslog(log.LOG_INFO, "[fbwifi] [auth] POST handler completed") | ||||
| 			return | ||||
| 		end | ||||
|  | ||||
| 		form_data=io.read() | ||||
| 	end | ||||
| 	print ('\n') | ||||
|  | ||||
| 	log.syslog(log.LOG_WARNING, string.format("[fbwifi] [auth] POST handler : token not found" )) | ||||
| 	fbwifi.revoke_client_rule(token) | ||||
| 	print("\n{\"valid\":false}\n") | ||||
| end | ||||
| @@ -1,42 +0,0 @@ | ||||
| #!/usr/bin/lua | ||||
| json = require("cjson") | ||||
| require("uci") | ||||
|  | ||||
| state = uci.cursor("/var/state", "/tmp/fbwifi") | ||||
| client_mac = "" | ||||
| token = "" | ||||
|  | ||||
| response = {} | ||||
| response['venue-info-url'] = state:get("fbwifi", "main", "capport_venue_info_url") | ||||
|  | ||||
| function map_remote_mac_to_token(client) | ||||
|         for key, value in pairs(client) do | ||||
|                 if | ||||
|                         key == 'mac' and | ||||
|                         value == client_mac | ||||
|                 then | ||||
| 			token = client.token | ||||
|                         return false | ||||
|                 end | ||||
|         end | ||||
| end | ||||
|  | ||||
| function hasValidToken(client_ip) | ||||
| 	f = io.popen("awk '/"..client_ip..".*0x2/ { printf(\"%s\", $4) }' /proc/net/arp", 'r') | ||||
| 	client_mac = assert(f:read('*a')) | ||||
| 	f:close() | ||||
| 	state:foreach("fbwifi", "client", map_remote_mac_to_token) | ||||
|  | ||||
| 	return 0 < string.len(token) | ||||
| end | ||||
|  | ||||
| print("Content-type: application/captive+json; charset=utf-8\n") | ||||
|  | ||||
| client = os.getenv("REMOTE_ADDR") | ||||
| response['captive'] = not hasValidToken(client) | ||||
|  | ||||
| if response['captive'] then | ||||
| 	response['user-portal-url'] = state:get("fbwifi", "main", "captive_portal_url") | ||||
| end | ||||
|  | ||||
| print( json.encode(response) ) | ||||
| @@ -1,57 +0,0 @@ | ||||
| #!/usr/bin/lua | ||||
| json = require("cjson") | ||||
| fbwifi = require("fbwifi") | ||||
|  | ||||
| state = uci.cursor("/var/state", "/tmp/fbwifi") | ||||
| GATEWAY_TOKEN = fbwifi.gateway_token() | ||||
|  | ||||
| response = { api_version = "2.0", token = json.null } | ||||
| client_mac = "" | ||||
|  | ||||
| function process_cors() | ||||
|         origin = os.getenv("HTTP_ORIGIN") | ||||
|         if string.len(origin or '') > 0 then | ||||
|                 allow_list = state:get("fbwifi", "main", "cross_origin_allow_rules") | ||||
|                 for _, value in pairs(allow_list) do | ||||
|                         if value == origin then | ||||
|                                 print("Access-Control-Allow-Origin: "..origin) | ||||
|                                 print("Vary: Origin") | ||||
|                                 break | ||||
|                         end | ||||
|                 end | ||||
|         end | ||||
| end | ||||
|  | ||||
| function map_remote_mac_to_token(client) | ||||
|  | ||||
| 	for key, value in pairs(client) do | ||||
| 		if | ||||
| 			key == 'mac' and | ||||
| 			value == client_mac | ||||
| 		then | ||||
| 			response.token = client.token | ||||
| 			return false -- escape outer loop | ||||
| 		end | ||||
| 	end | ||||
| end | ||||
|  | ||||
| function getClientToken(client_ip) | ||||
| 	f = io.popen("awk '/"..client_ip..".*0x2/ { printf(\"%s\", $4) }' /proc/net/arp", 'r') | ||||
| 	client_mac = assert(f:read('*a')) | ||||
| 	f:close() | ||||
|  | ||||
| 	state:foreach("fbwifi", "client", map_remote_mac_to_token) | ||||
| end | ||||
|  | ||||
| function getGatewayId() | ||||
| 	id = string.match(GATEWAY_TOKEN, 'FBWIFI:GATEWAY|[0-9]*|([0-9]*)') | ||||
| 	return id | ||||
| end | ||||
|  | ||||
| process_cors() | ||||
| print("Content-type: application/json; charset=utf-8\n") | ||||
|  | ||||
| getClientToken(os.getenv("REMOTE_ADDR")) | ||||
| response.gateway_id = getGatewayId() | ||||
|  | ||||
| print( json.encode(response) ) | ||||
| @@ -1,12 +0,0 @@ | ||||
| -- SPDX-License-Identifier: GPL-2.0-only | ||||
| -- Copyright (c) Facebook, Inc. and its affiliates. | ||||
|  | ||||
| module("luci.controller.fbwifi", package.seeall) | ||||
|  | ||||
| sys = require "luci.sys" | ||||
| ut = require "luci.util" | ||||
|  | ||||
| function index() | ||||
|     entry({"admin", "network", "fbwifi"}, template("fbwifi"), "Facebook Wi-Fi", 90).dependent=false | ||||
| end | ||||
|  | ||||
| @@ -1,16 +0,0 @@ | ||||
| <%# | ||||
|  Copyright | ||||
|  Licensed to the public under the GNU General Public License v2. | ||||
| -%> | ||||
|  | ||||
| <%+header%> | ||||
|  | ||||
| <h1>Facebook Wi-Fi</h1> | ||||
| <% | ||||
| 	require("uci") | ||||
| 	state = uci.cursor("/var/state", "/tmp/fbwifi") | ||||
| 	url = state:get("fbwifi", "main", "captive_portal_config_url") | ||||
| %> | ||||
| <a href="<% print(url) %>">Configure FB business page</a> | ||||
|  | ||||
| <%+footer%> | ||||
| @@ -4,17 +4,17 @@ ARCH:=arm | ||||
| BOARD:=ipq807x | ||||
| BOARDNAME:=Qualcomm Atheros AX | ||||
| SUBTARGETS:=ipq807x ipq60xx ipq50xx | ||||
| FEATURES:=squashfs ramdisk nand pcie usb usbgadget | ||||
| FEATURES:=squashfs ramdisk nand pcie usb | ||||
| KERNELNAME:=Image dtbs | ||||
| CPU_TYPE:=cortex-a7 | ||||
|  | ||||
| KERNEL_PATCHVER:=5.4 | ||||
| KERNEL_NAME_SUFFIX=-qsdk-d5fcb18e5420670c8734c6a659873e73adab6dac | ||||
| KERNEL_PATCHVER:=4.4 | ||||
| KERNEL_NAME_SUFFIX=-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016 | ||||
|  | ||||
| include $(INCLUDE_DIR)/target.mk | ||||
| DEFAULT_PACKAGES += kmod-qca-nss-dp kmod-qca-ssdk swconfig \ | ||||
| 	kmod-qca-nss-drv \ | ||||
| 	kmod-usb-phy-ipq807x kmod-usb-dwc3-qcom-internal \ | ||||
| 	kmod-usb-phy-ipq807x kmod-usb-dwc3-of-simple \ | ||||
| 	kmod-ath11k-ahb kmod-qrtr_mproc wpad \ | ||||
| 	kmod-gpio-button-hotplug \ | ||||
| 	qca-thermald-10.4 qca-ssdk-shell kmod-qca-nss-drv-bridge-mgr \ | ||||
|   | ||||
| @@ -34,6 +34,11 @@ edgecore,eap104) | ||||
|         ucidef_set_led_wlan "wlan5g" "WLAN5G" "green:wifi5" "phy1tpt" | ||||
| 	ucidef_set_led_netdev "wan" "wan" "yellow:uplink" "eth0" | ||||
| 	;; | ||||
| liteon,wpx8324) | ||||
| 	ucidef_set_led_wlan "wlan2g" "WLAN2G" "orange:wifi2" "phy0tpt" | ||||
| 	ucidef_set_led_wlan "wlan5g" "WLAN5G" "green:wifi5" "phy1tpt" | ||||
| 	ucidef_set_led_netdev "wan" "wan" "blue:uplink" "eth0" | ||||
| 	;; | ||||
| hfcl,ion4xi|\ | ||||
| hfcl,ion4xe) | ||||
|         ucidef_set_led_wlan "wlan5g" "WLAN5G" "blue:wifi5" "phy0tpt" | ||||
|   | ||||
| @@ -31,9 +31,15 @@ qcom_setup_interfaces() | ||||
| 	cig,wf194c|\ | ||||
| 	cig,wf194c4|\ | ||||
| 	edgecore,eap106|\ | ||||
| 	indio,um-310ax-v1|\ | ||||
| 	indio,um-510axp-v1|\ | ||||
| 	indio,um-510axm-v1|\ | ||||
| 	qcom,ipq5018-mp03.3|\ | ||||
| 	yuncore,ax840|\ | ||||
| 	sercomm,wallaby) | ||||
| 	motorola,q14|\ | ||||
| 	sercomm,wallaby|\ | ||||
| 	plasmacloud,pax1800-v1|\ | ||||
| 	plasmacloud,pax1800-v2) | ||||
| 		ucidef_set_interface_lan "eth0" | ||||
| 		ucidef_set_interface_wan "eth1" | ||||
| 		;; | ||||
| @@ -44,6 +50,7 @@ qcom_setup_interfaces() | ||||
| 		;; | ||||
| 	edgecore,eap102|\ | ||||
| 	edgecore,eap104|\ | ||||
| 	liteon,wpx8324|\ | ||||
| 	wallys,dr6018|\ | ||||
| 	cig,wf188n|\ | ||||
| 	cig,wf196) | ||||
| @@ -55,7 +62,9 @@ qcom_setup_interfaces() | ||||
| 		ucidef_set_interface_wan "eth4" | ||||
| 		;; | ||||
| 	wallys,dr6018-v4|\ | ||||
| 	glinet,ax1800) | ||||
| 	glinet,ax1800|\ | ||||
| 	meshpp,s618-cp03|\ | ||||
| 	meshpp,s618-cp01) | ||||
| 		ucidef_set_interface_lan "eth1 eth2 eth3 eth4" | ||||
| 		ucidef_set_interface_wan "eth0" | ||||
| 		;; | ||||
| @@ -94,6 +103,13 @@ qcom_setup_macs() | ||||
| 		ucidef_set_network_device_mac eth1 $lan_mac | ||||
| 		ucidef_set_label_macaddr $wan_mac | ||||
| 		;; | ||||
| 	indio,um-310ax-v1|\ | ||||
| 	indio,um-510axp-v1|\ | ||||
| 	indio,um-510axm-v1|\ | ||||
| 	yuncore,ax840) | ||||
| 		wan_mac=$(cat /sys/class/net/eth1/address) | ||||
| 		lan_mac=$(macaddr_add "$wan_mac" 1) | ||||
| 		;; | ||||
| 	*) | ||||
| 		wan_mac=$(cat /sys/class/net/eth0/address) | ||||
| 		lan_mac=$(macaddr_add "$wan_mac" 1) | ||||
|   | ||||
| @@ -49,6 +49,15 @@ ath11k_generate_macs_ion4x() { | ||||
| 	echo -ne \\x${wifimac2//:/\\x} >> /lib/firmware/ath11k-macs | ||||
| } | ||||
|  | ||||
| ath11k_generate_macs_pax1800() { | ||||
| 	touch /lib/firmware/ath11k-macs | ||||
| 	eth=$(cat /sys/class/net/eth0/address) | ||||
| 	mac1=$(macaddr_add $eth 10) | ||||
| 	mac2=$(macaddr_add $eth 2) | ||||
| 	echo -ne \\x${mac1//:/\\x} >> /lib/firmware/ath11k-macs | ||||
| 	echo -ne \\x${mac2//:/\\x} >> /lib/firmware/ath11k-macs | ||||
| } | ||||
|  | ||||
| caldata_die() { | ||||
|         echo "caldata: " "$*" | ||||
|         exit 1 | ||||
| @@ -77,6 +86,9 @@ case "$FIRMWARE" in | ||||
| 	cig,wf196|\ | ||||
| 	edgecore,eap102 |\ | ||||
| 	edgecore,eap106 |\ | ||||
| 	indio,um-310ax-v1|\ | ||||
| 	indio,um-510axp-v1|\ | ||||
| 	indio,um-510axm-v1|\ | ||||
| 	qcom,ipq807x-hk01|\ | ||||
| 	qcom,ipq807x-hk14|\ | ||||
| 	tplink,ex227|\ | ||||
| @@ -96,9 +108,14 @@ case "$FIRMWARE" in | ||||
| 	hfcl,ion4xe|\ | ||||
| 	wallys,dr6018|\ | ||||
| 	wallys,dr6018-v4|\ | ||||
| 	meshpp,ipq6018-cp01|\ | ||||
| 	meshpp,ipq6018-cp03|\ | ||||
| 	qcom,ipq6018-cp03|\ | ||||
| 	qcom,ipq6018-cp01|\ | ||||
| 	xiaomi,ax1800|\ | ||||
| 	glinet,ax1800) | ||||
| 	glinet,ax1800|\ | ||||
| 	plasmacloud,pax1800-v1|\ | ||||
| 	plasmacloud,pax1800-v2) | ||||
|                 caldata_extract "0:ART" 0x1000 0x20000   | ||||
| 		;; | ||||
| 	esac | ||||
| @@ -107,14 +124,25 @@ ath11k/IPQ5018/hw1.0/caldata.bin) | ||||
| 	case "$board" in | ||||
| 	cybertan,eww622-a1|\ | ||||
| 	edgecore,eap104|\ | ||||
| 	liteon,wpx8324|\ | ||||
| 	motorola,q14|\ | ||||
| 	qcom,ipq5018-mp03.1) | ||||
|                 caldata_extract "0:ART" 0x1000 0x20000   | ||||
| 		;; | ||||
| 	esac | ||||
| 	;; | ||||
| ath11k/qcn6122/hw1.0/caldata_1.bin) | ||||
| 	case "$board" in | ||||
| 	motorola,q14) | ||||
|                 caldata_extract "0:ART" 0x26800 0x20000   | ||||
| 		;; | ||||
| 	esac | ||||
| 	;; | ||||
| ath11k/qcn6122/hw1.0/caldata_2.bin) | ||||
| 	case "$board" in | ||||
| 	edgecore,eap104) | ||||
| 	motorola,q14|\ | ||||
| 	edgecore,eap104|\ | ||||
| 	liteon,wpx8324) | ||||
|                 caldata_extract "0:ART" 0x4c000 0x20000   | ||||
| 		;; | ||||
| 	esac | ||||
| @@ -122,6 +150,7 @@ ath11k/qcn6122/hw1.0/caldata_2.bin) | ||||
| ath11k/QCN9074/hw1.0/caldata_1.bin) | ||||
| 	case "$board" in | ||||
| 	cig,wf196|\ | ||||
| 	wallys,dr6018-v4|\ | ||||
| 	cybertan,eww622-a1|\ | ||||
| 	qcom,ipq5018-mp03.1|\ | ||||
| 	qcom,ipq807x-hk14) | ||||
| @@ -146,8 +175,12 @@ ath11k-macs) | ||||
| 	edgecore,eap101) | ||||
| 		ath11k_generate_macs_eap101 | ||||
| 		;; | ||||
| 	yuncore,ax840|\ | ||||
| 	edgecore,eap102|\ | ||||
| 	edgecore,eap106|\ | ||||
| 	indio,um-310ax-v1|\ | ||||
| 	indio,um-510axp-v1|\ | ||||
| 	indio,um-510axm-v1|\ | ||||
| 	cig,wf188n) | ||||
| 		ath11k_generate_macs | ||||
| 		;; | ||||
| @@ -155,6 +188,10 @@ ath11k-macs) | ||||
| 	cig,wf194c) | ||||
| 		ath11k_generate_macs_wf194 | ||||
| 		;; | ||||
| 	plasmacloud,pax1800-v1|\ | ||||
| 	plasmacloud,pax1800-v2) | ||||
| 		ath11k_generate_macs_pax1800 | ||||
| 		;; | ||||
| 	esac | ||||
| 	;; | ||||
| *) | ||||
|   | ||||
| @@ -11,7 +11,7 @@ boot() { | ||||
| 	edgecore,eap101|\ | ||||
| 	edgecore,eap102) | ||||
| 		avail=$(fw_printenv -n upgrade_available) | ||||
| 		[ ${avail} -eq 0 ] && fw_setenv upgrade_available 1 | ||||
| 		[ "${avail}" -eq 1 ] || fw_setenv upgrade_available 1 | ||||
| 		fw_setenv bootcount 0 | ||||
| 		;; | ||||
| 	esac | ||||
|   | ||||
							
								
								
									
										126
									
								
								feeds/ipq807x/ipq807x/base-files/lib/upgrade/dualboot_datachk.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										126
									
								
								feeds/ipq807x/ipq807x/base-files/lib/upgrade/dualboot_datachk.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,126 @@ | ||||
| # The U-Boot loader with the datachk patchset for dualbooting requires image | ||||
| # sizes and checksums to be provided in the U-Boot environment. | ||||
| # The devices come with 2 main partitions - while one is active | ||||
| # sysupgrade will flash the other. The boot order is changed to boot the | ||||
| # newly flashed partition. If the new partition can't be booted due to | ||||
| # upgrade failures the previously used partition is loaded. | ||||
|  | ||||
| platform_post_upgrade_sanity_check() | ||||
| { | ||||
| 	local part_name=$1 | ||||
| 	local inactive_mtd=$2 | ||||
| 	local cfg_md5=$3 | ||||
| 	local part_offset=$4 | ||||
| 	local part_size=$5 | ||||
|  | ||||
| 	md5_part_disk=$(dd if=/dev/${inactive_mtd} bs=$((64*1024)) skip=$((part_offset / (64*1024))) count=$((part_size / (64*1024))) 2>&- | md5sum | awk '{print $1}') | ||||
|  | ||||
| 	if [ "${cfg_md5}" != "${md5_part_disk}" ]; then | ||||
| 	      echo "post-flashing checksum mismatch: ${part_name}" >&2 | ||||
| 	      echo "${cfg_md5} != ${md5_part_disk}" | ||||
| 	      return 1 | ||||
| 	fi | ||||
|  | ||||
| 	return 0 | ||||
| } | ||||
|  | ||||
| platform_do_upgrade_dualboot_datachk() { | ||||
| 	local tar_file="$1" | ||||
| 	local restore_backup | ||||
| 	local primary_kernel_mtd | ||||
|  | ||||
| 	local setenv_script="/tmp/fw_env_upgrade" | ||||
|  | ||||
| 	local kernel_mtd="$(find_mtd_index $PART_NAME)" | ||||
| 	local kernel_offset="$(cat /sys/class/mtd/mtd${kernel_mtd}/offset)" | ||||
| 	local total_size="$(cat /sys/class/mtd/mtd${kernel_mtd}/size)" | ||||
|  | ||||
| 	# detect to which flash region the new image is written to. | ||||
| 	# | ||||
| 	# 1. check what is the mtd index for the first flash region on this | ||||
| 	#    device | ||||
| 	# 2. check if the target partition ("inactive") has the mtd index of | ||||
| 	#    the first flash region | ||||
| 	# | ||||
| 	#    - when it is: the new bootseq will be 1,2 and the first region is | ||||
| 	#      modified | ||||
| 	#    - when it isnt: bootseq will be 2,1 and the second region is | ||||
| 	#      modified | ||||
| 	# | ||||
| 	# The detection has to be done via the hardcoded mtd partition because | ||||
| 	# the current boot might be done with the fallback region. Let us | ||||
| 	# assume that the current bootseq is 1,2. The bootloader detected that | ||||
| 	# the image in flash region 1 is corrupt and thus switches to flash | ||||
| 	# region 2. The bootseq in the u-boot-env is now still the same and | ||||
| 	# the sysupgrade code can now only rely on the actual mtd indexes and | ||||
| 	# not the bootseq variable to detect the currently booted flash | ||||
| 	# region/image. | ||||
| 	# | ||||
| 	# In the above example, an implementation which uses bootseq ("1,2") to | ||||
| 	# detect the currently booted image would assume that region 1 is booted | ||||
| 	# and then overwrite the variables for the wrong flash region (aka the | ||||
| 	# one which isn't modified). This could result in a device which doesn't | ||||
| 	# boot anymore to Linux until it was reflashed with ap51-flash. | ||||
| 	local next_boot_part="1" | ||||
| 	case "$(board_name)" in | ||||
| 	plasmacloud,pax1800-v1|\ | ||||
| 	plasmacloud,pax1800-v2) | ||||
| 		primary_kernel_mtd=9 | ||||
| 		;; | ||||
| 	*) | ||||
| 		echo "failed to detect primary kernel mtd partition for board" | ||||
| 		return 1 | ||||
| 		;; | ||||
| 	esac | ||||
| 	[ "$kernel_mtd" = "$primary_kernel_mtd" ] || next_boot_part="2" | ||||
|  | ||||
| 	local board_dir=$(tar tf $tar_file | grep -m 1 '^sysupgrade-.*/$') | ||||
| 	board_dir=${board_dir%/} | ||||
|  | ||||
| 	local kernel_length=$(tar xf $tar_file ${board_dir}/kernel -O | wc -c) | ||||
| 	local rootfs_length=$(tar xf $tar_file ${board_dir}/root -O | wc -c) | ||||
| 	# rootfs without EOF marker | ||||
| 	rootfs_length=$((rootfs_length-4)) | ||||
|  | ||||
| 	local kernel_md5=$(tar xf $tar_file ${board_dir}/kernel -O | md5sum); kernel_md5="${kernel_md5%% *}" | ||||
| 	# md5 checksum of rootfs with EOF marker | ||||
| 	local rootfs_md5=$(tar xf $tar_file ${board_dir}/root -O | dd bs=1 count=$rootfs_length | md5sum); rootfs_md5="${rootfs_md5%% *}" | ||||
|  | ||||
| 	# | ||||
| 	# add tar support to get_image() to use default_do_upgrade() instead? | ||||
| 	# | ||||
|  | ||||
| 	# take care of restoring a saved config | ||||
| 	[ -n "$UPGRADE_BACKUP" ] && restore_backup="${MTD_CONFIG_ARGS} -j ${UPGRADE_BACKUP}" | ||||
|  | ||||
| 	mtd -q erase inactive | ||||
| 	tar xf $tar_file ${board_dir}/root -O | mtd -n -p $kernel_length $restore_backup write - $PART_NAME | ||||
| 	tar xf $tar_file ${board_dir}/kernel -O | mtd -n write - $PART_NAME | ||||
|  | ||||
| 	platform_post_upgrade_sanity_check "kernel" "mtd${kernel_mtd}" $kernel_md5 0 $kernel_length || return 1 | ||||
| 	platform_post_upgrade_sanity_check "rootfs" "mtd${kernel_mtd}" $rootfs_md5 $kernel_length $rootfs_length || return 1 | ||||
|  | ||||
| 	# prepare new u-boot env | ||||
| 	if [ "$next_boot_part" = "1" ]; then | ||||
| 		echo "bootseq 1,2" > $setenv_script | ||||
| 	else | ||||
| 		echo "bootseq 2,1" > $setenv_script | ||||
| 	fi | ||||
|  | ||||
| 	printf "kernel_size_%i 0x%08x\n" $next_boot_part $kernel_length >> $setenv_script | ||||
| 	printf "vmlinux_start_addr 0x%08x\n" ${kernel_offset} >> $setenv_script | ||||
| 	printf "vmlinux_size 0x%08x\n" ${kernel_length} >> $setenv_script | ||||
| 	printf "vmlinux_checksum %s\n" ${kernel_md5} >> $setenv_script | ||||
|  | ||||
| 	printf "rootfs_size_%i 0x%08x\n" $next_boot_part $((total_size-kernel_length)) >> $setenv_script | ||||
| 	printf "rootfs_start_addr 0x%08x\n" $((kernel_offset+kernel_length)) >> $setenv_script | ||||
| 	printf "rootfs_size 0x%08x\n" ${rootfs_length} >> $setenv_script | ||||
| 	printf "rootfs_checksum %s\n" ${rootfs_md5} >> $setenv_script | ||||
|  | ||||
| 	# store u-boot env changes | ||||
| 	mkdir -p /var/lock | ||||
| 	fw_setenv -s $setenv_script || { | ||||
| 		echo "failed to update U-Boot environment" | ||||
| 		return 1 | ||||
| 	} | ||||
| } | ||||
| @@ -1,7 +1,8 @@ | ||||
| . /lib/functions/system.sh | ||||
|  | ||||
| RAMFS_COPY_BIN='fw_printenv fw_setenv' | ||||
| RAMFS_COPY_DATA='/etc/fw_env.config /var/lock/fw_printenv.lock' | ||||
|  | ||||
| RAMFS_COPY_BIN='fw_setenv' | ||||
| RAMFS_COPY_DATA='/etc/fw_env.config /var/lock/fw_printenv.lock /tmp/downgrade' | ||||
|  | ||||
| qca_do_upgrade() { | ||||
|         local tar_file="$1" | ||||
| @@ -19,6 +20,50 @@ qca_do_upgrade() { | ||||
|         fi | ||||
| } | ||||
|  | ||||
| find_mmc_part() { | ||||
| 	local DEVNAME PARTNAME | ||||
|  | ||||
| 	if grep -q "$1" /proc/mtd; then | ||||
| 		echo "" && return 0 | ||||
| 	fi | ||||
|  | ||||
| 	for DEVNAME in /sys/block/mmcblk*/mmcblk*p*; do | ||||
| 		PARTNAME=$(grep PARTNAME ${DEVNAME}/uevent | cut -f2 -d'=') | ||||
| 		[ "$PARTNAME" = "$1" ] && echo "/dev/$(basename $DEVNAME)" && return 0 | ||||
| 	done | ||||
| } | ||||
|  | ||||
| do_flash_emmc() { | ||||
| 	local tar_file=$1 | ||||
| 	local emmcblock=$(find_mmc_part $2) | ||||
| 	local board_dir=$3 | ||||
| 	local part=$4 | ||||
|  | ||||
| 	[ -z "$emmcblock" ] && { | ||||
| 		echo failed to find $2 | ||||
| 		return | ||||
| 	} | ||||
|  | ||||
| 	echo erase $4 | ||||
| 	dd if=/dev/zero of=${emmcblock} 2> /dev/null | ||||
| 	echo flash $4 | ||||
| 	tar Oxf $tar_file ${board_dir}/$part | dd of=${emmcblock} | ||||
| } | ||||
|  | ||||
| emmc_do_upgrade() { | ||||
| 	local tar_file="$1" | ||||
|  | ||||
| 	local board_dir=$(tar tf $tar_file | grep -m 1 '^sysupgrade-.*/$') | ||||
| 	board_dir=${board_dir%/} | ||||
| 	do_flash_emmc $tar_file '0:HLOS' $board_dir kernel | ||||
| 	do_flash_emmc $tar_file 'rootfs' $board_dir root | ||||
|  | ||||
| 	local emmcblock="$(find_mmc_part "rootfs_data")" | ||||
|         if [ -e "$emmcblock" ]; then | ||||
|                 mkfs.ext4 -F "$emmcblock" | ||||
|         fi | ||||
| } | ||||
|  | ||||
| platform_check_image() { | ||||
| 	local magic_long="$(get_magic_long "$1")" | ||||
| 	board=$(board_name) | ||||
| @@ -31,17 +76,24 @@ platform_check_image() { | ||||
| 	cybertan,eww622-a1|\ | ||||
| 	glinet,ax1800|\ | ||||
| 	glinet,axt1800|\ | ||||
| 	indio,um-310ax-v1|\ | ||||
| 	indio,um-510axp-v1|\ | ||||
| 	indio,um-510axm-v1|\ | ||||
| 	wallys,dr6018|\ | ||||
| 	wallys,dr6018-v4|\ | ||||
| 	edgecore,eap101|\ | ||||
| 	edgecore,eap102|\ | ||||
| 	edgecore,eap104|\ | ||||
| 	liteon,wpx8324|\ | ||||
| 	edgecore,eap106|\ | ||||
| 	hfcl,ion4xi|\ | ||||
| 	hfcl,ion4xe|\ | ||||
| 	plasmacloud,pax1800-v1|\ | ||||
| 	plasmacloud,pax1800-v2|\ | ||||
| 	tplink,ex227|\ | ||||
| 	tplink,ex447|\ | ||||
| 	yuncore,ax840|\ | ||||
| 	motorola,q14|\ | ||||
| 	qcom,ipq6018-cp01|\ | ||||
| 	qcom,ipq807x-hk01|\ | ||||
| 	qcom,ipq807x-hk14|\ | ||||
| @@ -62,14 +114,19 @@ platform_do_upgrade() { | ||||
| 	cig,wf188) | ||||
| 		qca_do_upgrade $1 | ||||
| 		;; | ||||
| 	motorola,q14) | ||||
| 		emmc_do_upgrade $1 | ||||
| 		;; | ||||
| 	cig,wf188n|\ | ||||
| 	cig,wf194c|\ | ||||
| 	cig,wf194c4|\ | ||||
| 	cig,wf196|\ | ||||
| 	cybertan,eww622-a1|\ | ||||
| 	edgecore,eap104|\ | ||||
| 	glinet,ax1800|\ | ||||
| 	glinet,axt1800|\ | ||||
| 	indio,um-310ax-v1|\ | ||||
| 	indio,um-510axp-v1|\ | ||||
| 	indio,um-510axm-v1|\ | ||||
| 	qcom,ipq6018-cp01|\ | ||||
| 	qcom,ipq807x-hk01|\ | ||||
| 	qcom,ipq807x-hk14|\ | ||||
| @@ -78,7 +135,9 @@ platform_do_upgrade() { | ||||
| 	wallys,dr6018-v4|\ | ||||
| 	yuncore,ax840|\ | ||||
| 	tplink,ex447|\ | ||||
| 	tplink,ex227)	 | ||||
| 	tplink,ex227|\ | ||||
| 	meshpp,s618-cp03|\ | ||||
| 	meshpp,s618-cp01) | ||||
| 		nand_upgrade_tar "$1" | ||||
| 		;; | ||||
| 	hfcl,ion4xi|\ | ||||
| @@ -92,6 +151,8 @@ platform_do_upgrade() { | ||||
| 		fi | ||||
| 		nand_upgrade_tar "$1" | ||||
| 		;; | ||||
| 	edgecore,eap104|\ | ||||
| 	liteon,wpx8324|\ | ||||
| 	edgecore,eap106) | ||||
| 		CI_UBIPART="rootfs1" | ||||
| 		[ "$(find_mtd_chardev rootfs)" ] && CI_UBIPART="rootfs" | ||||
| @@ -102,7 +163,11 @@ platform_do_upgrade() { | ||||
| 		if [ "$(find_mtd_chardev rootfs)" ]; then | ||||
| 			CI_UBIPART="rootfs" | ||||
| 		else | ||||
| 			if grep -q rootfs1 /proc/cmdline; then | ||||
| 			if [ -e /tmp/downgrade ]; then | ||||
| 				CI_UBIPART="rootfs1" | ||||
| 				fw_setenv active 1 || exit 1 | ||||
| 				fw_setenv upgrade_available 0 || exit 1 | ||||
| 			elif grep -q rootfs1 /proc/cmdline; then | ||||
| 				CI_UBIPART="rootfs2" | ||||
| 				fw_setenv active 2 || exit 1 | ||||
| 			else | ||||
| @@ -112,5 +177,10 @@ platform_do_upgrade() { | ||||
| 		fi | ||||
| 		nand_upgrade_tar "$1" | ||||
| 		;; | ||||
| 	plasmacloud,pax1800-v1|\ | ||||
| 	plasmacloud,pax1800-v2) | ||||
| 		PART_NAME="inactive" | ||||
| 		platform_do_upgrade_dualboot_datachk "$1" | ||||
| 		;; | ||||
| 	esac | ||||
| } | ||||
|   | ||||
							
								
								
									
										829
									
								
								feeds/ipq807x/ipq807x/config-4.4
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										829
									
								
								feeds/ipq807x/ipq807x/config-4.4
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,829 @@ | ||||
| # CONFIG_AHCI_IPQ is not set | ||||
| CONFIG_ALIGNMENT_TRAP=y | ||||
| # CONFIG_ALLOW_DEV_COREDUMP is not set | ||||
| # CONFIG_AMBA_PL08X is not set | ||||
| # CONFIG_APM_EMULATION is not set | ||||
| # CONFIG_APQ_GCC_8084 is not set | ||||
| # CONFIG_APQ_MMCC_8084 is not set | ||||
| # CONFIG_AR8216_PHY is not set | ||||
| CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y | ||||
| CONFIG_ARCH_HAS_ELF_RANDOMIZE=y | ||||
| CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y | ||||
| CONFIG_ARCH_HAS_SG_CHAIN=y | ||||
| CONFIG_ARCH_HAS_TICK_BROADCAST=y | ||||
| CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y | ||||
| # CONFIG_ARCH_IPQ40XX is not set | ||||
| # CONFIG_ARCH_IPQ806x is not set | ||||
| # CONFIG_ARCH_IPQ807x is not set | ||||
| # CONFIG_ARCH_IPQ6018 is not set | ||||
| # CONFIG_ARCH_IPQ5018 is not set | ||||
| CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y | ||||
| # CONFIG_ARCH_MSM8960 is not set | ||||
| # CONFIG_ARCH_MSM8974 is not set | ||||
| CONFIG_ARCH_MSM8X60=y | ||||
| CONFIG_ARCH_MULTIPLATFORM=y | ||||
| # CONFIG_ARCH_MULTI_CPU_AUTO is not set | ||||
| CONFIG_ARCH_MULTI_V6_V7=y | ||||
| CONFIG_ARCH_MULTI_V7=y | ||||
| CONFIG_ARCH_NR_GPIO=0 | ||||
| CONFIG_ARCH_QCOM=y | ||||
| CONFIG_QSEECOM=m | ||||
| # CONFIG_ARCH_SELECT_MEMORY_MODEL is not set | ||||
| # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set | ||||
| CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y | ||||
| CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y | ||||
| CONFIG_ARCH_SUPPORTS_UPROBES=y | ||||
| CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||||
| CONFIG_ARCH_USE_BUILTIN_BSWAP=y | ||||
| CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y | ||||
| CONFIG_ARCH_WANT_GENERAL_HUGETLB=y | ||||
| CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y | ||||
| CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y | ||||
| CONFIG_ARM=y | ||||
| CONFIG_ARM_AMBA=y | ||||
| CONFIG_ARM_ARCH_TIMER=y | ||||
| CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y | ||||
| # CONFIG_ARM_ATAG_DTB_COMPAT is not set | ||||
| CONFIG_ARM_CCI=y | ||||
| CONFIG_ARM_CCI400_COMMON=y | ||||
| CONFIG_ARM_CCI400_PMU=y | ||||
| CONFIG_ARM_CCI_PMU=y | ||||
| CONFIG_ARM_CPU_SUSPEND=y | ||||
| CONFIG_ARM_GIC=y | ||||
| CONFIG_ARM_HAS_SG_CHAIN=y | ||||
| # CONFIG_ARM_HIGHBANK_CPUIDLE is not set | ||||
| CONFIG_ARM_CPUIDLE=y | ||||
| CONFIG_ARM_L1_CACHE_SHIFT=6 | ||||
| CONFIG_ARM_L1_CACHE_SHIFT_6=y | ||||
| # CONFIG_ARM_LPAE is not set | ||||
| CONFIG_ARM_MODULE_PLTS=y | ||||
| CONFIG_ARM_PATCH_PHYS_VIRT=y | ||||
| CONFIG_ARM_PMU=y | ||||
| CONFIG_ARM_PSCI=y | ||||
| CONFIG_ARM_PSCI_FW=y | ||||
| CONFIG_ARM_QCOM_CPUFREQ=y | ||||
| # CONFIG_ARM_SMMU is not set | ||||
| # CONFIG_ARM_SP805_WATCHDOG is not set | ||||
| CONFIG_ARM_THUMB=y | ||||
| # CONFIG_ARM_THUMBEE is not set | ||||
| CONFIG_ARM_UNWIND=y | ||||
| CONFIG_ARM_VIRT_EXT=y | ||||
| CONFIG_AT803X_PHY=y | ||||
| # CONFIG_ATA is not set | ||||
| CONFIG_BLK_DEV_LOOP=y | ||||
| CONFIG_BLK_DEV_NVME=y | ||||
| CONFIG_BLK_DEV_RAM=y | ||||
| CONFIG_BLK_DEV_RAM_COUNT=16 | ||||
| CONFIG_BLK_DEV_RAM_SIZE=4096 | ||||
| # CONFIG_VIRTIO_BLK is not set | ||||
| # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set | ||||
| CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 | ||||
| CONFIG_BOUNCE=y | ||||
| CONFIG_BUILD_BIN2C=y | ||||
| # CONFIG_CNSS_QCN9000 is not set | ||||
| # CONFIG_CNSS2 is not set | ||||
| # CONFIG_CNSS2_GENL is not set | ||||
| # CONFIG_CNSS2_DEBUG is not set | ||||
| # CONFIG_CNSS2_PM is not set | ||||
| # CONFIG_CNSS2_PCI_DRIVER is not set | ||||
| # CONFIG_CNSS2_CALIBRATION_SUPPORT is not set | ||||
| # CONFIG_CNSS2_SMMU is not set | ||||
| # CONFIG_CNSS2_RAMDUMP is not set | ||||
| # CONFIG_CACHE_L2X0 is not set | ||||
| CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||||
| CONFIG_CC_STACKPROTECTOR=y | ||||
| # CONFIG_CC_STACKPROTECTOR_NONE is not set | ||||
| CONFIG_CC_STACKPROTECTOR_REGULAR=y | ||||
| # CONFIG_CHARGER_QCOM_SMBB is not set | ||||
| CONFIG_CLEANCACHE=y | ||||
| CONFIG_CLKDEV_LOOKUP=y | ||||
| CONFIG_CLKSRC_OF=y | ||||
| CONFIG_CLKSRC_PROBE=y | ||||
| CONFIG_CLKSRC_QCOM=y | ||||
| CONFIG_CLONE_BACKWARDS=y | ||||
| CONFIG_COMMON_CLK=y | ||||
| CONFIG_COMMON_CLK_QCOM=y | ||||
| CONFIG_CONFIGFS_FS=y | ||||
| CONFIG_COREDUMP=y | ||||
| # CONFIG_CORESIGHT is not set | ||||
| # CONFIG_CORESIGHT_CSR is not set | ||||
| # CONFIG_CORESIGHT_CTI is not set | ||||
| # NFIG_CORESIGHT_EVENT is not set | ||||
| # CONFIG_CORESIGHT_HWEVENT is not set | ||||
| # CONFIG_CORESIGHT_LINKS_AND_SINKS is not set | ||||
| # CONFIG_CORESIGHT_LINK_AND_SINK_TMC is not set | ||||
| # CONFIG_CORESIGHT_QCOM_REPLICATOR is not set | ||||
| # CONFIG_CORESIGHT_QPDI is not set | ||||
| # CONFIG_CORESIGHT_SINK_ETBV10 is not set | ||||
| # CONFIG_CORESIGHT_SINK_TPIU is not set | ||||
| # CONFIG_CORESIGHT_SOURCE_DUMMY is not set | ||||
| # CONFIG_CORESIGHT_SOURCE_ETM3X is not set | ||||
| # CONFIG_CORESIGHT_SOURCE_ETM4X is not set | ||||
| # CONFIG_CORESIGHT_REMOTE_ETM is not set | ||||
| # CONFIG_CORESIGHT_STM is not set | ||||
| # CONFIG_CORESIGHT_TPDA is not set | ||||
| # CONFIG_CORESIGHT_TPDM is not set | ||||
| # CONFIG_CORESIGHT_TPDM_DEFAULT_ENABLE is not set | ||||
| # CONFIG_CORESIGHT_STREAM is not set | ||||
| CONFIG_CPUFREQ_DT=y | ||||
| CONFIG_CPUFREQ_DT_PLATDEV=y | ||||
| CONFIG_CPU_32v6K=y | ||||
| CONFIG_CPU_32v7=y | ||||
| CONFIG_CPU_ABRT_EV7=y | ||||
| # CONFIG_CPU_BIG_ENDIAN is not set | ||||
| # CONFIG_CPU_BPREDICT_DISABLE is not set | ||||
| CONFIG_CPU_CACHE_V7=y | ||||
| CONFIG_CPU_CACHE_VIPT=y | ||||
| CONFIG_CPU_COPY_V6=y | ||||
| CONFIG_CPU_CP15=y | ||||
| CONFIG_CPU_CP15_MMU=y | ||||
| # CONFIG_CPU_SW_DOMAIN_PAN is not set | ||||
| CONFIG_CPU_FREQ=y | ||||
| CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y | ||||
| CONFIG_CPU_FREQ_GOV_COMMON=y | ||||
| CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y | ||||
| CONFIG_CPU_FREQ_GOV_ONDEMAND=y | ||||
| CONFIG_CPU_FREQ_GOV_PERFORMANCE=y | ||||
| CONFIG_CPU_FREQ_GOV_POWERSAVE=y | ||||
| CONFIG_CPU_FREQ_GOV_USERSPACE=y | ||||
| CONFIG_CPU_FREQ_STAT=y | ||||
| CONFIG_CPU_HAS_ASID=y | ||||
| # CONFIG_CPU_ICACHE_DISABLE is not set | ||||
| CONFIG_CPU_IDLE=y | ||||
| CONFIG_CPU_IDLE_GOV_LADDER=y | ||||
| CONFIG_CPU_IDLE_GOV_MENU=y | ||||
| CONFIG_CPU_PABRT_V7=y | ||||
| CONFIG_CPU_PM=y | ||||
| CONFIG_CPU_RMAP=y | ||||
| # CONFIG_CPU_THERMAL is not set | ||||
| CONFIG_CPU_TLB_V7=y | ||||
| CONFIG_CPU_V7=y | ||||
| CONFIG_CRC16=y | ||||
| # CONFIG_CRC32_SARWATE is not set | ||||
| CONFIG_CRC32_SLICEBY8=y | ||||
| CONFIG_CROSS_MEMORY_ATTACH=y | ||||
| # CONFIG_CRYPTO_DEV_QCOM_MSM_QCE is not set | ||||
| # CONFIG_CRYPTO_DEV_OTA_CRYPTO is not set | ||||
| # CONFIG_FIPS_ENABLE is not set | ||||
| CONFIG_CRYPTO_AEAD=y | ||||
| CONFIG_CRYPTO_AEAD2=y | ||||
| CONFIG_CRYPTO_BLKCIPHER=y | ||||
| CONFIG_CRYPTO_BLKCIPHER2=y | ||||
| CONFIG_CRYPTO_CBC=y | ||||
| CONFIG_CRYPTO_CCM=y | ||||
| CONFIG_CRYPTO_CRC32C=y | ||||
| CONFIG_CRYPTO_CTR=y | ||||
| CONFIG_CRYPTO_DEFLATE=y | ||||
| CONFIG_CRYPTO_CMAC=y | ||||
| # CONFIG_CRYPTO_DEV_QCOM_ICE is not set | ||||
| CONFIG_CRYPTO_ECHAINIV=y | ||||
| CONFIG_CRYPTO_ECB=y | ||||
| CONFIG_CRYPTO_HASH2=y | ||||
| CONFIG_CRYPTO_HASH_INFO=y | ||||
| CONFIG_CRYPTO_HW=y | ||||
| CONFIG_CRYPTO_LZO=y | ||||
| CONFIG_CRYPTO_MANAGER=y | ||||
| CONFIG_CRYPTO_MANAGER2=y | ||||
| CONFIG_CRYPTO_NULL=y | ||||
| CONFIG_CRYPTO_RNG=y | ||||
| CONFIG_CRYPTO_RNG2=y | ||||
| CONFIG_CRYPTO_SEQIV=y | ||||
| CONFIG_CRYPTO_SHA256=y | ||||
| CONFIG_CRYPTO_WORKQUEUE=y | ||||
| CONFIG_CRYPTO_XZ=y | ||||
| CONFIG_CRYPTO_ARC4=y | ||||
| CONFIG_CRYPTO_GCM=y | ||||
| CONFIG_DCACHE_WORD_ACCESS=y | ||||
| CONFIG_DEBUG_BUGVERBOSE=y | ||||
| CONFIG_DEBUG_GPIO=y | ||||
| # CONFIG_DEBUG_INFO_REDUCED is not set | ||||
| CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S" | ||||
| # CONFIG_DEBUG_MEM_USAGE is not set | ||||
| # CONFIG_DEBUG_UART_8250 is not set | ||||
| # CONFIG_DEBUG_USER is not set | ||||
| CONFIG_DECOMPRESS_GZIP=y | ||||
| CONFIG_DEVMEM=y | ||||
| # CONFIG_DIAG_OVER_USB is not set | ||||
| CONFIG_DMADEVICES=y | ||||
| CONFIG_DMA_ENGINE=y | ||||
| CONFIG_DMA_OF=y | ||||
| CONFIG_DMA_VIRTUAL_CHANNELS=y | ||||
| CONFIG_DTC=y | ||||
| # CONFIG_DWMAC_GENERIC is not set | ||||
| # CONFIG_DWMAC_IPQ806X is not set | ||||
| # CONFIG_DWMAC_SUNXI is not set | ||||
| # CONFIG_DW_DMAC_PCI is not set | ||||
| # CONFIG_VHOST_NET is not set | ||||
| # CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set | ||||
| CONFIG_DYNAMIC_DEBUG=y | ||||
| CONFIG_ETHERNET_PACKET_MANGLE=y | ||||
| CONFIG_EXT4_FS=y | ||||
| # CONFIG_EXT4_USE_FOR_EXT2 is not set | ||||
| CONFIG_FB=y | ||||
| CONFIG_FB_CFB_COPYAREA=y | ||||
| CONFIG_FB_CFB_FILLRECT=y | ||||
| CONFIG_FB_CFB_IMAGEBLIT=y | ||||
| CONFIG_FB_CMDLINE=y | ||||
| CONFIG_FB_QCOM_QPIC=y | ||||
| CONFIG_FB_QCOM_QPIC_ER_SSD1963_PANEL=y | ||||
| CONFIG_FB_SYS_FOPS=y | ||||
| CONFIG_FIXED_PHY=y | ||||
| CONFIG_FIX_EARLYCON_MEM=y | ||||
| CONFIG_FS_MBCACHE=y | ||||
| CONFIG_GENERIC_ALLOCATOR=y | ||||
| CONFIG_GENERIC_BUG=y | ||||
| CONFIG_GENERIC_CLOCKEVENTS=y | ||||
| CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y | ||||
| # CONFIG_GENERIC_CPUFREQ_KRAIT is not set | ||||
| CONFIG_GENERIC_IDLE_POLL_SETUP=y | ||||
| CONFIG_GENERIC_IO=y | ||||
| CONFIG_GENERIC_IRQ_SHOW=y | ||||
| CONFIG_GENERIC_IRQ_SHOW_LEVEL=y | ||||
| CONFIG_GENERIC_MSI_IRQ=y | ||||
| CONFIG_GENERIC_PCI_IOMAP=y | ||||
| CONFIG_GENERIC_PHY=y | ||||
| CONFIG_GENERIC_PINCONF=y | ||||
| CONFIG_GENERIC_SCHED_CLOCK=y | ||||
| CONFIG_GENERIC_SMP_IDLE_THREAD=y | ||||
| CONFIG_GENERIC_STRNCPY_FROM_USER=y | ||||
| CONFIG_GENERIC_STRNLEN_USER=y | ||||
| CONFIG_GENERIC_TIME_VSYSCALL=y | ||||
| CONFIG_GPIOLIB=y | ||||
| CONFIG_GPIOLIB_IRQCHIP=y | ||||
| CONFIG_GPIO_DEVRES=y | ||||
| # CONFIG_GPIO_LATCH is not set | ||||
| # CONFIG_GPIO_NXP_74HC153 is not set | ||||
| CONFIG_GPIO_SYSFS=y | ||||
| CONFIG_HANDLE_DOMAIN_IRQ=y | ||||
| CONFIG_HARDIRQS_SW_RESEND=y | ||||
| CONFIG_HAS_DMA=y | ||||
| CONFIG_HAS_IOMEM=y | ||||
| CONFIG_HAS_IOPORT_MAP=y | ||||
| # CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set | ||||
| CONFIG_HAVE_ARCH_AUDITSYSCALL=y | ||||
| CONFIG_HAVE_ARCH_BITREVERSE=y | ||||
| CONFIG_HAVE_ARCH_JUMP_LABEL=y | ||||
| CONFIG_HAVE_ARCH_KGDB=y | ||||
| CONFIG_HAVE_ARCH_PFN_VALID=y | ||||
| CONFIG_HAVE_ARCH_SECCOMP_FILTER=y | ||||
| CONFIG_HAVE_ARCH_TRACEHOOK=y | ||||
| CONFIG_HAVE_ARM_ARCH_TIMER=y | ||||
| # CONFIG_HAVE_BOOTMEM_INFO_NODE is not set | ||||
| CONFIG_HAVE_BPF_JIT=y | ||||
| CONFIG_HAVE_CC_STACKPROTECTOR=y | ||||
| CONFIG_HAVE_CLK=y | ||||
| CONFIG_HAVE_CLK_PREPARE=y | ||||
| CONFIG_HAVE_CONTEXT_TRACKING=y | ||||
| CONFIG_HAVE_C_RECORDMCOUNT=y | ||||
| CONFIG_HAVE_DEBUG_KMEMLEAK=y | ||||
| CONFIG_HAVE_DMA_API_DEBUG=y | ||||
| CONFIG_HAVE_DMA_ATTRS=y | ||||
| CONFIG_HAVE_DMA_CONTIGUOUS=y | ||||
| CONFIG_HAVE_DYNAMIC_FTRACE=y | ||||
| CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y | ||||
| CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||||
| CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y | ||||
| CONFIG_HAVE_FUNCTION_TRACER=y | ||||
| # CONFIG_SRD_TRACE is not set | ||||
| CONFIG_HAVE_GENERIC_DMA_COHERENT=y | ||||
| CONFIG_HAVE_HW_BREAKPOINT=y | ||||
| CONFIG_HAVE_IDE=y | ||||
| CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y | ||||
| CONFIG_HAVE_KERNEL_GZIP=y | ||||
| CONFIG_HAVE_KERNEL_LZ4=y | ||||
| CONFIG_HAVE_KERNEL_LZMA=y | ||||
| CONFIG_HAVE_KERNEL_LZO=y | ||||
| CONFIG_HAVE_KERNEL_XZ=y | ||||
| # CONFIG_HAVE_KPROBES is not set | ||||
| # CONFIG_HAVE_KRETPROBES is not set | ||||
| CONFIG_HAVE_MEMBLOCK=y | ||||
| CONFIG_HAVE_MOD_ARCH_SPECIFIC=y | ||||
| CONFIG_HAVE_NET_DSA=y | ||||
| CONFIG_HAVE_OPROFILE=y | ||||
| # CONFIG_HAVE_OPTPROBES is not set | ||||
| CONFIG_HAVE_PERF_EVENTS=y | ||||
| CONFIG_HAVE_PERF_REGS=y | ||||
| CONFIG_HAVE_PERF_USER_STACK_DUMP=y | ||||
| CONFIG_HAVE_PROC_CPU=y | ||||
| CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y | ||||
| CONFIG_HAVE_SMP=y | ||||
| CONFIG_HAVE_SYSCALL_TRACEPOINTS=y | ||||
| CONFIG_HAVE_UID16=y | ||||
| CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y | ||||
| CONFIG_HIGHMEM=y | ||||
| CONFIG_HIGHPTE=y | ||||
| CONFIG_HOTPLUG_CPU=y | ||||
| CONFIG_HWMON=y | ||||
| CONFIG_HWSPINLOCK=y | ||||
| CONFIG_HWSPINLOCK_QCOM=y | ||||
| CONFIG_HW_RANDOM=y | ||||
| CONFIG_HW_RANDOM_MSM=y | ||||
| CONFIG_HZ_FIXED=0 | ||||
| CONFIG_I2C=y | ||||
| CONFIG_I2C_BOARDINFO=y | ||||
| CONFIG_I2C_CHARDEV=y | ||||
| CONFIG_I2C_COMPAT=y | ||||
| CONFIG_I2C_HELPER_AUTO=y | ||||
| CONFIG_I2C_QUP=y | ||||
| # CONFIG_IIO is not set | ||||
| # CONFIG_IIO_BUFFER is not set | ||||
| # CONFIG_IIO_TRIGGER is not set | ||||
| CONFIG_IKCONFIG=y | ||||
| CONFIG_IKCONFIG_PROC=y | ||||
| CONFIG_INITRAMFS_SOURCE="" | ||||
| # CONFIG_INPUT_PM8941_PWRKEY is not set | ||||
| CONFIG_IOMMU_HELPER=y | ||||
| # CONFIG_IOMMU_IO_PGTABLE_LPAE is not set | ||||
| # CONFIG_IPQ_DWC3_QTI_EXTCON is not set | ||||
| # CONFIG_IPQ_GCC_4019 is not set | ||||
| # CONFIG_IPQ_GCC_5018 is not set | ||||
| # CONFIG_IPQ_APSS_5018 is not set | ||||
| # CONFIG_IPQ_GCC_6018 is not set | ||||
| # CONFIG_IPQ_APSS_6018 is not set | ||||
| # CONFIG_IPQ_GCC_806X is not set | ||||
| # CONFIG_IPQ_ADSS_807x is not set | ||||
| # CONFIG_IPQ_APSS_807x is not set | ||||
| # CONFIG_IPQ_GCC_807x is not set | ||||
| # CONFIG_IPQ_ADCC_4019 is not set | ||||
| # CONFIG_IPQ_LCC_806X is not set | ||||
| # CONFIG_IPQ_REMOTEPROC_ADSP is not set | ||||
| # CONFIG_IPQ_SUBSYSTEM_RESTART is not set | ||||
| # CONFIG_IPQ_SUBSYSTEM_RESTART_TEST is not set | ||||
| CONFIG_IRQCHIP=y | ||||
| CONFIG_IRQ_DOMAIN=y | ||||
| CONFIG_IRQ_DOMAIN_HIERARCHY=y | ||||
| CONFIG_IRQ_FORCED_THREADING=y | ||||
| CONFIG_IRQ_WORK=y | ||||
| CONFIG_JBD2=y | ||||
| # CONFIG_IPC_ROUTER is not set | ||||
| # CONFIG_IPC_ROUTER_SECURITY is not set | ||||
| # CONFIG_IPC_LOGGING is not set | ||||
| CONFIG_KPSS_XCC=y | ||||
| # CONFIG_KRAITCC is not set | ||||
| # CONFIG_KRAIT_CLOCKS is not set | ||||
| # CONFIG_KRAIT_L2_ACCESSORS is not set | ||||
| CONFIG_LEDS_IPQ=y | ||||
| CONFIG_LEDS_PWM=y | ||||
| CONFIG_LEDS_TLC591XX=y | ||||
| # CONFIG_LEDS_PCA9956B is not set | ||||
| CONFIG_LIBFDT=y | ||||
| CONFIG_LOCKUP_DETECTOR=y | ||||
| CONFIG_LOCK_SPIN_ON_OWNER=y | ||||
| CONFIG_LZO_COMPRESS=y | ||||
| CONFIG_LZO_DECOMPRESS=y | ||||
| CONFIG_MDIO=y | ||||
| CONFIG_MDIO_BITBANG=y | ||||
| CONFIG_MDIO_BOARDINFO=y | ||||
| CONFIG_MDIO_GPIO=y | ||||
| # CONFIG_MDIO_QCA is not set | ||||
| CONFIG_MFD_QCOM_RPM=y | ||||
| CONFIG_MFD_SPMI_PMIC=y | ||||
| # CONFIG_SLIMBUS is not set | ||||
| # CONFIG_SLIMBUS_MSM_CTRL is not set | ||||
| # CONFIG_SLIMBUS_MSM_NGD is not set | ||||
| # CONFIG_OF_SLIMBUS is not set | ||||
| CONFIG_MFD_SYSCON=y | ||||
| CONFIG_MIGHT_HAVE_CACHE_L2X0=y | ||||
| CONFIG_MIGHT_HAVE_PCI=y | ||||
| CONFIG_MMC=y | ||||
| CONFIG_MMC_ARMMMCI=y | ||||
| CONFIG_MMC_BLOCK=y | ||||
| CONFIG_MMC_BLOCK_MINORS=32 | ||||
| CONFIG_MMC_QCOM_DML=y | ||||
| CONFIG_MMC_QCOM_TUNING=y | ||||
| CONFIG_MMC_SDHCI=y | ||||
| CONFIG_MMC_SDHCI_MSM=y | ||||
| # CONFIG_MMC_SDHCI_OF_ARASAN is not set | ||||
| # CONFIG_MMC_SDHCI_PCI is not set | ||||
| CONFIG_MMC_SDHCI_PLTFM=y | ||||
| # CONFIG_MMC_TIFM_SD is not set | ||||
| CONFIG_MODULES_TREE_LOOKUP=y | ||||
| CONFIG_MODULES_USE_ELF_REL=y | ||||
| # CONFIG_MPLS_ROUTING is not set | ||||
| # CONFIG_MSM_GCC_8660 is not set | ||||
| # CONFIG_MSM_GCC_8916 is not set | ||||
| # CONFIG_MSM_GCC_8960 is not set | ||||
| # CONFIG_MSM_GCC_8974 is not set | ||||
| # CONFIG_MSM_LCC_8960 is not set | ||||
| # CONFIG_MSM_MMCC_8960 is not set | ||||
| # CONFIG_MSM_MMCC_8974 is not set | ||||
| # CONFIG_MSM_MHI is not set | ||||
| # CONFIG_MSM_IPC_ROUTER_MHI_XPRT is not set | ||||
| # CONFIG_MSM_MHI_DEBUG is not set | ||||
| # CONFIG_MSM_MHI_DEV is not set | ||||
| # CONFIG_MSM_MHI_UCI is not set | ||||
| # CONFIG_DIAGFWD_BRIDGE_CODE is not set | ||||
| # CONFIG_MSM_BUS_SCALING is not set | ||||
| # CONFIG_BUS_TOPOLOGY_ADHOC is not set | ||||
| # CONFIG_QPNP_REVID is not set | ||||
| # CONFIG_SPS is not set | ||||
| # CONFIG_SPS_SUPPORT_NDP_BAM is not set | ||||
| # CONFIG_USB_BAM is not set | ||||
| # CONFIG_SPS_SUPPORT_BAMDMA is not set | ||||
| # CONFIG_IPA is not set | ||||
| # CONFIG_IPA3 is not set | ||||
| # CONFIG_EP_PCIE is not set | ||||
| # CONFIG_GSI is not set | ||||
| # CONFIG_PFT is not set | ||||
| # CONFIG_SEEMP_CORE is not set | ||||
| # CONFIG_GPIO_USB_DETECT is not set | ||||
| # CONFIG_MSM_GLINK is not set | ||||
| # CONFIG_MSM_GLINK_LOOPBACK_SERVER is not set | ||||
| # CONFIG_MSM_GLINK_SMEM_NATIVE_XPRT is not set | ||||
| # CONFIG_MSM_GLINK_PKT is not set | ||||
| # CONFIG_MSM_IPC_ROUTER_GLINK_XPRT is not set | ||||
| # CONFIG_MSM_QMI_INTERFACE is not set | ||||
| # CONFIG_MSM_TEST_QMI_CLIENT is not set | ||||
| # CONFIG_GLINK_DEBUG_FS is not set | ||||
| # CONFIG_MSM_RPM_SMD is not set | ||||
| # CONFIG_MSM_RPM_GLINK is not set | ||||
| CONFIG_MSM_RPM_LOG=y | ||||
| # CONFIG_MSM_SMEM is not set | ||||
| CONFIG_MTD_CMDLINE_PARTS=y | ||||
| CONFIG_MTD_M25P80=y | ||||
| CONFIG_MTD_NAND=y | ||||
| CONFIG_MTD_NAND_ECC=y | ||||
| CONFIG_MTD_NAND_QCOM=y | ||||
| CONFIG_MTD_QCOM_SMEM_PARTS=y | ||||
| CONFIG_MTD_SPINAND_GIGADEVICE=y | ||||
| CONFIG_MTD_SPINAND_MT29F=y | ||||
| CONFIG_MTD_SPINAND_ONDIEECC=y | ||||
| CONFIG_MTD_SPI_NOR=y | ||||
| CONFIG_MTD_SPLIT_FIRMWARE=y | ||||
| CONFIG_MTD_SPLIT_FIT_FW=y | ||||
| CONFIG_MTD_UBI=y | ||||
| CONFIG_MTD_UBI_BEB_LIMIT=20 | ||||
| CONFIG_MTD_UBI_BLOCK=y | ||||
| # CONFIG_MTD_UBI_FASTMAP is not set | ||||
| CONFIG_MTD_UBI_GLUEBI=y | ||||
| CONFIG_MTD_UBI_WL_THRESHOLD=4096 | ||||
| CONFIG_MULTI_IRQ_HANDLER=y | ||||
| CONFIG_MUTEX_SPIN_ON_OWNER=y | ||||
| CONFIG_NEED_DMA_MAP_STATE=y | ||||
| CONFIG_NEON=y | ||||
| CONFIG_NET=y | ||||
| # CONFIG_NET_DSA_MV88E6063 is not set | ||||
| CONFIG_NET_FLOW_LIMIT=y | ||||
| CONFIG_NET_PTP_CLASSIFY=y | ||||
| CONFIG_NO_BOOTMEM=y | ||||
| CONFIG_NO_HZ=y | ||||
| CONFIG_NO_HZ_COMMON=y | ||||
| CONFIG_NO_HZ_IDLE=y | ||||
| CONFIG_NR_CPUS=4 | ||||
| CONFIG_NUM_ALT_PARTITION=8 | ||||
| CONFIG_NVMEM=y | ||||
| CONFIG_OF=y | ||||
| CONFIG_OF_ADDRESS=y | ||||
| CONFIG_OF_ADDRESS_PCI=y | ||||
| CONFIG_OF_EARLY_FLATTREE=y | ||||
| CONFIG_OF_FLATTREE=y | ||||
| CONFIG_OF_GPIO=y | ||||
| CONFIG_OF_IRQ=y | ||||
| CONFIG_OF_MDIO=y | ||||
| CONFIG_OF_MTD=y | ||||
| CONFIG_OF_NET=y | ||||
| CONFIG_OF_PCI=y | ||||
| CONFIG_OF_PCI_IRQ=y | ||||
| CONFIG_OF_RESERVED_MEM=y | ||||
| CONFIG_OLD_SIGACTION=y | ||||
| CONFIG_OLD_SIGSUSPEND3=y | ||||
| CONFIG_PAGE_OFFSET=0xC0000000 | ||||
| CONFIG_PANIC_ON_OOPS=y | ||||
| CONFIG_PANIC_ON_OOPS_VALUE=1 | ||||
| CONFIG_PANIC_TIMEOUT=5 | ||||
| CONFIG_PCI=y | ||||
| # CONFIG_PCIEAER is not set | ||||
| CONFIG_PCIE_DW=y | ||||
| # CONFIG_PCIE_DW_PLAT is not set | ||||
| CONFIG_PCIE_PME=y | ||||
| CONFIG_PCIE_QCOM=y | ||||
| CONFIG_PCI_DOMAINS=y | ||||
| CONFIG_PCI_DOMAINS_GENERIC=y | ||||
| CONFIG_PCI_MSI=y | ||||
| CONFIG_PERF_EVENTS=y | ||||
| CONFIG_PERF_USE_VMALLOC=y | ||||
| CONFIG_PGTABLE_LEVELS=2 | ||||
| CONFIG_PHYLIB=y | ||||
| # CONFIG_PHY_IPQ_BALDUR_USB is not set | ||||
| # CONFIG_PHY_IPQ_UNIPHY_USB is not set | ||||
| # CONFIG_PHY_QCOM_APQ8064_SATA is not set | ||||
| # CONFIG_PHY_QCOM_IPQ806X_SATA is not set | ||||
| CONFIG_PHY_QCA_PCIE_QMP=y | ||||
| # CONFIG_PHY_QCOM_UFS is not set | ||||
| # CONFIG_PHY_IPQ_UNIPHY_PCIE is not set | ||||
| CONFIG_PINCTRL=y | ||||
| # CONFIG_PINCTRL_APQ8064 is not set | ||||
| # CONFIG_PINCTRL_APQ8084 is not set | ||||
| # CONFIG_PINCTRL_IPQ4019 is not set | ||||
| # CONFIG_PINCTRL_IPQ6018 is not set | ||||
| # CONFIG_PINCTRL_IPQ8064 is not set | ||||
| # CONFIG_PINCTRL_IPQ807x is not set | ||||
| # CONFIG_PINCTRL_IPQ5018 is not set | ||||
| CONFIG_PINCTRL_MSM=y | ||||
| # CONFIG_PINCTRL_MSM8660 is not set | ||||
| # CONFIG_PINCTRL_MSM8916 is not set | ||||
| # CONFIG_PINCTRL_MSM8960 is not set | ||||
| CONFIG_PINCTRL_QCOM_SPMI_PMIC=y | ||||
| # CONFIG_PINCTRL_QCOM_SSBI_PMIC is not set | ||||
| # CONFIG_PL330_DMA is not set | ||||
| CONFIG_PM=y | ||||
| CONFIG_PM_CLK=y | ||||
| # CONFIG_PM_DEBUG is not set | ||||
| CONFIG_PM_GENERIC_DOMAINS=y | ||||
| CONFIG_PM_GENERIC_DOMAINS_OF=y | ||||
| CONFIG_PM_GENERIC_DOMAINS_SLEEP=y | ||||
| CONFIG_PM_OPP=y | ||||
| CONFIG_PM_SLEEP=y | ||||
| CONFIG_PM_SLEEP_SMP=y | ||||
| CONFIG_POWER_RESET=y | ||||
| CONFIG_POWER_RESET_MSM=y | ||||
| CONFIG_POWER_SUPPLY=y | ||||
| CONFIG_PREEMPT=y | ||||
| CONFIG_PREEMPT_COUNT=y | ||||
| # CONFIG_PREEMPT_NONE is not set | ||||
| CONFIG_PREEMPT_RCU=y | ||||
| CONFIG_PRINTK_TIME=y | ||||
| CONFIG_PROC_PAGE_MONITOR=y | ||||
| # CONFIG_PROC_STRIPPED is not set | ||||
| CONFIG_PSTORE=y | ||||
| CONFIG_PSTORE_RAM=y | ||||
| # CONFIG_PSTORE_CONSOLE is not set | ||||
| # CONFIG_PSTORE_PMSG is not set | ||||
| CONFIG_PWM=y | ||||
| CONFIG_PWM_IPQ4019=y | ||||
| # CONFIG_PWM_PCA9685 is not set | ||||
| CONFIG_PWM_SYSFS=y | ||||
| CONFIG_QCOM_ADM=y | ||||
| # CONFIG_QCOM_APM is not set | ||||
| CONFIG_QCOM_BAM_DMA=y | ||||
| # CONFIG_QTI_BT_TTY is not set | ||||
| # CONFIG_QCOM_COINCELL is not set | ||||
| # CONFIG_QCOM_DCC is not set | ||||
| CONFIG_QCOM_GDSC=y | ||||
| CONFIG_QCOM_GSBI=y | ||||
| # CONFIG_QCOM_HFPLL is not set | ||||
| # CONFIG_QCOM_MEMORY_DUMP_V2 is not set | ||||
| # CONFIG_QCOM_MDT_LOADER is not set | ||||
| CONFIG_QCOM_QFPROM=y | ||||
| # CONFIG_QCOM_SPMI_TEMP_ALARM is not set | ||||
| CONFIG_QCOM_RPM_CLK=y | ||||
| # CONFIG_QCOM_RTB is not set | ||||
| # CONFIG_QCOM_PM is not set | ||||
| CONFIG_QCOM_SCM=y | ||||
| CONFIG_QCOM_SCM_32=y | ||||
| # CONFIG_HAVE_ARM_SMCCC is not set | ||||
| CONFIG_QCA_SCM_RESTART_REASON=y | ||||
| CONFIG_IPQ_TCSR=y | ||||
| CONFIG_QCOM_QFPROM=y | ||||
| # CONFIG_QCOM_SMD is not set | ||||
| CONFIG_QCOM_SMEM=y | ||||
| CONFIG_QCOM_SMEM_STATE=y | ||||
| # CONFIG_QCOM_SMD is not set | ||||
| CONFIG_QCOM_SMP2P=y | ||||
| # CONFIG_QCOM_SPMI_VADC is not set | ||||
| CONFIG_QCOM_TSENS=y | ||||
| CONFIG_QCOM_TZ_LOG=y | ||||
| CONFIG_QCOM_WDT=y | ||||
| CONFIG_QMI_ENCDEC=y | ||||
| CONFIG_RATIONAL=y | ||||
| # CONFIG_RCU_BOOST is not set | ||||
| CONFIG_RCU_CPU_STALL_TIMEOUT=21 | ||||
| # CONFIG_RCU_EXPERT is not set | ||||
| CONFIG_RCU_STALL_COMMON=y | ||||
| CONFIG_RD_GZIP=y | ||||
| CONFIG_REGMAP=y | ||||
| # CONFIG_REGMAP_ALLOW_WRITE_DEBUGFS is not set | ||||
| CONFIG_REGMAP_MMIO=y | ||||
| CONFIG_REGULATOR=y | ||||
| # CONFIG_REGULATOR_CPR3 is not set | ||||
| CONFIG_REGULATOR_GPIO=y | ||||
| CONFIG_REGULATOR_FIXED_VOLTAGE=y | ||||
| CONFIG_REGULATOR_QCOM_RPM=y | ||||
| CONFIG_REGULATOR_QCOM_SPMI=y | ||||
| # CONFIG_REGULATOR_IPQ40XX is not set | ||||
| # CONFIG_REGULATOR_RPM_SMD is not set | ||||
| # CONFIG_REGULATOR_RPM_GLINK is not set | ||||
| CONFIG_RELAY=y | ||||
| CONFIG_REMOTEPROC=y | ||||
| # CONFIG_IPQ807X_REMOTEPROC is not set | ||||
| CONFIG_RESET_CONTROLLER=y | ||||
| CONFIG_RFS_ACCEL=y | ||||
| CONFIG_RPS=y | ||||
| CONFIG_RTC_CLASS=y | ||||
| CONFIG_NET_L3_MASTER_DEV=y | ||||
| # CONFIG_RTC_DRV_CMOS is not set | ||||
| # CONFIG_RTC_DRV_PM8XXX is not set | ||||
| CONFIG_RWSEM_SPIN_ON_OWNER=y | ||||
| CONFIG_RWSEM_XCHGADD_ALGORITHM=y | ||||
| # CONFIG_SATA_AHCI is not set | ||||
| CONFIG_SCHED_HRTICK=y | ||||
| # CONFIG_SCSI is not set | ||||
| # CONFIG_SCHED_INFO is not set | ||||
| # CONFIG_SCSI_DMA is not set | ||||
| # CONFIG_SERIAL_8250 is not set | ||||
| # CONFIG_SERIAL_8250_CONSOLE is not set | ||||
| # CONFIG_SERIAL_8250_DMA is not set | ||||
| # CONFIG_SERIAL_AMBA_PL010 is not set | ||||
| # CONFIG_SERIAL_AMBA_PL011 is not set | ||||
| CONFIG_SERIAL_MSM=y | ||||
| CONFIG_SERIAL_MSM_CONSOLE=y | ||||
| # CONFIG_VIRTIO_CONSOLE is not set | ||||
| CONFIG_SMP=y | ||||
| CONFIG_SMP_ON_UP=y | ||||
| # CONFIG_SND is not set | ||||
| CONFIG_SND_DYNAMIC_MINORS=y | ||||
| CONFIG_SND_MAX_CARDS=32 | ||||
| CONFIG_SND_PROC_FS=y | ||||
| # CONFIG_SND_COMPRESS_OFFLOAD is not set | ||||
| CONFIG_SND_PCM=y | ||||
| CONFIG_SND_SOC=y | ||||
| # CONFIG_SND_SOC_APQ8016_SBC is not set | ||||
| CONFIG_SND_SOC_I2C_AND_SPI=y | ||||
| # CONFIG_SND_SOC_IPQ is not set | ||||
| # CONFIG_SND_SOC_IPQ806X_LPAIF is not set | ||||
| # CONFIG_SND_SOC_IPQ806X_PCM_RAW is not set | ||||
| CONFIG_SND_SOC_IPQ_ADSS=y | ||||
| CONFIG_SND_SOC_IPQ_CODEC=y | ||||
| CONFIG_SND_SOC_IPQ_CPU_DAI=y | ||||
| CONFIG_SND_SOC_IPQ_MBOX=y | ||||
| CONFIG_SND_SOC_IPQ_PCM_I2S=y | ||||
| CONFIG_SND_SOC_IPQ_PCM_RAW=y | ||||
| CONFIG_SND_SOC_IPQ_PCM_SPDIF=y | ||||
| CONFIG_SND_SOC_IPQ_PCM_TDM=y | ||||
| CONFIG_SND_SOC_IPQ_STEREO=y | ||||
| CONFIG_SND_SOC_QCOM=y | ||||
| # CONFIG_SND_SOC_STORM is not set | ||||
| CONFIG_SOUND=y | ||||
| CONFIG_SPARSE_IRQ=y | ||||
| CONFIG_SPI=y | ||||
| CONFIG_SPI_MASTER=y | ||||
| CONFIG_SPI_QUP=y | ||||
| CONFIG_SPI_SPIDEV=y | ||||
| # CONFIG_SPI_VSC7385 is not set | ||||
| CONFIG_SPMI=y | ||||
| CONFIG_SPMI_MSM_PMIC_ARB=y | ||||
| CONFIG_SRCU=y | ||||
| # CONFIG_STRIP_ASM_SYMS is not set | ||||
| # CONFIG_STOPWATCH is not set | ||||
| CONFIG_SUSPEND=y | ||||
| CONFIG_SWCONFIG=y | ||||
| CONFIG_SWIOTLB=y | ||||
| # CONFIG_SWAP is not set | ||||
| CONFIG_SWP_EMULATE=y | ||||
| CONFIG_SYS_SUPPORTS_APM_EMULATION=y | ||||
| CONFIG_THERMAL=y | ||||
| CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y | ||||
| CONFIG_THERMAL_GOV_STEP_WISE=y | ||||
| CONFIG_THERMAL_GOV_USER_SPACE=y | ||||
| CONFIG_THERMAL_HWMON=y | ||||
| CONFIG_THERMAL_OF=y | ||||
| CONFIG_THERMAL_WRITABLE_TRIPS=y | ||||
| # CONFIG_THUMB2_KERNEL is not set | ||||
| # CONFIG_TICK_CPU_ACCOUNTING is not set | ||||
| CONFIG_IRQ_TIME_ACCOUNTING=y | ||||
| CONFIG_TRACING_EVENTS_GPIO=y | ||||
| CONFIG_UBIFS_FS=y | ||||
| CONFIG_UBIFS_FS_ADVANCED_COMPR=y | ||||
| CONFIG_UBIFS_FS_LZO=y | ||||
| CONFIG_UBIFS_FS_XZ=y | ||||
| CONFIG_UBIFS_FS_ZLIB=y | ||||
| CONFIG_UEVENT_HELPER_PATH="" | ||||
| CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h" | ||||
| CONFIG_UNINLINE_SPIN_UNLOCK=y | ||||
| CONFIG_USB_GADGET=n | ||||
| CONFIG_USB_SUPPORT=y | ||||
| # CONFIG_USB_DWC3_OF_SIMPLE is not set | ||||
| # CONFIG_USB_QCOM_8X16_PHY is not set | ||||
| # CONFIG_USB_QCOM_KS_BRIDGE is not set | ||||
| # CONFIG_USB_QCOM_QUSB_PHY is not set | ||||
| # CONFIG_USB_QCOM_QMP_PHY is not set | ||||
| # CONFIG_USB_QCA_M31_PHY is not set | ||||
| # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | ||||
| # CONFIG_USB_EHCI_TT_NEWSCHED is not set | ||||
| # CONFIG_USB_OHCI_LITTLE_ENDIAN is not set | ||||
| CONFIG_USE_OF=y | ||||
| CONFIG_VDSO=y | ||||
| CONFIG_VECTORS_BASE=0xffff0000 | ||||
| CONFIG_VFP=y | ||||
| CONFIG_VFPv3=y | ||||
| CONFIG_VM_EVENT_COUNTERS=y | ||||
| CONFIG_WATCHDOG_CORE=y | ||||
| # CONFIG_WL_TI is not set | ||||
| # CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set | ||||
| CONFIG_XPS=y | ||||
| CONFIG_XZ_DEC_ARM=y | ||||
| CONFIG_XZ_DEC_BCJ=y | ||||
| CONFIG_ZBOOT_ROM_BSS=0 | ||||
| CONFIG_ZBOOT_ROM_TEXT=0 | ||||
| CONFIG_ZLIB_DEFLATE=y | ||||
| CONFIG_ZLIB_INFLATE=y | ||||
| CONFIG_ZONE_DMA_FLAG=0 | ||||
| CONFIG_QCOM_CACHE_DUMP=y | ||||
| CONFIG_QCOM_CACHE_DUMP_ON_PANIC=y | ||||
| # CONFIG_QCOM_RESTART_REASON is not set | ||||
| # CONFIG_QCOM_DLOAD_MODE is not set | ||||
| CONFIG_FW_AUTH=y | ||||
| CONFIG_FW_AUTH_TEST=m | ||||
| CONFIG_ASYMMETRIC_KEY_TYPE=y | ||||
| CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y | ||||
| CONFIG_PUBLIC_KEY_ALGO_RSA=y | ||||
| CONFIG_X509_CERTIFICATE_PARSER=y | ||||
| CONFIG_PKCS7_MESSAGE_PARSER=n | ||||
| CONFIG_KEYS=y | ||||
| # CONFIG_SKB_RECYCLER is not set | ||||
| CONFIG_SKB_RECYCLER_MULTI_CPU=y | ||||
| # CONFIG_SKB_RECYCLER_PREALLOC is not set | ||||
| # CONFIG_U_SERIAL_CONSOLE is not set | ||||
| CONFIG_SCSI_SCAN_ASYNC=y | ||||
| # CONFIG_NF_IPV6_DUMMY_HEADER is not set | ||||
| # CONFIG_RMNET is not set | ||||
| # CONFIG_RMNET_DATA is not set | ||||
| # CONFIG_RMNET_CTL is not set | ||||
| # CONFIG_MSM_SECURE_BUFFER is not set | ||||
| # CONFIG_STAGING is not set | ||||
| # CONFIG_ANDROID is not set | ||||
| # CONFIG_ION is not set | ||||
| # CONFIG_ION_DUMMY is not set | ||||
| # CONFIG_ION_MSM is not set | ||||
| # CONFIG_ION_TEST is not set | ||||
| # CONFIG_CMA is not set | ||||
| # CONFIG_CMA_DEBUG is not set | ||||
| # CONFIG_CMA_DEBUGFS is not set | ||||
| # CONFIG_DMA_CMA is not set | ||||
| # CONFIG_CMA_AREAS is not set | ||||
| # CONFIG_CMA_SIZE_MBYTES is not set | ||||
| # CONFIG_CMA_SIZE_SEL_MBYTES is not set | ||||
| # CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set | ||||
| # CONFIG_CMA_SIZE_SEL_MIN is not set | ||||
| # CONFIG_CMA_SIZE_SEL_MAX is not set | ||||
| # CONFIG_CMA_ALIGNMENT is not set | ||||
| # CONFIG_ASHMEM is not set | ||||
| # CONFIG_ANDROID_TIMED_OUTPUT is not set | ||||
| # CONFIG_ANDROID_LOW_MEMORY_KILLER is not set | ||||
| # CONFIG_SYNC is not set | ||||
| # CONFIG_SW_SYNC is not set | ||||
| # CONFIG_FSL_MC_BUS is not set | ||||
| # CONFIG_ALLOC_BUFFERS_IN_4K_CHUNKS is not set | ||||
| CONFIG_ALLOC_SKB_PAGE_FRAG_DISABLE=y | ||||
| # CONFIG_MMAP_ALLOW_UNINITIALIZED is not set | ||||
| # CONFIG_MAILBOX is not set | ||||
| # CONFIG_MAILBOX_TEST is not set | ||||
| # CONFIG_QCOM_APCS_IPC is not set | ||||
| # CONFIG_QCOM_GLINK_SSR is not set | ||||
| # CONFIG_QCOM_Q6V5_WCSS is not set | ||||
| # CONFIG_QCOM_SYSMON is not set | ||||
| # CONFIG_QRTR is not set | ||||
| # CONFIG_QRTR_SMD is not set | ||||
| # CONFIG_QRTR_TUN is not set | ||||
| # CONFIG_RPMSG is not set | ||||
| # CONFIG_RPMSG_QCOM_GLINK_RPM is not set | ||||
| # CONFIG_RPMSG_VIRTIO is not set | ||||
| # CONFIG_RPMSG_CHAR is not set | ||||
| # CONFIG_RPMSG_QCOM_GLINK_SMEM is not set | ||||
| # CONFIG_RPMSG_QCOM_SMD is not set | ||||
| CONFIG_QCA_MINIDUMP=y | ||||
| # CONFIG_QCA_MINIDUMP_DEBUG is not set | ||||
| # CONFIG_QRTR_USB is not set | ||||
| # CONFIG_QRTR_FIFO is not set | ||||
| CONFIG_QRTR_MHI=y | ||||
| CONFIG_MHI_BUS=y | ||||
| # CONFIG_MHI_QTI is not set | ||||
| # CONFIG_MHI_NETDEV is not set | ||||
| # CONFIG_MHI_DEBUG is not set | ||||
| # CONFIG_MHI_UCI is not set | ||||
| # CONFIG_MHI_SATELLITE is not set | ||||
| # CONFIG_DIAG_OVER_QRTR is not set | ||||
| # CONFIG_MSM_ADSPRPC is not set | ||||
| CONFIG_CRYPTO_MICHAEL_MIC=y | ||||
| # CONFIG_ARCH_HAS_KCOV is not set | ||||
| # CONFIG_KCOV is not set | ||||
| # CONFIG_GCC_PLUGINS is not set | ||||
| # CONFIG_QTI_Q6V5_ADSP is not set | ||||
| # CONFIG_MSM_RPM_RPMSG is not set | ||||
| # CONFIG_RPMSG_QCOM_GLINK_RPM is not set | ||||
| # CONFIG_REGULATOR_RPM_GLINK is not set | ||||
| # CONFIG_MTD_NAND_SERIAL is not set | ||||
| # CONFIG_ARM_QTI_IPQ60XX_CPUFREQ is not set | ||||
| # CONFIG_PAGE_SCOPE_MULTI_PAGE_READ is not set | ||||
| # CONFIG_CRYPTO_NO_ZERO_LEN_HASH is not set | ||||
| # CONFIG_CRYPTO_DISABLE_AES192_TEST is not set | ||||
| # CONFIG_QTI_EUD is not set | ||||
| # CONFIG_EUD_EXTCON_SUPPORT is not set | ||||
| # CONFIG_CLK_TEST_5018 is not set | ||||
| CONFIG_MAP_E_SUPPORT=y | ||||
| # CONFIG_IPQ_FLASH_16M_PROFILE is not set | ||||
| # CONFIG_QGIC2_MSI is not set | ||||
| CONFIG_BRIDGE_VLAN_FILTERING=y | ||||
| CONFIG_LEDS_GPIO=y | ||||
| # CONFIG_ARCH_IPQ256M is not set | ||||
| CONFIG_SKB_FIXED_SIZE_2K=y | ||||
| # CONFIG_IPQ_MEM_PROFILE is not set | ||||
| # CONFIG_VIRTIO_NET is not set | ||||
| # CONFIG_QCA_85XX_SWITCH is not set | ||||
| CONFIG_AQ_PHY=y | ||||
| CONFIG_DIAG_CHAR=y | ||||
| # CONFIG_HW_RANDOM_VIRTIO is not set | ||||
| # CONFIG_BOOTCONFIG_PARTITION is not set | ||||
| # CONFIG_CRYPTO_DEV_QCEDEV is not set | ||||
| # CONFIG_CRYPTO_DEV_QCRYPTO is not set | ||||
| # CONFIG_MHI_BUS_TEST is not set | ||||
| @@ -1,5 +0,0 @@ | ||||
| // SPDX-License-Identifier: GPL-2.0-only | ||||
| // Copyright (c) 2020 The Linux Foundation. All rights reserved. | ||||
|  | ||||
| #include "../../../arm64/boot/dts/qcom/ipq8074-hk14.dts" | ||||
| #include "ipq8074.dtsi" | ||||
| @@ -15,4 +15,9 @@ | ||||
|  */ | ||||
|  | ||||
| #include "../../../arm64/boot/dts/qcom/qcom-ipq5018-eap104.dts" | ||||
| #include "ipq5018.dtsi" | ||||
|  | ||||
| / { | ||||
| 	pmuv8: pmu { | ||||
| 		compatible = "arm,cortex-a7-pmu"; | ||||
| 	}; | ||||
| }; | ||||
|   | ||||
| @@ -0,0 +1,23 @@ | ||||
| /* | ||||
|  * Copyright (c) 2018-2020, The Linux Foundation. All rights reserved. | ||||
|  * | ||||
|  * 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. | ||||
|  */ | ||||
|  | ||||
| #include "../../../arm64/boot/dts/qcom/qcom-ipq5018-liteon-wpx8324.dts" | ||||
|  | ||||
| / { | ||||
| 	pmuv8: pmu { | ||||
| 		compatible = "arm,cortex-a7-pmu"; | ||||
| 	}; | ||||
| }; | ||||
| @@ -0,0 +1,23 @@ | ||||
| /* | ||||
|  * Copyright (c) 2018-2020, The Linux Foundation. All rights reserved. | ||||
|  * | ||||
|  * 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. | ||||
|  */ | ||||
|  | ||||
| #include "../../../arm64/boot/dts/qcom/qcom-ipq5018-q14.dts" | ||||
|  | ||||
| / { | ||||
| 	pmuv8: pmu { | ||||
| 		compatible = "arm,cortex-a7-pmu"; | ||||
| 	}; | ||||
| }; | ||||
| @@ -15,4 +15,4 @@ | ||||
|  */ | ||||
|  | ||||
| #include "../../../arm64/boot/dts/qcom/qcom-ipq6018-cig-wf188n.dts" | ||||
| #include "ipq6018.dtsi" | ||||
| #include "qcom-ipq6018.dtsi" | ||||
|   | ||||
| @@ -15,4 +15,4 @@ | ||||
|  */ | ||||
|  | ||||
| #include "../../../arm64/boot/dts/qcom/qcom-ipq6018-edgecore-eap101.dts" | ||||
| #include "ipq6018.dtsi" | ||||
| #include "qcom-ipq6018.dtsi" | ||||
|   | ||||
| @@ -15,4 +15,4 @@ | ||||
|  */ | ||||
|  | ||||
| #include "../../../arm64/boot/dts/qcom/qcom-ipq6018-gl-ax1800.dts" | ||||
| #include "ipq6018.dtsi" | ||||
| #include "qcom-ipq6018.dtsi" | ||||
|   | ||||
| @@ -15,4 +15,4 @@ | ||||
|  */ | ||||
|  | ||||
| #include "../../../arm64/boot/dts/qcom/qcom-ipq6018-gl-axt1800.dts" | ||||
| #include "ipq6018.dtsi" | ||||
| #include "qcom-ipq6018.dtsi" | ||||
|   | ||||
| @@ -14,10 +14,5 @@ | ||||
|  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| #include "../../../arm64/boot/dts/qcom/qcom-ipq6018-hfcl-ion4x.dts" | ||||
| #include "ipq6018.dtsi" | ||||
|  | ||||
| / { | ||||
| 	model = "HFCL ION4Xe"; | ||||
| 	compatible = "hfcl,ion4xe", "qcom,ipq6018-cp01", "qcom,ipq6018"; | ||||
| }; | ||||
| #include "../../../arm64/boot/dts/qcom/qcom-ipq6018-hfcl-ion4xe.dts" | ||||
| #include "qcom-ipq6018.dtsi" | ||||
|   | ||||
| @@ -14,10 +14,5 @@ | ||||
|  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| #include "../../../arm64/boot/dts/qcom/qcom-ipq6018-hfcl-ion4x.dts" | ||||
| #include "ipq6018.dtsi" | ||||
|  | ||||
| / { | ||||
| 	model = "HFCL ION4Xi"; | ||||
| 	compatible = "hfcl,ion4xi", "qcom,ipq6018-cp01", "qcom,ipq6018"; | ||||
| }; | ||||
| #include "../../../arm64/boot/dts/qcom/qcom-ipq6018-hfcl-ion4xi.dts" | ||||
| #include "qcom-ipq6018.dtsi" | ||||
|   | ||||
| @@ -0,0 +1,18 @@ | ||||
| /* | ||||
|  * Copyright (c) 2019, The Linux Foundation. All rights reserved. | ||||
|  * | ||||
|  * 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. | ||||
|  */ | ||||
|  | ||||
| #include "../../../arm64/boot/dts/qcom/qcom-ipq6018-indio-um-310ax-v1.dts" | ||||
| #include "qcom-ipq6018.dtsi" | ||||
| @@ -0,0 +1,18 @@ | ||||
| /* | ||||
|  * Copyright (c) 2019, The Linux Foundation. All rights reserved. | ||||
|  * | ||||
|  * 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. | ||||
|  */ | ||||
|  | ||||
| #include "../../../arm64/boot/dts/qcom/qcom-ipq6018-indio-um-510axm-v1.dts" | ||||
| #include "qcom-ipq6018.dtsi" | ||||
| @@ -0,0 +1,18 @@ | ||||
| /* | ||||
|  * Copyright (c) 2019, The Linux Foundation. All rights reserved. | ||||
|  * | ||||
|  * 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. | ||||
|  */ | ||||
|  | ||||
| #include "../../../arm64/boot/dts/qcom/qcom-ipq6018-indio-um-510axp-v1.dts" | ||||
| #include "qcom-ipq6018.dtsi" | ||||
| @@ -0,0 +1,2 @@ | ||||
| #include "../../../arm64/boot/dts/qcom/qcom-ipq6018-meshpp-s618-cp01.dts" | ||||
| #include "qcom-ipq6018.dtsi" | ||||
| @@ -0,0 +1,2 @@ | ||||
| #include "../../../arm64/boot/dts/qcom/qcom-ipq6018-meshpp-s618-cp03.dts" | ||||
| #include "qcom-ipq6018.dtsi" | ||||
| @@ -0,0 +1,18 @@ | ||||
| /* | ||||
|  * Copyright (c) 2019, The Linux Foundation. All rights reserved. | ||||
|  * | ||||
|  * 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. | ||||
|  */ | ||||
|  | ||||
| #include "../../../arm64/boot/dts/qcom/qcom-ipq6018-pax1800-v1.dts" | ||||
| #include "qcom-ipq6018.dtsi" | ||||
| @@ -0,0 +1,18 @@ | ||||
| /* | ||||
|  * Copyright (c) 2019, The Linux Foundation. All rights reserved. | ||||
|  * | ||||
|  * 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. | ||||
|  */ | ||||
|  | ||||
| #include "../../../arm64/boot/dts/qcom/qcom-ipq6018-pax1800-v2.dts" | ||||
| #include "qcom-ipq6018.dtsi" | ||||
| @@ -15,4 +15,4 @@ | ||||
|  */ | ||||
|  | ||||
| #include "../../../arm64/boot/dts/qcom/qcom-ipq6018-yuncore-ax840.dts" | ||||
| #include "ipq6018.dtsi" | ||||
| #include "qcom-ipq6018.dtsi" | ||||
|   | ||||
| @@ -14,4 +14,13 @@ | ||||
|  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||
|  */ | ||||
| #include "../../../arm64/boot/dts/qcom/qcom-ipq807x-eap102.dts" | ||||
| #include "ipq8074.dtsi" | ||||
|  | ||||
| / { | ||||
| 	soc { | ||||
| 		pmu { | ||||
| 			compatible = "arm,cortex-a7-pmu"; | ||||
| 			interrupts = <GIC_PPI 7 (GIC_CPU_MASK_SIMPLE(4) | | ||||
| 					IRQ_TYPE_LEVEL_HIGH)>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|   | ||||
| @@ -14,4 +14,13 @@ | ||||
|  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||
|  */ | ||||
| #include "../../../arm64/boot/dts/qcom/qcom-ipq807x-eap106.dts" | ||||
| #include "ipq8074.dtsi" | ||||
|  | ||||
| / { | ||||
| 	soc { | ||||
| 		pmu { | ||||
| 			compatible = "arm,cortex-a7-pmu"; | ||||
| 			interrupts = <GIC_PPI 7 (GIC_CPU_MASK_SIMPLE(4) | | ||||
| 					IRQ_TYPE_LEVEL_HIGH)>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|   | ||||
| @@ -14,4 +14,13 @@ | ||||
|  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||
|  */ | ||||
| #include "../../../arm64/boot/dts/qcom/qcom-ipq807x-ex227.dts" | ||||
| #include "ipq8074.dtsi" | ||||
|  | ||||
| / { | ||||
| 	soc { | ||||
| 		pmu { | ||||
| 			compatible = "arm,cortex-a7-pmu"; | ||||
| 			interrupts = <GIC_PPI 7 (GIC_CPU_MASK_SIMPLE(4) | | ||||
| 					IRQ_TYPE_LEVEL_HIGH)>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|   | ||||
| @@ -14,4 +14,13 @@ | ||||
|  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||
|  */ | ||||
| #include "../../../arm64/boot/dts/qcom/qcom-ipq807x-ex447.dts" | ||||
| #include "ipq8074.dtsi" | ||||
|  | ||||
| / { | ||||
| 	soc { | ||||
| 		pmu { | ||||
| 			compatible = "arm,cortex-a7-pmu"; | ||||
| 			interrupts = <GIC_PPI 7 (GIC_CPU_MASK_SIMPLE(4) | | ||||
| 					IRQ_TYPE_LEVEL_HIGH)>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|   | ||||
| @@ -14,4 +14,13 @@ | ||||
|  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||
|  */ | ||||
| #include "../../../arm64/boot/dts/qcom/qcom-ipq807x-wf194c.dts" | ||||
| #include "ipq8074.dtsi" | ||||
|  | ||||
| / { | ||||
| 	soc { | ||||
| 		pmu { | ||||
| 			compatible = "arm,cortex-a7-pmu"; | ||||
| 			interrupts = <GIC_PPI 7 (GIC_CPU_MASK_SIMPLE(4) | | ||||
| 					IRQ_TYPE_LEVEL_HIGH)>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|   | ||||
| @@ -14,4 +14,13 @@ | ||||
|  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||
|  */ | ||||
| #include "../../../arm64/boot/dts/qcom/qcom-ipq807x-wf194c4.dts" | ||||
| #include "ipq8074.dtsi" | ||||
|  | ||||
| / { | ||||
| 	soc { | ||||
| 		pmu { | ||||
| 			compatible = "arm,cortex-a7-pmu"; | ||||
| 			interrupts = <GIC_PPI 7 (GIC_CPU_MASK_SIMPLE(4) | | ||||
| 					IRQ_TYPE_LEVEL_HIGH)>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|   | ||||
| @@ -14,4 +14,13 @@ | ||||
|  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||
|  */ | ||||
| #include "../../../arm64/boot/dts/qcom/qcom-ipq807x-wf196.dts" | ||||
| #include "ipq8074.dtsi" | ||||
|  | ||||
| / { | ||||
| 	soc { | ||||
| 		pmu { | ||||
| 			compatible = "arm,cortex-a7-pmu"; | ||||
| 			interrupts = <GIC_PPI 7 (GIC_CPU_MASK_SIMPLE(4) | | ||||
| 					IRQ_TYPE_LEVEL_HIGH)>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|   | ||||
| @@ -1,7 +1,5 @@ | ||||
| /dts-v1/; | ||||
| /* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved. | ||||
|  * | ||||
|  * Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved. | ||||
| /* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved. | ||||
|  * | ||||
|  * Permission to use, copy, modify, and/or distribute this software for any | ||||
|  * purpose with or without fee is hereby granted, provided that the above | ||||
| @@ -16,7 +14,7 @@ | ||||
|  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| #include "ipq5018.dtsi" | ||||
| #include "qcom-ipq5018.dtsi" | ||||
|  | ||||
| / { | ||||
| 	#address-cells = <0x2>; | ||||
| @@ -40,7 +38,11 @@ | ||||
|  | ||||
| 	chosen { | ||||
| 		bootargs = "console=ttyMSM0,115200,n8 rw init=/init"; | ||||
| 	#ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 		bootargs-append = " swiotlb=1"; | ||||
| 	#else | ||||
| 		bootargs-append = " swiotlb=1 coherent_pool=2M"; | ||||
| 	#endif | ||||
| 		stdout-path = "serial0"; | ||||
| 	}; | ||||
|  | ||||
| @@ -78,22 +80,22 @@ | ||||
| 	 * |   QDSS   |  0x4D200000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * | QCN6122_1|              |                         | | ||||
| 	 * |   data   |  0x4D300000  |          13MB           | | ||||
| 	 * |   data   |  0x4D300000  |          15MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * | QCN6122_1|              |                         | | ||||
| 	 * |  M3 Dump |  0x4E000000  |           1MB           | | ||||
| 	 * |  M3 Dump |  0x4E200000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * | QCN6122_1|              |                         | | ||||
| 	 * |   QDSS   |  0x4E100000  |           1MB           | | ||||
| 	 * |   QDSS   |  0x4E300000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * | QCN6122_2|              |                         | | ||||
| 	 * |   data   |  0x4E200000  |          13MB           | | ||||
| 	 * |   data   |  0x4E400000  |          15MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * | QCN6122_2|              |                         | | ||||
| 	 * |  M3 Dump |  0x4EF00000  |           1MB           | | ||||
| 	 * |  M3 Dump |  0x4F300000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * | QCN6122_2|              |                         | | ||||
| 	 * |   QDSS   |  0x4F000000  |           1MB           | | ||||
| 	 * |   QDSS   |  0x4F400000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |                                                   | | ||||
| 	 * |            Rest of the memory for Linux           | | ||||
| @@ -102,7 +104,7 @@ | ||||
| 	 */ | ||||
| 		q6_mem_regions: q6_mem_regions@4B000000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4B000000 0x0 0x4100000>; | ||||
| 			reg = <0x0 0x4B000000 0x0 0x4500000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_code_data: q6_code_data@4B000000 { | ||||
| @@ -127,32 +129,32 @@ | ||||
|  | ||||
| 		q6_qcn6122_data1: q6_qcn6122_data1@4D300000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4D300000 0x0 0xD00000>; | ||||
| 			reg = <0x0 0x4D300000 0x0 0xF00000>; | ||||
| 		}; | ||||
|  | ||||
| 		m3_dump_qcn6122_1: m3_dump_qcn6122_1@4E000000 { | ||||
| 		m3_dump_qcn6122_1: m3_dump_qcn6122_1@4E200000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4E000000 0x0 0x100000>; | ||||
| 			reg = <0x0 0x4E200000 0x0 0x100000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_qcn6122_etr_1: q6_qcn6122_etr_1@4E100000 { | ||||
| 		q6_qcn6122_etr_1: q6_qcn6122_etr_1@4E300000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4E100000 0x0 0x100000>; | ||||
| 			reg = <0x0 0x4E300000 0x0 0x100000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_qcn6122_data2: q6_qcn6122_data2@4E200000 { | ||||
| 		q6_qcn6122_data2: q6_qcn6122_data2@4E400000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4E200000 0x0 0xD00000>; | ||||
| 			reg = <0x0 0x4E400000 0x0 0xF00000>; | ||||
| 		}; | ||||
|  | ||||
| 		m3_dump_qcn6122_2: m3_dump_qcn6122_2@4EF00000 { | ||||
| 		m3_dump_qcn6122_2: m3_dump_qcn6122_2@4F300000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4EF00000 0x0 0x100000>; | ||||
| 			reg = <0x0 0x4F300000 0x0 0x100000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_qcn6122_etr_2: q6_qcn6122_etr_2@4F000000 { | ||||
| 		q6_qcn6122_etr_2: q6_qcn6122_etr_2@4F400000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4F000000 0x0 0x100000>; | ||||
| 			reg = <0x0 0x4F400000 0x0 0x100000>; | ||||
| 		}; | ||||
| 	#else | ||||
| 	/*                 512MB/1GB Profiles | ||||
| @@ -299,6 +301,7 @@ | ||||
| 		blsp1_uart2: serial@78b0000 { | ||||
| 			pinctrl-0 = <&blsp1_uart_pins>; | ||||
| 			pinctrl-names = "default"; | ||||
| 			status = "ok"; | ||||
| 		}; | ||||
|  | ||||
| 		qpic_bam: dma@7984000{ | ||||
| @@ -341,6 +344,7 @@ | ||||
| 			pinctrl-0 = <&mdio1_pins>; | ||||
| 			pinctrl-names = "default"; | ||||
| 			phy-reset-gpio = <&tlmm 39 0>; | ||||
|  | ||||
| 			ethernet-phy@0 { | ||||
| 				reg = <0>; | ||||
| 			}; | ||||
| @@ -376,6 +380,8 @@ | ||||
| 						forced-duplex = <1>; | ||||
| 					}; | ||||
| 				}; | ||||
| 				 | ||||
| 				/* | ||||
| 				led_source@0 { | ||||
| 					source = <0>; | ||||
| 					mode = "normal"; | ||||
| @@ -383,13 +389,15 @@ | ||||
| 					blink_en = "enable"; | ||||
| 					active = "high"; | ||||
| 				}; | ||||
| 				*/ | ||||
| 				 | ||||
| 			}; | ||||
| 			ess-switch1@1 { | ||||
| 				compatible = "qcom,ess-switch-qca83xx"; | ||||
| 				device_id = <1>; | ||||
| 				switch_access_mode = "mdio"; | ||||
| 				mdio-bus = <&mdio1>; | ||||
| 				reset_gpio = <&tlmm 0x27 0>; | ||||
| 				reset_gpio = <0x27>; | ||||
| 				switch_cpu_bmp = <0x40>;  /* cpu port bitmap */ | ||||
| 				switch_lan_bmp = <0x1e>; /* lan port bitmap */ | ||||
| 				switch_wan_bmp = <0x0>;  /* wan port bitmap */ | ||||
| @@ -424,8 +432,8 @@ | ||||
| 			}; | ||||
| 		}; | ||||
|  | ||||
| 		ess-uniphy@98000 { | ||||
| 			status = "disabled"; | ||||
| 		wifi0: wifi@c000000 { | ||||
| 			status = "ok"; | ||||
| 		}; | ||||
|  | ||||
| 		dp1 { | ||||
| @@ -442,7 +450,6 @@ | ||||
| 			mdio-bus = <&mdio0>; | ||||
| 			local-mac-address = [000000000000]; | ||||
| 			phy-mode = "sgmii"; | ||||
| 			qcom,rx-page-mode = <0>; | ||||
| 		}; | ||||
|  | ||||
| 		dp2 { | ||||
| @@ -456,13 +463,14 @@ | ||||
| 			qcom,mactype = <2>; | ||||
| 			local-mac-address = [000000000000]; | ||||
| 			phy-mode = "sgmii"; | ||||
| 			qcom,rx-page-mode = <0>; | ||||
| 		}; | ||||
|  | ||||
| 		nss-macsec1 { | ||||
| 			compatible = "qcom,nss-macsec"; | ||||
| 			phy_addr = <0x1c>; | ||||
| 			mdiobus = <&mdio1>; | ||||
| 		qcom,test@0 { | ||||
| 			status = "ok"; | ||||
| 		}; | ||||
|  | ||||
| 		lpass: lpass@0xA000000{ | ||||
| 			status = "disabled"; | ||||
| 		}; | ||||
|  | ||||
| 		pcm: pcm@0xA3C0000{ | ||||
| @@ -471,6 +479,29 @@ | ||||
| 			status = "disabled"; | ||||
| 		}; | ||||
|  | ||||
| 		pcm_lb: pcm_lb@0 { | ||||
| 			status = "disabled"; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	thermal-zones { | ||||
| 		status = "ok"; | ||||
| 	}; | ||||
|  | ||||
| 	gpio_keys { | ||||
| 		compatible = "gpio-keys"; | ||||
| 		pinctrl-0 = <&button_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
|  | ||||
| 		wps { | ||||
| 			label = "reset"; | ||||
| 			linux,code = <KEY_RESTART>; | ||||
| 			gpios = <&tlmm 32 GPIO_ACTIVE_LOW>; | ||||
| 			linux,input-type = <1>; | ||||
| 			debounce-interval = <60>; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	leds { | ||||
| 		compatible = "gpio-leds"; | ||||
| 		pinctrl-0 = <&leds_pins>; | ||||
| @@ -481,141 +512,39 @@ | ||||
| 			gpios = <&tlmm 2 GPIO_ACTIVE_HIGH>; | ||||
| 			default-state = "off"; | ||||
| 		}; | ||||
|  | ||||
| 		led@3 { | ||||
| 			label = "green:wifi2"; | ||||
| 			gpios = <&tlmm 3 GPIO_ACTIVE_HIGH>; | ||||
| 			default-state = "off"; | ||||
| 		}; | ||||
|  | ||||
| 		led_power: led@30 { | ||||
| 			label = "green:power"; | ||||
| 			gpios = <&tlmm 30 GPIO_ACTIVE_HIGH>; | ||||
| 			default-state = "on"; | ||||
| 		}; | ||||
|  | ||||
| 		led@42 { | ||||
| 			label = "orange:uplink"; | ||||
| 			gpios = <&tlmm 42 GPIO_ACTIVE_HIGH>; | ||||
| 			default-state = "off"; | ||||
| 		}; | ||||
|  | ||||
| 		led@43 { | ||||
| 			label = "yellow:uplink"; | ||||
| 			gpios = <&tlmm 43 GPIO_ACTIVE_HIGH>; | ||||
| 			default-state = "off"; | ||||
| 		}; | ||||
|  | ||||
| 		led@46 { | ||||
| 			label = "green:cloud"; | ||||
| 			gpios = <&tlmm 46 GPIO_ACTIVE_HIGH>; | ||||
| 			default-state = "off"; | ||||
| 		}; | ||||
| 	}; | ||||
| 	}; | ||||
|  | ||||
| 	qcom,test@0 { | ||||
| 		status = "ok"; | ||||
| 	}; | ||||
|  | ||||
| 	thermal-zones { | ||||
| 		status = "ok"; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &tlmm { | ||||
| 	pinctrl-0 = <&blsp0_uart_pins>; | ||||
| 	/* pinctrl-0 = <&blsp0_uart_pins &phy_led_pins>; */ | ||||
| 	pinctrl-0 = <&blsp0_uart_pins &phy_led_pins &ble_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
|  | ||||
| 	blsp0_uart_pins: uart_pins { | ||||
| 		blsp0_uart_rx_tx { | ||||
| 			pins = "gpio20", "gpio21"; | ||||
| 			function = "blsp0_uart0"; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	blsp1_uart_pins: blsp1_uart_pins { | ||||
| 		blsp1_uart_rx_tx { | ||||
| 			pins = "gpio23", "gpio25", "gpio24", "gpio26"; | ||||
| 			function = "blsp1_uart2"; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	blsp0_spi_pins: blsp0_spi_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio10", "gpio11", "gpio12", "gpio13"; | ||||
| 			function = "blsp0_spi"; | ||||
| 			drive-strength = <2>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	qspi_nand_pins: qspi_nand_pins { | ||||
| 		qspi_clock { | ||||
| 			pins = "gpio9"; | ||||
| 			function = "qspi_clk"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
|  | ||||
| 		qspi_cs { | ||||
| 			pins = "gpio8"; | ||||
| 			function = "qspi_cs"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
|  | ||||
| 		qspi_data { | ||||
| 			pins = "gpio4", "gpio5", "gpio6", "gpio7"; | ||||
| 			function = "qspi_data"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	mdio1_pins: mdio_pinmux { | ||||
| 		mux_0 { | ||||
| 			pins = "gpio36"; | ||||
| 			function = "mdc"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
|  | ||||
| 		mux_1 { | ||||
| 			pins = "gpio37"; | ||||
| 			function = "mdio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	i2c_pins: i2c_pins { | ||||
| 		i2c_scl { | ||||
| 			pins = "gpio25"; | ||||
| 			function = "blsp2_i2c1"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
|  | ||||
| 		i2c_sda { | ||||
| 			pins = "gpio26"; | ||||
| 			function = "blsp2_i2c1"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	button_pins: button_pins { | ||||
| 		wps_button { | ||||
| 			pins = "gpio38"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	leds_pins: leds_pins { | ||||
| 		led_5g { | ||||
| 			pins = "gpio2"; | ||||
| @@ -654,6 +583,131 @@ | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
| 	blsp0_uart_pins: uart_pins { | ||||
| 		blsp0_uart_rx_tx { | ||||
| 			pins = "gpio20", "gpio21"; | ||||
| 			function = "blsp0_uart0"; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	blsp1_uart_pins: blsp1_uart_pins { | ||||
| 		blsp1_uart_rx_tx { | ||||
| 			pins = "gpio23", "gpio25", "gpio24", "gpio26"; | ||||
| 			function = "blsp1_uart2"; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	blsp0_spi_pins: blsp0_spi_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio10", "gpio11", "gpio12", "gpio13"; | ||||
| 			function = "blsp0_spi"; | ||||
| 			drive-strength = <2>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	qspi_nand_pins: qspi_nand_pins { | ||||
| 		qspi_clock { | ||||
| 			pins = "gpio9"; | ||||
| 			function = "qspi_clk"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		qspi_cs { | ||||
| 			pins = "gpio8"; | ||||
| 			function = "qspi_cs"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		qspi_data_0 { | ||||
| 			pins = "gpio7"; | ||||
| 			function = "qspi0"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		qspi_data_1 { | ||||
| 			pins = "gpio6"; | ||||
| 			function = "qspi1"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		qspi_data_2 { | ||||
| 			pins = "gpio5"; | ||||
| 			function = "qspi2"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		qspi_data_3 { | ||||
| 			pins = "gpio4"; | ||||
| 			function = "qspi3"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	mdio1_pins: mdio_pinmux { | ||||
| 		mux_0 { | ||||
| 			pins = "gpio36"; | ||||
| 			function = "mdc"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
|  | ||||
| 		mux_1 { | ||||
| 			pins = "gpio37"; | ||||
| 			function = "mdio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	phy_led_pins: phy_led_pins { | ||||
| 		gephy_led_pin { | ||||
| 			pins = "gpio46"; | ||||
| 			/* function = "led0"; */ | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
| 	 | ||||
| 	ble_pins: ble_pins { | ||||
| 		ble_coex_grant { | ||||
| 			pins = "gpio19"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	i2c_pins: i2c_pins { | ||||
| 		i2c_scl { | ||||
| 			pins = "gpio33"; | ||||
| 			function = "blsp2_i2c0"; | ||||
| 			drive-strength = <8>; | ||||
| 			/* bias-disable; */ | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
|  | ||||
| 		i2c_sda { | ||||
| 			pins = "gpio34"; | ||||
| 			function = "blsp2_i2c0"; | ||||
| 			drive-strength = <8>; | ||||
| 			/* bias-disable; */ | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	button_pins: button_pins { | ||||
| 		wps_button { | ||||
| 			pins = "gpio38"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	audio_pins: audio_pinmux { | ||||
| 		mux_1 { | ||||
| @@ -705,8 +759,10 @@ | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| }; | ||||
|  | ||||
| /* Disable gpio 38 and 24  | ||||
| &soc { | ||||
| 	gpio_keys { | ||||
| 		compatible = "gpio-keys"; | ||||
| @@ -714,244 +770,36 @@ | ||||
| 		pinctrl-names = "default"; | ||||
|  | ||||
| 		button@1 { | ||||
| 			label = "reset"; | ||||
| 			linux,code = <KEY_RESTART>; | ||||
| 			gpios = <&tlmm 32 GPIO_ACTIVE_LOW>; | ||||
| 			label = "wps"; | ||||
| 			linux,code = <KEY_WPS_BUTTON>; | ||||
| 			gpios = <&tlmm 38 GPIO_ACTIVE_LOW>; | ||||
| 			linux,input-type = <1>; | ||||
| 			debounce-interval = <60>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &q6v5_wcss { | ||||
| 	compatible = "qcom,ipq5018-q6-mpd"; | ||||
| 	#address-cells = <1>; | ||||
| 	#size-cells = <1>; | ||||
| 	ranges; | ||||
| 	firmware = "IPQ5018/q6_fw.mdt"; | ||||
| 	reg = <0x0cd00000 0x4040>, | ||||
| 		<0x1938000 0x8>, | ||||
| 		<0x193d204 0x4>; | ||||
| 	reg-names = "qdsp6", | ||||
| 			"tcsr-msip", | ||||
| 			"tcsr-q6"; | ||||
| 	resets = <&gcc GCC_WCSSAON_RESET>, | ||||
| 			<&gcc GCC_WCSS_Q6_BCR>; | ||||
|  | ||||
| 	reset-names = "wcss_aon_reset", | ||||
| 			"wcss_q6_reset"; | ||||
|  | ||||
| 	clocks = <&gcc GCC_Q6_AXIS_CLK>, | ||||
| 		<&gcc GCC_WCSS_ECAHB_CLK>, | ||||
| 		<&gcc GCC_Q6_AXIM_CLK>, | ||||
| 		<&gcc GCC_Q6_AXIM2_CLK>, | ||||
| 		<&gcc GCC_Q6_AHB_CLK>, | ||||
| 		<&gcc GCC_Q6_AHB_S_CLK>, | ||||
| 		<&gcc GCC_WCSS_AXI_S_CLK>; | ||||
| 	clock-names = "gcc_q6_axis_clk", | ||||
| 		"gcc_wcss_ecahb_clk", | ||||
| 		"gcc_q6_axim_clk", | ||||
| 		"gcc_q6_axim2_clk", | ||||
| 		"gcc_q6_ahb_clk", | ||||
| 		"gcc_q6_ahb_s_clk", | ||||
| 		"gcc_wcss_axi_s_clk"; | ||||
|  | ||||
| 	#ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 		memory-region = <&q6_mem_regions>, <&q6_etr_region>; | ||||
| 	#else | ||||
| 		memory-region = <&q6_mem_regions>, <&q6_etr_region>, | ||||
| 				<&q6_caldb_region>; | ||||
| 	#endif | ||||
|  | ||||
| 	qcom,rproc = <&q6v5_wcss>; | ||||
| 	qcom,bootargs_smem = <507>; | ||||
| 	boot-args = <0x1 0x4 0x3 0x0F 0x0 0x0>, | ||||
| 			<0x2 0x4 0x2 0x12 0x0 0x0>; | ||||
| 	status = "ok"; | ||||
| 	q6_wcss_pd1: remoteproc_pd1@4ab000 { | ||||
| 		compatible = "qcom,ipq5018-wcss-ahb-mpd"; | ||||
| 		reg = <0x4ab000 0x20>; | ||||
| 		reg-names = "rmb"; | ||||
| 		firmware = "IPQ5018/q6_fw.mdt"; | ||||
| 		m3_firmware = "IPQ5018/m3_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"; | ||||
|  | ||||
| 		resets = <&gcc GCC_WCSSAON_RESET>, | ||||
| 				<&gcc GCC_WCSS_BCR>, | ||||
| 				<&gcc GCC_CE_BCR>; | ||||
| 		reset-names = "wcss_aon_reset", | ||||
| 				"wcss_reset", | ||||
| 				"ce_reset"; | ||||
|  | ||||
| 		clocks = <&gcc GCC_WCSS_AHB_S_CLK>, | ||||
| 				<&gcc GCC_WCSS_ACMT_CLK>, | ||||
| 				<&gcc GCC_WCSS_AXI_M_CLK>; | ||||
| 		clock-names = "gcc_wcss_ahb_s_clk", | ||||
| 					"gcc_wcss_acmt_clk", | ||||
| 					"gcc_wcss_axi_m_clk"; | ||||
|  | ||||
| 		qcom,halt-regs = <&tcsr_q6_block 0xa000 0xd000 0x0>; | ||||
|  | ||||
| 		qcom,smem-states = <&wcss_smp2p_out 8>, | ||||
| 					<&wcss_smp2p_out 9>, | ||||
| 					<&wcss_smp2p_out 10>; | ||||
| 		qcom,smem-state-names = "shutdown", | ||||
| 					"stop", | ||||
| 					"spawn"; | ||||
| 	#ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 		memory-region = <&q6_ipq5018_data>, <&m3_dump>, | ||||
| 				<&q6_etr_region>; | ||||
| 	#else | ||||
| 		memory-region = <&q6_ipq5018_data>, <&m3_dump>, | ||||
| 				<&q6_etr_region>, <&q6_caldb_region>; | ||||
| 	#endif | ||||
|  | ||||
| 	}; | ||||
|  | ||||
| 	q6_wcss_pd2: remoteproc_pd2 { | ||||
| 		compatible = "qcom,ipq5018-wcss-pcie-mpd"; | ||||
| 		firmware = "IPQ5018/q6_fw.mdt"; | ||||
| 		m3_firmware = "qcn6122/m3_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"; | ||||
| 	#ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 		memory-region = <&q6_qcn6122_data1>, <&m3_dump_qcn6122_1>, | ||||
| 				<&q6_qcn6122_etr_1>; | ||||
| 	#else | ||||
| 		memory-region = <&q6_qcn6122_data1>, <&m3_dump_qcn6122_1>, | ||||
| 				<&q6_qcn6122_etr_1>, <&q6_qcn6122_caldb_1>; | ||||
| 	#endif | ||||
|  | ||||
| 	}; | ||||
|  | ||||
| 	q6_wcss_pd3: remoteproc_pd3 { | ||||
| 		compatible = "qcom,ipq5018-wcss-pcie-mpd"; | ||||
| 		firmware = "IPQ5018/q6_fw.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"; | ||||
| 	#ifdef	__IPQ_MEM_PROFILE_256_MB__ | ||||
| 		memory-region = <&q6_qcn6122_data2>, <&m3_dump_qcn6122_2>, | ||||
| 				<&q6_qcn6122_etr_2>; | ||||
| 	#else | ||||
| 		memory-region = <&q6_qcn6122_data2>, <&m3_dump_qcn6122_2>, | ||||
| 				<&q6_qcn6122_etr_2>, <&q6_qcn6122_caldb_2>; | ||||
| 	#endif | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &i2c_0 { | ||||
| 	pinctrl-0 = <&i2c_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &wifi0 { | ||||
| 	/* IPQ5018 */ | ||||
| 	qcom,multipd_arch; | ||||
| 	qcom,rproc = <&q6_wcss_pd1>; | ||||
| 	qcom,userpd-subsys-name = "q6v5_wcss_userpd1"; | ||||
| #ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 	qcom,tgt-mem-mode = <2>; | ||||
| #else | ||||
| 	qcom,tgt-mem-mode = <1>; | ||||
| #endif | ||||
| 	qcom,board_id = <0x23>; | ||||
| 	qcom,bdf-addr = <0x4C400000 0x4C400000 0x4C400000 0x0 0x0>; | ||||
| #ifdef __CNSS2__ | ||||
| 	qcom,caldb-addr = <0x4D400000 0x4D400000 0 0 0>; | ||||
| #else | ||||
| 	qcom,caldb-addr = <0x4D400000>; | ||||
| 	m3-dump-addr = <0x4D200000>; | ||||
| #endif | ||||
| 	qcom,caldb-size = <0x200000>; | ||||
| 	mem-region = <&q6_ipq5018_data>; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &wifi1 { | ||||
| 	/* QCN6122 5G */ | ||||
| 	qcom,multipd_arch; | ||||
| 	qcom,userpd-subsys-name = "q6v5_wcss_userpd2"; | ||||
| 	qcom,rproc = <&q6_wcss_pd2>; | ||||
| #ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 	qcom,tgt-mem-mode = <2>; | ||||
| #else | ||||
| 	qcom,tgt-mem-mode = <1>; | ||||
| #endif | ||||
| 	qcom,board_id = <0x60>; | ||||
| 	qcom,bdf-addr = <0x4D600000 0x4D600000 0x4D300000 0x0 0x0>; | ||||
| #ifdef __CNSS2__ | ||||
| 	qcom,caldb-addr = <0x4E800000 0x4E800000 0 0 0>; | ||||
| #else | ||||
| 	qcom,caldb-addr = <0x4E800000>; | ||||
| 	m3-dump-addr = <0x4E600000>; | ||||
| #endif | ||||
| 	qcom,caldb-size = <0x500000>; | ||||
| 	mem-region = <&q6_qcn6122_data1>; | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &wifi2 { | ||||
| 	/* QCN6122 6G */ | ||||
| 	qcom,multipd_arch; | ||||
| 	qcom,userpd-subsys-name = "q6v5_wcss_userpd3"; | ||||
| 	qcom,rproc = <&q6_wcss_pd3>; | ||||
| #ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 	qcom,tgt-mem-mode = <2>; | ||||
| #else | ||||
| 	qcom,tgt-mem-mode = <1>; | ||||
| #endif | ||||
| 	qcom,board_id = <0xb0>; | ||||
| 	qcom,bdf-addr = <0x4ED00000 0x4ED00000 0x4E200000 0x0 0x0>; | ||||
| #ifdef __CNSS2__ | ||||
| 	qcom,caldb-addr = <0x4FF00000 0x4FF00000 0 0 0>; | ||||
| #else | ||||
| 	qcom,caldb-addr = <0x4FF00000>; | ||||
| 	m3-dump-addr = <0x4FD00000>; | ||||
| #endif | ||||
| 	qcom,caldb-size = <0x500000>; | ||||
| 	mem-region = <&q6_qcn6122_data2>; | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &usb3 { | ||||
| 	status = "ok"; | ||||
| 	device-power-gpio = <&tlmm 24 1>; | ||||
| }; | ||||
|  | ||||
| */ | ||||
|  | ||||
| &eud { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &pcie_x1 { | ||||
| 	status = "disabled"; | ||||
| 	perst-gpio = <&tlmm 18 1>; | ||||
| }; | ||||
|  | ||||
| &pcie_x2 { | ||||
| 	status = "disabled"; | ||||
| 	perst-gpio = <&tlmm 15 1>; | ||||
| }; | ||||
|  | ||||
| &dwc_0 { | ||||
| 	/delete-property/ #phy-cells; | ||||
| 	/delete-property/ phys; | ||||
| @@ -962,20 +810,6 @@ | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &eud { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &pcie_x1 { | ||||
| 	status = "disabled"; | ||||
| 	perst-gpio = <&tlmm 18 GPIO_ACTIVE_LOW>; | ||||
| }; | ||||
|  | ||||
| &pcie_x2 { | ||||
| 	status = "disabled"; | ||||
| 	perst-gpio = <&tlmm 15 GPIO_ACTIVE_LOW>; | ||||
| }; | ||||
|  | ||||
| &pcie_x1phy { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
| @@ -1000,3 +834,182 @@ | ||||
|  | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &qfprom { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &tsens { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qcom_q6v5_wcss { | ||||
| 	qcom,multipd_arch; | ||||
| 	memory-region = <&q6_mem_regions>; | ||||
| 	qcom,share_bootargs; | ||||
| 	qcom,bootargs_smem = <507>; | ||||
| 	boot-args = <0x1 0x4 0x3 0x0F 0x0 0x0>, | ||||
| 			<0x2 0x4 0x2 0x12 0x0 0x0>; | ||||
| 	/* IPQ5018 */ | ||||
| 	q6v5_wcss_userpd1 { | ||||
| 		m3_firmware = "IPQ5018/m3_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"; | ||||
| 		qca,asid = <1>; | ||||
| 		qca,auto-restart; | ||||
| 		qca,int_radio; | ||||
| 		#ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 		memory-region = <&q6_ipq5018_data>, <&m3_dump>, | ||||
| 				<&q6_etr_region>; | ||||
| 		#else | ||||
| 		memory-region = <&q6_ipq5018_data>, <&m3_dump>, | ||||
| 				<&q6_etr_region>, <&q6_caldb_region>; | ||||
| 		#endif | ||||
| 	}; | ||||
|  | ||||
| 	/* QCN6122 6G */ | ||||
| 	q6v5_wcss_userpd2 { | ||||
| 		m3_firmware = "qcn6122/m3_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"; | ||||
| 		qca,asid = <2>; | ||||
| 		qca,auto-restart; | ||||
| 		#ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 		memory-region = <&q6_qcn6122_data1>, <&m3_dump_qcn6122_1>, | ||||
| 				<&q6_qcn6122_etr_1>; | ||||
| 		#else | ||||
| 		memory-region = <&q6_qcn6122_data1>, <&m3_dump_qcn6122_1>, | ||||
| 				<&q6_qcn6122_etr_1>, <&q6_qcn6122_caldb_1>; | ||||
| 		#endif | ||||
| 	}; | ||||
|  | ||||
| 	/* QCN6122 5G */ | ||||
| 	q6v5_wcss_userpd3 { | ||||
| 		m3_firmware = "qcn6122/m3_fw.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"; | ||||
| 		qca,asid = <3>; | ||||
| 		qca,auto-restart; | ||||
| 		#ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 		memory-region = <&q6_qcn6122_data2>, <&m3_dump_qcn6122_2>, | ||||
| 				<&q6_qcn6122_etr_2>; | ||||
| 		#else | ||||
| 		memory-region = <&q6_qcn6122_data2>, <&m3_dump_qcn6122_2>, | ||||
| 				<&q6_qcn6122_etr_2>, <&q6_qcn6122_caldb_2>; | ||||
| 		#endif | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &i2c_0 { | ||||
| 	pinctrl-0 = <&i2c_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	/* status = "disabled"; */ | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qgic_msi_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qgic_msi_1 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &wifi0 { | ||||
| 	/* IPQ5018 */ | ||||
| 	qcom,multipd_arch; | ||||
| 	qcom,userpd-subsys-name = "q6v5_wcss_userpd1"; | ||||
| #ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 	qcom,tgt-mem-mode = <2>; | ||||
| #else | ||||
| 	qcom,tgt-mem-mode = <1>; | ||||
| #endif | ||||
| 	qcom,board_id = <0x23>; | ||||
| 	qcom,bdf-addr = <0x4C400000 0x4C400000 0x4C400000 0x0 0x0>; | ||||
| #ifdef __CNSS2__ | ||||
| 	qcom,caldb-addr = <0x4D400000 0x4D400000 0 0 0>; | ||||
| #else | ||||
| 	qcom,caldb-addr = <0x4D400000>; | ||||
| 	m3-dump-addr = <0x4D200000>; | ||||
| #endif | ||||
| 	qcom,caldb-size = <0x200000>; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &wifi1 { | ||||
| 	/* QCN6122 5G */ | ||||
| 	qcom,multipd_arch; | ||||
| 	qcom,userpd-subsys-name = "q6v5_wcss_userpd2"; | ||||
| #ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 	qcom,tgt-mem-mode = <2>; | ||||
| #else | ||||
| 	qcom,tgt-mem-mode = <1>; | ||||
| #endif | ||||
| 	qcom,board_id = <0x50>; | ||||
| 	qcom,bdf-addr = <0x4D600000 0x4D600000 0x4D300000 0x0 0x0>; | ||||
| #ifdef __CNSS2__ | ||||
| 	qcom,caldb-addr = <0x4E800000 0x4E800000 0 0 0>; | ||||
| #else | ||||
| 	qcom,caldb-addr = <0x4E800000>; | ||||
| 	m3-dump-addr = <0x4E600000>; | ||||
| #endif | ||||
| 	qcom,caldb-size = <0x500000>; | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &wifi2 { | ||||
| 	/* QCN6122 6G */ | ||||
| 	qcom,multipd_arch; | ||||
| 	qcom,userpd-subsys-name = "q6v5_wcss_userpd3"; | ||||
| #ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 	qcom,tgt-mem-mode = <2>; | ||||
| #else | ||||
| 	qcom,tgt-mem-mode = <1>; | ||||
| #endif | ||||
| 	qcom,board_id = <0xb0>; | ||||
| 	qcom,bdf-addr = <0x4ED00000 0x4ED00000 0x4E400000 0x0 0x0>; | ||||
| #ifdef __CNSS2__ | ||||
| 	qcom,caldb-addr = <0x4FF00000 0x4FF00000 0 0 0>; | ||||
| #else | ||||
| 	qcom,caldb-addr = <0x4FF00000>; | ||||
| 	m3-dump-addr = <0x4FD00000>; | ||||
| #endif | ||||
| 	qcom,caldb-size = <0x500000>; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|   | ||||
| @@ -1,7 +1,5 @@ | ||||
| /dts-v1/; | ||||
| /* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved. | ||||
|  * | ||||
|  * Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved. | ||||
| /* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved. | ||||
|  * | ||||
|  * Permission to use, copy, modify, and/or distribute this software for any | ||||
|  * purpose with or without fee is hereby granted, provided that the above | ||||
| @@ -16,14 +14,17 @@ | ||||
|  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| #include "ipq5018.dtsi" | ||||
| #include "qcom-ipq5018.dtsi" | ||||
|  | ||||
| / { | ||||
| 	#address-cells = <0x2>; | ||||
| 	#size-cells = <0x2>; | ||||
| 	model = "Qualcomm Technologies, Inc. IPQ5018/AP-MP03.1"; | ||||
| 	compatible = "qcom,ipq5018-ap-mp03.1", "qcom,ipq5018-mp03.1", "qcom,ipq5018"; | ||||
| 	compatible = "qcom,ipq5018-mp03.1", "qcom,ipq5018"; | ||||
| 	interrupt-parent = <&intc>; | ||||
| 	#ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 	AUTO_MOUNT; | ||||
| 	#endif | ||||
|  | ||||
| 	aliases { | ||||
| 		sdhc1 = &sdhc_1; /* SDC1 eMMC slot */ | ||||
| @@ -31,11 +32,19 @@ | ||||
| 		serial1 = &blsp1_uart2; | ||||
| 		ethernet0 = "/soc/dp1"; | ||||
| 		ethernet1 = "/soc/dp2"; | ||||
| 	        led-boot = &led_sys; | ||||
| 		led-failsafe = &led_sys; | ||||
| 		led-running = &led_sys; | ||||
| 		led-upgrade = &led_sys; | ||||
| 	}; | ||||
|  | ||||
| 	chosen { | ||||
| 		bootargs = "console=ttyMSM0,115200,n8 rw init=/init"; | ||||
| 	#ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 		bootargs-append = " swiotlb=1"; | ||||
| 	#else | ||||
| 		bootargs-append = " swiotlb=1 coherent_pool=2M"; | ||||
| 	#endif | ||||
| 		stdout-path = "serial0"; | ||||
| 	}; | ||||
|  | ||||
| @@ -92,7 +101,7 @@ | ||||
| 	 * |        |              |                         | | ||||
| 	 * +--------+--------------+-------------------------+ | ||||
| 	 * |        |              |                         | | ||||
| 	 * |  MHI1  |  0x4DA00000  |           9MB           | | ||||
| 	 * |  MHI1  |  0x4DA00000  |          16MB           | | ||||
| 	 * |        |              |                         | | ||||
| 	 * +--------+--------------+-------------------------+ | ||||
| 	 * |                                                 | | ||||
| @@ -100,7 +109,7 @@ | ||||
| 	 * |                                                 | | ||||
| 	 * +=================================================+ | ||||
| 	 */ | ||||
| 		q6_region: memory@4b000000 { | ||||
| 		q6_region: wcnss@4b000000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4b000000 0x0 0x01700000>; | ||||
| 		}; | ||||
| @@ -115,18 +124,16 @@ | ||||
| 			reg = <0x0 0x4c800000 0x0 0x100000>; | ||||
| 		}; | ||||
|  | ||||
| 		qcn9000_pcie0: qcn9000_pcie0@4c900000 { | ||||
| 		qcn9000_pcie0@4c900000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4C900000 0x0 0x01100000>; | ||||
| 		}; | ||||
|  | ||||
| 	#if defined(__CNSS2__) | ||||
| 		mhi_region1: dma_pool1@4da00000 { | ||||
| 			compatible = "shared-dma-pool"; | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4DA00000 0x0 0x00900000>; | ||||
| 			reg = <0x0 0x4da00000 0x0 0x01000000>; | ||||
| 		}; | ||||
| 	#endif | ||||
| 	#elif __IPQ_MEM_PROFILE_512_MB__ | ||||
| 	/*                      512 MB Profile | ||||
| 	 * +=========+==============+========================+ | ||||
| @@ -176,11 +183,11 @@ | ||||
| 	 * | caldb  |  0x4CA00000  |           2MB           | | ||||
| 	 * +--------+--------------+-------------------------+ | ||||
| 	 * |        |              |                         | | ||||
| 	 * |QCN9000 |  0x4CC00000  |          38MB           | | ||||
| 	 * |QCN9000 |  0x4CC00000  |          30MB           | | ||||
| 	 * |        |              |                         | | ||||
| 	 * +--------+--------------+-------------------------+ | ||||
| 	 * |        |              |                         | | ||||
| 	 * |  MHI1  |  0x4F200000  |           9MB           | | ||||
| 	 * |  MHI1  |  0x4EA00000  |          16MB           | | ||||
| 	 * |        |              |                         | | ||||
| 	 * +--------+--------------+-------------------------+ | ||||
| 	 * |                                                 | | ||||
| @@ -188,7 +195,7 @@ | ||||
| 	 * |                                                 | | ||||
| 	 * +=================================================+ | ||||
| 	 */ | ||||
| 		q6_region: memory@4b000000 { | ||||
| 		q6_region: wcnss@4b000000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4b000000 0x0 0x01800000>; | ||||
| 		}; | ||||
| @@ -208,18 +215,16 @@ | ||||
| 			reg = <0x0 0x4ca00000 0x0 0x200000>; | ||||
| 		}; | ||||
|  | ||||
| 		qcn9000_pcie0: qcn9000_pcie0@4cc00000 { | ||||
| 		qcn9000_pcie0@4cc00000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4CC00000 0x0 0x02600000>; | ||||
| 			reg = <0x0 0x4CC00000 0x0 0x01E00000>; | ||||
| 		}; | ||||
|  | ||||
| 	#if defined(__CNSS2__) | ||||
| 		mhi_region1: dma_pool1@4f200000 { | ||||
| 		mhi_region1: dma_pool1@4ea00000 { | ||||
| 			compatible = "shared-dma-pool"; | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4f200000 0x0 0x00900000>; | ||||
| 			reg = <0x0 0x4ea00000 0x0 0x01000000>; | ||||
| 		}; | ||||
| 	#endif | ||||
| 	#else | ||||
| 	/*                      1G Profile | ||||
| 	 * +=========+==============+========================+ | ||||
| @@ -269,11 +274,11 @@ | ||||
| 	 * | caldb  |  0x4CA00000  |           2MB           | | ||||
| 	 * +--------+--------------+-------------------------+ | ||||
| 	 * |        |              |                         | | ||||
| 	 * |QCN9000 |  0x4CC00000  |          53MB           | | ||||
| 	 * |QCN9000 |  0x4CC00000  |          45MB           | | ||||
| 	 * |        |              |                         | | ||||
| 	 * +--------+--------------+-------------------------+ | ||||
| 	 * |        |              |                         | | ||||
| 	 * |  MHI1  |  0x50100000  |           9MB           | | ||||
| 	 * |  MHI1  |  0x4F900000  |          24MB           | | ||||
| 	 * |        |              |                         | | ||||
| 	 * +--------+--------------+-------------------------+ | ||||
| 	 * |                                                 | | ||||
| @@ -281,7 +286,7 @@ | ||||
| 	 * |                                                 | | ||||
| 	 * +=================================================+ | ||||
| 	 */ | ||||
| 		q6_region: memory@4b000000 { | ||||
| 		q6_region: wcnss@4b000000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4b000000 0x0 0x01800000>; | ||||
| 		}; | ||||
| @@ -301,19 +306,17 @@ | ||||
| 			reg = <0x0 0x4ca00000 0x0 0x200000>; | ||||
| 		}; | ||||
|  | ||||
| 		qcn9000_pcie0: qcn9000_pcie0@4cc00000 { | ||||
| 		qcn9000_pcie0@4cc00000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4CC00000 0x0 0x03500000>; | ||||
| 			reg = <0x0 0x4CC00000 0x0 0x02D00000>; | ||||
| 		}; | ||||
|  | ||||
| 	#if defined(__CNSS2__) | ||||
| 		mhi_region1: dma_pool1@50100000 { | ||||
| 		mhi_region1: dma_pool1@4F900000 { | ||||
| 			compatible = "shared-dma-pool"; | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x50100000 0x0 0x00900000>; | ||||
| 			reg = <0x0 0x4F900000 0x0 0x01800000>; | ||||
| 		}; | ||||
| 	#endif | ||||
| 	#endif | ||||
| 	}; | ||||
|  | ||||
| 	soc { | ||||
| @@ -425,7 +428,7 @@ | ||||
| 				device_id = <1>; | ||||
| 				switch_access_mode = "mdio"; | ||||
| 				mdio-bus = <&mdio1>; | ||||
| 				reset_gpio = <&tlmm 0x27 0>; | ||||
| 				reset_gpio = <0x27>; | ||||
| 				switch_cpu_bmp = <0x40>;  /* cpu port bitmap */ | ||||
| 				switch_lan_bmp = <0x3c>; /* lan port bitmap */ | ||||
| 				switch_wan_bmp = <0x0>;  /* wan port bitmap */ | ||||
| @@ -464,6 +467,15 @@ | ||||
| 			}; | ||||
| 		}; | ||||
|  | ||||
| 		wifi0: wifi@c000000 { | ||||
| 			qcom,bdf-addr = <0x4BA00000 0x4BA00000 0x4BA00000 | ||||
| 						0x0 0x0>; | ||||
| 			qcom,caldb-addr = <0x4CA00000 0x4CA00000 0x4CA00000 | ||||
| 						0x0 0x0>; | ||||
| 			qcom,caldb-size = <0x200000>; | ||||
| 			status = "ok"; | ||||
| 		}; | ||||
|  | ||||
| 		ess-uniphy@98000 { | ||||
| 			status = "disabled"; | ||||
| 		}; | ||||
| @@ -472,6 +484,10 @@ | ||||
| 			status = "ok"; | ||||
| 		}; | ||||
|  | ||||
| 		qcom,usbbam@8B04000 { | ||||
| 			status = "ok"; | ||||
| 		}; | ||||
|  | ||||
| 		qcom,diag@0 { | ||||
| 			status = "ok"; | ||||
| 		}; | ||||
| @@ -490,7 +506,6 @@ | ||||
| 			mdio-bus = <&mdio0>; | ||||
| 			local-mac-address = [000000000000]; | ||||
| 			phy-mode = "sgmii"; | ||||
| 			qcom,rx-page-mode = <0>; | ||||
| 		}; | ||||
|  | ||||
| 		dp2 { | ||||
| @@ -504,74 +519,16 @@ | ||||
| 			qcom,mactype = <2>; | ||||
| 			local-mac-address = [000000000000]; | ||||
| 			phy-mode = "sgmii"; | ||||
| 			qcom,rx-page-mode = <0>; | ||||
| 		}; | ||||
|  | ||||
| 		rpm_etm0 { | ||||
| 			status = "disabled"; | ||||
| 		}; | ||||
|  | ||||
| 		pcm: pcm@0xA3C0000{ | ||||
| 			pinctrl-0 = <&audio_pins>; | ||||
| 			pinctrl-names = "default"; | ||||
| 			status = "disabled"; | ||||
| 		}; | ||||
|  | ||||
| 		gpio_keys { | ||||
| 			compatible = "gpio-keys"; | ||||
| 			pinctrl-0 = <&button_pins>; | ||||
| 			pinctrl-names = "default"; | ||||
|  | ||||
| 			button@1 { | ||||
| 				label = "wps"; | ||||
| 				linux,code = <KEY_WPS_BUTTON>; | ||||
| 				gpios = <&tlmm 27 GPIO_ACTIVE_LOW>; | ||||
| 				linux,input-type = <1>; | ||||
| 				debounce-interval = <60>; | ||||
| 			}; | ||||
|  | ||||
| 			button@2 { | ||||
| 				label = "reset"; | ||||
| 				linux,code = <KEY_RESTART>; | ||||
| 				gpios = <&tlmm 28 GPIO_ACTIVE_LOW>; | ||||
| 				linux,input-type = <1>; | ||||
| 				debounce-interval = <60>; | ||||
| 			}; | ||||
| 		}; | ||||
|  | ||||
| 		gpio_leds { | ||||
| 			compatible = "gpio-leds"; | ||||
| 			pinctrl-0 = <&leds_pins>; | ||||
| 			pinctrl-names = "default"; | ||||
|  | ||||
| 			led_sys: led@1 { | ||||
| 				label = "sys:blue"; | ||||
| 				gpios = <&tlmm 1 GPIO_ACTIVE_HIGH>;  /* GPIO_1 */ | ||||
| 				default-state="on"; | ||||
| 			}; | ||||
|  | ||||
| 			led@35 { | ||||
| 				label = "sys:green"; | ||||
| 				gpios = <&tlmm 35 GPIO_ACTIVE_HIGH>;  /* GPIO_35 */ | ||||
| 				default-state="off"; | ||||
| 			}; | ||||
|  | ||||
| 			led@31 { | ||||
| 				label = "sys:red"; | ||||
| 				gpios = <&tlmm 31 GPIO_ACTIVE_HIGH>;  /* GPIO_31 */ | ||||
| 				default-state="off"; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	qcom,test@0 { | ||||
| 		status = "ok"; | ||||
| 	}; | ||||
|  | ||||
| 	thermal-zones { | ||||
| 		status = "ok"; | ||||
| 	}; | ||||
|  | ||||
| }; | ||||
|  | ||||
| &tlmm { | ||||
| @@ -610,17 +567,33 @@ | ||||
| 				drive-strength = <8>; | ||||
| 				bias-disable; | ||||
| 			}; | ||||
|  | ||||
| 		qspi_cs { | ||||
| 				pins = "gpio8"; | ||||
| 				function = "qspi_cs"; | ||||
| 				drive-strength = <8>; | ||||
| 				bias-disable; | ||||
| 			}; | ||||
|  | ||||
| 		qspi_data { | ||||
| 				pins = "gpio4", "gpio5", "gpio6", "gpio7"; | ||||
| 				function = "qspi_data"; | ||||
| 		qspi_data_0 { | ||||
| 				pins = "gpio7"; | ||||
| 				function = "qspi0"; | ||||
| 				drive-strength = <8>; | ||||
| 				bias-disable; | ||||
| 			}; | ||||
| 		qspi_data_1 { | ||||
| 				pins = "gpio6"; | ||||
| 				function = "qspi1"; | ||||
| 				drive-strength = <8>; | ||||
| 				bias-disable; | ||||
| 			}; | ||||
| 		qspi_data_2 { | ||||
| 				pins = "gpio5"; | ||||
| 				function = "qspi2"; | ||||
| 				drive-strength = <8>; | ||||
| 				bias-disable; | ||||
| 			}; | ||||
| 		qspi_data_3 { | ||||
| 				pins = "gpio4"; | ||||
| 				function = "qspi3"; | ||||
| 				drive-strength = <8>; | ||||
| 				bias-disable; | ||||
| 			}; | ||||
| @@ -643,7 +616,13 @@ | ||||
| 	}; | ||||
|  | ||||
| 	phy_led_pins: phy_led_pins { | ||||
| 		gephy_led_pin { | ||||
|                 gephy_led_pin_1g { | ||||
|                         pins = "gpio30"; | ||||
|                         function = "led2"; | ||||
|                         drive-strength = <8>; | ||||
|                         bias-pull-down; | ||||
|                 }; | ||||
|                 gephy_led_pin_100 { | ||||
|                         pins = "gpio46"; | ||||
|                         function = "led0"; | ||||
|                         drive-strength = <8>; | ||||
| @@ -704,59 +683,51 @@ | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	audio_pins: audio_pinmux { | ||||
| 		mux_1 { | ||||
| 			pins = "gpio24"; | ||||
| 			function = "audio_rxbclk"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		mux_2 { | ||||
| 			pins = "gpio25"; | ||||
| 			function = "audio_rxfsync"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		mux_3 { | ||||
| 			pins = "gpio26"; | ||||
| 			function = "audio_rxd"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		mux_4 { | ||||
| 			pins = "gpio27"; | ||||
| 			function = "audio_txmclk"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		mux_5 { | ||||
| 			pins = "gpio28"; | ||||
| 			function = "audio_txbclk"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		mux_6 { | ||||
| 			pins = "gpio29"; | ||||
| 			function = "audio_txfsync"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		mux_7 { | ||||
| 			pins = "gpio30"; | ||||
| 			function = "audio_txd"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &soc { | ||||
| 	gpio_keys { | ||||
| 		compatible = "gpio-keys"; | ||||
| 		pinctrl-0 = <&button_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
|  | ||||
| 		button@1 { | ||||
| 			label = "wps"; | ||||
| 			linux,code = <KEY_WPS_BUTTON>; | ||||
| 			gpios = <&tlmm 27 GPIO_ACTIVE_LOW>; | ||||
| 			linux,input-type = <1>; | ||||
| 			debounce-interval = <60>; | ||||
| 		}; | ||||
| 	 | ||||
| 		button@2 { | ||||
| 			label = "reset"; | ||||
| 			linux,code = <KEY_RESTART>; | ||||
| 			gpios = <&tlmm 28 GPIO_ACTIVE_LOW>; | ||||
| 			linux,input-type = <1>; | ||||
| 			debounce-interval = <60>; | ||||
| 		}; | ||||
| 	}; | ||||
| 	gpio_leds { | ||||
| 		compatible = "gpio-leds"; | ||||
| 		pinctrl-0 = <&leds_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
|  | ||||
| 		led_sys: led@1 { | ||||
| 			label = "sys:blue"; | ||||
| 			gpios = <&tlmm 1 GPIO_ACTIVE_HIGH>;  /* GPIO_1 */ | ||||
| 			default-state="on"; | ||||
| 		}; | ||||
| 		led@35 { | ||||
| 			label = "sys:green"; | ||||
| 			gpios = <&tlmm 35 GPIO_ACTIVE_HIGH>;  /* GPIO_35 */ | ||||
| 			default-state="off"; | ||||
| 		}; | ||||
| 		led@31 { | ||||
| 			label = "sys:red"; | ||||
| 			gpios = <&tlmm 31 GPIO_ACTIVE_HIGH>;  /* GPIO_31 */ | ||||
| 			default-state="off"; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &usb3 { | ||||
| @@ -772,22 +743,42 @@ | ||||
|  | ||||
| &pcie_x1 { | ||||
| 	status = "disabled"; | ||||
| 	perst-gpio = <&tlmm 18 GPIO_ACTIVE_LOW>; | ||||
| 	perst-gpio = <&tlmm 18 1>; | ||||
| }; | ||||
|  | ||||
| &pcie_x2 { | ||||
| 	status = "ok"; | ||||
| 	perst-gpio = <&tlmm 15 GPIO_ACTIVE_LOW>; | ||||
| 	perst-gpio = <&tlmm 15 1>; | ||||
| }; | ||||
|  | ||||
| &bt { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &wcss { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &q6v5_wcss { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &q6v5_m3 { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &tcsr_mutex_block { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &tcsr_mutex { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &smem { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &apcs_glb { | ||||
| 	status = "ok"; | ||||
| }; | ||||
| @@ -796,13 +787,34 @@ | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &q6v5_wcss { | ||||
| &qcom_q6v5_wcss { | ||||
| 	#ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 		memory-region = <&q6_region>, <&q6_etr_region>; | ||||
| 	#else | ||||
| 		memory-region = <&q6_region>, <&q6_etr_region>, | ||||
| 				<&q6_caldb_region>; | ||||
| 	#endif | ||||
| 	/* IPQ5018 */ | ||||
| 	q6v5_wcss_userpd1 { | ||||
| 		m3_firmware = "IPQ5018/m3_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"; | ||||
| 		qca,asid = <1>; | ||||
| 		qca,auto-restart; | ||||
| 		qca,int_radio; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &i2c_0 { | ||||
| @@ -811,6 +823,14 @@ | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &dbm_1p5 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &msm_imem { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &blsp1_uart1 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
| @@ -847,108 +867,35 @@ | ||||
| 		qrtr_instance_id = <0x20>; | ||||
| 		#address-cells = <0x2>; | ||||
| 		#size-cells = <0x2>; | ||||
| #if defined(__CNSS2__) | ||||
| 		memory-region = <&mhi_region1>; | ||||
| #else | ||||
| #if !defined(__CNSS2__) | ||||
| 		base-addr = <0x4CC00000>; | ||||
| 		m3-dump-addr = <0x4E000000>; | ||||
| 		etr-addr = <0x4E100000>; | ||||
| 		qcom,caldb-addr = <0x4E200000>; | ||||
| 		pageable-addr = <0x4EA00000>; | ||||
| 		qcom,tgt-mem-mode = <0x1>; | ||||
| 		mhi,max-channels = <30>; | ||||
| 		mhi,timeout = <10000>; | ||||
| #endif | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &wifi0 { | ||||
| 	/* IPQ5018 */ | ||||
| 	mem-region = <&q6_region>; | ||||
| 	qcom,board_id = <0x24>; | ||||
|  | ||||
| 	qcom,bdf-addr = <0x4BA00000 0x4BA00000 0x4BA00000 | ||||
| 		0x0 0x0>; | ||||
| 	qcom,caldb-addr = <0x4CA00000 0x4CA00000 0x0 0x0 0x0>; | ||||
| 	qcom,caldb-size = <0x200000>; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &wifi3 { | ||||
| 	/* QCN9000 5G */ | ||||
| 	board_id = <0xa0>; | ||||
| 	hremote_node = <&qcn9000_pcie0>; | ||||
| #ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 	/* QCN9000 tgt-mem-mode=2 layout - 17MB | ||||
| 	 * +=========+==============+=========+ | ||||
| 	 * |  Region | Start Offset |   Size  | | ||||
| 	 * +---------+--------------+---------+ | ||||
| 	 * | HREMOTE |  0x4C900000  |   11MB  | | ||||
| 	 * +---------+--------------+---------+ | ||||
| 	 * | M3 Dump |  0x4D400000  |   1MB   | | ||||
| 	 * +---------+--------------+---------+ | ||||
| 	 * |   ETR   |  0x4D500000  |   1MB   | | ||||
| 	 * +---------+--------------+---------+ | ||||
| 	 * | Pageable|  0x4D600000  |   4MB   | | ||||
| 	 * +==================================+ | ||||
| 	 */ | ||||
| 	base-addr = <0x4C900000>; | ||||
| 	m3-dump-addr = <0x4D400000>; | ||||
| 	etr-addr = <0x4D500000>; | ||||
| 	caldb-addr = <0>; | ||||
| 	pageable-addr = <0x4D600000>; | ||||
| 	caldb-size = <0>; | ||||
| 	hremote-size = <0xB00000>; | ||||
| 	tgt-mem-mode = <0x2>; | ||||
| 	pageable-size = <0x400000>; | ||||
| #elif __IPQ_MEM_PROFILE_512_MB__ | ||||
| 	/* QCN9000 tgt-mem-mode=1 layout - 38MB | ||||
| 	 * +=========+==============+=========+ | ||||
| 	 * |  Region | Start Offset |   Size  | | ||||
| 	 * +---------+--------------+---------+ | ||||
| 	 * | HREMOTE |  0x4CC00000  |   20MB  | | ||||
| 	 * +---------+--------------+---------+ | ||||
| 	 * | M3 Dump |  0x4E000000  |   1MB   | | ||||
| 	 * +---------+--------------+---------+ | ||||
| 	 * |   ETR   |  0x4E100000  |   1MB   | | ||||
| 	 * +---------+--------------+---------+ | ||||
| 	 * |  Caldb  |  0x4E200000  |   8MB   | | ||||
| 	 * +---------+--------------+---------+ | ||||
| 	 * | Pageable|  0x4EA00000  |   8MB   | | ||||
| 	 * +==================================+ | ||||
| 	 */ | ||||
| 	base-addr = <0x4CC00000>; | ||||
| 	m3-dump-addr = <0x4E000000>; | ||||
| 	etr-addr = <0x4E100000>; | ||||
| 	caldb-addr = <0x4E200000>; | ||||
| 	pageable-addr = <0x4EA00000>; | ||||
| 	caldb-size = <0x800000>; | ||||
| 	hremote-size = <0x1400000>; | ||||
| 	tgt-mem-mode = <0x1>; | ||||
| 	pageable-size = <0x800000>; | ||||
| #else | ||||
| 	/* QCN9000 tgt-mem-mode=0 layout - 53MB | ||||
| 	 * +=========+==============+=========+ | ||||
| 	 * |  Region | Start Offset |   Size  | | ||||
| 	 * +---------+--------------+---------+ | ||||
| 	 * | HREMOTE |  0x4CC00000  |   35MB  | | ||||
| 	 * +---------+--------------+---------+ | ||||
| 	 * | M3 Dump |  0x4EF00000  |   1MB   | | ||||
| 	 * +---------+--------------+---------+ | ||||
| 	 * |   ETR   |  0x4F000000  |   1MB   | | ||||
| 	 * +---------+--------------+---------+ | ||||
| 	 * |  Caldb  |  0x4F100000  |   8MB   | | ||||
| 	 * +---------+--------------+---------+ | ||||
| 	 * | Pageable|  0x4F900000  |   8MB   | | ||||
| 	 * +==================================+ | ||||
| 	 */ | ||||
| 	base-addr = <0x4CC00000>; | ||||
| 	m3-dump-addr = <0x4EF00000>; | ||||
| 	etr-addr = <0x4F000000>; | ||||
| 	caldb-addr = <0x4F100000>; | ||||
| 	pageable-addr = <0x4F900000>; | ||||
| 	hremote-size = <0x2300000>; | ||||
| 	caldb-size = <0x800000>; | ||||
| 	tgt-mem-mode = <0x0>; | ||||
| 	pageable-size = <0x800000>; | ||||
| #endif | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qfprom { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &tsens { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|   | ||||
| @@ -0,0 +1,812 @@ | ||||
| /dts-v1/; | ||||
| /* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved. | ||||
|  * | ||||
|  * 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. | ||||
|  */ | ||||
|  | ||||
| #include "qcom-ipq5018.dtsi" | ||||
|  | ||||
| / { | ||||
| 	#address-cells = <0x2>; | ||||
| 	#size-cells = <0x2>; | ||||
| 	model = "Liteon WPX8324"; | ||||
| 	compatible = "liteon,wpx8324", "qcom,ipq5018-mp03.5-c1", "qcom,ipq5018"; | ||||
| 	interrupt-parent = <&intc>; | ||||
|  | ||||
| 	aliases { | ||||
| 		sdhc1 = &sdhc_1; /* SDC1 eMMC slot */ | ||||
| 		serial0 = &blsp1_uart1; | ||||
| 		/*serial1 = &blsp1_uart2;*/ | ||||
| 		ethernet0 = "/soc/dp1"; | ||||
| 		ethernet1 = "/soc/dp2"; | ||||
| 	}; | ||||
|  | ||||
| 	chosen { | ||||
| 		bootargs = "console=ttyMSM0,115200,n8 rw init=/init"; | ||||
| 	#ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 		bootargs-append = " swiotlb=1"; | ||||
| 	#else | ||||
| 		bootargs-append = " swiotlb=1 coherent_pool=2M"; | ||||
| 	#endif | ||||
| 		stdout-path = "serial0"; | ||||
| 	}; | ||||
|  | ||||
| 	reserved-memory { | ||||
| 	#ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 	/*                   256 MB Profile | ||||
| 	 * +==========+==============+=========================+ | ||||
| 	 * |          |              |                         | | ||||
| 	 * |  Region  | Start Offset |          Size           | | ||||
| 	 * |          |              |                         | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |    NSS   |  0x40000000  |           8MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |   Linux  |  0x40800000  | Depends on total memory | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |   uboot  |  0x4A600000  |           4MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |    SBL   |  0x4AA00000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |   smem   |  0x4AB00000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |    TZ    |  0x4AC00000  |           4MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |    Q6    |              |                         | | ||||
| 	 * |   code/  |  0x4B000000  |          20MB           | | ||||
| 	 * |   data   |              |                         | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |  IPQ5018 |              |                         | | ||||
| 	 * |   data   |  0x4C400000  |          13MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |  IPQ5018 |              |                         | | ||||
| 	 * |  M3 Dump |  0x4D100000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |  IPQ5018 |              |                         | | ||||
| 	 * |   QDSS   |  0x4D200000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * | QCN6122_1|              |                         | | ||||
| 	 * |   data   |  0x4D300000  |          15MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * | QCN6122_1|              |                         | | ||||
| 	 * |  M3 Dump |  0x4E200000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * | QCN6122_1|              |                         | | ||||
| 	 * |   QDSS   |  0x4E300000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * | QCN6122_2|              |                         | | ||||
| 	 * |   data   |  0x4E400000  |          15MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * | QCN6122_2|              |                         | | ||||
| 	 * |  M3 Dump |  0x4F300000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * | QCN6122_2|              |                         | | ||||
| 	 * |   QDSS   |  0x4F400000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |                                                   | | ||||
| 	 * |            Rest of the memory for Linux           | | ||||
| 	 * |                                                   | | ||||
| 	 * +===================================================+ | ||||
| 	 */ | ||||
| 		q6_mem_regions: q6_mem_regions@4B000000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4B000000 0x0 0x4500000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_code_data: q6_code_data@4B000000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4B000000 0x0 0x1400000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_ipq5018_data: q6_ipq5018_data@4C400000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4C400000 0x0 0xD00000>; | ||||
| 		}; | ||||
|  | ||||
| 		m3_dump: m3_dump@4D100000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4D100000 0x0 0x100000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_etr_region: q6_etr_dump@4D200000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4D200000 0x0 0x100000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_qcn6122_data1: q6_qcn6122_data1@4D300000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4D300000 0x0 0xF00000>; | ||||
| 		}; | ||||
|  | ||||
| 		m3_dump_qcn6122_1: m3_dump_qcn6122_1@4E200000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4E200000 0x0 0x100000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_qcn6122_etr_1: q6_qcn6122_etr_1@4E300000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4E300000 0x0 0x100000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_qcn6122_data2: q6_qcn6122_data2@4E400000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4E400000 0x0 0xF00000>; | ||||
| 		}; | ||||
|  | ||||
| 		m3_dump_qcn6122_2: m3_dump_qcn6122_2@4F300000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4F300000 0x0 0x100000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_qcn6122_etr_2: q6_qcn6122_etr_2@4F400000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4F400000 0x0 0x100000>; | ||||
| 		}; | ||||
| 	#else | ||||
| 	/*                 512MB/1GB Profiles | ||||
| 	 * +==========+==============+=========================+ | ||||
| 	 * |          |              |                         | | ||||
| 	 * |  Region  | Start Offset |          Size           | | ||||
| 	 * |          |              |                         | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |    NSS   |  0x40000000  |          16MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |   Linux  |  0x41000000  | Depends on total memory | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |   uboot  |  0x4A600000  |           4MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |    SBL   |  0x4AA00000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |   smem   |  0x4AB00000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |    TZ    |  0x4AC00000  |           4MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |    Q6    |              |                         | | ||||
| 	 * |   code/  |  0x4B000000  |          20MB           | | ||||
| 	 * |   data   |              |                         | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |  IPQ5018 |              |                         | | ||||
| 	 * |   data   |  0x4C400000  |          14MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |  IPQ5018 |              |                         | | ||||
| 	 * |  M3 Dump |  0x4D200000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |  IPQ5018 |              |                         | | ||||
| 	 * |   QDSS   |  0x4D300000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |  IPQ5018 |              |                         | | ||||
| 	 * |  Caldb   |  0x4D400000  |           2MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * | QCN6122_1|              |                         | | ||||
| 	 * |   data   |  0x4D600000  |          16MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * | QCN6122_1|              |                         | | ||||
| 	 * |  M3 Dump |  0x4E600000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * | QCN6122_1|              |                         | | ||||
| 	 * |   QDSS   |  0x4E700000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * | QCN6122_1|              |                         | | ||||
| 	 * |  Caldb   |  0x4E800000  |           5MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * | QCN6122_2|              |                         | | ||||
| 	 * |   data   |  0x4ED00000  |          16MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * | QCN6122_2|              |                         | | ||||
| 	 * |  M3 Dump |  0x4FD00000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * | QCN6122_2|              |                         | | ||||
| 	 * |   QDSS   |  0x4FE00000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * | QCN6122_2|              |                         | | ||||
| 	 * |  Caldb   |  0x4FF00000  |           5MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |                                                   | | ||||
| 	 * |            Rest of the memory for Linux           | | ||||
| 	 * |                                                   | | ||||
| 	 * +===================================================+ | ||||
| 	 */ | ||||
| 		q6_mem_regions: q6_mem_regions@4B000000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4B000000 0x0 0x5400000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_code_data: q6_code_data@4B000000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4B000000 0x0 01400000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_ipq5018_data: q6_ipq5018_data@4C400000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4C400000 0x0 0xE00000>; | ||||
| 		}; | ||||
|  | ||||
| 		m3_dump: m3_dump@4D200000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4D200000 0x0 0x100000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_etr_region: q6_etr_dump@4D300000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4D300000 0x0 0x100000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_caldb_region: q6_caldb_region@4D400000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4D400000 0x0 0x200000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_qcn6122_data1: q6_qcn6122_data1@4D600000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4D600000 0x0 0x1000000>; | ||||
| 		}; | ||||
|  | ||||
| 		m3_dump_qcn6122_1: m3_dump_qcn6122_1@4E600000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4E600000 0x0 0x100000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_qcn6122_etr_1: q6_qcn6122_etr_1@4E700000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4E700000 0x0 0x100000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_qcn6122_caldb_1: q6_qcn6122_caldb_1@4E800000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4E800000 0x0 0x500000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_qcn6122_data2: q6_qcn6122_data2@4E900000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4ED00000 0x0 0x1000000>; | ||||
| 		}; | ||||
|  | ||||
| 		m3_dump_qcn6122_2: m3_dump_qcn6122_2@4FD00000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4FD00000 0x0 0x100000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_qcn6122_etr_2: q6_qcn6122_etr_2@4FE00000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4FE00000 0x0 0x100000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_qcn6122_caldb_2: q6_qcn6122_caldb_2@4FF00000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4FF00000 0x0 0x500000>; | ||||
| 		}; | ||||
|  | ||||
| 	#endif | ||||
| 	}; | ||||
|  | ||||
| 	soc { | ||||
| 		serial@78af000 { | ||||
| 			status = "ok"; | ||||
| 		}; | ||||
| 		qpic_bam: dma@7984000{ | ||||
| 			status = "ok"; | ||||
| 		}; | ||||
|  | ||||
| 		nand: qpic-nand@79b0000 { | ||||
| 			pinctrl-0 = <&qspi_nand_pins>; | ||||
| 			pinctrl-names = "default"; | ||||
| 			status = "ok"; | ||||
| 		}; | ||||
|  | ||||
| 		spi_0: spi@78b5000 { /* BLSP1 QUP0 */ | ||||
| 			pinctrl-0 = <&blsp0_spi_pins>; | ||||
| 			pinctrl-names = "default"; | ||||
| 			cs-select = <0>; | ||||
| 			status = "ok"; | ||||
|  | ||||
| 			m25p80@0 { | ||||
| 				#address-cells = <1>; | ||||
| 				#size-cells = <1>; | ||||
| 				reg = <0>; | ||||
| 				compatible = "n25q128a11"; | ||||
| 				linux,modalias = "m25p80", "n25q128a11"; | ||||
| 				spi-max-frequency = <50000000>; | ||||
| 				use-default-sizes; | ||||
| 			}; | ||||
| 		}; | ||||
|  | ||||
| 		spi_2: spi@78b7000 { /* BLSP1 QUP2 */ | ||||
| 			pinctrl-0 = <&blsp2_spi0_pins>; | ||||
| 			pinctrl-names = "default"; | ||||
| 			cs-select = <0>; | ||||
| 			status = "ok"; | ||||
|  | ||||
| 			tpm0: slb9670@0 { | ||||
| 				#address-cells = <1>; | ||||
| 				#size-cells = <1>; | ||||
| 				reg = <1>;	/* CE1 */ | ||||
| 				compatible = "infineon,slb9670"; | ||||
| 				linux,modalias = "slb9670", "slb9670a11"; | ||||
| 				spi-max-frequency = <50000000>; | ||||
| 				use-default-sizes; | ||||
|  			}; | ||||
| 		}; | ||||
|  | ||||
| 		mdio0: mdio@88000 { | ||||
| 			status = "ok"; | ||||
|  | ||||
| 			ethernet-phy@0 { | ||||
| 				reg = <7>; | ||||
| 			}; | ||||
| 		}; | ||||
|  | ||||
| 		mdio1: mdio@90000 { | ||||
| 			status = "ok"; | ||||
| 			pinctrl-0 = <&mdio1_pins>; | ||||
| 			pinctrl-names = "default"; | ||||
| 			phy-reset-gpio = <&tlmm 26 0>; | ||||
|  | ||||
| 			ethernet-phy@0 { | ||||
| 				reg = <28>; | ||||
| 			}; | ||||
| 		}; | ||||
|  | ||||
| 		ess-instance { | ||||
| 			num_devices = <0x1>; | ||||
| 			ess-switch@0x39c00000 { | ||||
| 				switch_mac_mode = <0xf>; /* mac mode for uniphy instance*/ | ||||
| 				cmnblk_clk = "internal_96MHz"; /* cmnblk clk*/ | ||||
| 				qcom,port_phyinfo { | ||||
| 					port@0 { | ||||
| 						port_id = <1>; | ||||
| 						phy_address = <7>; | ||||
| 						mdiobus = <&mdio0>; | ||||
| 					}; | ||||
| 					port@1 { | ||||
| 						port_id = <2>; | ||||
| 						phy_address = <0x1c>; | ||||
| 						mdiobus = <&mdio1>; | ||||
| 						port_mac_sel = "QGMAC_PORT"; | ||||
| 					}; | ||||
| 				}; | ||||
| 				led_source@0 { | ||||
| 					source = <0>; | ||||
| 					mode = "normal"; | ||||
| 					speed = "all"; | ||||
| 					blink_en = "enable"; | ||||
| 					active = "high"; | ||||
| 				}; | ||||
| 			}; | ||||
| 		}; | ||||
| 		wifi0: wifi@c000000 { | ||||
| 			status = "ok"; | ||||
| 		}; | ||||
|  | ||||
| 		dp1 { | ||||
| 			device_type = "network"; | ||||
| 			compatible = "qcom,nss-dp"; | ||||
| 			clocks = <&gcc GCC_SNOC_GMAC0_AXI_CLK>; | ||||
| 			clock-names = "nss-snoc-gmac-axi-clk"; | ||||
| 			qcom,id = <1>; | ||||
| 			reg = <0x39C00000 0x10000>; | ||||
| 			interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>; | ||||
| 			qcom,mactype = <2>; | ||||
| 			qcom,link-poll = <1>; | ||||
| 			qcom,phy-mdio-addr = <7>; | ||||
| 			mdio-bus = <&mdio0>; | ||||
| 			local-mac-address = [000000000000]; | ||||
| 			phy-mode = "sgmii"; | ||||
| 		}; | ||||
|  | ||||
| 		dp2 { | ||||
| 			device_type = "network"; | ||||
| 			compatible = "qcom,nss-dp"; | ||||
| 			clocks = <&gcc GCC_SNOC_GMAC1_AXI_CLK>; | ||||
| 			clock-names = "nss-snoc-gmac-axi-clk"; | ||||
| 			qcom,id = <2>; | ||||
| 			reg = <0x39D00000 0x10000>; | ||||
| 			interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>; | ||||
| 			qcom,mactype = <2>; | ||||
| 			qcom,link-poll = <1>; | ||||
| 			qcom,phy-mdio-addr = <28>; | ||||
| 			mdio-bus = <&mdio1>; | ||||
| 			local-mac-address = [000000000000]; | ||||
| 			phy-mode = "sgmii"; | ||||
| 		}; | ||||
|  | ||||
| 		qcom,test@0 { | ||||
| 			status = "ok"; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	thermal-zones { | ||||
| 		status = "ok"; | ||||
| 	}; | ||||
| 	leds { | ||||
| 		compatible = "gpio-leds"; | ||||
| 		pinctrl-0 = <&leds_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
|  | ||||
| 		led_blue: led@19 { | ||||
| 			label = "blue:uplink"; | ||||
| 			gpios = <&tlmm 19 GPIO_ACTIVE_HIGH>; | ||||
| 			default-state = "on"; | ||||
| 		}; | ||||
| 		led_orange: led@18 { | ||||
| 			label = "orange:wifi2"; | ||||
| 			gpios = <&tlmm 18 GPIO_ACTIVE_HIGH>; | ||||
| 			default-state = "on"; | ||||
| 		}; | ||||
| 		led_green: led@39 { | ||||
| 			label = "green:wifi5"; | ||||
| 			gpios = <&tlmm 39 GPIO_ACTIVE_HIGH>; | ||||
| 			default-state = "on"; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &tlmm { | ||||
| 	pinctrl-0 = <&blsp0_uart_pins &phy_led_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
|  | ||||
| 	leds_pins: leds_pins { | ||||
| 		led_blue { | ||||
| 			pins = "gpio19"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		led_orange { | ||||
| 			pins = "gpio18"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		led_green { | ||||
| 			pins = "gpio39"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
| 	blsp0_uart_pins: uart_pins { | ||||
| 		blsp0_uart_rx_tx { | ||||
| 			pins = "gpio20", "gpio21"; | ||||
| 			function = "blsp0_uart0"; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	blsp0_spi_pins: blsp0_spi_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio10", "gpio11", "gpio12", "gpio13"; | ||||
| 			function = "blsp0_spi"; | ||||
| 			drive-strength = <2>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	blsp2_spi0_pins: blsp2_spi0_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio31", "gpio32", "gpio33", "gpio34"; | ||||
| 			function = "blsp2_spi0"; | ||||
| 			drive-strength = <2>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	qspi_nand_pins: qspi_nand_pins { | ||||
| 		qspi_clock { | ||||
| 			pins = "gpio9"; | ||||
| 			function = "qspi_clk"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		qspi_cs { | ||||
| 			pins = "gpio8"; | ||||
| 			function = "qspi_cs"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		qspi_data_0 { | ||||
| 			pins = "gpio7"; | ||||
| 			function = "qspi0"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		qspi_data_1 { | ||||
| 			pins = "gpio6"; | ||||
| 			function = "qspi1"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		qspi_data_2 { | ||||
| 			pins = "gpio5"; | ||||
| 			function = "qspi2"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		qspi_data_3 { | ||||
| 			pins = "gpio4"; | ||||
| 			function = "qspi3"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	mdio1_pins: mdio_pinmux { | ||||
| 		mux_0 { | ||||
| 			pins = "gpio36"; | ||||
| 			function = "mdc"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
|  | ||||
| 		mux_1 { | ||||
| 			pins = "gpio37"; | ||||
| 			function = "mdio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	phy_led_pins: phy_led_pins { | ||||
| 		gephy_led_pin { | ||||
| 			pins = "gpio18", "gpio19", "gpio39"; | ||||
| 			/* function = "led0"; */ | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	i2c_pins: i2c_pins { | ||||
| 		i2c_scl { | ||||
| 			pins = "gpio25"; | ||||
| 			function = "blsp2_i2c1"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
|  | ||||
| 		i2c_sda { | ||||
| 			pins = "gpio26"; | ||||
| 			function = "blsp2_i2c1"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	button_pins: button_pins { | ||||
| 		wps_button { | ||||
| 			pins = "gpio29"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &soc { | ||||
| 	gpio_keys { | ||||
| 		compatible = "gpio-keys"; | ||||
| 		pinctrl-0 = <&button_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
|  | ||||
| 		button@1 { | ||||
| 			label = "wps"; | ||||
| 			linux,code = <KEY_WPS_BUTTON>; | ||||
| 			gpios = <&tlmm 29 GPIO_ACTIVE_LOW>; | ||||
| 			linux,input-type = <1>; | ||||
| 			debounce-interval = <60>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &usb3 { | ||||
| 	status = "ok"; | ||||
| 	device-power-gpio = <&tlmm 28 0>; | ||||
| }; | ||||
|  | ||||
| &eud { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &pcie_x1 { | ||||
| 	status = "disabled"; | ||||
| 	perst-gpio = <&tlmm 18 1>; | ||||
| }; | ||||
|  | ||||
| &pcie_x2 { | ||||
| 	status = "disabled"; | ||||
| 	perst-gpio = <&tlmm 15 1>; | ||||
| }; | ||||
|  | ||||
| &dwc_0 { | ||||
| 	/delete-property/ #phy-cells; | ||||
| 	/delete-property/ phys; | ||||
| 	/delete-property/ phy-names; | ||||
| }; | ||||
|  | ||||
| &hs_m31phy_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &pcie_x1phy { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &pcie_x2phy { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &pcie_x1_rp { | ||||
|         status = "disabled"; | ||||
|  | ||||
| 	mhi_0: qcom,mhi@0 { | ||||
| 		reg = <0 0 0 0 0 >; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &pcie_x2_rp { | ||||
|         status = "disabled"; | ||||
|  | ||||
| 	mhi_1: qcom,mhi@1 { | ||||
| 		reg = <0 0 0 0 0 >; | ||||
|  | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &qfprom { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &tsens { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qcom_q6v5_wcss { | ||||
| 	qcom,multipd_arch; | ||||
| 	memory-region = <&q6_mem_regions>; | ||||
| 	qcom,share_bootargs; | ||||
| 	qcom,bootargs_smem = <507>; | ||||
| 	boot-args = <0x1 0x4 0x3 0x0F 0x0 0x0>, | ||||
| 			<0x2 0x4 0x2 0x12 0x0 0x0>; | ||||
| 	/* IPQ5018 */ | ||||
| 	q6v5_wcss_userpd1 { | ||||
| 		m3_firmware = "IPQ5018/m3_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"; | ||||
| 		qca,asid = <1>; | ||||
| 		qca,auto-restart; | ||||
| 		qca,int_radio; | ||||
| 		#ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 		memory-region = <&q6_ipq5018_data>, <&m3_dump>, | ||||
| 				<&q6_etr_region>; | ||||
| 		#else | ||||
| 		memory-region = <&q6_ipq5018_data>, <&m3_dump>, | ||||
| 				<&q6_etr_region>, <&q6_caldb_region>; | ||||
| 		#endif | ||||
| 	}; | ||||
|  | ||||
| 	/* QCN6122 6G */ | ||||
| 	q6v5_wcss_userpd2 { | ||||
| 		m3_firmware = "qcn6122/m3_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"; | ||||
| 		qca,asid = <2>; | ||||
| 		qca,auto-restart; | ||||
| 		#ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 		memory-region = <&q6_qcn6122_data1>, <&m3_dump_qcn6122_1>, | ||||
| 				<&q6_qcn6122_etr_1>; | ||||
| 		#else | ||||
| 		memory-region = <&q6_qcn6122_data1>, <&m3_dump_qcn6122_1>, | ||||
| 				<&q6_qcn6122_etr_1>, <&q6_qcn6122_caldb_1>; | ||||
| 		#endif | ||||
| 	}; | ||||
|  | ||||
| 	/* QCN6122 5G */ | ||||
| 	q6v5_wcss_userpd3 { | ||||
| 		m3_firmware = "qcn6122/m3_fw.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"; | ||||
| 		qca,asid = <3>; | ||||
| 		qca,auto-restart; | ||||
| 		#ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 		memory-region = <&q6_qcn6122_data2>, <&m3_dump_qcn6122_2>, | ||||
| 				<&q6_qcn6122_etr_2>; | ||||
| 		#else | ||||
| 		memory-region = <&q6_qcn6122_data2>, <&m3_dump_qcn6122_2>, | ||||
| 				<&q6_qcn6122_etr_2>, <&q6_qcn6122_caldb_2>; | ||||
| 		#endif | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &qgic_msi_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qgic_msi_1 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &wifi0 { | ||||
| 	/* IPQ5018 */ | ||||
| 	qcom,multipd_arch; | ||||
| 	qcom,userpd-subsys-name = "q6v5_wcss_userpd1"; | ||||
| #ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 	qcom,tgt-mem-mode = <2>; | ||||
| #else | ||||
| 	qcom,tgt-mem-mode = <1>; | ||||
| #endif | ||||
| 	qcom,board_id = <0x24>; | ||||
| 	qcom,bdf-addr = <0x4C400000 0x4C400000 0x4C400000 0x0 0x0>; | ||||
| #ifdef __CNSS2__ | ||||
| 	qcom,caldb-addr = <0x4D400000 0x4D400000 0 0 0>; | ||||
| #else | ||||
| 	qcom,caldb-addr = <0x4D400000>; | ||||
| 	m3-dump-addr = <0x4D200000>; | ||||
| #endif | ||||
| 	qcom,caldb-size = <0x200000>; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &wifi1 { | ||||
| 	/* QCN6122 5G */ | ||||
| 	qcom,multipd_arch; | ||||
| 	qcom,userpd-subsys-name = "q6v5_wcss_userpd3"; | ||||
| #ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 	qcom,tgt-mem-mode = <2>; | ||||
| #else | ||||
| 	qcom,tgt-mem-mode = <1>; | ||||
| #endif | ||||
| 	qcom,board_id = <0x60>; | ||||
| 	qcom,bdf-addr = <0x4ED00000 0x4ED00000 0x4E400000 0x0 0x0>; | ||||
| #ifdef __CNSS2__ | ||||
| 	qcom,caldb-addr = <0x4FF00000 0x4FF00000 0 0 0>; | ||||
| #else | ||||
| 	qcom,caldb-addr = <0x4FF00000>; | ||||
| 	m3-dump-addr = <0x4FD00000>; | ||||
| #endif | ||||
| 	qcom,caldb-size = <0x500000>; | ||||
| 	status = "ok"; | ||||
| }; | ||||
							
								
								
									
										886
									
								
								feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-q14.dts
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										886
									
								
								feeds/ipq807x/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-q14.dts
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,886 @@ | ||||
| /dts-v1/; | ||||
| /* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved. | ||||
|  * | ||||
|  * 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. | ||||
|  */ | ||||
|  | ||||
| #include "qcom-ipq5018.dtsi" | ||||
|  | ||||
| / { | ||||
| 	#address-cells = <0x2>; | ||||
| 	#size-cells = <0x2>; | ||||
| 	model = "Motorola Q14"; | ||||
| 	compatible = "motorola,q14", "qcom,ipq5018-mp03.5-c1", "qcom,ipq5018"; | ||||
| 	interrupt-parent = <&intc>; | ||||
|  | ||||
| 	aliases { | ||||
| 		sdhc1 = &sdhc_1; /* SDC1 eMMC slot */ | ||||
| 		serial0 = &blsp1_uart1; | ||||
| 		serial1 = &blsp1_uart2; | ||||
| 		ethernet0 = "/soc/dp1"; | ||||
| 		ethernet1 = "/soc/dp2"; | ||||
| 	}; | ||||
|  | ||||
| 	chosen { | ||||
| 		bootargs = "console=ttyMSM0,115200,n8 rw init=/init"; | ||||
| 	#ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 		bootargs-append = " swiotlb=1"; | ||||
| 	#else | ||||
| 		bootargs-append = " swiotlb=1 coherent_pool=2M"; | ||||
| 	#endif | ||||
| 		stdout-path = "serial0"; | ||||
| 	}; | ||||
|  | ||||
| 	reserved-memory { | ||||
| 	#ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 	/*                   256 MB Profile | ||||
| 	 * +==========+==============+=========================+ | ||||
| 	 * |          |              |                         | | ||||
| 	 * |  Region  | Start Offset |          Size           | | ||||
| 	 * |          |              |                         | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |    NSS   |  0x40000000  |           8MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |   Linux  |  0x40800000  | Depends on total memory | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |   uboot  |  0x4A600000  |           4MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |    SBL   |  0x4AA00000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |   smem   |  0x4AB00000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |    TZ    |  0x4AC00000  |           4MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |    Q6    |              |                         | | ||||
| 	 * |   code/  |  0x4B000000  |          20MB           | | ||||
| 	 * |   data   |              |                         | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |  IPQ5018 |              |                         | | ||||
| 	 * |   data   |  0x4C400000  |          13MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |  IPQ5018 |              |                         | | ||||
| 	 * |  M3 Dump |  0x4D100000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |  IPQ5018 |              |                         | | ||||
| 	 * |   QDSS   |  0x4D200000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * | QCN6122_1|              |                         | | ||||
| 	 * |   data   |  0x4D300000  |          15MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * | QCN6122_1|              |                         | | ||||
| 	 * |  M3 Dump |  0x4E200000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * | QCN6122_1|              |                         | | ||||
| 	 * |   QDSS   |  0x4E300000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * | QCN6122_2|              |                         | | ||||
| 	 * |   data   |  0x4E400000  |          15MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * | QCN6122_2|              |                         | | ||||
| 	 * |  M3 Dump |  0x4F300000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * | QCN6122_2|              |                         | | ||||
| 	 * |   QDSS   |  0x4F400000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |                                                   | | ||||
| 	 * |            Rest of the memory for Linux           | | ||||
| 	 * |                                                   | | ||||
| 	 * +===================================================+ | ||||
| 	 */ | ||||
| 		q6_mem_regions: q6_mem_regions@4B000000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4B000000 0x0 0x4500000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_code_data: q6_code_data@4B000000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4B000000 0x0 0x1400000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_ipq5018_data: q6_ipq5018_data@4C400000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4C400000 0x0 0xD00000>; | ||||
| 		}; | ||||
|  | ||||
| 		m3_dump: m3_dump@4D100000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4D100000 0x0 0x100000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_etr_region: q6_etr_dump@4D200000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4D200000 0x0 0x100000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_qcn6122_data1: q6_qcn6122_data1@4D300000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4D300000 0x0 0xF00000>; | ||||
| 		}; | ||||
|  | ||||
| 		m3_dump_qcn6122_1: m3_dump_qcn6122_1@4E200000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4E200000 0x0 0x100000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_qcn6122_etr_1: q6_qcn6122_etr_1@4E300000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4E300000 0x0 0x100000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_qcn6122_data2: q6_qcn6122_data2@4E400000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4E400000 0x0 0xF00000>; | ||||
| 		}; | ||||
|  | ||||
| 		m3_dump_qcn6122_2: m3_dump_qcn6122_2@4F300000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4F300000 0x0 0x100000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_qcn6122_etr_2: q6_qcn6122_etr_2@4F400000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4F400000 0x0 0x100000>; | ||||
| 		}; | ||||
| 	#else | ||||
| 	/*                 512MB/1GB Profiles | ||||
| 	 * +==========+==============+=========================+ | ||||
| 	 * |          |              |                         | | ||||
| 	 * |  Region  | Start Offset |          Size           | | ||||
| 	 * |          |              |                         | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |    NSS   |  0x40000000  |          16MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |   Linux  |  0x41000000  | Depends on total memory | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |   uboot  |  0x4A600000  |           4MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |    SBL   |  0x4AA00000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |   smem   |  0x4AB00000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |    TZ    |  0x4AC00000  |           4MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |    Q6    |              |                         | | ||||
| 	 * |   code/  |  0x4B000000  |          20MB           | | ||||
| 	 * |   data   |              |                         | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |  IPQ5018 |              |                         | | ||||
| 	 * |   data   |  0x4C400000  |          14MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |  IPQ5018 |              |                         | | ||||
| 	 * |  M3 Dump |  0x4D200000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |  IPQ5018 |              |                         | | ||||
| 	 * |   QDSS   |  0x4D300000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |  IPQ5018 |              |                         | | ||||
| 	 * |  Caldb   |  0x4D400000  |           2MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * | QCN6122_1|              |                         | | ||||
| 	 * |   data   |  0x4D600000  |          16MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * | QCN6122_1|              |                         | | ||||
| 	 * |  M3 Dump |  0x4E600000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * | QCN6122_1|              |                         | | ||||
| 	 * |   QDSS   |  0x4E700000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * | QCN6122_1|              |                         | | ||||
| 	 * |  Caldb   |  0x4E800000  |           5MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * | QCN6122_2|              |                         | | ||||
| 	 * |   data   |  0x4ED00000  |          16MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * | QCN6122_2|              |                         | | ||||
| 	 * |  M3 Dump |  0x4FD00000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * | QCN6122_2|              |                         | | ||||
| 	 * |   QDSS   |  0x4FE00000  |           1MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * | QCN6122_2|              |                         | | ||||
| 	 * |  Caldb   |  0x4FF00000  |           5MB           | | ||||
| 	 * +----------+--------------+-------------------------+ | ||||
| 	 * |                                                   | | ||||
| 	 * |            Rest of the memory for Linux           | | ||||
| 	 * |                                                   | | ||||
| 	 * +===================================================+ | ||||
| 	 */ | ||||
| 		q6_mem_regions: q6_mem_regions@4B000000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4B000000 0x0 0x5400000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_code_data: q6_code_data@4B000000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4B000000 0x0 01400000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_ipq5018_data: q6_ipq5018_data@4C400000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4C400000 0x0 0xE00000>; | ||||
| 		}; | ||||
|  | ||||
| 		m3_dump: m3_dump@4D200000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4D200000 0x0 0x100000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_etr_region: q6_etr_dump@4D300000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4D300000 0x0 0x100000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_caldb_region: q6_caldb_region@4D400000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4D400000 0x0 0x200000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_qcn6122_data1: q6_qcn6122_data1@4D600000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4D600000 0x0 0x1000000>; | ||||
| 		}; | ||||
|  | ||||
| 		m3_dump_qcn6122_1: m3_dump_qcn6122_1@4E600000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4E600000 0x0 0x100000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_qcn6122_etr_1: q6_qcn6122_etr_1@4E700000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4E700000 0x0 0x100000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_qcn6122_caldb_1: q6_qcn6122_caldb_1@4E800000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4E800000 0x0 0x500000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_qcn6122_data2: q6_qcn6122_data2@4E900000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4ED00000 0x0 0x1000000>; | ||||
| 		}; | ||||
|  | ||||
| 		m3_dump_qcn6122_2: m3_dump_qcn6122_2@4FD00000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4FD00000 0x0 0x100000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_qcn6122_etr_2: q6_qcn6122_etr_2@4FE00000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4FE00000 0x0 0x100000>; | ||||
| 		}; | ||||
|  | ||||
| 		q6_qcn6122_caldb_2: q6_qcn6122_caldb_2@4FF00000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4FF00000 0x0 0x500000>; | ||||
| 		}; | ||||
|  | ||||
| 	#endif | ||||
| 	}; | ||||
|  | ||||
| 	soc { | ||||
| 		serial@78af000 { | ||||
| 			status = "ok"; | ||||
| 		}; | ||||
|  | ||||
| 		blsp1_uart2: serial@78b0000 { | ||||
| 			pinctrl-0 = <&blsp1_uart_pins>; | ||||
| 			pinctrl-names = "default"; | ||||
| 		}; | ||||
|  | ||||
| 		qpic_bam: dma@7984000{ | ||||
| 			status = "ok"; | ||||
| 		}; | ||||
|  | ||||
| 		nand: qpic-nand@79b0000 { | ||||
| 			status = "disabled"; | ||||
| 		}; | ||||
|  | ||||
| 		spi_0: spi@78b5000 { /* BLSP1 QUP0 */ | ||||
| 			pinctrl-0 = <&blsp0_spi_pins>; | ||||
| 			pinctrl-names = "default"; | ||||
| 			cs-select = <0>; | ||||
| 			status = "ok"; | ||||
|  | ||||
| 			m25p80@0 { | ||||
| 				#address-cells = <1>; | ||||
| 				#size-cells = <1>; | ||||
| 				reg = <0>; | ||||
| 				compatible = "n25q128a11"; | ||||
| 				linux,modalias = "m25p80", "n25q128a11"; | ||||
| 				spi-max-frequency = <50000000>; | ||||
| 				use-default-sizes; | ||||
| 			}; | ||||
| 		}; | ||||
|  | ||||
| 		mdio0: mdio@88000 { | ||||
| 			status = "ok"; | ||||
|  | ||||
| 			ethernet-phy@0 { | ||||
| 				reg = <7>; | ||||
| 			}; | ||||
| 		}; | ||||
|  | ||||
| 		mdio1: mdio@90000 { | ||||
| 			status = "ok"; | ||||
| 			pinctrl-0 = <&mdio1_pins>; | ||||
| 			pinctrl-names = "default"; | ||||
| 			phy-reset-gpio = <&tlmm 39 0>; | ||||
|  | ||||
| 			ethernet-phy@0 { | ||||
| 				reg = <28>; | ||||
| 			}; | ||||
| 		}; | ||||
|  | ||||
| 		ess-instance { | ||||
| 			num_devices = <0x1>; | ||||
| 			ess-switch@0x39c00000 { | ||||
| 				switch_mac_mode = <0xf>; /* mac mode for uniphy instance*/ | ||||
| 				cmnblk_clk = "internal_96MHz"; /* cmnblk clk*/ | ||||
| 				qcom,port_phyinfo { | ||||
| 					port@0 { | ||||
| 						port_id = <1>; | ||||
| 						phy_address = <7>; | ||||
| 						mdiobus = <&mdio0>; | ||||
| 					}; | ||||
| 					port@1 { | ||||
| 						port_id = <2>; | ||||
| 						phy_address = <0x1c>; | ||||
| 						mdiobus = <&mdio1>; | ||||
| 						port_mac_sel = "QGMAC_PORT"; | ||||
| 					}; | ||||
| 				}; | ||||
| 				led_source@0 { | ||||
| 					source = <0>; | ||||
| 					mode = "normal"; | ||||
| 					speed = "all"; | ||||
| 					blink_en = "enable"; | ||||
| 					active = "high"; | ||||
| 				}; | ||||
| 			}; | ||||
| 		}; | ||||
|  | ||||
| 		dp1 { | ||||
| 			device_type = "network"; | ||||
| 			compatible = "qcom,nss-dp"; | ||||
| 			clocks = <&gcc GCC_SNOC_GMAC0_AXI_CLK>; | ||||
| 			clock-names = "nss-snoc-gmac-axi-clk"; | ||||
| 			qcom,id = <1>; | ||||
| 			reg = <0x39C00000 0x10000>; | ||||
| 			interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>; | ||||
| 			qcom,mactype = <2>; | ||||
| 			qcom,link-poll = <1>; | ||||
| 			qcom,phy-mdio-addr = <7>; | ||||
| 			mdio-bus = <&mdio0>; | ||||
| 			local-mac-address = [000000000000]; | ||||
| 			phy-mode = "sgmii"; | ||||
| 		}; | ||||
|  | ||||
| 		dp2 { | ||||
| 			device_type = "network"; | ||||
| 			compatible = "qcom,nss-dp"; | ||||
| 			clocks = <&gcc GCC_SNOC_GMAC1_AXI_CLK>; | ||||
| 			clock-names = "nss-snoc-gmac-axi-clk"; | ||||
| 			qcom,id = <2>; | ||||
| 			reg = <0x39D00000 0x10000>; | ||||
| 			interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>; | ||||
| 			qcom,mactype = <2>; | ||||
| 			qcom,link-poll = <1>; | ||||
| 			qcom,phy-mdio-addr = <28>; | ||||
| 			mdio-bus = <&mdio1>; | ||||
| 			local-mac-address = [000000000000]; | ||||
| 			phy-mode = "sgmii"; | ||||
| 		}; | ||||
|  | ||||
| 		qcom,test@0 { | ||||
| 			status = "ok"; | ||||
| 		}; | ||||
|  | ||||
| 		nss-macsec1 { | ||||
| 			compatible = "qcom,nss-macsec"; | ||||
| 			phy_addr = <0x1c>; | ||||
| 			mdiobus = <&mdio1>; | ||||
| 		}; | ||||
|  | ||||
| 		lpass: lpass@0xA000000{ | ||||
| 			status = "disabled"; | ||||
| 		}; | ||||
|  | ||||
| 		pcm: pcm@0xA3C0000{ | ||||
| 			pinctrl-0 = <&audio_pins>; | ||||
| 			pinctrl-names = "default"; | ||||
| 			status = "disabled"; | ||||
| 		}; | ||||
|  | ||||
| 		pcm_lb: pcm_lb@0 { | ||||
| 			status = "disabled"; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	thermal-zones { | ||||
| 		status = "ok"; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &sdhc_1 { | ||||
| 	pinctrl-0 = <&emmc_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	qcom,clk-rates = <400000 25000000 50000000 100000000 \ | ||||
| 			 192000000 384000000>; | ||||
| 	qcom,bus-speed-mode = "HS200_1p8v", "DDR_1p8v"; | ||||
| 	qcom,nonremovable; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &tlmm { | ||||
| 	pinctrl-0 = <&blsp0_uart_pins &phy_led_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
|  | ||||
| 	blsp0_uart_pins: uart_pins { | ||||
| 		blsp0_uart_rx_tx { | ||||
| 			pins = "gpio20", "gpio21"; | ||||
| 			function = "blsp0_uart0"; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	blsp1_uart_pins: blsp1_uart_pins { | ||||
| 		blsp1_uart_rx_tx { | ||||
| 			pins = "gpio23", "gpio25", "gpio24", "gpio26"; | ||||
| 			function = "blsp1_uart2"; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	blsp0_spi_pins: blsp0_spi_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio10", "gpio11", "gpio12", "gpio13"; | ||||
| 			function = "blsp0_spi"; | ||||
| 			drive-strength = <2>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	emmc_pins: emmc_pins { | ||||
| 		emmc_clk { | ||||
| 				pins = "gpio9"; | ||||
| 				function = "sdc1_clk"; | ||||
| 				drive-strength = <8>; | ||||
| 				bias-disable; | ||||
| 			}; | ||||
| 		emmc_cmd { | ||||
| 				pins = "gpio8"; | ||||
| 				function = "sdc1_cmd"; | ||||
| 				drive-strength = <8>; | ||||
| 				bias-pull-up; | ||||
| 			}; | ||||
| 		emmc_data_0 { | ||||
| 				pins = "gpio7"; | ||||
| 				function = "sdc10"; | ||||
| 				drive-strength = <8>; | ||||
| 				bias-disable; | ||||
| 			}; | ||||
| 		emmc_data_1 { | ||||
| 				pins = "gpio6"; | ||||
| 				function = "sdc11"; | ||||
| 				drive-strength = <8>; | ||||
| 				bias-disable; | ||||
| 			}; | ||||
| 		emmc_data_2 { | ||||
| 				pins = "gpio5"; | ||||
| 				function = "sdc12"; | ||||
| 				drive-strength = <8>; | ||||
| 				bias-disable; | ||||
| 			}; | ||||
| 		emmc_data_3 { | ||||
| 				pins = "gpio4"; | ||||
| 				function = "sdc13"; | ||||
| 				drive-strength = <8>; | ||||
| 				bias-disable; | ||||
| 			}; | ||||
| 	}; | ||||
|  | ||||
| 	mdio1_pins: mdio_pinmux { | ||||
| 		mux_0 { | ||||
| 			pins = "gpio36"; | ||||
| 			function = "mdc"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
|  | ||||
| 		mux_1 { | ||||
| 			pins = "gpio37"; | ||||
| 			function = "mdio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	phy_led_pins: phy_led_pins { | ||||
| 		gephy_led_pin { | ||||
| 			pins = "gpio46"; | ||||
| 			function = "led0"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	i2c_pins: i2c_pins { | ||||
| 		i2c_scl { | ||||
| 			pins = "gpio25"; | ||||
| 			function = "blsp2_i2c1"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
|  | ||||
| 		i2c_sda { | ||||
| 			pins = "gpio26"; | ||||
| 			function = "blsp2_i2c1"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	button_pins: button_pins { | ||||
| 		wps_button { | ||||
| 			pins = "gpio38"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 		 | ||||
| 		reset_button { | ||||
| 			pins = "gpio31"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		};		 | ||||
| 		 | ||||
| 	}; | ||||
|  | ||||
| 	audio_pins: audio_pinmux { | ||||
| 		mux_1 { | ||||
| 			pins = "gpio24"; | ||||
| 			function = "audio_rxbclk"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		mux_2 { | ||||
| 			pins = "gpio25"; | ||||
| 			function = "audio_rxfsync"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		mux_3 { | ||||
| 			pins = "gpio26"; | ||||
| 			function = "audio_rxd"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		mux_4 { | ||||
| 			pins = "gpio27"; | ||||
| 			function = "audio_txmclk"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		mux_5 { | ||||
| 			pins = "gpio28"; | ||||
| 			function = "audio_txbclk"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		mux_6 { | ||||
| 			pins = "gpio29"; | ||||
| 			function = "audio_txfsync"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		mux_7 { | ||||
| 			pins = "gpio30"; | ||||
| 			function = "audio_txd"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| }; | ||||
|  | ||||
| &soc { | ||||
| 	gpio_keys { | ||||
| 		compatible = "gpio-keys"; | ||||
| 		pinctrl-0 = <&button_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
|  | ||||
| 		button@1 { | ||||
| 			label = "wps"; | ||||
| 			linux,code = <KEY_WPS_BUTTON>; | ||||
| 			gpios = <&tlmm 38 GPIO_ACTIVE_LOW>; | ||||
| 			linux,input-type = <1>; | ||||
| 			debounce-interval = <60>; | ||||
| 		}; | ||||
| 		 | ||||
| 		button@2 { | ||||
| 			label = "reset"; | ||||
| 			linux,code = <KEY_RESTART>; | ||||
| 			gpios = <&tlmm 31 GPIO_ACTIVE_LOW>; | ||||
| 			linux,input-type = <1>; | ||||
| 			debounce-interval = <60>; | ||||
| 		};			 | ||||
| 		 | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &usb3 { | ||||
| 	status = "ok"; | ||||
| 	device-power-gpio = <&tlmm 24 1>; | ||||
| }; | ||||
|  | ||||
| &eud { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &pcie_x1 { | ||||
| 	status = "ok"; | ||||
| 	perst-gpio = <&tlmm 18 1>; | ||||
| }; | ||||
|  | ||||
| &pcie_x2 { | ||||
| 	status = "ok"; | ||||
| 	perst-gpio = <&tlmm 15 1>; | ||||
| }; | ||||
|  | ||||
| &dwc_0 { | ||||
| 	/delete-property/ #phy-cells; | ||||
| 	/delete-property/ phys; | ||||
| 	/delete-property/ phy-names; | ||||
| }; | ||||
|  | ||||
| &hs_m31phy_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &pcie_x1phy { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &pcie_x2phy { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &pcie_x1_rp { | ||||
|         status = "ok"; | ||||
|  | ||||
| 	mhi_0: qcom,mhi@0 { | ||||
| 		reg = <0 0 0 0 0 >; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &pcie_x2_rp { | ||||
|         status = "ok"; | ||||
|  | ||||
| 	mhi_1: qcom,mhi@1 { | ||||
| 		reg = <0 0 0 0 0 >; | ||||
|  | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &qfprom { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &tsens { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qcom_q6v5_wcss { | ||||
| 	qcom,multipd_arch; | ||||
| 	memory-region = <&q6_mem_regions>; | ||||
| 	qcom,share_bootargs; | ||||
| 	qcom,bootargs_smem = <507>; | ||||
| boot-args = <0x1 0x4 0x3 0x0F 0x0 0x0>, | ||||
| 			<0x2 0x4 0x2 0x12 0x0 0x0>;	 | ||||
| 			 | ||||
| 	/* IPQ5018 */ | ||||
| 	q6v5_wcss_userpd1 { | ||||
| 		m3_firmware = "IPQ5018/m3_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"; | ||||
| 		qca,asid = <1>; | ||||
| 		qca,auto-restart; | ||||
| 		qca,int_radio; | ||||
| 		#ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 		memory-region = <&q6_ipq5018_data>, <&m3_dump>, | ||||
| 				<&q6_etr_region>; | ||||
| 		#else | ||||
| 		memory-region = <&q6_ipq5018_data>, <&m3_dump>, | ||||
| 				<&q6_etr_region>, <&q6_caldb_region>; | ||||
| 		#endif | ||||
| 	}; | ||||
|  | ||||
| 	/* QCN6122 6G */ | ||||
| 	q6v5_wcss_userpd2 { | ||||
| 		m3_firmware = "qcn6122/m3_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"; | ||||
| 		qca,asid = <2>; | ||||
| 		qca,auto-restart; | ||||
| 		#ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 		memory-region = <&q6_qcn6122_data1>, <&m3_dump_qcn6122_1>, | ||||
| 				<&q6_qcn6122_etr_1>; | ||||
| 		#else | ||||
| 		memory-region = <&q6_qcn6122_data1>, <&m3_dump_qcn6122_1>, | ||||
| 				<&q6_qcn6122_etr_1>, <&q6_qcn6122_caldb_1>; | ||||
| 		#endif | ||||
| 	}; | ||||
|  | ||||
| 	/* QCN6122 5G */ | ||||
| 	q6v5_wcss_userpd3 { | ||||
| 		m3_firmware = "qcn6122/m3_fw.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"; | ||||
| 		qca,asid = <3>; | ||||
| 		qca,auto-restart; | ||||
| 		#ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 		memory-region = <&q6_qcn6122_data2>, <&m3_dump_qcn6122_2>, | ||||
| 				<&q6_qcn6122_etr_2>; | ||||
| 		#else | ||||
| 		memory-region = <&q6_qcn6122_data2>, <&m3_dump_qcn6122_2>, | ||||
| 				<&q6_qcn6122_etr_2>, <&q6_qcn6122_caldb_2>; | ||||
| 		#endif | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &i2c_0 { | ||||
| 	pinctrl-0 = <&i2c_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &qgic_msi_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qgic_msi_1 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &wifi0 { | ||||
| 	/* IPQ5018 */ | ||||
| 	qcom,multipd_arch; | ||||
| 	qcom,userpd-subsys-name = "q6v5_wcss_userpd1"; | ||||
| #ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 	qcom,tgt-mem-mode = <2>; | ||||
| #else | ||||
| 	qcom,tgt-mem-mode = <1>; | ||||
| #endif | ||||
| 	qcom,board_id = <0x24>; | ||||
| 	qcom,bdf-addr = <0x4C400000 0x4C400000 0x4C400000 0x0 0x0>; | ||||
| #ifdef __CNSS2__ | ||||
| 	qcom,caldb-addr = <0x4D400000 0x4D400000 0 0 0>; | ||||
| #else | ||||
| 	qcom,caldb-addr = <0x4D400000>; | ||||
| 	m3-dump-addr = <0x4D200000>; | ||||
| 	nss-radio-priority = <0>; | ||||
| #endif | ||||
| 	mem-region = <&q6_ipq5018_data>; | ||||
| 	qcom,caldb-size = <0x200000>; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &wifi1 { | ||||
| 	/* QCN6122 5G */ | ||||
| 	qcom,multipd_arch; | ||||
| 	qcom,userpd-subsys-name = "q6v5_wcss_userpd2"; | ||||
| #ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 	qcom,tgt-mem-mode = <2>; | ||||
| #else | ||||
| 	qcom,tgt-mem-mode = <1>; | ||||
| #endif | ||||
| 	qcom,board_id = <0x60>; | ||||
| 	qcom,bdf-addr = <0x4D600000 0x4D600000 0x4D300000 0x0 0x0>; | ||||
| #ifdef __CNSS2__ | ||||
| 	qcom,caldb-addr = <0x4E800000 0x4E800000 0 0 0>; | ||||
| #else | ||||
| 	qcom,caldb-addr = <0x4E800000>; | ||||
| 	m3-dump-addr = <0x4E600000>; | ||||
| 	nss-radio-priority = <1>; | ||||
| #endif | ||||
| 	mem-region = <&q6_qcn6122_data1>; | ||||
| 	qcom,caldb-size = <0x500000>; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &wifi2 { | ||||
| 	/* QCN6122 6G */ | ||||
| 	qcom,multipd_arch; | ||||
| 	qcom,userpd-subsys-name = "q6v5_wcss_userpd3"; | ||||
| #ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 	qcom,tgt-mem-mode = <2>; | ||||
| #else | ||||
| 	qcom,tgt-mem-mode = <1>; | ||||
| #endif | ||||
| 	qcom,board_id = <0xb0>; | ||||
| 	qcom,bdf-addr = <0x4ED00000 0x4ED00000 0x4E400000 0x0 0x0>; | ||||
| #ifdef __CNSS2__ | ||||
| 	qcom,caldb-addr = <0x4FF00000 0x4FF00000 0 0 0>; | ||||
| #else | ||||
| 	qcom,caldb-addr = <0x4FF00000>; | ||||
| 	m3-dump-addr = <0x4FD00000>; | ||||
| 	nss-radio-priority = <1>; | ||||
| #endif | ||||
| 	mem-region = <&q6_qcn6122_data2>; | ||||
| 	qcom,caldb-size = <0x500000>; | ||||
| 	status = "ok"; | ||||
| }; | ||||
| @@ -1,6 +1,6 @@ | ||||
| /dts-v1/; | ||||
| /* | ||||
|  * Copyright (c) 2019-2021, The Linux Foundation. All rights reserved. | ||||
|  * Copyright (c) 2019, The Linux Foundation. All rights reserved. | ||||
|  * | ||||
|  * Permission to use, copy, modify, and/or distribute this software for any | ||||
|  * purpose with or without fee is hereby granted, provided that the above | ||||
| @@ -15,9 +15,12 @@ | ||||
|  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| #include "ipq6018.dtsi" | ||||
| #include "ipq6018-cpr-regulator.dtsi" | ||||
| #include "qcom-ipq6018.dtsi" | ||||
| #include "qcom-ipq6018-rpm-regulator.dtsi" | ||||
| #include "qcom-ipq6018-cpr-regulator.dtsi" | ||||
| #include "qcom-ipq6018-cp-cpu.dtsi" | ||||
| #include <dt-bindings/input/input.h> | ||||
| #include <dt-bindings/gpio/gpio.h> | ||||
|  | ||||
| / { | ||||
| 	#address-cells = <0x2>; | ||||
| @@ -25,9 +28,11 @@ | ||||
| 	model = "Cigtech WF-188n"; | ||||
| 	compatible = "cig,wf188n", "qcom,ipq6018-cp03", "qcom,ipq6018"; | ||||
| 	interrupt-parent = <&intc>; | ||||
| 	qcom,msm-id = <0x1A5 0x0>; | ||||
|  | ||||
| 	aliases { | ||||
| 		serial0 = &blsp1_uart3; | ||||
| 		serial1 = &blsp1_uart2; | ||||
|  | ||||
| 		/* | ||||
| 		 * Aliases as required by u-boot | ||||
| 		 * to patch MAC addresses | ||||
| @@ -43,11 +48,7 @@ | ||||
|  | ||||
| 	chosen { | ||||
| 		bootargs = "console=ttyMSM0,115200,n8 rw init=/init"; | ||||
| #ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 		bootargs-append = " swiotlb=1"; | ||||
| #else | ||||
| 		bootargs-append = " swiotlb=1 coherent_pool=2M"; | ||||
| #endif | ||||
| 	}; | ||||
|  | ||||
| 	/* | ||||
| @@ -105,13 +106,71 @@ | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	button_pins: button_pins { | ||||
| 		wps_button { | ||||
| 			pins = "gpio9"; | ||||
| 			function = "gpio"; | ||||
| 	qpic_pins: qpic_pins { | ||||
| 		data_0 { | ||||
| 			pins = "gpio15"; | ||||
| 			function = "qpic_pad0"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		data_1 { | ||||
| 			pins = "gpio12"; | ||||
| 			function = "qpic_pad1"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		data_2 { | ||||
| 			pins = "gpio13"; | ||||
| 			function = "qpic_pad2"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		data_3 { | ||||
| 			pins = "gpio14"; | ||||
| 			function = "qpic_pad3"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		data_4 { | ||||
| 			pins = "gpio5"; | ||||
| 			function = "qpic_pad4"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		data_5 { | ||||
| 			pins = "gpio6"; | ||||
| 			function = "qpic_pad5"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		data_6 { | ||||
| 			pins = "gpio7"; | ||||
| 			function = "qpic_pad6"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		data_7 { | ||||
| 			pins = "gpio8"; | ||||
| 			function = "qpic_pad7"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		qpic_pad { | ||||
| 			pins = "gpio1", "gpio3", "gpio4", | ||||
| 			       "gpio10", "gpio11", "gpio17"; | ||||
| 			function = "qpic_pad"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	button_pins: button_pins { | ||||
| 		wps_button { | ||||
| 			pins = "gpio22"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	mdio_pins: mdio_pinmux { | ||||
| @@ -136,17 +195,37 @@ | ||||
|  | ||||
| 	leds_pins: leds_pins { | ||||
| 		led_5g { | ||||
| 			pins = "gpio35"; | ||||
| 			pins = "gpio25"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		led_2g { | ||||
| 			pins = "gpio37"; | ||||
| 			pins = "gpio24"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		led_eth { | ||||
| 			pins = "gpio18"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|                 led_pwr { | ||||
|                         pins = "gpio16"; | ||||
|                         function = "gpio"; | ||||
|                         drive-strength = <8>; | ||||
|                         bias-pull-down; | ||||
|                 }; | ||||
| 	}; | ||||
| 	uart2_pins: uart2_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio57", "gpio58"; | ||||
| 			function = "blsp4_uart"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| @@ -164,6 +243,7 @@ | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	 | ||||
| 	ess-switch@3a000000 { | ||||
| 		switch_cpu_bmp = <0x1>;  /* cpu port bitmap */ | ||||
| 		switch_lan_bmp = <0x08>; /* lan port bitmap */ | ||||
| @@ -206,6 +286,7 @@ | ||||
| 		qcom,link-poll = <1>; | ||||
| 		qcom,phy-mdio-addr = <3>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	 | ||||
| 	}; | ||||
|  | ||||
| 	gpio_keys { | ||||
| @@ -285,22 +366,22 @@ | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &blsp1_uart2 { | ||||
| 	pinctrl-0 = <&uart2_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	dmas = <&blsp_dma 2>, | ||||
| 		<&blsp_dma 3>; | ||||
| 	dma-names = "tx", "rx"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
| &qpic_bam { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qpic_nand { | ||||
| &nand { | ||||
| 	pinctrl-0 = <&qpic_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	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>; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &ssphy_0 { | ||||
| @@ -318,3 +399,25 @@ | ||||
| &nss_crypto { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &cpu0_opp_table { | ||||
| 	compatible = "operating-points-v2"; | ||||
| 	opp-shared; | ||||
| 	opp03 { | ||||
| 		opp-hz = /bits/ 64 <1200000000>; | ||||
| 		opp-microvolt = <3>; | ||||
| 		clock-latency-ns = <200000>; | ||||
| 	}; | ||||
| 	/delete-node/ opp04; | ||||
| 	/delete-node/ opp05; | ||||
| 	/delete-node/ opp06; | ||||
| }; | ||||
|  | ||||
| /* TZAPP is enabled in default memory profile only */ | ||||
| #if !defined(__IPQ_MEM_PROFILE_256_MB__) && !defined(__IPQ_MEM_PROFILE_512_MB__) | ||||
| &qseecom { | ||||
| 	mem-start = <0x49B00000>; | ||||
| 	mem-size = <0x600000>; | ||||
| 	status = "ok"; | ||||
| }; | ||||
| #endif | ||||
|   | ||||
| @@ -1,23 +1,38 @@ | ||||
| // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) | ||||
| /dts-v1/; | ||||
| /* | ||||
|  * IPQ6018 CP01 board device tree source | ||||
|  * Copyright (c) 2019, The Linux Foundation. All rights reserved. | ||||
|  * | ||||
|  * Copyright (c) 2019-2021 The Linux Foundation. All rights reserved. | ||||
|  * 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. | ||||
|  */ | ||||
|  | ||||
| /dts-v1/; | ||||
|  | ||||
| #include "ipq6018.dtsi" | ||||
| #include "ipq6018-cpr-regulator.dtsi" | ||||
| #include "qcom-ipq6018.dtsi" | ||||
| #include "qcom-ipq6018-rpm-regulator.dtsi" | ||||
| #include "qcom-ipq6018-cpr-regulator.dtsi" | ||||
| #include "qcom-ipq6018-cp-cpu.dtsi" | ||||
| #include <dt-bindings/input/input.h> | ||||
| #include <dt-bindings/gpio/gpio.h> | ||||
|  | ||||
| / { | ||||
| 	#address-cells = <0x2>; | ||||
| 	#size-cells = <0x2>; | ||||
| 	model = "EdgeCore EAP101"; | ||||
| 	compatible = "edgecore,eap101", "qcom,ipq6018-cp01", "qcom,ipq6018"; | ||||
| 	interrupt-parent = <&intc>; | ||||
|  | ||||
| 	aliases { | ||||
| 		serial0 = &blsp1_uart3; | ||||
| 		serial1 = &blsp1_uart2; | ||||
|  | ||||
| 		/* | ||||
| 		 * Aliases as required by u-boot | ||||
| 		 * to patch MAC addresses | ||||
| @@ -33,84 +48,130 @@ | ||||
| 	}; | ||||
|  | ||||
| 	chosen { | ||||
| 		stdout-path = "serial0:115200n8"; | ||||
| 		bootargs-append = " swiotlb=1"; | ||||
| 		bootargs = "console=ttyMSM0,115200,n8 rw init=/init"; | ||||
| 		bootargs-append = " console=ttyMSM0,115200,n8 swiotlb=1 coherent_pool=2M"; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &blsp1_uart3 { | ||||
| 	pinctrl-0 = <&serial_3_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
| 	/* | ||||
| 	 * +=========+==============+========================+ | ||||
| 	 * |        |              |                         | | ||||
| 	 * | Region | Start Offset |          Size           | | ||||
| 	 * |        |              |                         | | ||||
| 	 * +--------+--------------+-------------------------+ | ||||
| 	 * |        |              |                         | | ||||
| 	 * |        |              |                         | | ||||
| 	 * |        |              |                         | | ||||
| 	 * |        |              |                         | | ||||
| 	 * | Linux  |  0x41000000  |         139MB           | | ||||
| 	 * |        |              |                         | | ||||
| 	 * |        |              |                         | | ||||
| 	 * |        |              |                         | | ||||
| 	 * +--------+--------------+-------------------------+ | ||||
| 	 * | TZ App |  0x49B00000  |           6MB           | | ||||
| 	 * +--------+--------------+-------------------------+ | ||||
| 	 * | ||||
| 	 * From the available 145 MB for Linux in the first 256 MB, | ||||
| 	 * we are reserving 6 MB for TZAPP. | ||||
| 	 * | ||||
| 	 * Refer arch/arm64/boot/dts/qcom/qcom-ipq6018-memory.dtsi | ||||
| 	 * for memory layout. | ||||
| 	 */ | ||||
|  | ||||
| &spi_0 { | ||||
| 	pinctrl-0 = <&spi_0_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	cs-select = <0>; | ||||
| 	status = "ok"; | ||||
|  | ||||
| 	m25p80@0 { | ||||
| 		#address-cells = <1>; | ||||
| 		#size-cells = <1>; | ||||
| 		reg = <0>; | ||||
| 		compatible = "n25q128a11"; | ||||
| 		linux,modalias = "m25p80", "n25q128a11"; | ||||
| 		spi-max-frequency = <50000000>; | ||||
| 		use-default-sizes; | ||||
| /* TZAPP is enabled only in default memory profile */ | ||||
| #if !defined(__IPQ_MEM_PROFILE_256_MB__) && !defined(__IPQ_MEM_PROFILE_512_MB__) | ||||
| 	reserved-memory { | ||||
| 		tzapp:tzapp@49B00000 {	/* TZAPPS */ | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x49B00000 0x0 0x00600000>; | ||||
| 		}; | ||||
| }; | ||||
|  | ||||
| &blsp1_uart2 { | ||||
| 	pinctrl-0 = <&hsuart_pins &btcoex_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	dmas = <&blsp_dma 2>, | ||||
| 		<&blsp_dma 3>; | ||||
| 	dma-names = "tx", "rx"; | ||||
| 	status = "ok"; | ||||
| 	}; | ||||
| #endif | ||||
| }; | ||||
|  | ||||
| &tlmm { | ||||
| 	spi_0_pins: spi-0-pins { | ||||
| 	uart_pins: uart_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio44", "gpio45"; | ||||
| 			function = "blsp2_uart"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	spi_0_pins: spi_0_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio38", "gpio39", "gpio40", "gpio41"; | ||||
| 			function = "blsp0_spi"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	spi_1_pins: spi_1_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio69", "gpio71", "gpio72"; | ||||
| 			function = "blsp1_spi"; | ||||
| 	qpic_pins: qpic_pins { | ||||
| 		data_0 { | ||||
| 			pins = "gpio15"; | ||||
| 			function = "qpic_pad0"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		spi_cs { | ||||
| 			pins = "gpio70"; | ||||
| 			function = "blsp1_spi"; | ||||
| 		data_1 { | ||||
| 			pins = "gpio12"; | ||||
| 			function = "qpic_pad1"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		quartz_interrupt { | ||||
| 			pins = "gpio78"; | ||||
| 			function = "gpio"; | ||||
| 			input; | ||||
| 			bias-disable; | ||||
| 		data_2 { | ||||
| 			pins = "gpio13"; | ||||
| 			function = "qpic_pad2"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		data_3 { | ||||
| 			pins = "gpio14"; | ||||
| 			function = "qpic_pad3"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		data_4 { | ||||
| 			pins = "gpio5"; | ||||
| 			function = "qpic_pad4"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		data_5 { | ||||
| 			pins = "gpio6"; | ||||
| 			function = "qpic_pad5"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		data_6 { | ||||
| 			pins = "gpio7"; | ||||
| 			function = "qpic_pad6"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		data_7 { | ||||
| 			pins = "gpio8"; | ||||
| 			function = "qpic_pad7"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		qpic_pad { | ||||
| 			pins = "gpio1", "gpio3", "gpio4", | ||||
| 			       "gpio10", "gpio11", "gpio17"; | ||||
| 			function = "qpic_pad"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		quartz_reset { | ||||
| 			pins = "gpio79"; | ||||
| 			function = "gpio"; | ||||
| 			output-low; | ||||
| 			bias-disable; | ||||
| 	}; | ||||
|  | ||||
| 	extcon_usb_pins: extcon_usb_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio26"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <2>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 	sd_pins: sd-pinmux { | ||||
| 		pins = "gpio62"; | ||||
| 		function = "sd_card"; | ||||
| 		drive-strength = <8>; | ||||
| 		bias-pull-up; | ||||
| 	}; | ||||
|  | ||||
| 	button_pins: button_pins { | ||||
| @@ -140,26 +201,6 @@ | ||||
| 			function = "gpio"; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 		mux_3 { | ||||
| 			pins = "gpio77"; | ||||
| 			function = "gpio"; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	pwm_pins: pwm_pinmux { | ||||
| 		pins = "gpio18"; | ||||
| 		function = "pwm00"; | ||||
| 		drive-strength = <8>; | ||||
| 	}; | ||||
|  | ||||
| 	hsuart_pins: hsuart_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio71", "gpio72", "gpio69", "gpio70"; | ||||
| 			function = "blsp1_uart"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	leds_pins: leds_pins { | ||||
| @@ -182,42 +223,22 @@ | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	btcoex_pins: btcoex_pins { | ||||
| 		mux_0 { | ||||
| 			pins = "gpio51"; | ||||
| 			function = "pta1_1"; | ||||
| 			drive-strength = <6>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		mux_1 { | ||||
| 			pins = "gpio53"; | ||||
| 			function = "pta1_0"; | ||||
| 			drive-strength = <6>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		mux_2 { | ||||
| 			pins = "gpio52"; | ||||
| 			function = "pta1_2"; | ||||
| 			drive-strength = <6>; | ||||
| 	uart2_pins: uart2_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio57", "gpio58"; | ||||
| 			function = "blsp4_uart"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &soc { | ||||
| 	gpio_keys { | ||||
| 		compatible = "gpio-keys"; | ||||
| 		pinctrl-0 = <&button_pins>; | ||||
| 	extcon_usb: extcon_usb { | ||||
| 		pinctrl-0 = <&extcon_usb_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
|  | ||||
| 		wps { | ||||
| 			label = "reset"; | ||||
| 			linux,code = <KEY_RESTART>; | ||||
| 			gpios = <&tlmm 19 GPIO_ACTIVE_LOW>; | ||||
| 			linux,input-type = <1>; | ||||
| 			debounce-interval = <60>; | ||||
| 		}; | ||||
| 		id-gpio = <&tlmm 26 GPIO_ACTIVE_LOW>; | ||||
| 		status = "ok"; | ||||
| 	}; | ||||
|  | ||||
| 	mdio: mdio@90000 { | ||||
| @@ -297,11 +318,18 @@ | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	nss-macsec0 { | ||||
| 		compatible = "qcom,nss-macsec"; | ||||
| 		phy_addr = <0x18>; | ||||
| 		phy_access_mode = <0>; | ||||
| 		mdiobus = <&mdio>; | ||||
| 	gpio_keys { | ||||
| 		compatible = "gpio-keys"; | ||||
| 		pinctrl-0 = <&button_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
|  | ||||
| 		wps { | ||||
| 			label = "reset"; | ||||
| 			linux,code = <KEY_RESTART>; | ||||
| 			gpios = <&tlmm 19 GPIO_ACTIVE_LOW>; | ||||
| 			linux,input-type = <1>; | ||||
| 			debounce-interval = <60>; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	leds { | ||||
| @@ -348,29 +376,52 @@ | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &blsp1_uart3 { | ||||
| 	pinctrl-0 = <&uart_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &spi_0 { | ||||
| 	pinctrl-0 = <&spi_0_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	cs-select = <0>; | ||||
| 	status = "ok"; | ||||
|  | ||||
| 	m25p80@0 { | ||||
| 		#address-cells = <1>; | ||||
| 		#size-cells = <1>; | ||||
| 		reg = <0>; | ||||
| 		compatible = "n25q128a11"; | ||||
| 		linux,modalias = "m25p80", "n25q128a11"; | ||||
| 		spi-max-frequency = <50000000>; | ||||
| 		use-default-sizes; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &blsp1_uart2 { | ||||
| 	pinctrl-0 = <&uart2_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	dmas = <&blsp_dma 2>, | ||||
| 		<&blsp_dma 3>; | ||||
| 	dma-names = "tx", "rx"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
| &qpic_bam { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qpic_nand { | ||||
| 	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>; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &pcie_phy { | ||||
| &nand { | ||||
| 	pinctrl-0 = <&qpic_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &pcie0 { | ||||
| &ssphy_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qusb_phy_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| @@ -382,14 +433,6 @@ | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qusb_phy_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &ssphy_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &usb3 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|   | ||||
| @@ -1,6 +1,5 @@ | ||||
| /dts-v1/; | ||||
| /* | ||||
|  * Copyright (c) 2019-2021, The Linux Foundation. All rights reserved. | ||||
|  * Copyright (c) 2019, The Linux Foundation. All rights reserved. | ||||
|  * | ||||
|  * Permission to use, copy, modify, and/or distribute this software for any | ||||
|  * purpose with or without fee is hereby granted, provided that the above | ||||
| @@ -15,7 +14,7 @@ | ||||
|  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||
|  */ | ||||
|  | ||||
| #include "ipq6018.dtsi" | ||||
| #include "qcom-ipq6018.dtsi" | ||||
| #include <dt-bindings/input/input.h> | ||||
|  | ||||
| / { | ||||
| @@ -37,47 +36,8 @@ | ||||
|  | ||||
| 	chosen { | ||||
| 		bootargs = "console=ttyMSM0,115200,n8 rw init=/init"; | ||||
| #ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 		bootargs-append = " swiotlb=1"; | ||||
| #else | ||||
| 		bootargs-append = " swiotlb=1 coherent_pool=2M"; | ||||
| #endif | ||||
| 	}; | ||||
|  | ||||
| 	/* | ||||
| 	 * +=========+==============+========================+ | ||||
| 	 * |        |              |                         | | ||||
| 	 * | Region | Start Offset |          Size           | | ||||
| 	 * |        |              |                         | | ||||
| 	 * +--------+--------------+-------------------------+ | ||||
| 	 * |        |              |                         | | ||||
| 	 * |        |              |                         | | ||||
| 	 * |        |              |                         | | ||||
| 	 * |        |              |                         | | ||||
| 	 * | Linux  |  0x41000000  |         139MB           | | ||||
| 	 * |        |              |                         | | ||||
| 	 * |        |              |                         | | ||||
| 	 * |        |              |                         | | ||||
| 	 * +--------+--------------+-------------------------+ | ||||
| 	 * | TZ App |  0x49B00000  |           6MB           | | ||||
| 	 * +--------+--------------+-------------------------+ | ||||
| 	 * | ||||
| 	 * From the available 145 MB for Linux in the first 256 MB, | ||||
| 	 * we are reserving 6 MB for TZAPP. | ||||
| 	 * | ||||
| 	 * Refer arch/arm64/boot/dts/qcom/qcom-ipq6018-memory.dtsi | ||||
| 	 * for memory layout. | ||||
| 	 */ | ||||
|  | ||||
| /* TZAPP is enabled only in default memory profile */ | ||||
| #if !defined(__IPQ_MEM_PROFILE_256_MB__) && !defined(__IPQ_MEM_PROFILE_512_MB__) | ||||
| 	reserved-memory { | ||||
| 		tzapp:tzapp@49B00000 {	/* TZAPPS */ | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x49B00000 0x0 0x00600000>; | ||||
| 		}; | ||||
| 	}; | ||||
| #endif | ||||
| }; | ||||
|  | ||||
| &tlmm { | ||||
| @@ -90,10 +50,59 @@ | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	spi_0_pins: spi_0_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio38", "gpio39", "gpio40", "gpio41"; | ||||
| 			function = "blsp0_spi"; | ||||
| 	qpic_pins: qpic_pins { | ||||
| 		data_0 { | ||||
| 			pins = "gpio15"; | ||||
| 			function = "qpic_pad0"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		data_1 { | ||||
| 			pins = "gpio12"; | ||||
| 			function = "qpic_pad1"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		data_2 { | ||||
| 			pins = "gpio13"; | ||||
| 			function = "qpic_pad2"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		data_3 { | ||||
| 			pins = "gpio14"; | ||||
| 			function = "qpic_pad3"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		data_4 { | ||||
| 			pins = "gpio5"; | ||||
| 			function = "qpic_pad4"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		data_5 { | ||||
| 			pins = "gpio6"; | ||||
| 			function = "qpic_pad5"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		data_6 { | ||||
| 			pins = "gpio7"; | ||||
| 			function = "qpic_pad6"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		data_7 { | ||||
| 			pins = "gpio8"; | ||||
| 			function = "qpic_pad7"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		qpic_pad { | ||||
| 			pins = "gpio1", "gpio3", "gpio4", | ||||
| 			       "gpio10", "gpio11", "gpio17"; | ||||
| 			function = "qpic_pad"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| @@ -286,18 +295,10 @@ | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qpic_nand { | ||||
| &nand { | ||||
| 	pinctrl-0 = <&qpic_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	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>; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &ssphy_0 { | ||||
| @@ -318,13 +319,16 @@ | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &q6_region { | ||||
| 	reg = <0x0 0x4ab00000 0x0 0x05500000>; | ||||
| }; | ||||
|  | ||||
| &CPU0 { | ||||
| 	operating-points = < | ||||
| 		/* kHz   uV (fixed) */ | ||||
| 		864000   1100000 | ||||
| 		1056000  1100000 | ||||
| 		1200000  1100000 | ||||
| 		1608000  1100000 | ||||
| 	>; | ||||
| 	clock-latency = <200000>; | ||||
| }; | ||||
| @@ -335,7 +339,6 @@ | ||||
| 		864000   1100000 | ||||
| 		1056000  1100000 | ||||
| 		1200000  1100000 | ||||
| 		1608000  1100000 | ||||
| 	>; | ||||
| 	clock-latency = <200000>; | ||||
| }; | ||||
| @@ -346,7 +349,6 @@ | ||||
| 		864000   1100000 | ||||
| 		1056000  1100000 | ||||
| 		1200000  1100000 | ||||
| 		1608000  1100000 | ||||
| 	>; | ||||
| 	clock-latency = <200000>; | ||||
| }; | ||||
| @@ -357,7 +359,6 @@ | ||||
| 		864000   1100000 | ||||
| 		1056000  1100000 | ||||
| 		1200000  1100000 | ||||
| 		1608000  1100000 | ||||
| 	>; | ||||
| 	clock-latency = <200000>; | ||||
| }; | ||||
|   | ||||
| @@ -1,305 +0,0 @@ | ||||
| // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) | ||||
| /* | ||||
|  * IPQ6018 CP01 board device tree source | ||||
|  * | ||||
|  * Copyright (c) 2019-2021 The Linux Foundation. All rights reserved. | ||||
|  */ | ||||
|  | ||||
| /dts-v1/; | ||||
|  | ||||
| #include "ipq6018.dtsi" | ||||
| #include "ipq6018-cpr-regulator.dtsi" | ||||
| #include <dt-bindings/input/input.h> | ||||
|  | ||||
| / { | ||||
| 	aliases { | ||||
| 		serial0 = &blsp1_uart3; | ||||
| 		serial1 = &blsp1_uart2; | ||||
| 		/* | ||||
| 		 * Aliases as required by u-boot | ||||
| 		 * to patch MAC addresses | ||||
| 		 */ | ||||
| 		ethernet0 = "/soc/dp1"; | ||||
| 		ethernet1 = "/soc/dp2"; | ||||
| 	}; | ||||
|  | ||||
| 	chosen { | ||||
| 		stdout-path = "serial0:115200n8"; | ||||
| 		bootargs-append = " swiotlb=1"; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &blsp1_uart3 { | ||||
| 	pinctrl-0 = <&serial_3_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &spi_0 { | ||||
| 	pinctrl-0 = <&spi_0_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	cs-select = <0>; | ||||
| 	status = "ok"; | ||||
|  | ||||
| 	m25p80@0 { | ||||
| 		#address-cells = <1>; | ||||
| 		#size-cells = <1>; | ||||
| 		reg = <0>; | ||||
| 		compatible = "n25q128a11"; | ||||
| 		linux,modalias = "m25p80", "n25q128a11"; | ||||
| 		spi-max-frequency = <50000000>; | ||||
| 		use-default-sizes; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &blsp1_uart2 { | ||||
| 	pinctrl-0 = <&hsuart_pins &btcoex_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	dmas = <&blsp_dma 2>, | ||||
| 		<&blsp_dma 3>; | ||||
| 	dma-names = "tx", "rx"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &tlmm { | ||||
| 	spi_0_pins: spi-0-pins { | ||||
| 		pins = "gpio38", "gpio39", "gpio40", "gpio41"; | ||||
| 		function = "blsp0_spi"; | ||||
| 		drive-strength = <8>; | ||||
| 		bias-pull-down; | ||||
| 	}; | ||||
|  | ||||
| 	mdio_pins: mdio_pinmux { | ||||
| 		mux_0 { | ||||
| 			pins = "gpio64"; | ||||
| 			function = "mdc"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 		mux_1 { | ||||
| 			pins = "gpio65"; | ||||
| 			function = "mdio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 		mux_2 { | ||||
| 			pins = "gpio75"; | ||||
| 			function = "gpio"; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 		mux_3 { | ||||
| 			pins = "gpio77"; | ||||
| 			function = "gpio"; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	hsuart_pins: hsuart_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio71", "gpio72", "gpio69", "gpio70"; | ||||
| 			function = "blsp1_uart"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	button_pins: button_pins { | ||||
| 		reset_button { | ||||
| 			pins = "gpio53"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	leds_pins: leds_pins { | ||||
| 		led_5g { | ||||
| 			pins = "gpio60"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		led_2g { | ||||
| 			pins = "gpio61"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	mdio_pins: mdio_pinmux { | ||||
| 		mux_0 { | ||||
| 			pins = "gpio64"; | ||||
| 			function = "mdc"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 		mux_1 { | ||||
| 			pins = "gpio65"; | ||||
| 			function = "mdio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 		mux_2 { | ||||
| 			pins = "gpio75"; | ||||
| 			function = "gpio"; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 		mux_3 { | ||||
| 			pins = "gpio77"; | ||||
| 			function = "gpio"; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	btcoex_pins: btcoex_pins { | ||||
| 		mux_0 { | ||||
| 			pins = "gpio51"; | ||||
| 			function = "pta1_1"; | ||||
| 			drive-strength = <6>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		mux_1 { | ||||
| 			pins = "gpio53"; | ||||
| 			function = "pta1_0"; | ||||
| 			drive-strength = <6>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		mux_2 { | ||||
| 			pins = "gpio52"; | ||||
| 			function = "pta1_2"; | ||||
| 			drive-strength = <6>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &soc { | ||||
| 	mdio: mdio@90000 { | ||||
| 		pinctrl-0 = <&mdio_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		phy-reset-gpio = <&tlmm 77 0>; | ||||
| 		status = "ok"; | ||||
| 		phy0: ethernet-phy@0 { | ||||
| 			reg = <4>; | ||||
| 		}; | ||||
| 		phy1: ethernet-phy@1 { | ||||
| 			reg = <30>; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	dp1 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <4>; | ||||
| 		reg = <0x3a001600 0x200>; | ||||
| 		qcom,mactype = <0>; | ||||
| 		local-mac-address = [000000000000]; | ||||
| 		qcom,link-poll = <1>; | ||||
| 		qcom,phy-mdio-addr = <4>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
|  | ||||
| 	dp2 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <5>; | ||||
| 		reg = <0x3a003000 0x3fff>; | ||||
| 		qcom,mactype = <1>; | ||||
| 		local-mac-address = [000000000000]; | ||||
| 		qcom,link-poll = <1>; | ||||
| 		qcom,phy-mdio-addr = <30>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
|  | ||||
| 	ess-switch@3a000000 { | ||||
| 		switch_cpu_bmp = <0x1>;  /* cpu port bitmap */ | ||||
| 		switch_lan_bmp = <0x10>; /* lan port bitmap */ | ||||
| 		switch_wan_bmp = <0x20>; /* wan port bitmap */ | ||||
| 		switch_inner_bmp = <0xc0>; /*inner port bitmap*/ | ||||
| 		switch_mac_mode = <0xf>; /* mac mode for uniphy instance0*/ | ||||
| 		switch_mac_mode1 = <0x14>; /* mac mode for uniphy instance1*/ | ||||
| 		switch_mac_mode2 = <0xff>; /* mac mode for uniphy instance2*/ | ||||
| 		qcom,port_phyinfo { | ||||
| 			port@4 { | ||||
| 				port_id = <4>; | ||||
| 				phy_address = <4>; | ||||
| 			}; | ||||
| 			port@5 { | ||||
| 				port_id = <5>; | ||||
| 				phy_address = <30>; | ||||
| 				port_mac_sel = "QGMAC_PORT"; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	nss-macsec0 { | ||||
| 		compatible = "qcom,nss-macsec"; | ||||
| 		phy_addr = <30>; | ||||
| 		phy_access_mode = <0>; | ||||
| 		mdiobus = <&mdio>; | ||||
| 	}; | ||||
|  | ||||
| 	gpio_keys { | ||||
| 		compatible = "gpio-keys"; | ||||
| 		pinctrl-0 = <&button_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
|  | ||||
| 		reset { | ||||
| 			label = "reset"; | ||||
| 			linux,code = <KEY_RESTART>; | ||||
| 			gpios = <&tlmm 53 GPIO_ACTIVE_LOW>; | ||||
| 			linux,input-type = <1>; | ||||
| 			debounce-interval = <60>; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	leds { | ||||
| 		compatible = "gpio-leds"; | ||||
| 		pinctrl-0 = <&leds_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
|  | ||||
| 		led@60 { | ||||
| 			label = "blue:wifi5"; | ||||
| 			gpios = <&tlmm 60 GPIO_ACTIVE_LOW>; | ||||
| 			linux,default-trigger = "led_5g"; | ||||
| 			default-state = "off"; | ||||
| 		}; | ||||
| 		led@61 { | ||||
| 			label = "blue:wifi2"; | ||||
| 			gpios = <&tlmm 61 GPIO_ACTIVE_LOW>; | ||||
| 			linux,default-trigger = "led_2g"; | ||||
| 			default-state = "off"; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &qpic_bam { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qpic_nand { | ||||
| 	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>; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &pcie_phy { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &pcie0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &nss_crypto { | ||||
| 	status = "ok"; | ||||
| }; | ||||
| @@ -0,0 +1,379 @@ | ||||
| // SPDX-License-Identifier: GPL-2.0-or-later OR MIT | ||||
| /dts-v1/; | ||||
|  | ||||
| #include "qcom-ipq6018.dtsi" | ||||
| #include "qcom-ipq6018-rpm-regulator.dtsi" | ||||
| #include "qcom-ipq6018-cpr-regulator.dtsi" | ||||
| #include "qcom-ipq6018-cp-cpu.dtsi" | ||||
| #include <dt-bindings/input/input.h> | ||||
| #include <dt-bindings/gpio/gpio.h> | ||||
|  | ||||
| / { | ||||
| 	model = "Indio UM-310AX V1"; | ||||
| 	compatible = "indio,um-310ax-v1", "qcom,ipq6018-cp03", "qcom,ipq6018"; | ||||
|  | ||||
| 	#address-cells = <0x2>; | ||||
| 	#size-cells = <0x2>; | ||||
| 	interrupt-parent = <&intc>; | ||||
|  | ||||
| 	aliases { | ||||
| 		/* Aliases as required by u-boot to patch MAC addresses */ | ||||
| 		ethernet0 = "/soc/dp2"; | ||||
| 		ethernet1 = "/soc/dp1"; | ||||
|  | ||||
| 		serial0 = &blsp1_uart3; | ||||
| 		serial1 = &blsp1_uart2; | ||||
|  | ||||
| 		led-boot = &led_system; | ||||
| 		led-failsafe = &led_system; | ||||
| 		led-running = &led_system; | ||||
| 		led-upgrade = &led_system; | ||||
| 	}; | ||||
|  | ||||
| 	chosen { | ||||
| 		bootargs = "console=ttyMSM0,115200,n8 rw init=/init"; | ||||
| 		bootargs-append = " swiotlb=1 coherent_pool=2M"; | ||||
| 	}; | ||||
|  | ||||
| /* TZAPP is enabled only in default memory profile */ | ||||
| #if !defined(__IPQ_MEM_PROFILE_256_MB__) && !defined(__IPQ_MEM_PROFILE_512_MB__) | ||||
| 	reserved-memory { | ||||
| 		tzapp:tzapp@49B00000 {	/* TZAPPS */ | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x49B00000 0x0 0x00600000>; | ||||
| 		}; | ||||
| 	}; | ||||
| #endif | ||||
| }; | ||||
|  | ||||
| &tlmm { | ||||
| 	uart_pins: uart_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio44", "gpio45"; | ||||
| 			function = "blsp2_uart"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	spi_0_pins: spi_0_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio38", "gpio39", "gpio40", "gpio41"; | ||||
| 			function = "blsp0_spi"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	qpic_pins: qpic_pins { | ||||
| 		data_0 { | ||||
| 			pins = "gpio15"; | ||||
| 			function = "qpic_pad0"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		data_1 { | ||||
| 			pins = "gpio12"; | ||||
| 			function = "qpic_pad1"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		data_2 { | ||||
| 			pins = "gpio13"; | ||||
| 			function = "qpic_pad2"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		data_3 { | ||||
| 			pins = "gpio14"; | ||||
| 			function = "qpic_pad3"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		data_4 { | ||||
| 			pins = "gpio5"; | ||||
| 			function = "qpic_pad4"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		data_5 { | ||||
| 			pins = "gpio6"; | ||||
| 			function = "qpic_pad5"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		data_6 { | ||||
| 			pins = "gpio7"; | ||||
| 			function = "qpic_pad6"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		data_7 { | ||||
| 			pins = "gpio8"; | ||||
| 			function = "qpic_pad7"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		qpic_pad { | ||||
| 			pins = "gpio1",  "gpio3",  "gpio4", | ||||
| 			       "gpio10", "gpio11", "gpio17"; | ||||
| 			function = "qpic_pad"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	button_pins: button_pins { | ||||
| 		rst_button { | ||||
| 			pins = "gpio19"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	mdio_pins: mdio_pinmux { | ||||
| 		mux_0 { | ||||
| 			pins = "gpio64"; | ||||
| 			function = "mdc"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
|  | ||||
| 		mux_1 { | ||||
| 			pins = "gpio65"; | ||||
| 			function = "mdio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
|  | ||||
| 		mux_2 { | ||||
| 			pins = "gpio75"; | ||||
| 			function = "gpio"; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	modem_power_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio27"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 			output-high; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	leds_pins: leds_pins { | ||||
| 		led_blue { | ||||
| 			pins = "gpio35"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <2>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		led_green { | ||||
| 			pins = "gpio37"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <2>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		led_red { | ||||
| 			pins = "gpio32"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <2>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &soc { | ||||
| 	mdio: mdio@90000 { | ||||
| 		status = "ok"; | ||||
|  | ||||
| 		pinctrl-0 = <&mdio_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		phy-reset-gpio = <&tlmm 75 0>; | ||||
|  | ||||
| 		ethernet-phy@0 { | ||||
| 			reg = <0x03>; | ||||
| 		}; | ||||
|  | ||||
| 		ethernet-phy@1 { | ||||
| 			reg = <0x04>; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	ess-switch@3a000000 { | ||||
| 		switch_cpu_bmp =   <0x01>; /* cpu port bitmap */ | ||||
| 		switch_lan_bmp =   <0x10>; /* lan port bitmap */ | ||||
| 		switch_wan_bmp =   <0x20>; /* wan port bitmap */ | ||||
| 		switch_inner_bmp = <0x80>; /*inner port bitmap*/ | ||||
| 		switch_mac_mode =  <0x00>; /* mac mode for uniphy instance0*/ | ||||
| 		switch_mac_mode1 = <0xff>; /* mac mode for uniphy instance1*/ | ||||
| 		switch_mac_mode2 = <0xff>; /* mac mode for uniphy instance2*/ | ||||
|  | ||||
| 		qcom,port_phyinfo { | ||||
| 			port@3 { | ||||
| 				port_id = <0x04>; | ||||
| 				phy_address = <0x03>; | ||||
| 			}; | ||||
|  | ||||
| 			port@4 { | ||||
| 				port_id = <0x05>; | ||||
| 				phy_address = <0x04>; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	dp1 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <0x04>; | ||||
| 		reg = <0x3a001600 0x200>; | ||||
| 		qcom,mactype = <0x00>; | ||||
| 		local-mac-address = [00 00 00 00 00 00]; | ||||
| 		qcom,link-poll = <0x01>; | ||||
| 		qcom,phy-mdio-addr = <0x03>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
|  | ||||
| 	dp2 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <0x05>; | ||||
| 		reg = <0x3a001800 0x200>; | ||||
| 		qcom,mactype = <0x00>; | ||||
| 		local-mac-address = [00 00 00 00 00 00]; | ||||
| 		qcom,link-poll = <0x01>; | ||||
| 		qcom,phy-mdio-addr = <0x04>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
|  | ||||
| 	gpio_keys { | ||||
| 		compatible = "gpio-keys"; | ||||
|  | ||||
| 		pinctrl-0 = <&button_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
|  | ||||
| 		reset { | ||||
| 			label = "reset"; | ||||
| 			linux,code = <KEY_RESTART>; | ||||
| 			gpios = <&tlmm 19 GPIO_ACTIVE_LOW>; | ||||
| 			linux,input-type = <1>; | ||||
| 			debounce-interval = <60>; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	leds { | ||||
| 		compatible = "gpio-leds"; | ||||
|  | ||||
| 		pinctrl-0 = <&leds_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
|  | ||||
| 		led_system: system { | ||||
| 			label = "green:system"; | ||||
| 			gpio = <&tlmm 37 GPIO_ACTIVE_HIGH>; | ||||
| 		}; | ||||
|  | ||||
| 		wlan2g { | ||||
| 			label = "blue:wlan2g"; | ||||
| 			gpio = <&tlmm 35 GPIO_ACTIVE_HIGH>; | ||||
| 		}; | ||||
|  | ||||
| 		wlan5g { | ||||
| 			label = "red:wlan5g"; | ||||
| 			gpio = <&tlmm 32 GPIO_ACTIVE_HIGH>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &blsp1_uart3 { | ||||
| 	pinctrl-0 = <&uart_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &spi_0 { | ||||
| 	pinctrl-0 = <&spi_0_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	cs-select = <0>; | ||||
| 	status = "ok"; | ||||
|  | ||||
| 	m25p80@0 { | ||||
| 		#address-cells = <1>; | ||||
| 		#size-cells = <1>; | ||||
| 		reg = <0>; | ||||
| 		compatible = "n25q128a11"; | ||||
| 		linux,modalias = "m25p80", "n25q128a11"; | ||||
| 		spi-max-frequency = <50000000>; | ||||
| 		use-default-sizes; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &qpic_bam { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &nand { | ||||
| 	pinctrl-0 = <&qpic_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &nss_crypto { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &cpu0_opp_table { | ||||
| 	compatible = "operating-points-v2"; | ||||
| 	opp-shared; | ||||
|  | ||||
| 	opp03 { | ||||
| 		opp-hz = /bits/ 64 <1200000000>; | ||||
| 		opp-microvolt = <3>; | ||||
| 		clock-latency-ns = <200000>; | ||||
| 	}; | ||||
|  | ||||
| 	/delete-node/ opp04; | ||||
| 	/delete-node/ opp05; | ||||
| 	/delete-node/ opp06; | ||||
| }; | ||||
|  | ||||
| /* TZAPP is enabled in default memory profile only */ | ||||
| #if !defined(__IPQ_MEM_PROFILE_256_MB__) && !defined(__IPQ_MEM_PROFILE_512_MB__) | ||||
| &qseecom { | ||||
| 	mem-start = <0x49B00000>; | ||||
| 	mem-size = <0x600000>; | ||||
| 	status = "ok"; | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| &ssphy_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qusb_phy_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qusb_phy_1 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &usb2 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &usb3 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
| @@ -0,0 +1,379 @@ | ||||
| // SPDX-License-Identifier: GPL-2.0-or-later OR MIT | ||||
| /dts-v1/; | ||||
|  | ||||
| #include "qcom-ipq6018.dtsi" | ||||
| #include "qcom-ipq6018-rpm-regulator.dtsi" | ||||
| #include "qcom-ipq6018-cpr-regulator.dtsi" | ||||
| #include "qcom-ipq6018-cp-cpu.dtsi" | ||||
| #include <dt-bindings/input/input.h> | ||||
| #include <dt-bindings/gpio/gpio.h> | ||||
|  | ||||
| / { | ||||
| 	model = "Indio UM-510AXM V1"; | ||||
| 	compatible = "indio,um-510axm-v1", "qcom,ipq6018-cp03", "qcom,ipq6018"; | ||||
|  | ||||
| 	#address-cells = <0x2>; | ||||
| 	#size-cells = <0x2>; | ||||
| 	interrupt-parent = <&intc>; | ||||
|  | ||||
| 	aliases { | ||||
| 		/* Aliases as required by u-boot to patch MAC addresses */ | ||||
| 		ethernet0 = "/soc/dp2"; | ||||
| 		ethernet1 = "/soc/dp1"; | ||||
|  | ||||
| 		serial0 = &blsp1_uart3; | ||||
| 		serial1 = &blsp1_uart2; | ||||
|  | ||||
| 		led-boot = &led_system; | ||||
| 		led-failsafe = &led_system; | ||||
| 		led-running = &led_system; | ||||
| 		led-upgrade = &led_system; | ||||
| 	}; | ||||
|  | ||||
| 	chosen { | ||||
| 		bootargs = "console=ttyMSM0,115200,n8 rw init=/init"; | ||||
| 		bootargs-append = " swiotlb=1 coherent_pool=2M"; | ||||
| 	}; | ||||
|  | ||||
| /* TZAPP is enabled only in default memory profile */ | ||||
| #if !defined(__IPQ_MEM_PROFILE_256_MB__) && !defined(__IPQ_MEM_PROFILE_512_MB__) | ||||
| 	reserved-memory { | ||||
| 		tzapp:tzapp@49B00000 {	/* TZAPPS */ | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x49B00000 0x0 0x00600000>; | ||||
| 		}; | ||||
| 	}; | ||||
| #endif | ||||
| }; | ||||
|  | ||||
| &tlmm { | ||||
| 	uart_pins: uart_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio44", "gpio45"; | ||||
| 			function = "blsp2_uart"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	spi_0_pins: spi_0_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio38", "gpio39", "gpio40", "gpio41"; | ||||
| 			function = "blsp0_spi"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	qpic_pins: qpic_pins { | ||||
| 		data_0 { | ||||
| 			pins = "gpio15"; | ||||
| 			function = "qpic_pad0"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		data_1 { | ||||
| 			pins = "gpio12"; | ||||
| 			function = "qpic_pad1"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		data_2 { | ||||
| 			pins = "gpio13"; | ||||
| 			function = "qpic_pad2"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		data_3 { | ||||
| 			pins = "gpio14"; | ||||
| 			function = "qpic_pad3"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		data_4 { | ||||
| 			pins = "gpio5"; | ||||
| 			function = "qpic_pad4"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		data_5 { | ||||
| 			pins = "gpio6"; | ||||
| 			function = "qpic_pad5"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		data_6 { | ||||
| 			pins = "gpio7"; | ||||
| 			function = "qpic_pad6"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		data_7 { | ||||
| 			pins = "gpio8"; | ||||
| 			function = "qpic_pad7"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		qpic_pad { | ||||
| 			pins = "gpio1",  "gpio3",  "gpio4", | ||||
| 			       "gpio10", "gpio11", "gpio17"; | ||||
| 			function = "qpic_pad"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	button_pins: button_pins { | ||||
| 		rst_button { | ||||
| 			pins = "gpio19"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	mdio_pins: mdio_pinmux { | ||||
| 		mux_0 { | ||||
| 			pins = "gpio64"; | ||||
| 			function = "mdc"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
|  | ||||
| 		mux_1 { | ||||
| 			pins = "gpio65"; | ||||
| 			function = "mdio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
|  | ||||
| 		mux_2 { | ||||
| 			pins = "gpio75"; | ||||
| 			function = "gpio"; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	modem_power_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio27"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 			output-high; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	leds_pins: leds_pins { | ||||
| 		led_blue { | ||||
| 			pins = "gpio35"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <2>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		led_green { | ||||
| 			pins = "gpio37"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <2>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		led_red { | ||||
| 			pins = "gpio32"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <2>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &soc { | ||||
| 	mdio: mdio@90000 { | ||||
| 		status = "ok"; | ||||
|  | ||||
| 		pinctrl-0 = <&mdio_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		phy-reset-gpio = <&tlmm 75 0>; | ||||
|  | ||||
| 		ethernet-phy@0 { | ||||
| 			reg = <0x03>; | ||||
| 		}; | ||||
|  | ||||
| 		ethernet-phy@1 { | ||||
| 			reg = <0x04>; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	ess-switch@3a000000 { | ||||
| 		switch_cpu_bmp =   <0x01>; /* cpu port bitmap */ | ||||
| 		switch_lan_bmp =   <0x10>; /* lan port bitmap */ | ||||
| 		switch_wan_bmp =   <0x20>; /* wan port bitmap */ | ||||
| 		switch_inner_bmp = <0x80>; /*inner port bitmap*/ | ||||
| 		switch_mac_mode =  <0x00>; /* mac mode for uniphy instance0*/ | ||||
| 		switch_mac_mode1 = <0xff>; /* mac mode for uniphy instance1*/ | ||||
| 		switch_mac_mode2 = <0xff>; /* mac mode for uniphy instance2*/ | ||||
|  | ||||
| 		qcom,port_phyinfo { | ||||
| 			port@3 { | ||||
| 				port_id = <0x04>; | ||||
| 				phy_address = <0x03>; | ||||
| 			}; | ||||
|  | ||||
| 			port@4 { | ||||
| 				port_id = <0x05>; | ||||
| 				phy_address = <0x04>; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	dp1 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <0x04>; | ||||
| 		reg = <0x3a001600 0x200>; | ||||
| 		qcom,mactype = <0x00>; | ||||
| 		local-mac-address = [00 00 00 00 00 00]; | ||||
| 		qcom,link-poll = <0x01>; | ||||
| 		qcom,phy-mdio-addr = <0x03>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
|  | ||||
| 	dp2 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <0x05>; | ||||
| 		reg = <0x3a001800 0x200>; | ||||
| 		qcom,mactype = <0x00>; | ||||
| 		local-mac-address = [00 00 00 00 00 00]; | ||||
| 		qcom,link-poll = <0x01>; | ||||
| 		qcom,phy-mdio-addr = <0x04>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
|  | ||||
| 	gpio_keys { | ||||
| 		compatible = "gpio-keys"; | ||||
|  | ||||
| 		pinctrl-0 = <&button_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
|  | ||||
| 		reset { | ||||
| 			label = "reset"; | ||||
| 			linux,code = <KEY_RESTART>; | ||||
| 			gpios = <&tlmm 19 GPIO_ACTIVE_LOW>; | ||||
| 			linux,input-type = <1>; | ||||
| 			debounce-interval = <60>; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	leds { | ||||
| 		compatible = "gpio-leds"; | ||||
|  | ||||
| 		pinctrl-0 = <&leds_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
|  | ||||
| 		led_system: system { | ||||
| 			label = "green:system"; | ||||
| 			gpio = <&tlmm 37 GPIO_ACTIVE_HIGH>; | ||||
| 		}; | ||||
|  | ||||
| 		wlan2g { | ||||
| 			label = "blue:wlan2g"; | ||||
| 			gpio = <&tlmm 35 GPIO_ACTIVE_HIGH>; | ||||
| 		}; | ||||
|  | ||||
| 		wlan5g { | ||||
| 			label = "red:wlan5g"; | ||||
| 			gpio = <&tlmm 32 GPIO_ACTIVE_HIGH>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &blsp1_uart3 { | ||||
| 	pinctrl-0 = <&uart_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &spi_0 { | ||||
| 	pinctrl-0 = <&spi_0_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	cs-select = <0>; | ||||
| 	status = "ok"; | ||||
|  | ||||
| 	m25p80@0 { | ||||
| 		#address-cells = <1>; | ||||
| 		#size-cells = <1>; | ||||
| 		reg = <0>; | ||||
| 		compatible = "n25q128a11"; | ||||
| 		linux,modalias = "m25p80", "n25q128a11"; | ||||
| 		spi-max-frequency = <50000000>; | ||||
| 		use-default-sizes; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &qpic_bam { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &nand { | ||||
| 	pinctrl-0 = <&qpic_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &nss_crypto { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &cpu0_opp_table { | ||||
| 	compatible = "operating-points-v2"; | ||||
| 	opp-shared; | ||||
|  | ||||
| 	opp03 { | ||||
| 		opp-hz = /bits/ 64 <1200000000>; | ||||
| 		opp-microvolt = <3>; | ||||
| 		clock-latency-ns = <200000>; | ||||
| 	}; | ||||
|  | ||||
| 	/delete-node/ opp04; | ||||
| 	/delete-node/ opp05; | ||||
| 	/delete-node/ opp06; | ||||
| }; | ||||
|  | ||||
| /* TZAPP is enabled in default memory profile only */ | ||||
| #if !defined(__IPQ_MEM_PROFILE_256_MB__) && !defined(__IPQ_MEM_PROFILE_512_MB__) | ||||
| &qseecom { | ||||
| 	mem-start = <0x49B00000>; | ||||
| 	mem-size = <0x600000>; | ||||
| 	status = "ok"; | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| &ssphy_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qusb_phy_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qusb_phy_1 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &usb2 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &usb3 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
| @@ -0,0 +1,379 @@ | ||||
| // SPDX-License-Identifier: GPL-2.0-or-later OR MIT | ||||
| /dts-v1/; | ||||
|  | ||||
| #include "qcom-ipq6018.dtsi" | ||||
| #include "qcom-ipq6018-rpm-regulator.dtsi" | ||||
| #include "qcom-ipq6018-cpr-regulator.dtsi" | ||||
| #include "qcom-ipq6018-cp-cpu.dtsi" | ||||
| #include <dt-bindings/input/input.h> | ||||
| #include <dt-bindings/gpio/gpio.h> | ||||
|  | ||||
| / { | ||||
| 	model = "Indio UM-510AXP V1"; | ||||
| 	compatible = "indio,um-510axp-v1", "qcom,ipq6018-cp03", "qcom,ipq6018"; | ||||
|  | ||||
| 	#address-cells = <0x2>; | ||||
| 	#size-cells = <0x2>; | ||||
| 	interrupt-parent = <&intc>; | ||||
|  | ||||
| 	aliases { | ||||
| 		/* Aliases as required by u-boot to patch MAC addresses */ | ||||
| 		ethernet0 = "/soc/dp2"; | ||||
| 		ethernet1 = "/soc/dp1"; | ||||
|  | ||||
| 		serial0 = &blsp1_uart3; | ||||
| 		serial1 = &blsp1_uart2; | ||||
|  | ||||
| 		led-boot = &led_system; | ||||
| 		led-failsafe = &led_system; | ||||
| 		led-running = &led_system; | ||||
| 		led-upgrade = &led_system; | ||||
| 	}; | ||||
|  | ||||
| 	chosen { | ||||
| 		bootargs = "console=ttyMSM0,115200,n8 rw init=/init"; | ||||
| 		bootargs-append = " swiotlb=1 coherent_pool=2M"; | ||||
| 	}; | ||||
|  | ||||
| /* TZAPP is enabled only in default memory profile */ | ||||
| #if !defined(__IPQ_MEM_PROFILE_256_MB__) && !defined(__IPQ_MEM_PROFILE_512_MB__) | ||||
| 	reserved-memory { | ||||
| 		tzapp:tzapp@49B00000 {	/* TZAPPS */ | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x49B00000 0x0 0x00600000>; | ||||
| 		}; | ||||
| 	}; | ||||
| #endif | ||||
| }; | ||||
|  | ||||
| &tlmm { | ||||
| 	uart_pins: uart_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio44", "gpio45"; | ||||
| 			function = "blsp2_uart"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	spi_0_pins: spi_0_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio38", "gpio39", "gpio40", "gpio41"; | ||||
| 			function = "blsp0_spi"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	qpic_pins: qpic_pins { | ||||
| 		data_0 { | ||||
| 			pins = "gpio15"; | ||||
| 			function = "qpic_pad0"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		data_1 { | ||||
| 			pins = "gpio12"; | ||||
| 			function = "qpic_pad1"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		data_2 { | ||||
| 			pins = "gpio13"; | ||||
| 			function = "qpic_pad2"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		data_3 { | ||||
| 			pins = "gpio14"; | ||||
| 			function = "qpic_pad3"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		data_4 { | ||||
| 			pins = "gpio5"; | ||||
| 			function = "qpic_pad4"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		data_5 { | ||||
| 			pins = "gpio6"; | ||||
| 			function = "qpic_pad5"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		data_6 { | ||||
| 			pins = "gpio7"; | ||||
| 			function = "qpic_pad6"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		data_7 { | ||||
| 			pins = "gpio8"; | ||||
| 			function = "qpic_pad7"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		qpic_pad { | ||||
| 			pins = "gpio1",  "gpio3",  "gpio4", | ||||
| 			       "gpio10", "gpio11", "gpio17"; | ||||
| 			function = "qpic_pad"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	button_pins: button_pins { | ||||
| 		rst_button { | ||||
| 			pins = "gpio19"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	mdio_pins: mdio_pinmux { | ||||
| 		mux_0 { | ||||
| 			pins = "gpio64"; | ||||
| 			function = "mdc"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
|  | ||||
| 		mux_1 { | ||||
| 			pins = "gpio65"; | ||||
| 			function = "mdio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
|  | ||||
| 		mux_2 { | ||||
| 			pins = "gpio75"; | ||||
| 			function = "gpio"; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	modem_power_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio27"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 			output-high; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	leds_pins: leds_pins { | ||||
| 		led_blue { | ||||
| 			pins = "gpio35"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <2>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		led_green { | ||||
| 			pins = "gpio37"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <2>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		led_red { | ||||
| 			pins = "gpio32"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <2>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &soc { | ||||
| 	mdio: mdio@90000 { | ||||
| 		status = "ok"; | ||||
|  | ||||
| 		pinctrl-0 = <&mdio_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		phy-reset-gpio = <&tlmm 75 0>; | ||||
|  | ||||
| 		ethernet-phy@0 { | ||||
| 			reg = <0x03>; | ||||
| 		}; | ||||
|  | ||||
| 		ethernet-phy@1 { | ||||
| 			reg = <0x04>; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	ess-switch@3a000000 { | ||||
| 		switch_cpu_bmp =   <0x01>; /* cpu port bitmap */ | ||||
| 		switch_lan_bmp =   <0x10>; /* lan port bitmap */ | ||||
| 		switch_wan_bmp =   <0x20>; /* wan port bitmap */ | ||||
| 		switch_inner_bmp = <0x80>; /*inner port bitmap*/ | ||||
| 		switch_mac_mode =  <0x00>; /* mac mode for uniphy instance0*/ | ||||
| 		switch_mac_mode1 = <0xff>; /* mac mode for uniphy instance1*/ | ||||
| 		switch_mac_mode2 = <0xff>; /* mac mode for uniphy instance2*/ | ||||
|  | ||||
| 		qcom,port_phyinfo { | ||||
| 			port@3 { | ||||
| 				port_id = <0x04>; | ||||
| 				phy_address = <0x03>; | ||||
| 			}; | ||||
|  | ||||
| 			port@4 { | ||||
| 				port_id = <0x05>; | ||||
| 				phy_address = <0x04>; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	dp1 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <0x04>; | ||||
| 		reg = <0x3a001600 0x200>; | ||||
| 		qcom,mactype = <0x00>; | ||||
| 		local-mac-address = [00 00 00 00 00 00]; | ||||
| 		qcom,link-poll = <0x01>; | ||||
| 		qcom,phy-mdio-addr = <0x03>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
|  | ||||
| 	dp2 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <0x05>; | ||||
| 		reg = <0x3a001800 0x200>; | ||||
| 		qcom,mactype = <0x00>; | ||||
| 		local-mac-address = [00 00 00 00 00 00]; | ||||
| 		qcom,link-poll = <0x01>; | ||||
| 		qcom,phy-mdio-addr = <0x04>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
|  | ||||
| 	gpio_keys { | ||||
| 		compatible = "gpio-keys"; | ||||
|  | ||||
| 		pinctrl-0 = <&button_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
|  | ||||
| 		reset { | ||||
| 			label = "reset"; | ||||
| 			linux,code = <KEY_RESTART>; | ||||
| 			gpios = <&tlmm 19 GPIO_ACTIVE_LOW>; | ||||
| 			linux,input-type = <1>; | ||||
| 			debounce-interval = <60>; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	leds { | ||||
| 		compatible = "gpio-leds"; | ||||
|  | ||||
| 		pinctrl-0 = <&leds_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
|  | ||||
| 		led_system: system { | ||||
| 			label = "green:system"; | ||||
| 			gpio = <&tlmm 37 GPIO_ACTIVE_HIGH>; | ||||
| 		}; | ||||
|  | ||||
| 		wlan2g { | ||||
| 			label = "blue:wlan2g"; | ||||
| 			gpio = <&tlmm 35 GPIO_ACTIVE_HIGH>; | ||||
| 		}; | ||||
|  | ||||
| 		wlan5g { | ||||
| 			label = "red:wlan5g"; | ||||
| 			gpio = <&tlmm 32 GPIO_ACTIVE_HIGH>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &blsp1_uart3 { | ||||
| 	pinctrl-0 = <&uart_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &spi_0 { | ||||
| 	pinctrl-0 = <&spi_0_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	cs-select = <0>; | ||||
| 	status = "ok"; | ||||
|  | ||||
| 	m25p80@0 { | ||||
| 		#address-cells = <1>; | ||||
| 		#size-cells = <1>; | ||||
| 		reg = <0>; | ||||
| 		compatible = "n25q128a11"; | ||||
| 		linux,modalias = "m25p80", "n25q128a11"; | ||||
| 		spi-max-frequency = <50000000>; | ||||
| 		use-default-sizes; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &qpic_bam { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &nand { | ||||
| 	pinctrl-0 = <&qpic_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &nss_crypto { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &cpu0_opp_table { | ||||
| 	compatible = "operating-points-v2"; | ||||
| 	opp-shared; | ||||
|  | ||||
| 	opp03 { | ||||
| 		opp-hz = /bits/ 64 <1200000000>; | ||||
| 		opp-microvolt = <3>; | ||||
| 		clock-latency-ns = <200000>; | ||||
| 	}; | ||||
|  | ||||
| 	/delete-node/ opp04; | ||||
| 	/delete-node/ opp05; | ||||
| 	/delete-node/ opp06; | ||||
| }; | ||||
|  | ||||
| /* TZAPP is enabled in default memory profile only */ | ||||
| #if !defined(__IPQ_MEM_PROFILE_256_MB__) && !defined(__IPQ_MEM_PROFILE_512_MB__) | ||||
| &qseecom { | ||||
| 	mem-start = <0x49B00000>; | ||||
| 	mem-size = <0x600000>; | ||||
| 	status = "ok"; | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| &ssphy_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qusb_phy_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qusb_phy_1 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &usb2 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &usb3 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
| @@ -0,0 +1,23 @@ | ||||
| /dts-v1/; | ||||
| /* | ||||
|  * Copyright (c) 2022, The Linux Foundation. All rights reserved. | ||||
|  * | ||||
|  * 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. | ||||
|  */ | ||||
|  | ||||
| #include "qcom-ipq6018-meshpp-s618.dtsi" | ||||
|  | ||||
| / { | ||||
| 	model = "MeshPlusPlus, Inc. S618 CP01"; | ||||
| 	compatible = "meshpp,s618-cp01", "qcom,ipq6018-cp01", "qcom,ipq6018"; | ||||
| }; | ||||
| @@ -0,0 +1,23 @@ | ||||
| /dts-v1/; | ||||
| /* | ||||
|  * Copyright (c) 2022, The Linux Foundation. All rights reserved. | ||||
|  * | ||||
|  * 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. | ||||
|  */ | ||||
|  | ||||
| #include "qcom-ipq6018-meshpp-s618.dtsi" | ||||
|  | ||||
| / { | ||||
| 	model = "MeshPlusPlus, Inc. S618 CP01"; | ||||
| 	compatible = "meshpp,s618-cp03", "qcom,ipq6018-cp03", "qcom,ipq6018"; | ||||
| }; | ||||
| @@ -0,0 +1,789 @@ | ||||
| /* | ||||
|  * Copyright (c) 2022, The Linux Foundation. All rights reserved. | ||||
|  * | ||||
|  * 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. | ||||
|  */ | ||||
|  | ||||
| #include "qcom-ipq6018.dtsi" | ||||
| #include <dt-bindings/input/input.h> | ||||
|  | ||||
| / { | ||||
| 	#address-cells = <0x2>; | ||||
| 	#size-cells = <0x2>; | ||||
| 	interrupt-parent = <&intc>; | ||||
| 	qcom,msm-id = <0x1A5 0x0>; | ||||
|  | ||||
| 	aliases { | ||||
| 		ethernet0 = "/soc/dp1"; | ||||
| 		ethernet1 = "/soc/dp2"; | ||||
| 		ethernet2 = "/soc/dp3"; | ||||
| 		ethernet3 = "/soc/dp4"; | ||||
| 		ethernet4 = "/soc/dp5"; | ||||
|  | ||||
| 		led-boot = &led_green; | ||||
| 		led-running = &led_blue; | ||||
| 		led-upgrade = &led_red; | ||||
| 	}; | ||||
|  | ||||
| 	chosen { | ||||
| 		bootargs = "console=ttyMSM0,115200,n8 rw init=/init"; | ||||
|  | ||||
| #ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
|                 bootargs-append = " console=ttyMSM0,115200n8 panic=10 ubi.mtd=nand root=mtd:ubi_rootfs rootfstype=squashfs swiotlb=1 rootwait"; | ||||
| #else | ||||
|                 bootargs-append = " console=ttyMSM0,115200n8 panic=10 ubi.mtd=nand root=mtd:ubi_rootfs rootfstype=squashfs swiotlb=1 coherent_pool=2M rootwait"; | ||||
| #endif | ||||
| 	}; | ||||
|  | ||||
|  | ||||
| 	/* | ||||
| 	 * +=========+==============+========================+ | ||||
| 	 * |        |              |                         | | ||||
| 	 * | Region | Start Offset |          Size           | | ||||
| 	 * |        |              |                         | | ||||
| 	 * +--------+--------------+-------------------------+ | ||||
| 	 * |        |              |                         | | ||||
| 	 * |        |              |                         | | ||||
| 	 * |        |              |                         | | ||||
| 	 * |        |              |                         | | ||||
| 	 * | Linux  |  0x41000000  |         139MB           | | ||||
| 	 * |        |              |                         | | ||||
| 	 * |        |              |                         | | ||||
| 	 * |        |              |                         | | ||||
| 	 * +--------+--------------+-------------------------+ | ||||
| 	 * | TZ App |  0x49B00000  |           6MB           | | ||||
| 	 * +--------+--------------+-------------------------+ | ||||
| 	 * | ||||
| 	 * From the available 145 MB for Linux in the first 256 MB, | ||||
| 	 * we are reserving 6 MB for TZAPP. | ||||
| 	 * | ||||
| 	 * Refer arch/arm64/boot/dts/qcom/qcom-ipq6018-memory.dtsi | ||||
| 	 * for memory layout. | ||||
| 	 */ | ||||
|  | ||||
| /* TZAPP is enabled only in default memory profile */ | ||||
| 	reserved-memory { | ||||
| #if !defined(__IPQ_MEM_PROFILE_256_MB__) && !defined(__IPQ_MEM_PROFILE_512_MB__) | ||||
| 		tzapp:tzapp@49B00000 {	/* TZAPPS */ | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x49B00000 0x0 0x00600000>; | ||||
| 		}; | ||||
| #endif | ||||
| 		qcn9000_pcie0@50200000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x50200000 0x0 0x03700000>; | ||||
| 		}; | ||||
|  | ||||
| 		mhi_region0: dma_pool0@53900000 { | ||||
| 			compatible = "shared-dma-pool"; | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x53900000 0x0 0x01800000>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &tlmm { | ||||
| 	pinctrl-0 = <&sd_ldo_pins &generic_gpios &pcie_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
|  | ||||
| 	uart_pins: uart_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio44", "gpio45"; | ||||
| 			function = "blsp2_uart"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	sd_ldo_pins: sd_ldo_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio66"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <2>; | ||||
| 			bias-disable; | ||||
| 			output-low; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	spi_0_pins: spi_0_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio38", "gpio39", "gpio40", "gpio41"; | ||||
| 			function = "blsp0_spi"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	spi_1_pins: spi_1_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio69", "gpio71", "gpio72"; | ||||
| 			function = "blsp1_spi"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		spi_cs { | ||||
| 			pins = "gpio70"; | ||||
| 			function = "blsp1_spi"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		quartz_interrupt { | ||||
| 			pins = "gpio78"; | ||||
| 			function = "gpio"; | ||||
| 			input; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		quartz_reset { | ||||
| 			pins = "gpio79"; | ||||
| 			function = "gpio"; | ||||
| 			output-low; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	button_pins: button_pins { | ||||
| 		switch_button { | ||||
| 			pins = "gpio9"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 		reset_button { | ||||
| 			pins = "gpio19"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	mdio_pins: mdio_pinmux { | ||||
| 		mux_0 { | ||||
| 			pins = "gpio64"; | ||||
| 			function = "mdc"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 		mux_1 { | ||||
| 			pins = "gpio65"; | ||||
| 			function = "mdio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 		mux_2 { | ||||
| 			pins = "gpio75"; | ||||
| 			function = "gpio"; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 		mux_3 { | ||||
| 			pins = "gpio77"; | ||||
| 			function = "gpio"; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	leds_pins: leds_pins { | ||||
| 		led_5g { | ||||
| 			pins = "gpio35"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		led_2g { | ||||
| 			pins = "gpio37"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		m2_1_regulator { | ||||
| 			pins = "gpio29"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		m2_1_pwr_en { | ||||
| 			pins = "gpio49"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		m2_1_reset_n { | ||||
| 			pins = "gpio32"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		led_red: red { | ||||
| 			pins = "gpio50"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		led_green: green { | ||||
| 			pins = "gpio54"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		led_blue: blue { | ||||
| 			pins = "gpio57"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	sd_pins: sd_pins { | ||||
| 		mux_1 { | ||||
| 			pins = "gpio62"; | ||||
| 			function = "sd_card"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
|  | ||||
| 		mux_2 { | ||||
| 			pins = "gpio23"; | ||||
| 			function = "gpio"; | ||||
| 			drive_strength = <8>; | ||||
| 			bias-disable; | ||||
| 			output-high; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	extcon_usb_pins: extcon_usb_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio26"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <2>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	generic_gpios: generic_gpios { | ||||
| 		gpio42 { | ||||
| 			pins = "gpio42"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 			output-high; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	pcie_pins: pcie_pins { | ||||
| 		pcie0_enable { | ||||
| 			pins = "gpio34"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 			output-high; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
|         i2c_2_pins: i2c_2_pins { | ||||
|                 mux { | ||||
|                         pins = "gpio55", "gpio56"; | ||||
|                         function = "gpio"; | ||||
|                         drive-strength = <16>; | ||||
|                         bias-pull-up; | ||||
|                         input-enable; | ||||
|                 }; | ||||
|  | ||||
|                 mux_2 { | ||||
|                         pins = "gpio48"; | ||||
|                         function = "gpio"; | ||||
|                         drive_strength = <16>; | ||||
|                         output-high; | ||||
|                 }; | ||||
|  | ||||
|                 mux_3 { | ||||
|                         pins = "gpio73"; | ||||
|                         function = "gpio"; | ||||
|                         drive-stength = <16>; | ||||
|                         output-low; | ||||
|                 }; | ||||
|         }; | ||||
| }; | ||||
|  | ||||
| &soc { | ||||
| 	extcon_usb: extcon_usb { | ||||
| 		pinctrl-0 = <&extcon_usb_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		id-gpio = <&tlmm 26 GPIO_ACTIVE_LOW>; | ||||
| 		status = "ok"; | ||||
| 	}; | ||||
|  | ||||
| 	mdio0: mdio@90000 { | ||||
| 		pinctrl-0 = <&mdio_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		phy-reset-gpio = <&tlmm 75 0 &tlmm 77 1>; | ||||
| 		status = "ok"; | ||||
| 		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 = <4>; | ||||
|                 }; | ||||
| 	}; | ||||
|  | ||||
| 	ess0: ess-switch@3a000000 { | ||||
| 		switch_cpu_bmp = <0x1>;  /* cpu port bitmap */ | ||||
| 		switch_lan_bmp = <0x1e>; /* lan port bitmap */ | ||||
| 		switch_wan_bmp = <0x20>; /* wan port bitmap */ | ||||
| 		switch_inner_bmp = <0xc0>; /*inner port bitmap*/ | ||||
| 		switch_mac_mode = <0x0>; /* mac mode for uniphy instance0*/ | ||||
| 		switch_mac_mode1 = <0xff>; /* mac mode for uniphy instance1*/ | ||||
| 		switch_mac_mode2 = <0xff>; /* mac mode for uniphy instance2*/ | ||||
| 		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 = <4>; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	dp1 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <1>; | ||||
| 		reg = <0x3a001000 0x200>; | ||||
| 		qcom,mactype = <0>; | ||||
| 		local-mac-address = [000000000000]; | ||||
| 		qcom,link-poll = <1>; | ||||
| 		qcom,phy-mdio-addr = <0>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
|  | ||||
| 	dp2 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <2>; | ||||
| 		reg = <0x3a001200 0x200>; | ||||
| 		qcom,mactype = <0>; | ||||
| 		local-mac-address = [000000000000]; | ||||
| 		qcom,link-poll = <1>; | ||||
| 		qcom,phy-mdio-addr = <1>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
|  | ||||
| 	dp3 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <3>; | ||||
| 		reg = <0x3a001400 0x200>; | ||||
| 		qcom,mactype = <0>; | ||||
| 		local-mac-address = [000000000000]; | ||||
| 		qcom,link-poll = <1>; | ||||
| 		qcom,phy-mdio-addr = <2>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
|  | ||||
| 	dp4 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <4>; | ||||
| 		reg = <0x3a001600 0x200>; | ||||
| 		qcom,mactype = <0>; | ||||
| 		local-mac-address = [000000000000]; | ||||
| 		qcom,link-poll = <1>; | ||||
| 		qcom,phy-mdio-addr = <3>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
|  | ||||
| 	dp5 { | ||||
| 		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 = <4>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
|  | ||||
| 	leds { | ||||
| 		compatible = "gpio-leds"; | ||||
| 		pinctrl-0 = <&leds_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
|  | ||||
| 		led@29 { | ||||
| 			label = "m2_1_regulator"; | ||||
| 			gpios = <&tlmm 29 GPIO_ACTIVE_HIGH>; | ||||
| 			linux,default-trigger = "none"; | ||||
| 			default-state = "on"; | ||||
| 		}; | ||||
|  | ||||
| 		led@49 { | ||||
| 			label = "m2_1_pwr_en"; | ||||
| 			gpios = <&tlmm 49 GPIO_ACTIVE_HIGH>; | ||||
| 			linux,default-trigger = "none"; | ||||
| 			default-state = "on"; | ||||
| 		}; | ||||
|  | ||||
| 		led@32 { | ||||
| 			label = "m2_1_reset_n"; | ||||
| 			gpios = <&tlmm 32 GPIO_ACTIVE_LOW>; | ||||
| 			linux,default-trigger = "none"; | ||||
| 			default-state = "off"; | ||||
| 		}; | ||||
|  | ||||
| 		led@50 { | ||||
| 			label = "red"; | ||||
| 			gpios = <&tlmm 50 GPIO_ACTIVE_HIGH>; | ||||
| 			linux,default-trigger = "none"; | ||||
| 			default-state = "on"; | ||||
| 		}; | ||||
|  | ||||
| 		led@54 { | ||||
| 			label = "green"; | ||||
| 			gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>; | ||||
| 			linux,default-trigger = "none"; | ||||
| 			default-state = "on"; | ||||
| 		}; | ||||
|  | ||||
| 		led@57 { | ||||
| 			label = "blue"; | ||||
| 			gpios = <&tlmm 57 GPIO_ACTIVE_HIGH>; | ||||
| 			linux,default-trigger = "none"; | ||||
| 			default-state = "off"; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	gpio_keys { | ||||
| 		compatible = "gpio-keys"; | ||||
| 		pinctrl-0 = <&button_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
|  | ||||
| 		switch { | ||||
| 			label = "switch"; | ||||
| 			linux,code = <KEY_WPS_BUTTON>; | ||||
| 			gpios = <&tlmm 9 GPIO_ACTIVE_LOW>; | ||||
| 			linux,input-type = <1>; | ||||
| 			debounce-interval = <60>; | ||||
| 		}; | ||||
| 		reset { | ||||
| 			label = "reset"; | ||||
| 			linux,code = <KEY_RESTART>; | ||||
| 			gpios = <&tlmm 18 GPIO_ACTIVE_LOW>; | ||||
| 			linux,input-type = <1>; | ||||
| 			debounce-interval = <60>; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	i2c_2: i2c@0 { /* i2c gpio */ | ||||
| 		pinctrl-0 = <&i2c_2_pins>; | ||||
| 	        pinctrl-names = "default"; | ||||
| 		compatible = "i2c-gpio"; | ||||
| 		gpios = <&tlmm 56 0>, <&tlmm 55 0>; | ||||
| 		i2c-gpio,scl-open-drain; | ||||
| 		i2c-gpio,delay-us = <7>; | ||||
| 		#address-cells = <1>; | ||||
| 		#size-cells = <0>; | ||||
| 		status = "ok"; | ||||
| 	}; | ||||
|  | ||||
| 	wifi3: wifi3@f00000 { | ||||
| 		qcom,wlan-ramdump-dynamic = <0x400000>; | ||||
| 		mhi,max-channels = <30>; | ||||
| 		mhi,timeout = <10000>; | ||||
| 		#address-cells = <1>; | ||||
| 		#size-cells = <0>; | ||||
| 		qrtr_node_id = <0x20>; | ||||
| 		qca,auto-restart; | ||||
| #ifdef __IPQ_MEM_PROFILE_512_MB__ | ||||
|  | ||||
| 	      /* QCN9000 tgt-mem-mode=1 layout - 30MB | ||||
| 	       * +=========+==============+=========+ | ||||
| 	       * |  Region | Start Offset |   Size  | | ||||
| 	       * +---------+--------------+---------+ | ||||
| 	       * | BASE    |  0x4E400000  |   20MB  | | ||||
| 	       * +---------+--------------+---------+ | ||||
| 	       * | M3 Dump |  0x4F800000  |   1MB   | | ||||
| 	       * +---------+--------------+---------+ | ||||
| 	       * |  Caldb  |  0x4FA00000  |   8MB   | | ||||
| 	       * +==================================+ | ||||
| 	       */ | ||||
|  | ||||
| 		base-addr = <0x4E400000>; | ||||
| 		m3-dump-addr = <0x4F800000>; | ||||
| 		qcom,caldb-addr = <0x4FA00000>; | ||||
| #else | ||||
|  | ||||
| 	      /* QCN9000 tgt-mem-mode=0 layout - 55MB | ||||
| 	       * +=========+==============+=========+ | ||||
| 	       * |  Region | Start Offset |   Size  | | ||||
| 	       * +---------+--------------+---------+ | ||||
| 	       * | BASE    |  0x50200000  |   45MB  | | ||||
| 	       * +---------+--------------+---------+ | ||||
| 	       * | M3 Dump |  0x52F00000  |   1MB   | | ||||
| 	       * +---------+--------------+---------+ | ||||
| 	       * |  Caldb  |  0x53100000  |   8MB   | | ||||
| 	       * +==================================+ | ||||
| 	       */ | ||||
|  | ||||
| 		base-addr = <0x50200000>; | ||||
| 		m3-dump-addr = <0x52F00000>; | ||||
| 		qcom,caldb-addr = <0x53100000>; | ||||
| #endif | ||||
| 		status = "ok"; | ||||
|  | ||||
| 		mhi_channels { | ||||
| 			mhi_chan@0 { | ||||
| 				reg = <0>; | ||||
| 				label = "LOOPBACK"; | ||||
| 				mhi,num-elements = <32>; | ||||
| 				mhi,event-ring = <1>; | ||||
| 				mhi,chan-dir = <1>; | ||||
| 				mhi,data-type = <0>; | ||||
| 				mhi,doorbell-mode = <2>; | ||||
| 				mhi,ee = <0x14>; | ||||
| 			}; | ||||
|  | ||||
| 			mhi_chan@1 { | ||||
| 				reg = <1>; | ||||
| 				label = "LOOPBACK"; | ||||
| 				mhi,num-elements = <32>; | ||||
| 				mhi,event-ring = <1>; | ||||
| 				mhi,chan-dir = <2>; | ||||
| 				mhi,data-type = <0>; | ||||
| 				mhi,doorbell-mode = <2>; | ||||
| 				mhi,ee = <0x14>; | ||||
| 			}; | ||||
|  | ||||
| 			mhi_chan@4 { | ||||
| 				reg = <4>; | ||||
| 				label = "DIAG"; | ||||
| 				mhi,num-elements = <32>; | ||||
| 				mhi,event-ring = <1>; | ||||
| 				mhi,chan-dir = <1>; | ||||
| 				mhi,data-type = <0>; | ||||
| 				mhi,doorbell-mode = <2>; | ||||
| 				mhi,ee = <0x14>; | ||||
| 			}; | ||||
|  | ||||
| 			mhi_chan@5 { | ||||
| 				reg = <5>; | ||||
| 				label = "DIAG"; | ||||
| 				mhi,num-elements = <32>; | ||||
| 				mhi,event-ring = <1>; | ||||
| 				mhi,chan-dir = <2>; | ||||
| 				mhi,data-type = <0>; | ||||
| 				mhi,doorbell-mode = <2>; | ||||
| 				mhi,ee = <0x14>; | ||||
| 			}; | ||||
|  | ||||
| 			mhi_chan@20 { | ||||
| 				reg = <20>; | ||||
| 				label = "IPCR"; | ||||
| 				mhi,num-elements = <32>; | ||||
| 				mhi,event-ring = <1>; | ||||
| 				mhi,chan-dir = <1>; | ||||
| 				mhi,data-type = <1>; | ||||
| 				mhi,doorbell-mode = <2>; | ||||
| 				mhi,ee = <0x14>; | ||||
| 				mhi,auto-start; | ||||
| 			}; | ||||
|  | ||||
| 			mhi_chan@21 { | ||||
| 				reg = <21>; | ||||
| 				label = "IPCR"; | ||||
| 				mhi,num-elements = <32>; | ||||
| 				mhi,event-ring = <1>; | ||||
| 				mhi,chan-dir = <2>; | ||||
| 				mhi,data-type = <0>; | ||||
| 				mhi,doorbell-mode = <2>; | ||||
| 				mhi,ee = <0x14>; | ||||
| 				mhi,auto-queue; | ||||
| 				mhi,auto-start; | ||||
| 			}; | ||||
| 		}; | ||||
|  | ||||
| 		mhi_events { | ||||
| 			mhi_event@0 { | ||||
| 				mhi,num-elements = <32>; | ||||
| 				mhi,intmod = <1>; | ||||
| 				mhi,msi = <1>; | ||||
| 				mhi,priority = <1>; | ||||
| 				mhi,brstmode = <2>; | ||||
| 				mhi,data-type = <1>; | ||||
| 			}; | ||||
|  | ||||
| 			mhi_event@1 { | ||||
| 				mhi,num-elements = <256>; | ||||
| 				mhi,intmod = <1>; | ||||
| 				mhi,msi = <2>; | ||||
| 				mhi,priority = <1>; | ||||
| 				mhi,brstmode = <2>; | ||||
| 			}; | ||||
| 		}; | ||||
|  | ||||
| 		mhi_devices { | ||||
| 			mhi_qrtr { | ||||
| 				mhi,chan = "IPCR"; | ||||
| 				qcom,net-id = <0>; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &blsp1_uart3 { | ||||
| 	pinctrl-0 = <&uart_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qpic_bam { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &ssphy_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qusb_phy_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qusb_phy_1 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &usb2 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &usb3 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &nss_crypto { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &CPU0 { | ||||
| 	operating-points = < | ||||
| 		/* kHz   uV (fixed) */ | ||||
| 		864000   1100000 | ||||
| 		1056000  1100000 | ||||
| 		1200000  1100000 | ||||
| 		1608000  1100000 | ||||
| 	>; | ||||
| 	clock-latency = <200000>; | ||||
| }; | ||||
|  | ||||
| &CPU1 { | ||||
| 	operating-points = < | ||||
| 		/* kHz   uV (fixed) */ | ||||
| 		864000   1100000 | ||||
| 		1056000  1100000 | ||||
| 		1200000  1100000 | ||||
| 		1608000  1100000 | ||||
| 	>; | ||||
| 	clock-latency = <200000>; | ||||
| }; | ||||
|  | ||||
| &CPU2 { | ||||
| 	operating-points = < | ||||
| 		/* kHz   uV (fixed) */ | ||||
| 		864000   1100000 | ||||
| 		1056000  1100000 | ||||
| 		1200000  1100000 | ||||
| 		1608000  1100000 | ||||
| 	>; | ||||
| 	clock-latency = <200000>; | ||||
| }; | ||||
|  | ||||
| &CPU3 { | ||||
| 	operating-points = < | ||||
| 		/* kHz   uV (fixed) */ | ||||
| 		864000   1100000 | ||||
| 		1056000  1100000 | ||||
| 		1200000  1100000 | ||||
| 		1608000  1100000 | ||||
| 	>; | ||||
| 	clock-latency = <200000>; | ||||
| }; | ||||
|  | ||||
| &wifi0 { | ||||
|         qcom,board_id = <0x10>; | ||||
|         status = "ok"; | ||||
| }; | ||||
|  | ||||
| &pcie0 { | ||||
| 	status = "ok"; | ||||
|  | ||||
| 	pcie0_rp { | ||||
| 		reg = <0 0 0 0 0>; | ||||
| 		status = "ok"; | ||||
|  | ||||
| 		mhi_0: qcom,mhi@0 { | ||||
| 			reg = <0 0 0 0 0 >; | ||||
| 			qrtr_instance_id = <0x20>; | ||||
| 			qcom,board_id = <0xa4>; | ||||
| #if !defined(__IPQ_MEM_PROFILE_256_MB__) | ||||
| 			memory-region = <&mhi_region0>; | ||||
| #endif | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &pcie_phy { | ||||
|         status = "ok"; | ||||
| }; | ||||
|  | ||||
| &spi_0 { | ||||
| 	pinctrl-0 = <&spi_0_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	cs-select = <0>; | ||||
| 	status = "ok"; | ||||
|  | ||||
| 	m25p80@0 { | ||||
| 		#address-cells = <1>; | ||||
| 		#size-cells = <1>; | ||||
| 		reg = <0>; | ||||
| 		compatible = "n25q128a11"; | ||||
| 		linux,modalias = "m25p80", "n25q128a11"; | ||||
| 		spi-max-frequency = <50000000>; | ||||
| 		use-default-sizes; | ||||
| 	}; | ||||
| }; | ||||
| @@ -0,0 +1,23 @@ | ||||
| /dts-v1/; | ||||
| /* | ||||
|  * Copyright (c) 2019, The Linux Foundation. All rights reserved. | ||||
|  * | ||||
|  * 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. | ||||
|  */ | ||||
|  | ||||
| #include "qcom-ipq6018-pax1800.dtsi" | ||||
|  | ||||
| / { | ||||
| 	model = "Plasma Cloud PAX1800 v1"; | ||||
| 	compatible = "plasmacloud,pax1800-v1", "qcom,ipq6018-cp03", "qcom,ipq6018"; | ||||
| }; | ||||
| @@ -0,0 +1,23 @@ | ||||
| /dts-v1/; | ||||
| /* | ||||
|  * Copyright (c) 2019, The Linux Foundation. All rights reserved. | ||||
|  * | ||||
|  * 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. | ||||
|  */ | ||||
|  | ||||
| #include "qcom-ipq6018-pax1800.dtsi" | ||||
|  | ||||
| / { | ||||
| 	model = "Plasma Cloud PAX1800 v2"; | ||||
| 	compatible = "plasmacloud,pax1800-v2", "qcom,ipq6018-cp03", "qcom,ipq6018"; | ||||
| }; | ||||
| @@ -0,0 +1,315 @@ | ||||
| /* | ||||
|  * Copyright (c) 2019, The Linux Foundation. All rights reserved. | ||||
|  * | ||||
|  * 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. | ||||
|  */ | ||||
|  | ||||
| #include "qcom-ipq6018.dtsi" | ||||
| #include "qcom-ipq6018-rpm-regulator.dtsi" | ||||
| #include "qcom-ipq6018-cpr-regulator.dtsi" | ||||
| #include "qcom-ipq6018-cp-cpu.dtsi" | ||||
| #include <dt-bindings/input/input.h> | ||||
|  | ||||
| / { | ||||
| 	#address-cells = <0x2>; | ||||
| 	#size-cells = <0x2>; | ||||
|  | ||||
| 	interrupt-parent = <&intc>; | ||||
| 	qcom,msm-id = <0x1A5 0x0>; | ||||
|  | ||||
| 	chosen { | ||||
| 		bootargs = "console=ttyMSM0,115200,n8 rw init=/init"; | ||||
| 		bootargs-append = " swiotlb=1 coherent_pool=2M"; | ||||
| 	}; | ||||
|  | ||||
| 	aliases { | ||||
| 		serial0 = &blsp1_uart3; | ||||
| 		/* | ||||
| 		 * Aliases as required by u-boot | ||||
| 		 * to patch MAC addresses | ||||
| 		 */ | ||||
| 		ethernet0 = "/soc/dp1"; | ||||
| 		ethernet1 = "/soc/dp2"; | ||||
|  | ||||
| 		led-boot = &led_status_green; | ||||
| 		led-failsafe = &led_status_green; | ||||
| 		led-running = &led_status_green; | ||||
| 		led-upgrade = &led_status_green; | ||||
| 		led-uplink = &led_status_blue; | ||||
| 	}; | ||||
|  | ||||
| 	gpio_keys { | ||||
| 		compatible = "gpio-keys"; | ||||
| 		pinctrl-0 = <&button_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
|  | ||||
| 		reset { | ||||
| 			label = "reset"; | ||||
| 			linux,code = <KEY_RESTART>; | ||||
| 			gpios = <&tlmm 24 GPIO_ACTIVE_LOW>; | ||||
| 			linux,input-type = <1>; | ||||
| 			debounce-interval = <60>; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	leds { | ||||
| 		compatible = "gpio-leds"; | ||||
| 		pinctrl-0 = <&leds_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
|  | ||||
| 		status_red { | ||||
| 			label = "red:status"; | ||||
| 			gpios = <&tlmm 25 GPIO_ACTIVE_HIGH>; | ||||
| 			linux,default-trigger = "default-off"; | ||||
| 		}; | ||||
|  | ||||
| 		led_status_green: status_green { | ||||
| 			label = "green:status"; | ||||
| 			gpios = <&tlmm 35 GPIO_ACTIVE_HIGH>; | ||||
| 		}; | ||||
|  | ||||
| 		led_status_blue: status_blue { | ||||
| 			label = "blue:status"; | ||||
| 			gpios = <&tlmm 37 GPIO_ACTIVE_HIGH>; | ||||
| 			linux,default-trigger = "default-off"; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	watchdog { | ||||
| 		compatible = "linux,wdt-gpio"; | ||||
| 		pinctrl-0 = <&watchdog_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		gpios = <&tlmm 67 GPIO_ACTIVE_LOW>; | ||||
| 		hw_algo = "toggle"; | ||||
| 		hw_margin_ms = <2000>; | ||||
| 		always-running; | ||||
| 	}; | ||||
|  | ||||
| 	/* | ||||
| 	 * +=========+==============+========================+ | ||||
| 	 * |        |              |                         | | ||||
| 	 * | Region | Start Offset |          Size           | | ||||
| 	 * |        |              |                         | | ||||
| 	 * +--------+--------------+-------------------------+ | ||||
| 	 * |        |              |                         | | ||||
| 	 * |        |              |                         | | ||||
| 	 * |        |              |                         | | ||||
| 	 * |        |              |                         | | ||||
| 	 * | Linux  |  0x41000000  |         139MB           | | ||||
| 	 * |        |              |                         | | ||||
| 	 * |        |              |                         | | ||||
| 	 * |        |              |                         | | ||||
| 	 * +--------+--------------+-------------------------+ | ||||
| 	 * | TZ App |  0x49B00000  |           6MB           | | ||||
| 	 * +--------+--------------+-------------------------+ | ||||
| 	 * | ||||
| 	 * From the available 145 MB for Linux in the first 256 MB, | ||||
| 	 * we are reserving 6 MB for TZAPP. | ||||
| 	 * | ||||
| 	 * Refer arch/arm64/boot/dts/qcom/qcom-ipq6018-memory.dtsi | ||||
| 	 * for memory layout. | ||||
| 	 */ | ||||
|  | ||||
| /* TZAPP is enabled only in default memory profile */ | ||||
| #if !defined(__IPQ_MEM_PROFILE_256_MB__) && !defined(__IPQ_MEM_PROFILE_512_MB__) | ||||
| 	reserved-memory { | ||||
| 		tzapp:tzapp@49B00000 {	/* TZAPPS */ | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x49B00000 0x0 0x00600000>; | ||||
| 		}; | ||||
| 	}; | ||||
| #endif | ||||
| }; | ||||
|  | ||||
| &tlmm { | ||||
| 	uart_pins: uart_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio44", "gpio45"; | ||||
| 			function = "blsp2_uart"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	spi_0_pins: spi_0_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio38", "gpio39", "gpio40", "gpio41"; | ||||
| 			function = "blsp0_spi"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	button_pins: button_pins { | ||||
| 		reset_button { | ||||
| 			pins = "gpio24"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	mdio_pins: mdio_pinmux { | ||||
| 		mux_0 { | ||||
| 			pins = "gpio64"; | ||||
| 			function = "mdc"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 		mux_1 { | ||||
| 			pins = "gpio65"; | ||||
| 			function = "mdio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 		mux_2 { | ||||
| 			pins = "gpio75"; | ||||
| 			function = "gpio"; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	leds_pins: led_pinmux { | ||||
| 		led_power_green { | ||||
| 			pins = "gpio25"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		led_power_blue { | ||||
| 			pins = "gpio35"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		led_power_red { | ||||
| 			pins = "gpio37"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	watchdog_pins: watchdog_pinmux { | ||||
| 		mux { | ||||
| 			pins = "gpio67"; | ||||
| 			function = "gpio"; | ||||
| 			bias-none; | ||||
| 			output-low; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &soc { | ||||
| 	mdio@90000 { | ||||
| 		pinctrl-0 = <&mdio_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		phy-reset-gpio = <&tlmm 75 0>; | ||||
| 		status = "ok"; | ||||
| 		phy0: ethernet-phy@0 { | ||||
| 			reg = <3>; | ||||
| 		}; | ||||
| 		phy1: ethernet-phy@1 { | ||||
| 			reg = <4>; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	ess-switch@3a000000 { | ||||
| 		switch_cpu_bmp = <0x1>;  /* cpu port bitmap */ | ||||
| 		switch_lan_bmp = <0x08>; /* lan port bitmap */ | ||||
| 		switch_wan_bmp = <0x10>; /* wan port bitmap */ | ||||
| 		switch_inner_bmp = <0xc0>; /*inner port bitmap*/ | ||||
| 		switch_mac_mode = <0x0>; /* mac mode for uniphy instance0*/ | ||||
| 		switch_mac_mode1 = <0xff>; /* mac mode for uniphy instance1*/ | ||||
| 		switch_mac_mode2 = <0xff>; /* mac mode for uniphy instance2*/ | ||||
| 		qcom,port_phyinfo { | ||||
| 			port@3 { | ||||
| 				port_id = <3>; | ||||
| 				phy_address = <4>; | ||||
| 			}; | ||||
| 			port@4 { | ||||
| 				port_id = <4>; | ||||
| 				phy_address = <3>; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	dp1 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <3>; | ||||
| 		reg = <0x3a001400 0x200>; | ||||
| 		qcom,mactype = <0>; | ||||
| 		local-mac-address = [000000000000]; | ||||
| 		qcom,link-poll = <1>; | ||||
| 		qcom,phy-mdio-addr = <4>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
|  | ||||
| 	dp2 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <4>; | ||||
| 		reg = <0x3a001600 0x200>; | ||||
| 		qcom,mactype = <0>; | ||||
| 		local-mac-address = [000000000000]; | ||||
| 		qcom,link-poll = <1>; | ||||
| 		qcom,phy-mdio-addr = <3>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &blsp1_uart3 { | ||||
| 	pinctrl-0 = <&uart_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &spi_0 { | ||||
| 	pinctrl-0 = <&spi_0_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	cs-select = <0>; | ||||
| 	status = "ok"; | ||||
|  | ||||
| 	m25p80@0 { | ||||
| 		#address-cells = <1>; | ||||
| 		#size-cells = <1>; | ||||
| 		reg = <0>; | ||||
| 		compatible = "n25q128a11"; | ||||
| 		linux,modalias = "m25p80", "n25q128a11"; | ||||
| 		spi-max-frequency = <50000000>; | ||||
| 		use-default-sizes; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &qpic_bam { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &nss_crypto { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| /* TZAPP is enabled in default memory profile only */ | ||||
| #if !defined(__IPQ_MEM_PROFILE_256_MB__) && !defined(__IPQ_MEM_PROFILE_512_MB__) | ||||
| &qseecom { | ||||
| 	mem-start = <0x49B00000>; | ||||
| 	mem-size = <0x600000>; | ||||
| 	status = "ok"; | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| &wifi0 { | ||||
| 	status = "okay"; | ||||
| 	qcom,ath11k-calibration-variant = "PlasmaCloud-PAX1800"; | ||||
| }; | ||||
| @@ -82,14 +82,24 @@ | ||||
| 	 */ | ||||
|  | ||||
| /* TZAPP is enabled only in default memory profile */ | ||||
| #if !defined(__IPQ_MEM_PROFILE_256_MB__) && !defined(__IPQ_MEM_PROFILE_512_MB__) | ||||
| 	reserved-memory { | ||||
| #if !defined(__IPQ_MEM_PROFILE_256_MB__) && !defined(__IPQ_MEM_PROFILE_512_MB__) | ||||
| 		tzapp:tzapp@49B00000 {	/* TZAPPS */ | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x49B00000 0x0 0x00600000>; | ||||
| 		}; | ||||
| 	}; | ||||
| #endif | ||||
| 		qcn9000_pcie0@50200000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x50200000 0x0 0x02D00000>; | ||||
| 		}; | ||||
|  | ||||
| 		mhi_region0: dma_pool0@52f00000 { | ||||
| 			compatible = "shared-dma-pool"; | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x52F00000 0x0 0x01800000>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &tlmm { | ||||
| @@ -490,3 +500,49 @@ | ||||
| 	//vqmmc-supply = <&ipq6018_l2_corner>; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &wifi1 { | ||||
| 	base-addr = <0x50200000>; | ||||
| 	m3-dump-addr = <0x52500000>; | ||||
| 	etr-addr = <0x52600000>; | ||||
| 	caldb-addr = <0x52700000>; | ||||
| 	hremote-size = <0x2300000>; | ||||
| 	tgt-mem-mode = <0x0>; | ||||
| 	board_id = <0xa4>; | ||||
| 	caldb-size = <0x800000>; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &pcie0 { | ||||
| 	status = "ok"; | ||||
| 	interrupts = <0 52 0>, <0 416 0>, <0 417 0>, | ||||
|                      <0 418 0>, <0 419 0>, <0 420 0>, | ||||
|                      <0 421 0>, <0 422 0>, <0 423 0>, | ||||
|                      <0 424 0>, <0 425 0>, <0 426 0>, | ||||
|                      <0 427 0>, <0 428 0>, <0 429 0>, | ||||
|                      <0 430 0>, <0 431 0>; | ||||
|  | ||||
|         interrupt-names = "msi", "msi_0", "msi_1", | ||||
|                           "msi_2", "msi_3", "msi_4", | ||||
|                           "msi_5", "msi_6", "msi_7", | ||||
|                           "msi_8", "msi_9", "msi_10", | ||||
|                           "msi_11", "msi_12", "msi_13", | ||||
|                           "msi_14", "msi_15"; | ||||
|  | ||||
|         qcom,msi-gicm-addr = <0x0B00A040>; | ||||
|         qcom,msi-gicm-base = <0x1c0>; | ||||
| }; | ||||
|  | ||||
| &pcie0_rp { | ||||
|         status = "ok"; | ||||
|  | ||||
|         mhi_0: qcom,mhi@0 { | ||||
|                 reg = <0 0 0 0 0 >; | ||||
|                 qrtr_instance_id = <0x20>; | ||||
|                 memory-region = <&mhi_region0>; | ||||
|         }; | ||||
| }; | ||||
|  | ||||
| &pcie_phy { | ||||
|         status = "ok"; | ||||
| }; | ||||
|   | ||||
| @@ -1,39 +1,29 @@ | ||||
| // SPDX-License-Identifier: GPL-2.0-or-later OR MIT | ||||
| /dts-v1/; | ||||
| /* | ||||
|  * Copyright (c) 2019-2021, The Linux Foundation. All rights reserved. | ||||
|  * | ||||
|  * 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. | ||||
|  */ | ||||
|  | ||||
| #include "ipq6018.dtsi" | ||||
| #include "ipq6018-cpr-regulator.dtsi" | ||||
| #include "qcom-ipq6018.dtsi" | ||||
| #include "qcom-ipq6018-rpm-regulator.dtsi" | ||||
| #include "qcom-ipq6018-cpr-regulator.dtsi" | ||||
| #include "qcom-ipq6018-cp-cpu.dtsi" | ||||
| #include <dt-bindings/input/input.h> | ||||
| #include <dt-bindings/gpio/gpio.h> | ||||
|  | ||||
| / { | ||||
| 	#address-cells = <0x2>; | ||||
| 	#size-cells = <0x2>; | ||||
| 	model = "YunCore AX840"; | ||||
| 	compatible = "yuncore,ax840", "qcom,ipq6018-cp03", "qcom,ipq6018"; | ||||
|  | ||||
| 	#address-cells = <0x2>; | ||||
| 	#size-cells = <0x2>; | ||||
| 	interrupt-parent = <&intc>; | ||||
| 	qcom,msm-id = <0x1A5 0x0>; | ||||
|  | ||||
| 	aliases { | ||||
| 		/* | ||||
| 		 * Aliases as required by u-boot | ||||
| 		 * to patch MAC addresses | ||||
| 		 */ | ||||
| 		/* Aliases as required by u-boot to patch MAC addresses */ | ||||
| 		ethernet0 = "/soc/dp2"; | ||||
| 		ethernet1 = "/soc/dp1"; | ||||
|  | ||||
| 		serial0 = &blsp1_uart3; | ||||
| 		serial1 = &blsp1_uart2; | ||||
|  | ||||
| 		led-boot = &led_system; | ||||
| 		led-failsafe = &led_system; | ||||
| 		led-running = &led_system; | ||||
| @@ -42,38 +32,9 @@ | ||||
|  | ||||
| 	chosen { | ||||
| 		bootargs = "console=ttyMSM0,115200,n8 rw init=/init"; | ||||
| #ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 		bootargs-append = " swiotlb=1"; | ||||
| #else | ||||
| 		bootargs-append = " swiotlb=1 coherent_pool=2M"; | ||||
| #endif | ||||
| 	}; | ||||
|  | ||||
| 	/* | ||||
| 	 * +=========+==============+========================+ | ||||
| 	 * |        |              |                         | | ||||
| 	 * | Region | Start Offset |          Size           | | ||||
| 	 * |        |              |                         | | ||||
| 	 * +--------+--------------+-------------------------+ | ||||
| 	 * |        |              |                         | | ||||
| 	 * |        |              |                         | | ||||
| 	 * |        |              |                         | | ||||
| 	 * |        |              |                         | | ||||
| 	 * | Linux  |  0x41000000  |         139MB           | | ||||
| 	 * |        |              |                         | | ||||
| 	 * |        |              |                         | | ||||
| 	 * |        |              |                         | | ||||
| 	 * +--------+--------------+-------------------------+ | ||||
| 	 * | TZ App |  0x49B00000  |           6MB           | | ||||
| 	 * +--------+--------------+-------------------------+ | ||||
| 	 * | ||||
| 	 * From the available 145 MB for Linux in the first 256 MB, | ||||
| 	 * we are reserving 6 MB for TZAPP. | ||||
| 	 * | ||||
| 	 * Refer arch/arm64/boot/dts/qcom/qcom-ipq6018-memory.dtsi | ||||
| 	 * for memory layout. | ||||
| 	 */ | ||||
|  | ||||
| /* TZAPP is enabled only in default memory profile */ | ||||
| #if !defined(__IPQ_MEM_PROFILE_256_MB__) && !defined(__IPQ_MEM_PROFILE_512_MB__) | ||||
| 	reserved-memory { | ||||
| @@ -104,13 +65,79 @@ | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	button_pins: button_pins { | ||||
| 		wps_button { | ||||
| 			pins = "gpio9"; | ||||
| 			function = "gpio"; | ||||
| 	qpic_pins: qpic_pins { | ||||
| 		data_0 { | ||||
| 			pins = "gpio15"; | ||||
| 			function = "qpic_pad0"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		data_1 { | ||||
| 			pins = "gpio12"; | ||||
| 			function = "qpic_pad1"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		data_2 { | ||||
| 			pins = "gpio13"; | ||||
| 			function = "qpic_pad2"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		data_3 { | ||||
| 			pins = "gpio14"; | ||||
| 			function = "qpic_pad3"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		data_4 { | ||||
| 			pins = "gpio5"; | ||||
| 			function = "qpic_pad4"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		data_5 { | ||||
| 			pins = "gpio6"; | ||||
| 			function = "qpic_pad5"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		data_6 { | ||||
| 			pins = "gpio7"; | ||||
| 			function = "qpic_pad6"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		data_7 { | ||||
| 			pins = "gpio8"; | ||||
| 			function = "qpic_pad7"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		qpic_pad { | ||||
| 			pins = "gpio1",  "gpio3",  "gpio4", | ||||
| 			       "gpio10", "gpio11", "gpio17"; | ||||
| 			function = "qpic_pad"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	button_pins: button_pins { | ||||
| 		rst_button { | ||||
| 			pins = "gpio19"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	mdio_pins: mdio_pinmux { | ||||
| @@ -120,12 +147,14 @@ | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
|  | ||||
| 		mux_1 { | ||||
| 			pins = "gpio65"; | ||||
| 			function = "mdio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
|  | ||||
| 		mux_2 { | ||||
| 			pins = "gpio75"; | ||||
| 			function = "gpio"; | ||||
| @@ -133,6 +162,16 @@ | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	modem_power_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio27"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 			output-high; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	leds_pins: leds_pins { | ||||
| 		led_blue { | ||||
| 			pins = "gpio35"; | ||||
| @@ -155,28 +194,22 @@ | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	button_pins: button_pins { | ||||
| 		rst_button { | ||||
| 			pins = "gpio19"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &soc { | ||||
| 	mdio@90000 { | ||||
| 	mdio: mdio@90000 { | ||||
| 		status = "ok"; | ||||
|  | ||||
| 		pinctrl-0 = <&mdio_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		phy-reset-gpio = <&tlmm 75 0>; | ||||
| 		status = "ok"; | ||||
| 		phy0: ethernet-phy@0 { | ||||
| 			reg = <3>; | ||||
|  | ||||
| 		ethernet-phy@0 { | ||||
| 			reg = <0x03>; | ||||
| 		}; | ||||
| 		phy1: ethernet-phy@1 { | ||||
| 			reg = <4>; | ||||
|  | ||||
| 		ethernet-phy@1 { | ||||
| 			reg = <0x04>; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| @@ -203,18 +236,6 @@ | ||||
| 	}; | ||||
|  | ||||
| 	dp1 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <0x05>; | ||||
| 		reg = <0x3a001800 0x200>; | ||||
| 		qcom,mactype = <0x00>; | ||||
| 		local-mac-address = [00 00 00 00 00 00]; | ||||
| 		qcom,link-poll = <0x01>; | ||||
| 		qcom,phy-mdio-addr = <0x04>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
|  | ||||
| 	dp2 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <0x04>; | ||||
| @@ -226,6 +247,18 @@ | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
|  | ||||
| 	dp2 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <0x05>; | ||||
| 		reg = <0x3a001800 0x200>; | ||||
| 		qcom,mactype = <0x00>; | ||||
| 		local-mac-address = [00 00 00 00 00 00]; | ||||
| 		qcom,link-poll = <0x01>; | ||||
| 		qcom,phy-mdio-addr = <0x04>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
|  | ||||
| 	gpio_keys { | ||||
| 		compatible = "gpio-keys"; | ||||
|  | ||||
| @@ -243,21 +276,22 @@ | ||||
|  | ||||
| 	leds { | ||||
| 		compatible = "gpio-leds"; | ||||
|  | ||||
| 		pinctrl-0 = <&leds_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
|  | ||||
| 		led_system: system { | ||||
| 			label = "ax860:green:system"; | ||||
| 			label = "green:system"; | ||||
| 			gpio = <&tlmm 37 GPIO_ACTIVE_HIGH>; | ||||
| 		}; | ||||
|  | ||||
| 		wlan2g { | ||||
| 			label = "ax860:blue:wlan2g"; | ||||
| 			label = "blue:wlan2g"; | ||||
| 			gpio = <&tlmm 35 GPIO_ACTIVE_HIGH>; | ||||
| 		}; | ||||
|  | ||||
| 		wlan5g { | ||||
| 			label = "ax860:red:wlan5g"; | ||||
| 			label = "red:wlan5g"; | ||||
| 			gpio = <&tlmm 32 GPIO_ACTIVE_HIGH>; | ||||
| 		}; | ||||
| 	}; | ||||
| @@ -290,20 +324,40 @@ | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qpic_nand { | ||||
| &nand { | ||||
| 	pinctrl-0 = <&qpic_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	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>; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &nss_crypto { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &cpu0_opp_table { | ||||
| 	compatible = "operating-points-v2"; | ||||
| 	opp-shared; | ||||
|  | ||||
| 	opp03 { | ||||
| 		opp-hz = /bits/ 64 <1200000000>; | ||||
| 		opp-microvolt = <3>; | ||||
| 		clock-latency-ns = <200000>; | ||||
| 	}; | ||||
|  | ||||
| 	/delete-node/ opp04; | ||||
| 	/delete-node/ opp05; | ||||
| 	/delete-node/ opp06; | ||||
| }; | ||||
|  | ||||
| /* TZAPP is enabled in default memory profile only */ | ||||
| #if !defined(__IPQ_MEM_PROFILE_256_MB__) && !defined(__IPQ_MEM_PROFILE_512_MB__) | ||||
| &qseecom { | ||||
| 	mem-start = <0x49B00000>; | ||||
| 	mem-size = <0x600000>; | ||||
| 	status = "ok"; | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| &ssphy_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
| @@ -312,10 +366,14 @@ | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &usb3 { | ||||
| &qusb_phy_1 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &nss_crypto { | ||||
| &usb2 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &usb3 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|   | ||||
| @@ -1,9 +1,21 @@ | ||||
| // SPDX-License-Identifier: GPL-2.0-only | ||||
| /dts-v1/; | ||||
| /* Copyright (c) 2020 The Linux Foundation. All rights reserved. | ||||
| /* | ||||
|  * Copyright (c) 2017-2020, The Linux Foundation. All rights reserved. | ||||
|  * | ||||
|  * 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. | ||||
|  */ | ||||
| #include "ipq8074.dtsi" | ||||
| #include "ipq8074-ac-cpu.dtsi" | ||||
| #include "qcom-ipq807x-soc.dtsi" | ||||
| #include "qcom-ipq807x-ac-cpu.dtsi" | ||||
|  | ||||
| / { | ||||
| 	#address-cells = <0x2>; | ||||
| @@ -12,10 +24,14 @@ | ||||
| 	compatible = "edgecore,eap102", "qcom,ipq807x-ac02", "qcom,ipq807x"; | ||||
| 	qcom,msm-id = <0x178 0x0>; | ||||
| 	interrupt-parent = <&intc>; | ||||
| 	qcom,board-id = <0x8 0x0>; | ||||
| 	qcom,pmic-id = <0x0 0x0 0x0 0x0>; | ||||
|  | ||||
| 	aliases { | ||||
| 		serial0 = &blsp1_uart5; | ||||
| 		/* Aliases as required by u-boot to patch MAC addresses */ | ||||
| 		/* | ||||
| 		 * Aliases as required by u-boot | ||||
| 		 * to patch MAC addresses | ||||
| 		 */ | ||||
| 		ethernet1 = "/soc/dp5"; | ||||
| 		ethernet0 = "/soc/dp6"; | ||||
|  | ||||
| @@ -26,40 +42,31 @@ | ||||
| 	}; | ||||
|  | ||||
| 	chosen { | ||||
| 		stdout-path = "serial0"; | ||||
| 		bootargs = "console=ttyMSM0,115200,n8 root=/dev/ram0 rw \ | ||||
| 			init=/init"; | ||||
| 		#ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 			bootargs-append = " swiotlb=1"; | ||||
| 		#else | ||||
| 			bootargs-append = " swiotlb=1 coherent_pool=2M"; | ||||
| 		#endif | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| 	soc { | ||||
| 		pinctrl@1000000 { | ||||
| 			button_pins: button_pins { | ||||
| 				reset_button { | ||||
| 					pins = "gpio66"; | ||||
| 					function = "gpio"; | ||||
| 					drive-strength = <8>; | ||||
| 					bias-pull-up; | ||||
| 				}; | ||||
| 			}; | ||||
| &tlmm { | ||||
| 	pinctrl-0 = <&btcoex_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
|  | ||||
| 			usb_mux_sel_pins: usb_mux_pins { | ||||
| 				mux { | ||||
| 					pins = "gpio27"; | ||||
| 					function = "gpio"; | ||||
| 					drive-strength = <8>; | ||||
| 	btcoex_pins: btcoex_pins { | ||||
| 		mux_0 { | ||||
| 			pins = "gpio64"; | ||||
| 			function = "pta1_1"; | ||||
| 			drive-strength = <6>; | ||||
| 			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>; | ||||
| 		mux_1 { | ||||
| 			pins = "gpio65"; | ||||
| 			function = "pta1_2"; | ||||
| 			drive-strength = <6>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
| @@ -88,109 +95,166 @@ | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	uart_pins: uart_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio23", "gpio24"; | ||||
| 			function = "blsp4_uart1"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	spi_0_pins: spi_0_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio38", "gpio39", "gpio40", "gpio41"; | ||||
| 			function = "blsp0_spi"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	qpic_pins: qpic_pins { | ||||
| 		data_0 { | ||||
| 			pins = "gpio15"; | ||||
| 			function = "qpic_pad0"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_1 { | ||||
| 			pins = "gpio12"; | ||||
| 			function = "qpic_pad1"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_2 { | ||||
| 			pins = "gpio13"; | ||||
| 			function = "qpic_pad2"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_3 { | ||||
| 			pins = "gpio14"; | ||||
| 			function = "qpic_pad3"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_4 { | ||||
| 			pins = "gpio5"; | ||||
| 			function = "qpic_pad4"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_5 { | ||||
| 			pins = "gpio6"; | ||||
| 			function = "qpic_pad5"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_6 { | ||||
| 			pins = "gpio7"; | ||||
| 			function = "qpic_pad6"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_7 { | ||||
| 			pins = "gpio8"; | ||||
| 			function = "qpic_pad7"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		qpic_pad { | ||||
| 			pins = "gpio1", "gpio3", "gpio4", | ||||
| 			       "gpio10", "gpio11", "gpio17"; | ||||
| 			function = "qpic_pad"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	hsuart_pins: hsuart_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio49"; | ||||
| 			function = "blsp2_uart"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	button_pins: button_pins { | ||||
|  | ||||
| 		reset_button { | ||||
| 			pins = "gpio66"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	led_pins: led_pins { | ||||
| 		led_pwr { | ||||
| 			pins = "gpio46"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		led_2g { | ||||
| 					pins = "gpio42"; | ||||
| 			pins = "gpio47"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		led_5g { | ||||
| 					pins = "gpio43"; | ||||
| 			pins = "gpio48"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		led_bt { | ||||
| 			pins = "gpio50"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
| 		}; | ||||
|  | ||||
| 		serial@78b3000 { | ||||
| 			status = "ok"; | ||||
| 		}; | ||||
|  | ||||
| 		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>; | ||||
| 	usb_mux_sel_pins: usb_mux_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio27"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 		dma@7984000 { | ||||
| 			 status = "ok"; | ||||
| 	pcie0_pins: pcie_pins { | ||||
| 		pcie0_rst { | ||||
| 			pins = "gpio58"; | ||||
| 			function = "pcie0_rst"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		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>; | ||||
| 		pcie0_wake { | ||||
| 			pins = "gpio59"; | ||||
| 			function = "pcie0_wake"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 		qusb@79000 { | ||||
| 			status = "ok"; | ||||
| 		}; | ||||
|  | ||||
| 		ssphy@78000 { | ||||
| 			status = "ok"; | ||||
| 		}; | ||||
|  | ||||
| 		usb3@8A00000 { | ||||
| 			status = "ok"; | ||||
| 		}; | ||||
|  | ||||
| 		usb3@8C00000 { | ||||
| 			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"; | ||||
| 		}; | ||||
| }; | ||||
|  | ||||
| &soc { | ||||
| 	gpio_keys { | ||||
| 		compatible = "gpio-keys"; | ||||
| 		pinctrl-0 = <&button_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
| 			status = "ok"; | ||||
|  | ||||
| 		button@1 { | ||||
| 				label = "reset"; | ||||
| 			label = "reset_button"; | ||||
| 			linux,code = <KEY_RESTART>; | ||||
| 			gpios = <&tlmm 66 GPIO_ACTIVE_LOW>; | ||||
| 			linux,input-type = <1>; | ||||
| @@ -202,6 +266,7 @@ | ||||
| 		pinctrl-0 = <&mdio_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		phy-reset-gpio = <&tlmm 37 0 &tlmm 25 1 &tlmm 44 1>; | ||||
| 		compatible = "qcom,ipq40xx-mdio", "qcom,qca-mdio"; | ||||
| 		phy0: ethernet-phy@0 { | ||||
| 			reg = <0>; | ||||
| 		}; | ||||
| @@ -516,15 +581,10 @@ | ||||
| 						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>; | ||||
| 					}; | ||||
| @@ -532,7 +592,55 @@ | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
| /* | ||||
| 	dp1 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <1>; | ||||
| 		reg = <0x3a001000 0x200>; | ||||
| 		qcom,mactype = <0>; | ||||
| 		local-mac-address = [000000000000]; | ||||
| 		qcom,link-poll = <1>; | ||||
| 		qcom,phy-mdio-addr = <0>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
|  | ||||
| 	dp2 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <2>; | ||||
| 		reg = <0x3a001200 0x200>; | ||||
| 		qcom,mactype = <0>; | ||||
| 		local-mac-address = [000000000000]; | ||||
| 		qcom,link-poll = <1>; | ||||
| 		qcom,phy-mdio-addr = <1>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
|  | ||||
| 	dp3 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <3>; | ||||
| 		reg = <0x3a001400 0x200>; | ||||
| 		qcom,mactype = <0>; | ||||
| 		local-mac-address = [000000000000]; | ||||
| 		qcom,link-poll = <1>; | ||||
| 		qcom,phy-mdio-addr = <2>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
|  | ||||
| 	dp4 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <4>; | ||||
| 		reg = <0x3a001600 0x200>; | ||||
| 		qcom,mactype = <0>; | ||||
| 		local-mac-address = [000000000000]; | ||||
| 		qcom,link-poll = <1>; | ||||
| 		qcom,phy-mdio-addr = <3>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
| */ | ||||
| 	dp6 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| @@ -591,16 +699,130 @@ | ||||
| 	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>; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &serial_blsp4 { | ||||
| 	pinctrl-0 = <&uart_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &spi_0 { /* BLSP1 QUP1 */ | ||||
| 	pinctrl-0 = <&spi_0_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	cs-select = <0>; | ||||
| 	status = "ok"; | ||||
|  | ||||
| 	m25p80@0 { | ||||
| 		#address-cells = <1>; | ||||
| 		#size-cells = <1>; | ||||
| 		reg = <0>; | ||||
| 		compatible = "n25q128a11"; | ||||
| 		linux,modalias = "m25p80", "n25q128a11"; | ||||
| 		spi-max-frequency = <50000000>; | ||||
| 		use-default-sizes; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &serial_blsp2 { | ||||
| 	pinctrl-0 = <&hsuart_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &nss0 { | ||||
| 	qcom,low-frequency = <187200000>; | ||||
| 	qcom,mid-frequency = <748800000>; | ||||
| 	qcom,max-frequency = <1497600000>; | ||||
| }; | ||||
|  | ||||
| &msm_imem { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &ssphy_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qusb_phy_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &ssphy_1 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qusb_phy_1 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &usb3_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &usb3_1 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &cryptobam { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &crypto { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &i2c_0 { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &i2c_1 { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &qpic_bam { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &nand { | ||||
| 	pinctrl-0 = <&qpic_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qpic_lcd { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &qpic_lcd_panel { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &ledc { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &pcie0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &pcie1 { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &glink_rpm { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &apc_cpr { | ||||
| 	/* Same CPR configuration as OAK */ | ||||
| 	compatible = "qcom,cpr4-ipq817x-apss-regulator"; | ||||
| @@ -682,12 +904,6 @@ | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &nss0 { | ||||
|         qcom,low-frequency = <187200000>; | ||||
|         qcom,mid-frequency = <748800000>; | ||||
|         qcom,max-frequency = <1497600000>; | ||||
| }; | ||||
|  | ||||
| &nss0 { | ||||
| 	npu-supply = <&dummy_reg>; | ||||
| 	mx-supply = <&dummy_reg>; | ||||
|   | ||||
| @@ -1,65 +1,76 @@ | ||||
| // SPDX-License-Identifier: GPL-2.0-only | ||||
| /dts-v1/; | ||||
| /* Copyright (c) 2020 The Linux Foundation. All rights reserved. | ||||
| /* | ||||
|  * Copyright (c) 2017-2018, The Linux Foundation. All rights reserved. | ||||
|  * | ||||
|  * 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. | ||||
|  */ | ||||
| #include "ipq8074.dtsi" | ||||
| #include "ipq8074-hk-cpu.dtsi" | ||||
| #include "qcom-ipq807x-soc.dtsi" | ||||
| #include "qcom-ipq807x-hk-cpu.dtsi" | ||||
|  | ||||
| / { | ||||
| 	#address-cells = <0x2>; | ||||
| 	#size-cells = <0x2>; | ||||
| 	model = "Edgecore EAP106"; | ||||
| 	compatible = "edgecore,eap106", "qcom,ipq807x-hk02", "qcom,ipq807x"; | ||||
| 	qcom,msm-id = <0x158 0x0>, <0x188 0x0>; | ||||
| 	qcom,msm-id = <0x143 0x0>; | ||||
| 	interrupt-parent = <&intc>; | ||||
| 	qcom,board-id = <0x8 0x0>; | ||||
| 	qcom,pmic-id = <0x0 0x0 0x0 0x0>; | ||||
|  | ||||
| 	aliases { | ||||
| 		serial0 = &blsp1_uart5; | ||||
| 		/* Aliases as required by u-boot to patch MAC addresses */ | ||||
| 		/* | ||||
| 		 * Aliases as required by u-boot | ||||
| 		 * to patch MAC addresses | ||||
| 		 */ | ||||
| 		ethernet0 = "/soc/dp1"; | ||||
| 		ethernet1 = "/soc/dp2"; | ||||
| 	}; | ||||
|  | ||||
| 	chosen { | ||||
| 		stdout-path = "serial0"; | ||||
| #ifndef __IPQ_MEM_PROFILE_256_MB__ | ||||
| //		bootargs-append = " vmalloc=600M"; | ||||
| #endif | ||||
| 		bootargs = "console=ttyMSM0,115200,n8 root=/dev/ram0 rw init=/init"; | ||||
| 		#ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 			bootargs-append = " swiotlb=1"; | ||||
| 		#else | ||||
| 			bootargs-append = " swiotlb=1 coherent_pool=2M"; | ||||
| 		#endif | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| 	soc { | ||||
| &tlmm { | ||||
| 	leds_pins: leds_pinmux { | ||||
|  | ||||
| 		dp1 { | ||||
| 			device_type = "network"; | ||||
| 			compatible = "qcom,nss-dp"; | ||||
| 			qcom,id = <4>; | ||||
| 			reg = <0x3a001600 0x200>; | ||||
| 			qcom,mactype = <4>; | ||||
| 			local-mac-address = [000000000000]; | ||||
| 			qcom,link-poll = <1>; | ||||
| 			qcom,phy-mdio-addr = <3>; | ||||
| 			phy-mode = "sgmii"; | ||||
| 		}; | ||||
|  | ||||
| 		dp2 { | ||||
| 			device_type = "network"; | ||||
| 			compatible = "qcom,nss-dp"; | ||||
| 			qcom,id = <6>; | ||||
| 			reg = <0x3a007000 0x3fff>; | ||||
| 			qcom,mactype = <1>; | ||||
| 			local-mac-address = [000000000000]; | ||||
| 			qcom,link-poll = <1>; | ||||
| 			qcom,phy-mdio-addr = <8>; | ||||
| 			phy-mode = "sgmii"; | ||||
| 		}; | ||||
|  | ||||
| 		pinctrl@1000000 { | ||||
| 			button_pins: button_pins { | ||||
| 				wps_button { | ||||
| 					pins = "gpio57"; | ||||
| 		led1_yellow { | ||||
| 			pins = "gpio25"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 					bias-pull-up; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		led1_green { | ||||
| 			pins = "gpio28"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		led2_amber { | ||||
| 			pins = "gpio29"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		led2_blue { | ||||
| 			pins = "gpio32"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| @@ -78,6 +89,123 @@ | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	uart_pins: uart_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio23", "gpio24"; | ||||
| 			function = "blsp4_uart1"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	i2c_0_pins: i2c_0_pinmux { | ||||
| 		mux { | ||||
| 			pins = "gpio42", "gpio43"; | ||||
| 			function = "blsp1_i2c"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	spi_0_pins: spi_0_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio38", "gpio39", "gpio40", "gpio41"; | ||||
| 			function = "blsp0_spi"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	qpic_pins: qpic_pins { | ||||
| 		data_0 { | ||||
| 			pins = "gpio15"; | ||||
| 			function = "qpic_pad0"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_1 { | ||||
| 			pins = "gpio12"; | ||||
| 			function = "qpic_pad1"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_2 { | ||||
| 			pins = "gpio13"; | ||||
| 			function = "qpic_pad2"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_3 { | ||||
| 			pins = "gpio14"; | ||||
| 			function = "qpic_pad3"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_4 { | ||||
| 			pins = "gpio5"; | ||||
| 			function = "qpic_pad4"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_5 { | ||||
| 			pins = "gpio6"; | ||||
| 			function = "qpic_pad5"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_6 { | ||||
| 			pins = "gpio7"; | ||||
| 			function = "qpic_pad6"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_7 { | ||||
| 			pins = "gpio8"; | ||||
| 			function = "qpic_pad7"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_8 { | ||||
| 			pins = "gpio16"; | ||||
| 			function = "qpic_pad8"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		qpic_pad { | ||||
| 			pins = "gpio0", "gpio1", "gpio2", "gpio3", "gpio4", | ||||
| 			       "gpio9", "gpio10", "gpio11", "gpio17"; | ||||
| 			function = "qpic_pad"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	hsuart_pins: hsuart_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio46", "gpio47", "gpio48", "gpio49"; | ||||
| 			function = "blsp2_uart"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 			output-low; | ||||
| 		}; | ||||
| 		mux_1 { | ||||
| 			pins = "gpio51"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 			output-high; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	button_pins: button_pins { | ||||
| 		wps_button { | ||||
| 			pins = "gpio57"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	uniphy_pins: uniphy_pinmux { | ||||
| 		mux { | ||||
| 			pins = "gpio60"; | ||||
| @@ -85,119 +213,74 @@ | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 			leds_pins: leds_pinmux { | ||||
| 				led1_yellow { | ||||
| 					pins = "gpio25"; | ||||
| 	cnss_wlan_en_active: cnss_wlan_en_active { | ||||
| 		mux { | ||||
| 			pins = "gpio57"; | ||||
| 			function = "gpio"; | ||||
| 					drive-strength = <8>; | ||||
| 					bias-pull-down; | ||||
| 			drive-strength = <16>; | ||||
| 			output-high; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 				led1_green { | ||||
| 					pins = "gpio28"; | ||||
| 	cnss_wlan_en_sleep: cnss_wlan_en_sleep { | ||||
| 		mux { | ||||
| 			pins = "gpio57"; | ||||
| 			function = "gpio"; | ||||
| 					drive-strength = <8>; | ||||
| 					bias-pull-down; | ||||
| 				}; | ||||
|  | ||||
| 				led2_amber { | ||||
| 					pins = "gpio29"; | ||||
| 					function = "gpio"; | ||||
| 					drive-strength = <8>; | ||||
| 					bias-pull-down; | ||||
| 				}; | ||||
|  | ||||
| 				led2_blue { | ||||
| 					pins = "gpio32"; | ||||
| 					function = "gpio"; | ||||
| 					drive-strength = <8>; | ||||
| 			drive-strength = <2>; | ||||
| 			output-low; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
| 		}; | ||||
| }; | ||||
|  | ||||
| 		serial@78b3000 { | ||||
| 			status = "ok"; | ||||
| 		}; | ||||
|  | ||||
| 		spi@78b5000 { | ||||
| 			status = "ok"; | ||||
| 			pinctrl-0 = <&spi_0_pins>; | ||||
| &soc { | ||||
| 	gpio_keys { | ||||
| 		compatible = "gpio-keys"; | ||||
| 		pinctrl-0 = <&button_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
| 			cs-select = <0>; | ||||
|  | ||||
| 			m25p80@0 { | ||||
| 				  compatible = "n25q128a11"; | ||||
| 				  #address-cells = <1>; | ||||
| 				  #size-cells = <1>; | ||||
| 				  reg = <0>; | ||||
| 				  spi-max-frequency = <50000000>; | ||||
| 		button@1 { | ||||
| 			label = "wps"; | ||||
| 			linux,code = <KEY_WPS_BUTTON>; | ||||
| 			gpios = <&tlmm 57 GPIO_ACTIVE_LOW>; | ||||
| 			linux,input-type = <1>; | ||||
| 			debounce-interval = <60>; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 		dma@7984000 { | ||||
| 			 status = "ok"; | ||||
| 	leds { | ||||
| 		compatible = "gpio-leds"; | ||||
| 		pinctrl-0 = <&leds_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
|  | ||||
| 		led@25 { | ||||
| 			label = "led1_yellow"; | ||||
| 			gpios = <&tlmm 25 GPIO_ACTIVE_HIGH>; | ||||
| 			linux,default-trigger = "led1_yellow"; | ||||
| 			default-state = "off"; | ||||
| 		}; | ||||
|  | ||||
| 		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>; | ||||
| 			}; | ||||
| 		led@28 { | ||||
| 			label = "led1_green"; | ||||
| 			gpios = <&tlmm 28 GPIO_ACTIVE_HIGH>; | ||||
| 			linux,default-trigger = "led1_green"; | ||||
| 			default-state = "off"; | ||||
| 		}; | ||||
|  | ||||
| 		qusb@79000 { | ||||
| 			status = "ok"; | ||||
| 		led@29 { | ||||
| 			label = "led2_amber"; | ||||
| 			gpios = <&tlmm 29 GPIO_ACTIVE_HIGH>; | ||||
| 			linux,default-trigger = "led2_amber"; | ||||
| 			default-state = "off"; | ||||
| 		}; | ||||
|  | ||||
| 		ssphy@78000 { | ||||
| 			status = "ok"; | ||||
| 		led@32 { | ||||
| 			label = "led2_blue"; | ||||
| 			gpio = <&tlmm 32 GPIO_ACTIVE_HIGH>; | ||||
| 			linux,default-trigger = "led2_blue"; | ||||
| 			default-state = "off"; | ||||
| 		}; | ||||
|  | ||||
| 		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"; | ||||
| 		}; | ||||
|  | ||||
| 		phy@8e000 { | ||||
| 			status = "ok"; | ||||
| 		}; | ||||
|  | ||||
| 		pci@10000000 { | ||||
| 			perst-gpio = <&tlmm 61 0x1>; | ||||
| 			status = "ok"; | ||||
| 	}; | ||||
|  | ||||
| 	mdio@90000 { | ||||
| @@ -510,53 +593,124 @@ | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 		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>; | ||||
| 			}; | ||||
| 	dp1 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <4>; | ||||
| 		reg = <0x3a001600 0x200>; | ||||
| 		qcom,mactype = <0>; | ||||
| 		local-mac-address = [000000000000]; | ||||
| 		qcom,link-poll = <1>; | ||||
| 		qcom,phy-mdio-addr = <3>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
|  | ||||
| 		leds { | ||||
| 			compatible = "gpio-leds"; | ||||
| 			pinctrl-0 = <&leds_pins>; | ||||
| 			pinctrl-names = "default"; | ||||
|  | ||||
| 			led@25 { | ||||
| 				label = "led1_yellow"; | ||||
| 				gpios = <&tlmm 25 GPIO_ACTIVE_HIGH>; | ||||
| 				linux,default-trigger = "led1_yellow"; | ||||
| 				default-state = "off"; | ||||
| 			}; | ||||
|  | ||||
| 			led@28 { | ||||
| 				label = "led1_green"; | ||||
| 				gpios = <&tlmm 28 GPIO_ACTIVE_HIGH>; | ||||
| 				linux,default-trigger = "led1_green"; | ||||
| 				default-state = "off"; | ||||
| 			}; | ||||
|  | ||||
| 			led@29 { | ||||
| 				label = "led2_amber"; | ||||
| 				gpios = <&tlmm 29 GPIO_ACTIVE_HIGH>; | ||||
| 				linux,default-trigger = "led2_amber"; | ||||
| 				default-state = "off"; | ||||
| 			}; | ||||
|  | ||||
| 			led@32 { | ||||
| 				label = "led2_blue"; | ||||
| 				gpio = <&tlmm 32 GPIO_ACTIVE_HIGH>; | ||||
| 				linux,default-trigger = "led2_blue"; | ||||
| 				default-state = "off"; | ||||
| 			}; | ||||
| 	dp2 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <6>; | ||||
| 		reg = <0x3a007000 0x3fff>; | ||||
| 		qcom,mactype = <1>; | ||||
| 		local-mac-address = [000000000000]; | ||||
| 		qcom,link-poll = <1>; | ||||
| 		qcom,phy-mdio-addr = <8>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
| 	wifi3: wifi3@f00000 { | ||||
| 		compatible  = "qcom,cnss-qcn9000"; | ||||
| 		wlan-en-gpio = <&tlmm 57 0>; | ||||
| 		pinctrl-names = "wlan_en_active", "wlan_en_sleep"; | ||||
| 		pinctrl-0 = <&cnss_wlan_en_active>; | ||||
| 		pinctrl-1 = <&cnss_wlan_en_sleep>; | ||||
| 		status = "disabled"; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &serial_blsp4 { | ||||
|        pinctrl-0 = <&uart_pins>; | ||||
|        pinctrl-names = "default"; | ||||
|        status = "ok"; | ||||
| }; | ||||
|  | ||||
| &spi_0 { /* BLSP1 QUP1 */ | ||||
| 	pinctrl-0 = <&spi_0_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	cs-select = <0>; | ||||
| 	status = "ok"; | ||||
|  | ||||
| 	m25p80@0 { | ||||
| 		#address-cells = <1>; | ||||
| 		#size-cells = <1>; | ||||
| 		reg = <0>; | ||||
| 		compatible = "n25q128a11"; | ||||
| 		linux,modalias = "m25p80", "n25q128a11"; | ||||
| 		spi-max-frequency = <50000000>; | ||||
| 		use-default-sizes; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &serial_blsp2 { | ||||
| 	pinctrl-0 = <&hsuart_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &msm_imem { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &ssphy_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qusb_phy_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &ssphy_1 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qusb_phy_1 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &usb3_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &usb3_1 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &cryptobam { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &crypto { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &i2c_0 { | ||||
| 	pinctrl-0 = <&i2c_0_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &i2c_1 { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &qpic_bam { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &nand { | ||||
| 	pinctrl-0 = <&qpic_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &pcie0 { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|   | ||||
| @@ -1,21 +1,37 @@ | ||||
| // SPDX-License-Identifier: GPL-2.0-only | ||||
| /dts-v1/; | ||||
| /* Copyright (c) 2020 The Linux Foundation. All rights reserved. | ||||
| /* | ||||
|  * Copyright (c) 2017-2018, The Linux Foundation. All rights reserved. | ||||
|  * | ||||
|  * 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. | ||||
|  */ | ||||
| #include "ipq8074.dtsi" | ||||
| #include "ipq8074-hk-cpu.dtsi" | ||||
| #include "qcom-ipq807x-soc.dtsi" | ||||
| #include "qcom-ipq807x-hk-cpu.dtsi" | ||||
|  | ||||
| / { | ||||
| 	#address-cells = <0x2>; | ||||
| 	#size-cells = <0x2>; | ||||
| 	model = "TP-Link EX227"; | ||||
|         compatible = "tplink,ex227", "qcom,ipq8074-ap-hk07", "qcom,ipq8074"; | ||||
| 	qcom,msm-id = <0x156 0x0>, <0x185 0x0>; | ||||
| 	compatible = "tplink,ex227", "qcom,ipq807x"; | ||||
| 	qcom,msm-id = <0x143 0x0>; | ||||
| 	interrupt-parent = <&intc>; | ||||
| 	qcom,board-id = <0x8 0x0>; | ||||
| 	qcom,pmic-id = <0x0 0x0 0x0 0x0>; | ||||
|  | ||||
| 	aliases { | ||||
| 		serial0 = &blsp1_uart5; | ||||
| 		/* Aliases as required by u-boot to patch MAC addresses */ | ||||
| 		/* | ||||
| 		 * Aliases as required by u-boot | ||||
| 		 * to patch MAC addresses | ||||
| 		 */ | ||||
| 		ethernet0 = "/soc/dp1"; | ||||
| 		led-boot = &led_power; | ||||
| 		led-failsafe = &led_power; | ||||
| @@ -24,17 +40,34 @@ | ||||
| 	}; | ||||
|  | ||||
| 	chosen { | ||||
| 		stdout-path = "serial0"; | ||||
| 		bootargs = "console=ttyMSM0,115200,n8 root=/dev/ram0 rw \ | ||||
| 			init=/init"; | ||||
| 		bootargs-append = " swiotlb=1"; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| 	soc { | ||||
| 		pinctrl@1000000 { | ||||
| 			button_pins: button_pins { | ||||
| 				wps_button { | ||||
| 					pins = "gpio50"; | ||||
| 					function = "gpio"; | ||||
| 					drive-strength = <8>; | ||||
| 					bias-pull-up; | ||||
| &tlmm { | ||||
| 	pinctrl-0 = <&btcoex_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
|  | ||||
| 	btcoex_pins: btcoex_pins { | ||||
| 		mux_0 { | ||||
| 			pins = "gpio64"; | ||||
| 			function = "pta1_1"; | ||||
| 			drive-strength = <6>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		mux_1 { | ||||
| 			pins = "gpio65"; | ||||
| 			function = "pta1_2"; | ||||
| 			drive-strength = <6>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		mux_2 { | ||||
| 			pins = "gpio66"; | ||||
| 			function = "pta1_0"; | ||||
| 			drive-strength = <6>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| @@ -52,107 +85,181 @@ | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 		mux_2 { | ||||
| 					pins = "gpio37"; | ||||
| 			pins = "gpio25"; | ||||
| 			function = "gpio"; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 		mux_3 { | ||||
| 					pins = "gpio25"; | ||||
| 			pins = "gpio37"; | ||||
| 			function = "gpio"; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	uart_pins: uart_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio23", "gpio24"; | ||||
| 			function = "blsp4_uart1"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	spi_0_pins: spi_0_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio38", "gpio39", "gpio40", "gpio41"; | ||||
| 			function = "blsp0_spi"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	spi_3_pins: spi_3_pins { | ||||
| 		mux { | ||||
| 			pins = "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; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	qpic_pins: qpic_pins { | ||||
| 		data_0 { | ||||
| 			pins = "gpio15"; | ||||
| 			function = "qpic_pad0"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_1 { | ||||
| 			pins = "gpio12"; | ||||
| 			function = "qpic_pad1"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_2 { | ||||
| 			pins = "gpio13"; | ||||
| 			function = "qpic_pad2"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_3 { | ||||
| 			pins = "gpio14"; | ||||
| 			function = "qpic_pad3"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_4 { | ||||
| 			pins = "gpio5"; | ||||
| 			function = "qpic_pad4"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_5 { | ||||
| 			pins = "gpio6"; | ||||
| 			function = "qpic_pad5"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_6 { | ||||
| 			pins = "gpio7"; | ||||
| 			function = "qpic_pad6"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_7 { | ||||
| 			pins = "gpio8"; | ||||
| 			function = "qpic_pad7"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		qpic_pad { | ||||
| 			pins = "gpio1", "gpio3", "gpio4", | ||||
| 			       "gpio10", "gpio11", "gpio17"; | ||||
| 			function = "qpic_pad"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	hsuart_pins: hsuart_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio46", "gpio47", "gpio48", "gpio49"; | ||||
| 			function = "blsp2_uart"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	/* POWER_LED, TP-Link */ | ||||
| 	led_pins: led_pins { | ||||
| 		led_power { | ||||
| 			pins = "gpio42"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	/* BUTTON, TP-Link */ | ||||
| 	button_pins: button_pins { | ||||
| 		reset_button { | ||||
| 			pins = "gpio50"; | ||||
| 			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; | ||||
| 		}; | ||||
|  | ||||
| 		serial@78b3000 { | ||||
| 			status = "ok"; | ||||
| 		}; | ||||
|  | ||||
| 		dp1 { | ||||
| 			device_type = "network"; | ||||
| 			compatible = "qcom,nss-dp"; | ||||
| 			qcom,id = <6>; | ||||
| 			reg = <0x3a001000 0x200>; | ||||
| 			qcom,mactype = <0>; | ||||
| 			local-mac-address = [000000000000]; | ||||
| 			qcom,link-poll = <1>; | ||||
| 			qcom,phy-mdio-addr = <4>; | ||||
| 			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>; | ||||
| 		pcie0_wake { | ||||
| 			pins = "gpio59"; | ||||
| 			function = "pcie0_wake"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 		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>; | ||||
| 			}; | ||||
| 		}; | ||||
|  | ||||
| 		gpio_keys { | ||||
| 			compatible = "gpio-keys"; | ||||
| 			pinctrl-0 = <&button_pins>; | ||||
| 			pinctrl-names = "default"; | ||||
| 			status = "ok"; | ||||
|  | ||||
| 			button@1 { | ||||
| 				label = "reset"; | ||||
| 				linux,code = <KEY_RESTART>; | ||||
| 				gpios = <&tlmm 50 GPIO_ACTIVE_LOW>; | ||||
| 				linux,input-type = <1>; | ||||
| 				debounce-interval = <60>; | ||||
| 			}; | ||||
| 		}; | ||||
|  | ||||
| 		leds { | ||||
| 			compatible = "gpio-leds"; | ||||
| 			pinctrl-0 = <&led_pins>; | ||||
| 			pinctrl-names = "default"; | ||||
|  | ||||
| 			led_power: led_power { | ||||
| 				label = "led_2g"; | ||||
| 				gpio = <&tlmm 42 GPIO_ACTIVE_HIGH>; | ||||
| 				default-state = "off"; | ||||
| 			}; | ||||
| 		}; | ||||
| }; | ||||
|  | ||||
| &soc { | ||||
| 	mdio: mdio@90000 { | ||||
| 		pinctrl-0 = <&mdio_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		phy-reset-gpio = <&tlmm 37 0 &tlmm 25 1>; | ||||
| 		compatible = "qcom,ipq40xx-mdio", "qcom,qca-mdio"; | ||||
| 		phy0: ethernet-phy@0 { | ||||
| 			reg = <0>; | ||||
| 		}; | ||||
| @@ -178,7 +285,7 @@ | ||||
| 		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 = <0xff>; /* mac mode for uniphy instance1*/ | ||||
| 		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 */ | ||||
| @@ -466,15 +573,10 @@ | ||||
| 						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>; | ||||
| 					}; | ||||
| @@ -482,11 +584,171 @@ | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	dp1 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <6>; | ||||
| 		reg = <0x3a001000 0x200>; | ||||
| 		qcom,mactype = <0>; | ||||
| 		local-mac-address = [000000000000]; | ||||
| 		qcom,link-poll = <1>; | ||||
| 		qcom,phy-mdio-addr = <4>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
|  | ||||
| 	/* POWER LED, TP-Link */ | ||||
| 	leds { | ||||
| 		compatible = "gpio-leds"; | ||||
| 		pinctrl-0 = <&led_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
|  | ||||
| 		led_power: led_power { | ||||
| 			label = "blue:power"; | ||||
| 			gpio = <&tlmm 42 GPIO_ACTIVE_HIGH>; | ||||
| 			default-state = "on"; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	/* BUTTON, TP-Link */ | ||||
| 	gpio_keys { | ||||
| 		compatible = "gpio-keys"; | ||||
| 		pinctrl-0 = <&button_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
|  | ||||
| 		button@1 { | ||||
| 			label = "reset"; | ||||
| 			linux,code = <KEY_RESTART>; | ||||
| 			gpios = <&tlmm 50 GPIO_ACTIVE_LOW>; | ||||
| 			linux,input-type = <1>; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	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>; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &serial_blsp4 { | ||||
| 	pinctrl-0 = <&uart_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &spi_0 { /* BLSP1 QUP1 */ | ||||
| 	pinctrl-0 = <&spi_0_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	cs-select = <0>; | ||||
| 	status = "ok"; | ||||
|  | ||||
| 	m25p80@0 { | ||||
| 		#address-cells = <1>; | ||||
| 		#size-cells = <1>; | ||||
| 		reg = <0>; | ||||
| 		compatible = "n25q128a11"; | ||||
| 		linux,modalias = "m25p80", "n25q128a11"; | ||||
| 		spi-max-frequency = <50000000>; | ||||
| 		use-default-sizes; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &spi_4 { /* BLSP1 QUP3 */ | ||||
| 	pinctrl-0 = <&spi_3_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	cs-select = <2>; | ||||
| 	quartz-reset-gpio = <&tlmm 21 1>; | ||||
| 	status = "disabled"; | ||||
| 	spidev3: spi@3 { | ||||
| 		compatible = "qca,spidev"; | ||||
| 		reg = <0>; | ||||
| 		spi-max-frequency = <24000000>; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &serial_blsp2 { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &msm_imem { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &ssphy_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qusb_phy_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &ssphy_1 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qusb_phy_1 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &usb3_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &usb3_1 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &cryptobam { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &crypto { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &i2c_0 { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &i2c_1 { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &qpic_bam { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &nand { | ||||
| 	pinctrl-0 = <&qpic_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qpic_lcd { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &qpic_lcd_panel { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &ledc { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &pcie0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &pcie1 { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
|   | ||||
| @@ -1,36 +1,226 @@ | ||||
| // SPDX-License-Identifier: GPL-2.0-only | ||||
| /dts-v1/; | ||||
| /* Copyright (c) 2020 The Linux Foundation. All rights reserved. | ||||
| /* | ||||
|  * Copyright (c) 2017-2018, The Linux Foundation. All rights reserved. | ||||
|  * | ||||
|  * 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. | ||||
|  */ | ||||
| #include "ipq8074.dtsi" | ||||
| #include "ipq8074-hk-cpu.dtsi" | ||||
| #include "qcom-ipq807x-soc.dtsi" | ||||
| #include "qcom-ipq807x-hk-cpu.dtsi" | ||||
|  | ||||
| / { | ||||
| 	#address-cells = <0x2>; | ||||
| 	#size-cells = <0x2>; | ||||
| 	model = "TP-Link EX447"; | ||||
| 	compatible = "tplink,ex447", "qcom,ipq807x"; | ||||
| 	qcom,msm-id = <0x157 0x0>, <0x187 0x0>; | ||||
| 	qcom,msm-id = <0x143 0x0>; | ||||
| 	interrupt-parent = <&intc>; | ||||
| 	qcom,board-id = <0x8 0x0>; | ||||
| 	qcom,pmic-id = <0x0 0x0 0x0 0x0>; | ||||
|  | ||||
| 	aliases { | ||||
| 		serial0 = &blsp1_uart5; | ||||
| 		/* Aliases as required by u-boot to patch MAC addresses */ | ||||
| 		/* | ||||
| 		 * Aliases as required by u-boot | ||||
| 		 * to patch MAC addresses | ||||
| 		 */ | ||||
| 		ethernet0 = "/soc/dp1"; | ||||
| 	}; | ||||
|  | ||||
| 	chosen { | ||||
| 		stdout-path = "serial0"; | ||||
| 		bootargs = "console=ttyMSM0,115200,n8 root=/dev/ram0 rw \ | ||||
| 			init=/init"; | ||||
| 		bootargs-append = " swiotlb=1"; | ||||
| 		led-boot = &led_power; | ||||
| 		led-failsafe = &led_power; | ||||
| 		led-running = &led_power; | ||||
| 		led-upgrade = &led_power; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| 	soc { | ||||
| 		pinctrl@1000000 { | ||||
| &tlmm { | ||||
| 	pinctrl-0 = <&btcoex_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
|  | ||||
| 	btcoex_pins: btcoex_pins { | ||||
| 		mux_0 { | ||||
| 			pins = "gpio64"; | ||||
| 			function = "pta1_1"; | ||||
| 			drive-strength = <6>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		mux_1 { | ||||
| 			pins = "gpio65"; | ||||
| 			function = "pta1_2"; | ||||
| 			drive-strength = <6>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		mux_2 { | ||||
| 			pins = "gpio66"; | ||||
| 			function = "pta1_0"; | ||||
| 			drive-strength = <6>; | ||||
| 			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 = "gpio37"; | ||||
| 			function = "gpio"; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	uart_pins: uart_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio23", "gpio24"; | ||||
| 			function = "blsp4_uart1"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	spi_0_pins: spi_0_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio38", "gpio39", "gpio40", "gpio41"; | ||||
| 			function = "blsp0_spi"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	spi_3_pins: spi_3_pins { | ||||
| 		mux { | ||||
| 			pins = "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; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	qpic_pins: qpic_pins { | ||||
| 		data_0 { | ||||
| 			pins = "gpio15"; | ||||
| 			function = "qpic_pad0"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_1 { | ||||
| 			pins = "gpio12"; | ||||
| 			function = "qpic_pad1"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_2 { | ||||
| 			pins = "gpio13"; | ||||
| 			function = "qpic_pad2"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_3 { | ||||
| 			pins = "gpio14"; | ||||
| 			function = "qpic_pad3"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_4 { | ||||
| 			pins = "gpio5"; | ||||
| 			function = "qpic_pad4"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_5 { | ||||
| 			pins = "gpio6"; | ||||
| 			function = "qpic_pad5"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_6 { | ||||
| 			pins = "gpio7"; | ||||
| 			function = "qpic_pad6"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_7 { | ||||
| 			pins = "gpio8"; | ||||
| 			function = "qpic_pad7"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		qpic_pad { | ||||
| 			pins = "gpio1", "gpio3", "gpio4", | ||||
| 			       "gpio10", "gpio11", "gpio17"; | ||||
| 			function = "qpic_pad"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	hsuart_pins: hsuart_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio46", "gpio47", "gpio48", "gpio49"; | ||||
| 			function = "blsp2_uart"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	/* POWER_LED, TP-Link */ | ||||
| 	led_pins: led_pins { | ||||
| 		led_power { | ||||
| 			pins = "gpio42"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	/* BUTTON, TP-Link */ | ||||
| 	button_pins: button_pins { | ||||
| 				wps_button { | ||||
| 		reset_button { | ||||
| 			pins = "gpio50"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| @@ -62,161 +252,14 @@ | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 			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 = "gpio37"; | ||||
| 					function = "gpio"; | ||||
| 					bias-pull-up; | ||||
| 				}; | ||||
| 			}; | ||||
|  | ||||
| 			led_pins: led_pins { | ||||
| 				led_power { | ||||
| 					pins = "gpio42"; | ||||
| 					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 = <0x3a001000 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 = "w25q256jw"; | ||||
| 				  #address-cells = <1>; | ||||
| 				  #size-cells = <1>; | ||||
| 				  reg = <0>; | ||||
| 				  spi-max-frequency = <50000000>; | ||||
| 			}; | ||||
| 		}; | ||||
|  | ||||
| 		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>; | ||||
| 			}; | ||||
| 		}; | ||||
|  | ||||
| 		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 50 GPIO_ACTIVE_LOW>; | ||||
| 				linux,input-type = <1>; | ||||
| 				debounce-interval = <60>; | ||||
| 			}; | ||||
| 		}; | ||||
|  | ||||
| 		leds { | ||||
| 			compatible = "gpio-leds"; | ||||
| 			pinctrl-0 = <&led_pins>; | ||||
| 			pinctrl-names = "default"; | ||||
|  | ||||
| 			led_power: led_power { | ||||
| 				label = "blue:power"; | ||||
| 				gpio = <&tlmm 50 GPIO_ACTIVE_LOW>; | ||||
| 				default-state = "off"; | ||||
| 			}; | ||||
| 		}; | ||||
| }; | ||||
|  | ||||
| &soc { | ||||
| 	mdio: mdio@90000 { | ||||
| 		pinctrl-0 = <&mdio_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		phy-reset-gpio = <&tlmm 37 0 &tlmm 25 1>; | ||||
| 		compatible = "qcom,ipq40xx-mdio", "qcom,qca-mdio"; | ||||
| 		phy0: ethernet-phy@0 { | ||||
| 			reg = <0>; | ||||
| 		}; | ||||
| @@ -530,15 +573,10 @@ | ||||
| 						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>; | ||||
| 					}; | ||||
| @@ -547,6 +585,45 @@ | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	dp1 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <5>; | ||||
| 		reg = <0x3a001000 0x200>; | ||||
| 		qcom,mactype = <0>; | ||||
| 		local-mac-address = [000000000000]; | ||||
| 		qcom,link-poll = <1>; | ||||
| 		qcom,phy-mdio-addr = <28>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
| 	 | ||||
| 	/* POWER LED, TP-Link */ | ||||
| 	leds { | ||||
| 		compatible = "gpio-leds"; | ||||
| 		pinctrl-0 = <&led_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
|  | ||||
| 		led_power: led_power { | ||||
| 			label = "power:blue"; | ||||
| 			gpio = <&tlmm 42 GPIO_ACTIVE_HIGH>; | ||||
| 			default-state = "on"; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	/* BUTTON, TP-Link */ | ||||
| 	gpio_keys { | ||||
| 		compatible = "gpio-keys"; | ||||
| 		pinctrl-0 = <&button_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
|  | ||||
| 		button@1 { | ||||
| 			label = "reset"; | ||||
| 			linux,code = <KEY_RESTART>; | ||||
| 			gpios = <&tlmm 50 GPIO_ACTIVE_LOW>; | ||||
| 			linux,input-type = <1>; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	nss-macsec0 { | ||||
| 		compatible = "qcom,nss-macsec"; | ||||
| 		phy_addr = <0x18>; | ||||
| @@ -559,5 +636,119 @@ | ||||
| 		phy_access_mode = <0>; | ||||
| 		mdiobus = <&mdio>; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &serial_blsp4 { | ||||
| 	pinctrl-0 = <&uart_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &spi_0 { /* BLSP1 QUP1 */ | ||||
| 	pinctrl-0 = <&spi_0_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	cs-select = <0>; | ||||
| 	status = "ok"; | ||||
|  | ||||
| 	m25p80@0 { | ||||
| 		#address-cells = <1>; | ||||
| 		#size-cells = <1>; | ||||
| 		reg = <0>; | ||||
| 		compatible = "n25q128a11"; | ||||
| 		linux,modalias = "m25p80", "n25q128a11"; | ||||
| 		spi-max-frequency = <50000000>; | ||||
| 		use-default-sizes; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &spi_4 { /* BLSP1 QUP3 */ | ||||
| 	pinctrl-0 = <&spi_3_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	cs-select = <2>; | ||||
| 	quartz-reset-gpio = <&tlmm 21 1>; | ||||
| 	status = "disabled"; | ||||
| 	spidev3: spi@3 { | ||||
| 		compatible = "qca,spidev"; | ||||
| 		reg = <0>; | ||||
| 		spi-max-frequency = <24000000>; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &serial_blsp2 { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &msm_imem { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &ssphy_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qusb_phy_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &ssphy_1 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qusb_phy_1 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &usb3_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &usb3_1 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &cryptobam { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &crypto { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &i2c_0 { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &i2c_1 { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &qpic_bam { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &nand { | ||||
| 	pinctrl-0 = <&qpic_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qpic_lcd { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &qpic_lcd_panel { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &ledc { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &pcie0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &pcie1 { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
|   | ||||
| @@ -1,33 +1,197 @@ | ||||
| // SPDX-License-Identifier: GPL-2.0-only | ||||
| /dts-v1/; | ||||
| /* Copyright (c) 2017, 2020, The Linux Foundation. All rights reserved. | ||||
| /* | ||||
|  * Copyright (c) 2017-2018, The Linux Foundation. All rights reserved. | ||||
|  * | ||||
|  * 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. | ||||
|  */ | ||||
| #include "ipq8074-hk01.dtsi" | ||||
| #include "ipq8074-audio.dtsi" | ||||
| #include "qcom-ipq807x-soc.dtsi" | ||||
| #include "qcom-ipq807x-audio.dtsi" | ||||
| #include "qcom-ipq807x-hk-cpu.dtsi" | ||||
|  | ||||
| / { | ||||
| 	#address-cells = <0x2>; | ||||
| 	#size-cells = <0x2>; | ||||
| 	model = "CIG WF194C"; | ||||
| 	compatible = "cig,wf194c", "qcom,ipq807x"; | ||||
| 	qcom,msm-id = <0x143 0x0>, <0x158 0x0>, <0x186 0x0>, <0x188 0x0>; | ||||
| 	interrupt-parent = <&intc>; | ||||
| 	qcom,board-id = <0x8 0x0>; | ||||
| 	qcom,pmic-id = <0x0 0x0 0x0 0x0>; | ||||
|  | ||||
| 	aliases { | ||||
| 		/delete-property/ ethernet2; | ||||
| 		/delete-property/ ethernet3; | ||||
| 		/delete-property/ ethernet4; | ||||
| 		/delete-property/ ethernet5; | ||||
| 		sdhc1 = &sdhc_1; /* SDC1 eMMC slot */ | ||||
| 		sdhc2 = &sdhc_2; /* SDC2 SD slot */ | ||||
| 		/* | ||||
| 		 * Aliases as required by u-boot | ||||
| 		 * to patch MAC addresses | ||||
| 		 */ | ||||
| 		ethernet0 = "/soc/dp1"; | ||||
| 		ethernet1 = "/soc/dp2"; | ||||
| 	}; | ||||
|  | ||||
| 	soc { | ||||
| 		/delete-node/ ledc@191E000; | ||||
| 		/delete-node/ qti,scm_restart_reason; | ||||
| 	chosen { | ||||
| 		bootargs = "console=ttyMSM0,115200,n8 root=/dev/ram0 rw init=/init"; | ||||
| 		#ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 			bootargs-append = " swiotlb=1"; | ||||
| 		#else | ||||
| 			bootargs-append = " swiotlb=1 coherent_pool=2M"; | ||||
| 		#endif | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| 		pinctrl@1000000 { | ||||
| 			button_pins: button_pins { | ||||
| 				wps_button { | ||||
| 					pins = "gpio57"; | ||||
| &tlmm { | ||||
| 	pinctrl-0 = <&btcoex_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
|  | ||||
| 	btcoex_pins: btcoex_pins { | ||||
| 		mux_0 { | ||||
| 			pins = "gpio34"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <6>; | ||||
| 			bias-pull-up; | ||||
| 			output-high; | ||||
| 		}; | ||||
| 		mux_1 { | ||||
| 			pins = "gpio62"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <6>; | ||||
| 			bias-pull-up; | ||||
| 			output-high; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	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; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	uart_pins: uart_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio23", "gpio24"; | ||||
| 			function = "blsp4_uart1"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	i2c_0_pins: i2c_0_pinmux { | ||||
| 		mux { | ||||
| 			pins = "gpio42", "gpio43"; | ||||
| 			function = "blsp1_i2c"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	spi_0_pins: spi_0_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio38", "gpio39", "gpio40", "gpio41"; | ||||
| 			function = "blsp0_spi"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	qpic_pins: qpic_pins { | ||||
| 		data_0 { | ||||
| 			pins = "gpio15"; | ||||
| 			function = "qpic_pad0"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_1 { | ||||
| 			pins = "gpio12"; | ||||
| 			function = "qpic_pad1"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_2 { | ||||
| 			pins = "gpio13"; | ||||
| 			function = "qpic_pad2"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_3 { | ||||
| 			pins = "gpio14"; | ||||
| 			function = "qpic_pad3"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_4 { | ||||
| 			pins = "gpio5"; | ||||
| 			function = "qpic_pad4"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_5 { | ||||
| 			pins = "gpio6"; | ||||
| 			function = "qpic_pad5"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_6 { | ||||
| 			pins = "gpio7"; | ||||
| 			function = "qpic_pad6"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_7 { | ||||
| 			pins = "gpio8"; | ||||
| 			function = "qpic_pad7"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_8 { | ||||
| 			pins = "gpio16"; | ||||
| 			function = "qpic_pad8"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		qpic_pad { | ||||
| 			pins = "gpio0", "gpio1", "gpio2", "gpio3", "gpio4", | ||||
| 			       "gpio9", "gpio10", "gpio11", "gpio17"; | ||||
| 			function = "qpic_pad"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	sd_pins: sd_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio63"; | ||||
| 			function = "sd_card"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	hsuart_pins: hsuart_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio48", "gpio49"; | ||||
| 			function = "blsp2_uart"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	leds_pins: leds_pinmux { | ||||
| @@ -37,28 +201,66 @@ | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		led1_g { | ||||
| 			pins = "gpio55"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		led2_r { | ||||
| 			pins = "gpio56"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		led2_g { | ||||
| 			pins = "gpio64"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 	}; | ||||
|  | ||||
| 	button_pins: button_pins { | ||||
| 		wps_button { | ||||
| 			pins = "gpio67"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	uniphy_pins: uniphy_pinmux { | ||||
| 		mux_2 { | ||||
| 			pins = "gpio37"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 		mux_3 { | ||||
| 			pins = "gpio44"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	pwm_pins: pwm_pinmux { | ||||
| 		mux_1 { | ||||
| 			pins = "gpio25"; | ||||
| 			function = "pwm02"; | ||||
| 			drive-strength = <8>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &soc { | ||||
| 	pwm { | ||||
| 		pinctrl-0 = <&pwm_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		used-pwm-indices = <1>, <0>, <0>, <0>; | ||||
| 		status = "disabled"; | ||||
| 	}; | ||||
|  | ||||
| 	gpio_keys { | ||||
| @@ -86,56 +288,28 @@ | ||||
| 			gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>; | ||||
| 			default-state = "off"; | ||||
| 		}; | ||||
|  | ||||
| 		led@55 { | ||||
| 			label = "wf194c:green:lan"; | ||||
| 			gpios = <&tlmm 55 GPIO_ACTIVE_HIGH>; | ||||
| 			default-state = "on"; | ||||
| 		}; | ||||
|  | ||||
| 		led@56 { | ||||
| 			label = "wf194c:red:wan"; | ||||
| 			gpios = <&tlmm 56 GPIO_ACTIVE_HIGH>; | ||||
| 			default-state = "off"; | ||||
| 		}; | ||||
|  | ||||
| 		led@64 { | ||||
| 			label = "wf194c:green:wan"; | ||||
| 			gpios = <&tlmm 64 GPIO_ACTIVE_HIGH>; | ||||
| 			default-state = "on"; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 		dp1 { | ||||
| 			device_type = "network"; | ||||
| 			compatible = "qcom,nss-dp"; | ||||
| 			qcom,id = <4>; | ||||
| 			reg = <0x3a001600 0x200>; | ||||
| 			qcom,mactype = <0>; | ||||
| 			local-mac-address = [000000000000]; | ||||
| 			qcom,link-poll = <1>; | ||||
| 			qcom,phy-mdio-addr = <3>; | ||||
| 			phy-mode = "sgmii"; | ||||
| 		}; | ||||
|  | ||||
| 		dp2 { | ||||
| 			device_type = "network"; | ||||
| 			compatible = "qcom,nss-dp"; | ||||
| 			qcom,id = <6>; | ||||
| 			reg = <0x3a007000 0x3fff>; | ||||
| 			qcom,mactype = <1>; | ||||
| 			local-mac-address = [000000000000]; | ||||
| 			qcom,link-poll = <1>; | ||||
| 			qcom,phy-mdio-addr = <0>; | ||||
| 			phy-mode = "sgmii"; | ||||
| 		}; | ||||
|  | ||||
| 	mdio@90000 { | ||||
| 		pinctrl-0 = <&mdio_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		phy-reset-gpio = <&tlmm 37 0 &tlmm 44 0>; | ||||
| 		phy0: ethernet-phy@0 { | ||||
| 				reg = <0xf>; | ||||
| 			reg = <0xf>;	/*<0>*/ | ||||
| 		}; | ||||
| 		phy1: ethernet-phy@1 { | ||||
| 			reg = <0xf>; | ||||
| @@ -156,8 +330,10 @@ | ||||
| 	}; | ||||
|  | ||||
| 	ess-switch@3a000000 { | ||||
| 		pinctrl-0 = <&uniphy_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		switch_cpu_bmp = <0x1>;  /* cpu port bitmap */ | ||||
| 			switch_lan_bmp = <0x30>; /* lan port bitmap */ | ||||
| 		switch_lan_bmp = <0x30>; /*..0x3e lan port bitmap */ | ||||
| 		switch_wan_bmp = <0x40>; /* wan port bitmap */ | ||||
| 		switch_mac_mode = <0x0>; /* mac mode for uniphy instance0*/ | ||||
| 		switch_mac_mode1 = <0xff>; /* mac mode for uniphy instance1*/ | ||||
| @@ -437,25 +613,139 @@ | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 		pwm { | ||||
| 			status = "disabled"; | ||||
| 		}; | ||||
|  | ||||
| 		qti_mdss_qpic@7980000 { | ||||
| 			status = "disabled"; | ||||
| 		}; | ||||
|  | ||||
| 		qti_mdss_qpic_panel { | ||||
| 			status = "disabled"; | ||||
| 		}; | ||||
|  | ||||
| 		i2c@78b6000 { | ||||
| 			status = "disabled"; | ||||
| 		}; | ||||
|  | ||||
| 		sdhci@7824900 { | ||||
| 			status = "disabled"; | ||||
| 	dp1 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <4>; | ||||
| 		reg = <0x3a001600 0x200>; | ||||
| 		qcom,mactype = <0>; | ||||
| 		local-mac-address = [000000000000]; | ||||
| 		qcom,link-poll = <1>; | ||||
| 		qcom,phy-mdio-addr = <3>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
| 	dp2 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <6>; | ||||
| 		reg = <0x3a007000 0x3fff>; | ||||
| 		qcom,mactype = <1>; | ||||
| 		local-mac-address = [000000000000]; | ||||
| 		qcom,link-poll = <1>; | ||||
| 		qcom,phy-mdio-addr = <0>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &serial_blsp4 { | ||||
| 	pinctrl-0 = <&uart_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &spi_0 { /* BLSP1 QUP1 */ | ||||
| 	pinctrl-0 = <&spi_0_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	cs-select = <0>; | ||||
| 	status = "ok"; | ||||
|  | ||||
| 	m25p80@0 { | ||||
| 		#address-cells = <1>; | ||||
| 		#size-cells = <1>; | ||||
| 		reg = <0>; | ||||
| 		compatible = "n25q128a11"; | ||||
| 		linux,modalias = "m25p80", "n25q128a11"; | ||||
| 		spi-max-frequency = <50000000>; | ||||
| 		use-default-sizes; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &serial_blsp2 { | ||||
| 	pinctrl-0 = <&hsuart_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &msm_imem { | ||||
| 	status = "enabled"; | ||||
| }; | ||||
|  | ||||
| &ssphy_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qusb_phy_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &ssphy_1 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qusb_phy_1 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &usb3_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &usb3_1 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &cryptobam { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &crypto { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &i2c_0 { | ||||
| 	pinctrl-0 = <&i2c_0_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &i2c_1 { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &sdhc_1 { | ||||
| 	qcom,clk-rates = <400000 25000000 50000000 100000000 \ | ||||
| 			 192000000 384000000>; | ||||
| 	qcom,bus-speed-mode = "HS400_1p8v", "HS200_1p8v", "DDR_1p8v"; | ||||
| 	qcom,nonremovable; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qpic_bam { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &nand { | ||||
| 	pinctrl-0 = <&qpic_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &sdhc_2 { | ||||
| 	qcom,clk-rates = <400000 25000000 50000000 100000000 \ | ||||
| 			 192000000>; | ||||
| 	qcom,bus-speed-mode = "HS200_1p8v", "DDR_1p8v"; | ||||
| 	pinctrl-0 = <&sd_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	cd-gpios = <&tlmm 63 1>; | ||||
| 	sd-ldo-gpios = <&tlmm 21 0>; | ||||
| 	vqmmc-supply = <&ldo11>; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qpic_lcd { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qpic_lcd_panel { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|   | ||||
| @@ -1,110 +1,113 @@ | ||||
| // SPDX-License-Identifier: GPL-2.0-only | ||||
| /dts-v1/; | ||||
| /* Copyright (c) 2020 The Linux Foundation. All rights reserved. | ||||
| /* | ||||
|  * Copyright (c) 2017-2019, The Linux Foundation. All rights reserved. | ||||
|  * | ||||
|  * 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. | ||||
|  */ | ||||
| #include "ipq8074.dtsi" | ||||
| #include "ipq8074-hk-cpu.dtsi" | ||||
| #include "qcom-ipq807x-soc.dtsi" | ||||
| #include "qcom-ipq807x-hk-cpu.dtsi" | ||||
|  | ||||
| / { | ||||
| 	#address-cells = <0x2>; | ||||
| 	#size-cells = <0x2>; | ||||
| 	model = "CIG WF194c4"; | ||||
| 	compatible = "cig,wf194c4", "qcom,ipq807x"; | ||||
| 	qcom,msm-id = <0x157 0x0>, <0x187 0x0>; | ||||
| 	qcom,msm-id = <0x156 0x0>; | ||||
| 	interrupt-parent = <&intc>; | ||||
| 	qcom,board-id = <0x8 0x0>; | ||||
| 	qcom,pmic-id = <0x0 0x0 0x0 0x0>; | ||||
|  | ||||
| 	aliases { | ||||
| 		serial0 = &blsp1_uart5; | ||||
| 		/* Aliases as required by u-boot to patch MAC addresses */ | ||||
| 		/* | ||||
| 		 * Aliases as required by u-boot | ||||
| 		 * to patch MAC addresses | ||||
| 		 */ | ||||
| 		ethernet0 = "/soc/dp1"; | ||||
| 		ethernet1 = "/soc/dp2"; | ||||
| 	/*	ethernet2 = "/soc/dp3"; | ||||
| 		ethernet3 = "/soc/dp4"; | ||||
| 		ethernet4 = "/soc/dp5"; | ||||
| 		ethernet5 = "/soc/dp6"; | ||||
| 	*/ | ||||
| 	}; | ||||
|  | ||||
| 	chosen { | ||||
| 		stdout-path = "serial0"; | ||||
| 		bootargs = "console=ttyMSM0,115200,n8 root=/dev/ram0 rw \ | ||||
| 			init=/init"; | ||||
| 		#ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 			bootargs-append = " swiotlb=1"; | ||||
| 		#else | ||||
| 			bootargs-append = " swiotlb=1 coherent_pool=2M"; | ||||
| 		#endif | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| 	soc { | ||||
| 		gpio_keys { | ||||
| 			compatible = "gpio-keys"; | ||||
| 			pinctrl-0 = <&button_pins>; | ||||
| &tlmm { | ||||
| 	pinctrl-0 = <&btcoex_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
|  | ||||
| 			button@1 { | ||||
| 				label = "reset"; | ||||
| 				linux,code = <KEY_RESTART>; | ||||
| 				gpios = <&tlmm 67 GPIO_ACTIVE_LOW>; | ||||
| 				linux,input-type = <1>; | ||||
| 				debounce-interval = <60>; | ||||
| 	btcoex_pins: btcoex_pins { | ||||
| /*	 | ||||
| 		mux_0 { | ||||
| 			pins = "gpio64"; | ||||
| 			function = "pta1_1"; | ||||
| 			drive-strength = <6>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		mux_1 { | ||||
| 			pins = "gpio65"; | ||||
| 			function = "pta1_2"; | ||||
| 			drive-strength = <6>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 		leds { | ||||
| 			compatible = "gpio-leds"; | ||||
| 			pinctrl-0 = <&leds_pins>; | ||||
| 			pinctrl-names = "default"; | ||||
| 			status = "ok"; | ||||
|  | ||||
| 			led@54 { | ||||
| 				label = "red:lan"; | ||||
| 				gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>; | ||||
| 				linux,default-trigger = "led1_r"; | ||||
| 				default-state = "off"; | ||||
| 		mux_2 { | ||||
| 			pins = "gpio66"; | ||||
| 			function = "pta1_0"; | ||||
| 			drive-strength = <6>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 			led@55 { | ||||
| 				label = "green:lan"; | ||||
| 				gpios = <&tlmm 55 GPIO_ACTIVE_HIGH>; | ||||
| 				linux,default-trigger = "led1_g"; | ||||
| 				default-state = "off"; | ||||
| 		mux_3 { | ||||
| 			pins = "gpio54"; | ||||
| 			function = "pta2_0"; | ||||
| 			drive-strength = <6>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 			led@56 { | ||||
| 				label = "red:wan"; | ||||
| 				gpios = <&tlmm 56 GPIO_ACTIVE_HIGH>; | ||||
| 				linux,default-trigger = "led2_r"; | ||||
| 				default-state = "off"; | ||||
| 		mux_4 { | ||||
| 			pins = "gpio55"; | ||||
| 			function = "pta2_1"; | ||||
| 			drive-strength = <6>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 			led@64 { | ||||
| 				label = "green:wan"; | ||||
| 				gpios = <&tlmm 64 GPIO_ACTIVE_HIGH>; | ||||
| 				linux,default-trigger = "led2_g"; | ||||
| 				default-state = "off"; | ||||
| 		mux_5 { | ||||
| 			pins = "gpio56"; | ||||
| 			function = "pta2_2"; | ||||
| 			drive-strength = <6>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		}; | ||||
|  | ||||
| 		pinctrl@1000000 { | ||||
| 			button_pins: button_pins { | ||||
| 				wps_button { | ||||
| */		 | ||||
| 		mux_0 { | ||||
| 			pins = "gpio34"; | ||||
| 			function = "gpio"; | ||||
| 					drive-strength = <8>; | ||||
| 			drive-strength = <6>; | ||||
| 			bias-pull-up; | ||||
| 			output-high; | ||||
| 		}; | ||||
| 			}; | ||||
|  | ||||
| 			usb_mux_sel_pins: usb_mux_pins { | ||||
| 				mux { | ||||
| 					pins = "gpio27"; | ||||
| 		mux_1 { | ||||
| 			pins = "gpio62"; | ||||
| 			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; | ||||
| 			drive-strength = <6>; | ||||
| 			bias-pull-up; | ||||
| 			output-high; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| @@ -121,15 +124,117 @@ | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 				mux_2 { | ||||
| 					pins = "gpio25"; | ||||
| 					function = "gpio"; | ||||
| 					bias-pull-up; | ||||
| 	}; | ||||
| 				mux_3 { | ||||
| 					pins = "gpio44"; | ||||
|  | ||||
| 	uart_pins: uart_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio23", "gpio24"; | ||||
| 			function = "blsp4_uart1"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	spi_0_pins: spi_0_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio38", "gpio39", "gpio40", "gpio41"; | ||||
| 			function = "blsp0_spi"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	/*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"; | ||||
| 					bias-pull-up; | ||||
| 			input; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		quartz_reset { | ||||
| 			pins = "gpio21"; | ||||
| 			function = "gpio"; | ||||
| 			output-low; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	};*/ | ||||
|  | ||||
| 	qpic_pins: qpic_pins { | ||||
| 		data_0 { | ||||
| 			pins = "gpio15"; | ||||
| 			function = "qpic_pad0"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_1 { | ||||
| 			pins = "gpio12"; | ||||
| 			function = "qpic_pad1"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_2 { | ||||
| 			pins = "gpio13"; | ||||
| 			function = "qpic_pad2"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_3 { | ||||
| 			pins = "gpio14"; | ||||
| 			function = "qpic_pad3"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_4 { | ||||
| 			pins = "gpio5"; | ||||
| 			function = "qpic_pad4"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_5 { | ||||
| 			pins = "gpio6"; | ||||
| 			function = "qpic_pad5"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_6 { | ||||
| 			pins = "gpio7"; | ||||
| 			function = "qpic_pad6"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_7 { | ||||
| 			pins = "gpio8"; | ||||
| 			function = "qpic_pad7"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		qpic_pad { | ||||
| 			pins = "gpio1", "gpio3", "gpio4", | ||||
| 			       "gpio10", "gpio11", "gpio17"; | ||||
| 			function = "qpic_pad"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	hsuart_pins: hsuart_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio48", "gpio49"; | ||||
| 			function = "blsp2_uart"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| @@ -167,141 +272,101 @@ | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
|  | ||||
| 	}; | ||||
|  | ||||
| 			spi_3_pins: spi_3_pins { | ||||
| 	/*usb_mux_sel_pins: usb_mux_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"; | ||||
| 			pins = "gpio27"; | ||||
| 			function = "gpio"; | ||||
| 					input; | ||||
| 					bias-disable; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 				quartz_reset { | ||||
| 					pins = "gpio21"; | ||||
| 	}; | ||||
|  | ||||
| 	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; | ||||
| 		}; | ||||
| 	};*/ | ||||
| 	uniphy_pins: uniphy_pinmux {	 | ||||
| 		mux_2 { | ||||
| 			pins = "gpio37"; | ||||
| 			function = "gpio"; | ||||
| 					output-low; | ||||
| 					bias-disable; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 		mux_3 { | ||||
| 			pins = "gpio44"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 		serial@78b3000 { | ||||
| 			status = "ok"; | ||||
| 		}; | ||||
| }; | ||||
|  | ||||
| 		dp1 { | ||||
| 			device_type = "network"; | ||||
| 			compatible = "qcom,nss-dp"; | ||||
| 			qcom,id = <4>; | ||||
| 			reg = <0x3a001600 0x200>; | ||||
| 			qcom,mactype = <0>; | ||||
| 			local-mac-address = [000000000000]; | ||||
| 			qcom,link-poll = <1>; | ||||
| 			qcom,phy-mdio-addr = <0x13>; | ||||
| 			phy-mode = "sgmii"; | ||||
| 			}; | ||||
| 			 | ||||
| 		dp2 { | ||||
| 			device_type = "network"; | ||||
| 			compatible = "qcom,nss-dp"; | ||||
| 			qcom,id = <6>; | ||||
| 			reg = <0x3a007000 0x3fff>; | ||||
| 			qcom,mactype = <1>; | ||||
| 			local-mac-address = [000000000000]; | ||||
| 			qcom,link-poll = <1>; | ||||
| 			qcom,phy-mdio-addr = <0>; | ||||
| 			phy-mode = "sgmii"; | ||||
| 		}; | ||||
|  | ||||
| 		spi@78b5000 { | ||||
| 			status = "ok"; | ||||
| 			pinctrl-0 = <&spi_0_pins>; | ||||
| &soc { | ||||
| 	gpio_keys { | ||||
| 		compatible = "gpio-keys"; | ||||
| 		pinctrl-0 = <&button_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
| 			cs-select = <0>; | ||||
|  | ||||
| 			m25p80@0 { | ||||
| 				  compatible = "n25q128a11"; | ||||
| 				  #address-cells = <1>; | ||||
| 				  #size-cells = <1>; | ||||
| 				  reg = <0>; | ||||
| 				  spi-max-frequency = <50000000>; | ||||
| 		button@1 { | ||||
| 			label = "reset"; | ||||
| 			linux,code = <KEY_RESTART>; | ||||
| 			gpios = <&tlmm 67 GPIO_ACTIVE_LOW>; | ||||
| 			linux,input-type = <1>; | ||||
| 			debounce-interval = <60>; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
|  | ||||
| 		dma@7984000 { | ||||
| 			 status = "ok"; | ||||
| 		}; | ||||
|  | ||||
| 		nand@79b0000 { | ||||
|   	leds { | ||||
|    		 compatible = "gpio-leds"; | ||||
| 	  	 pinctrl-0 = <&leds_pins>; | ||||
| 	  	 pinctrl-names = "default"; | ||||
| 	  	 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>; | ||||
|     	  		led@54 { | ||||
|       	  			label = "red:lan"; | ||||
|      	  			gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>; | ||||
|       	  			linux,default-trigger = "led1_r"; | ||||
|       	  			default-state = "off"; | ||||
|     	  		}; | ||||
|     	  		led@55 { | ||||
|       	  			 label = "green:lan"; | ||||
|           			 gpios = <&tlmm 55 GPIO_ACTIVE_HIGH>; | ||||
|           			 linux,default-trigger = "led1_g"; | ||||
|          			 default-state = "off"; | ||||
|           		}; | ||||
|          		led@56 { | ||||
|          			label = "red:wan"; | ||||
|          			gpios = <&tlmm 56 GPIO_ACTIVE_HIGH>; | ||||
|          			linux,default-trigger = "led2_r"; | ||||
|          			default-state = "off"; | ||||
|          		};   | ||||
|     			led@64 { | ||||
|       				label = "green:wan"; | ||||
|       				gpios = <&tlmm 64 GPIO_ACTIVE_HIGH>; | ||||
|       				linux,default-trigger = "led2_g"; | ||||
|       				default-state = "off"; | ||||
|     			}; | ||||
| 	}; | ||||
|  | ||||
| 		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"; | ||||
| 		}; | ||||
|  | ||||
| 	mdio: mdio@90000 { | ||||
| 		pinctrl-0 = <&mdio_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
| 			phy-reset-gpio = <&tlmm 37 0 &tlmm 25 0 &tlmm 44 0>; | ||||
| 		phy-reset-gpio = <&tlmm 37 0 &tlmm 44 0>; | ||||
| 		phy0: ethernet-phy@0 { | ||||
| 				reg = <0x10>; | ||||
| 			reg = <0x10>;	/*<0>*/ | ||||
| 		}; | ||||
| 		phy1: ethernet-phy@1 { | ||||
| 			reg = <0x11>; | ||||
| @@ -316,19 +381,50 @@ | ||||
| 			reg = <0x14>; | ||||
| 		}; | ||||
| 		phy5: ethernet-phy@5 { | ||||
| 			compatible ="ethernet-phy-ieee802.3-c45"; | ||||
| 			reg = <0>; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	ess-switch@3a000000 { | ||||
| 		pinctrl-0 = <&uniphy_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		switch_cpu_bmp = <0x1>;  /* cpu port bitmap */ | ||||
| 			switch_lan_bmp = <0x32>; /* lan port bitmap */ | ||||
| 		switch_lan_bmp = <0x32>; /*..0x3e lan port bitmap */ | ||||
| 		switch_wan_bmp = <0x40>; /* wan port bitmap */ | ||||
| 		switch_mac_mode = <0x0>; /* mac mode for uniphy instance0*/ | ||||
| 		switch_mac_mode1 = <0xff>; /* mac mode for uniphy instance1*/ | ||||
| 		switch_mac_mode2 = <0xd>; /* 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>; | ||||
| @@ -586,15 +682,10 @@ | ||||
| 						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>; | ||||
| 					}; | ||||
| @@ -602,6 +693,121 @@ | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
| /* | ||||
| 	dp1 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <1>; | ||||
| 		reg = <0x3a001000 0x200>; | ||||
| 		qcom,mactype = <0>; | ||||
| 		local-mac-address = [000000000000]; | ||||
| 		qcom,link-poll = <1>; | ||||
| 		qcom,phy-mdio-addr = <0>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
|  | ||||
| 	dp2 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <2>; | ||||
| 		reg = <0x3a001200 0x200>; | ||||
| 		qcom,mactype = <0>; | ||||
| 		local-mac-address = [000000000000]; | ||||
| 		qcom,link-poll = <1>; | ||||
| 		qcom,phy-mdio-addr = <1>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
|  | ||||
| 	dp3 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <3>; | ||||
| 		reg = <0x3a001400 0x200>; | ||||
| 		qcom,mactype = <0>; | ||||
| 		local-mac-address = [000000000000]; | ||||
| 		qcom,link-poll = <1>; | ||||
| 		qcom,phy-mdio-addr = <2>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
|  | ||||
| 	dp4 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <4>; | ||||
| 		reg = <0x3a001600 0x200>; | ||||
| 		qcom,mactype = <0>; | ||||
| 		local-mac-address = [000000000000]; | ||||
| 		qcom,link-poll = <1>; | ||||
| 		qcom,phy-mdio-addr = <3>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
|  | ||||
| 	dp5 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <5>; | ||||
| 		reg = <0x3a003000 0x3fff>; | ||||
| 		qcom,mactype = <1>; | ||||
| 		local-mac-address = [000000000000]; | ||||
| 		qcom,link-poll = <1>; | ||||
| 		qcom,phy-mdio-addr = <24>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
|  | ||||
| 	dp6 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <6>; | ||||
| 		reg = <0x3a007000 0x3fff>; | ||||
| 		qcom,mactype = <1>; | ||||
| 		local-mac-address = [000000000000]; | ||||
| 		qcom,link-poll = <1>; | ||||
| 		qcom,phy-mdio-addr = <28>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
| */ | ||||
| 	dp1 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <4>; | ||||
| 		reg = <0x3a001600 0x200>; | ||||
| 	//	qcom,id = <1>; | ||||
| 	//	reg = <0x3a001000 0x200>; | ||||
| 		qcom,mactype = <0>; | ||||
| 		local-mac-address = [000000000000]; | ||||
| 		qcom,link-poll = <1>; | ||||
| 		qcom,phy-mdio-addr = <0x13>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
| 	dp2 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <6>; | ||||
| 		reg = <0x3a007000 0x3fff>; | ||||
| 		qcom,mactype = <1>; | ||||
| 		local-mac-address = [000000000000]; | ||||
| 		qcom,link-poll = <1>; | ||||
| 		qcom,phy-mdio-addr = <0>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
| /*	 | ||||
| 	leds { | ||||
| 		compatible = "gpio-leds"; | ||||
| 		pinctrl-0 = <&led_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
|  | ||||
| 		led_2g { | ||||
| 			label = "led_2g"; | ||||
| 			gpio = <&tlmm 42 GPIO_ACTIVE_HIGH>; | ||||
| 			default-state = "off"; | ||||
| 		}; | ||||
|  | ||||
| 		led_5g { | ||||
| 			label = "led_5g"; | ||||
| 			gpio = <&tlmm 43 GPIO_ACTIVE_HIGH>; | ||||
| 			default-state = "off"; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	nss-macsec0 { | ||||
| 		compatible = "qcom,nss-macsec"; | ||||
| @@ -615,5 +821,122 @@ | ||||
| 		phy_access_mode = <0>; | ||||
| 		mdiobus = <&mdio>; | ||||
| 	}; | ||||
| */ | ||||
| }; | ||||
|  | ||||
| &serial_blsp4 { | ||||
| 	pinctrl-0 = <&uart_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &spi_0 { /* BLSP1 QUP1 */ | ||||
| 	pinctrl-0 = <&spi_0_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	cs-select = <0>; | ||||
| 	status = "ok"; | ||||
|  | ||||
| 	m25p80@0 { | ||||
| 		#address-cells = <1>; | ||||
| 		#size-cells = <1>; | ||||
| 		reg = <0>; | ||||
| 		compatible = "n25q128a11"; | ||||
| 		linux,modalias = "m25p80", "n25q128a11"; | ||||
| 		spi-max-frequency = <50000000>; | ||||
| 		use-default-sizes; | ||||
| 	}; | ||||
| }; | ||||
| /* | ||||
| &spi_4 {  | ||||
| 	pinctrl-0 = <&spi_3_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	cs-select = <2>; | ||||
| 	quartz-reset-gpio = <&tlmm 21 1>; | ||||
| 	status = "ok"; | ||||
| 	spidev3: spi@3 { | ||||
| 		compatible = "qca,spidev"; | ||||
| 		reg = <0>; | ||||
| 		spi-max-frequency = <24000000>; | ||||
| 	}; | ||||
| };*/ | ||||
|  | ||||
| &serial_blsp2 { | ||||
| 	pinctrl-0 = <&hsuart_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &msm_imem { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &ssphy_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qusb_phy_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &ssphy_1 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qusb_phy_1 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &usb3_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &usb3_1 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &cryptobam { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &crypto { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &i2c_0 { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &i2c_1 { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &qpic_bam { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &nand { | ||||
| 	pinctrl-0 = <&qpic_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qpic_lcd { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &qpic_lcd_panel { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &ledc { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &pcie0 { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &pcie1 { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
|   | ||||
| @@ -1,24 +1,45 @@ | ||||
| // SPDX-License-Identifier: GPL-2.0-only | ||||
| /dts-v1/; | ||||
| /* Copyright (c) 2020 The Linux Foundation. All rights reserved. | ||||
|  * Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved. | ||||
| /* | ||||
|  * Copyright (c) 2017-2020, The Linux Foundation. All rights reserved. | ||||
|  * | ||||
|  * 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. | ||||
|  */ | ||||
| #include "ipq8074.dtsi" | ||||
| #include "ipq8074-hk-cpu.dtsi" | ||||
| #include "qcom-ipq807x-soc.dtsi" | ||||
| #include "qcom-ipq807x-audio.dtsi" | ||||
| #include "qcom-ipq807x-hk-cpu.dtsi" | ||||
|  | ||||
| / { | ||||
| 	#address-cells = <0x2>; | ||||
| 	#size-cells = <0x2>; | ||||
| 	model = "CIG WF196"; | ||||
| 	compatible = "cig,wf196", "qcom,ipq807x"; | ||||
| 	qcom,msm-id = <0x157 0x0>, <0x187 0x0>; | ||||
| 	qcom,msm-id = <0x187 0x0>; | ||||
| 	interrupt-parent = <&intc>; | ||||
| 	qcom,board-id = <0x8 0x0>; | ||||
| 	qcom,pmic-id = <0x0 0x0 0x0 0x0>; | ||||
|  | ||||
| 	aliases { | ||||
| 		serial0 = &blsp1_uart5; | ||||
| 		/* Aliases as required by u-boot to patch MAC addresses */ | ||||
| 		/* | ||||
| 		 * Aliases as required by u-boot | ||||
| 		 * to patch MAC addresses | ||||
| 		 */ | ||||
| 		ethernet0 = "/soc/dp1"; | ||||
| 		ethernet1 = "/soc/dp2"; | ||||
| 		ethernet2 = "/soc/dp3"; | ||||
| 		ethernet3 = "/soc/dp4"; | ||||
| 		ethernet4 = "/soc/dp5"; | ||||
| 		ethernet5 = "/soc/dp6"; | ||||
|  | ||||
| 		led-boot = &led_power; | ||||
| 		led-failsafe = &led_power; | ||||
| 		led-running = &led_power; | ||||
| @@ -26,7 +47,12 @@ | ||||
| 	}; | ||||
|  | ||||
| 	chosen { | ||||
| 		stdout-path = "serial0"; | ||||
| 		bootargs = "console=ttyMSM0,115200,n8 root=/dev/ram0 rw init=/init"; | ||||
| 		#ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| 			bootargs-append = " swiotlb=1"; | ||||
| 		#else | ||||
| 			bootargs-append = " swiotlb=1 coherent_pool=2M vmalloc=600M"; | ||||
| 		#endif | ||||
| 	}; | ||||
|  | ||||
| 	reserved-memory { | ||||
| @@ -57,27 +83,26 @@ | ||||
| 	 * +--------+--------------+-------------------------+ | ||||
| 	 * | M3 Dump|  0x4E800000  |           1MB           | | ||||
| 	 * +--------+--------------+-------------------------+ | ||||
| 	 * |  Pine  |  0x4E900000  |          38MB           | | ||||
| 	 * |  Pine0 |  0x4E900000  |          30MB           | | ||||
| 	 * +--------+--------------+-------------------------+ | ||||
| 	 * |  MHI0  |  0x50F00000  |          9MB            | | ||||
| 	 * |  MHI0  |  0x50700000  |          16MB           | | ||||
| 	 * +--------+--------------+-------------------------+ | ||||
| 	 * |                                                 | | ||||
| 	 * |      Rest of the memory for Linux               | | ||||
| 	 * |                                                 | | ||||
| 	 * +=================================================+ | ||||
| 	 */ | ||||
| 		qcn9000_pcie0: qcn9000_pcie0@4e900000 { | ||||
| 		/delete-node/ wifi_dump@4e900000; | ||||
| 		qcn9000_pcie0@4e900000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x4e900000 0x0 0x02600000>; | ||||
| 			reg = <0x0 0x4e900000 0x0 0x01e00000>; | ||||
| 		}; | ||||
|  | ||||
| #if defined(__CNSS2__) | ||||
| 		mhi_region0: dma_pool0@50F00000 { | ||||
| 		mhi_region0: dma_pool0@50700000 { | ||||
| 			compatible = "shared-dma-pool"; | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x50F00000 0x0 0x00900000>; | ||||
| 			reg = <0x0 0x50700000 0x0 0x01000000>; | ||||
| 		}; | ||||
| #endif | ||||
| #else | ||||
| 	/*                   Default Profile | ||||
| 	 * +========+==============+=========================+ | ||||
| @@ -103,53 +128,53 @@ | ||||
| 	 * +--------+--------------+-------------------------+ | ||||
| 	 * | M3 Dump|  0x51000000  |           1MB           | | ||||
| 	 * +--------+--------------+-------------------------+ | ||||
| 	 * |  Pine0 |  0x51100000  |          53MB           | | ||||
| 	 * |  Pine0 |  0x51100000  |          45MB           | | ||||
| 	 * +--------+--------------+-------------------------+ | ||||
| 	 * |  MHI0  |  0x54600000  |           9MB           | | ||||
| 	 * |  MHI0  |  0x53E00000  |          24MB           | | ||||
| 	 * +--------+--------------+-------------------------+ | ||||
| 	 * |                                                 | | ||||
| 	 * |          Rest of the memory for Linux           | | ||||
| 	 * |                                                 | | ||||
| 	 * +=================================================+ | ||||
| 	 */ | ||||
| 		qcn9000_pcie0: qcn9000_pcie0@51100000 { | ||||
| 		qcn9000_pcie0@51100000 { | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x51100000 0x0 0x03500000>; | ||||
| 			reg = <0x0 0x51100000 0x0 0x02D00000>; | ||||
| 		}; | ||||
| 		/delete-node/ wifi_dump@51100000; | ||||
| 		/delete-node/ wigig_dump@51300000; | ||||
|  | ||||
| #if defined(__CNSS2__) | ||||
| 		mhi_region0: dma_pool0@54600000 { | ||||
| 		mhi_region0: dma_pool0@53e00000 { | ||||
| 			compatible = "shared-dma-pool"; | ||||
| 			no-map; | ||||
| 			reg = <0x0 0x54600000 0x0 0x00900000>; | ||||
| 			reg = <0x0 0x53E00000 0x0 0x01800000>; | ||||
| 		}; | ||||
| #endif | ||||
| #endif | ||||
| #endif | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| 	soc { | ||||
| 		pinctrl@1000000 { | ||||
| 			button_pins: button_pins { | ||||
| 				wps_button { | ||||
| 					pins = "gpio67"; | ||||
| 					function = "gpio"; | ||||
| 					drive-strength = <8>; | ||||
| 					bias-pull-up; | ||||
| 				}; | ||||
| 			}; | ||||
| &tlmm { | ||||
| 	pinctrl-0 = <&btcoex_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
|  | ||||
| 			pcie0_pins: pcie_pins { | ||||
| 				pcie0_rst { | ||||
| 					pins = "gpio58"; | ||||
| 					function = "pcie0_rst"; | ||||
| 					drive-strength = <8>; | ||||
| 	btcoex_pins: btcoex_pins { | ||||
| 		mux_0 { | ||||
| 			pins = "gpio64"; | ||||
| 			function = "pta1_1"; | ||||
| 			drive-strength = <6>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 				pcie0_wake { | ||||
| 					pins = "gpio59"; | ||||
| 					function = "pcie0_wake"; | ||||
| 					drive-strength = <8>; | ||||
| 		mux_1 { | ||||
| 			pins = "gpio65"; | ||||
| 			function = "pta1_2"; | ||||
| 			drive-strength = <6>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 		mux_2 { | ||||
| 			pins = "gpio66"; | ||||
| 			function = "pta1_0"; | ||||
| 			drive-strength = <6>; | ||||
| 			bias-pull-down; | ||||
| 		}; | ||||
| 	}; | ||||
| @@ -167,20 +192,142 @@ | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 				mux_2 { | ||||
| 		mux_3 { | ||||
| 			pins = "gpio44"; | ||||
| 			function = "gpio"; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 			uniphy_pins: uniphy_pinmux { | ||||
| 	uart_pins: uart_pins { | ||||
| 		mux { | ||||
| 					pins = "gpio60"; | ||||
| 					function = "rx2"; | ||||
| 			pins = "gpio23", "gpio24"; | ||||
| 			function = "blsp4_uart1"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
| 	i2c_5_pins: i2c_5_pinmux { | ||||
|                 mux { | ||||
|                         pins = "gpio0", "gpio2"; | ||||
|                         function = "blsp5_i2c"; | ||||
|                         drive-strength = <8>; | ||||
|                         bias-disable; | ||||
|                 }; | ||||
|         }; | ||||
|  | ||||
| 	spi_0_pins: spi_0_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio38", "gpio39", "gpio40", "gpio41"; | ||||
| 			function = "blsp0_spi"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	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; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	qpic_pins: qpic_pins { | ||||
| 		data_0 { | ||||
| 			pins = "gpio15"; | ||||
| 			function = "qpic_pad0"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_1 { | ||||
| 			pins = "gpio12"; | ||||
| 			function = "qpic_pad1"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_2 { | ||||
| 			pins = "gpio13"; | ||||
| 			function = "qpic_pad2"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_3 { | ||||
| 			pins = "gpio14"; | ||||
| 			function = "qpic_pad3"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_4 { | ||||
| 			pins = "gpio5"; | ||||
| 			function = "qpic_pad4"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_5 { | ||||
| 			pins = "gpio6"; | ||||
| 			function = "qpic_pad5"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_6 { | ||||
| 			pins = "gpio7"; | ||||
| 			function = "qpic_pad6"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		data_7 { | ||||
| 			pins = "gpio8"; | ||||
| 			function = "qpic_pad7"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 		qpic_pad { | ||||
| 			pins = "gpio1", "gpio3", "gpio4", | ||||
| 			       "gpio10", "gpio11", "gpio17"; | ||||
| 			function = "qpic_pad"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	hsuart_pins: hsuart_pins { | ||||
| 		mux { | ||||
| 			pins = "gpio46", "gpio47", "gpio48", "gpio49"; | ||||
| 			function = "blsp2_uart"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-disable; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	button_pins: button_pins { | ||||
|  | ||||
| 		wps_button { | ||||
| 			pins = "gpio67"; | ||||
| 			function = "gpio"; | ||||
| 			drive-strength = <8>; | ||||
| 			bias-pull-up; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 	led_pins: led_pins { | ||||
| 		led_red { | ||||
| @@ -204,91 +351,67 @@ | ||||
| 			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; | ||||
| 		}; | ||||
| 	}; | ||||
| 	pwm_pins: pwm_pinmux { | ||||
|                 mux_1 { | ||||
|                         pins = "gpio25"; | ||||
|                         function = "pwm02"; | ||||
|                         drive-strength = <8>; | ||||
|                 }; | ||||
| 		mux_2 { | ||||
|                         pins = "gpio26"; | ||||
|                         function = "pwm12"; | ||||
|                         drive-strength = <8>; | ||||
|                 }; | ||||
| 		mux_3 { | ||||
|                         pins = "gpio27"; | ||||
|                         function = "pwm22"; | ||||
|                         drive-strength = <8>; | ||||
|                 }; | ||||
| 	}; | ||||
|  | ||||
| 		serial@78b3000 { | ||||
| 			status = "ok"; | ||||
| 		}; | ||||
| }; | ||||
|  | ||||
| 		spi@78b5000 { | ||||
| 			status = "ok"; | ||||
| 			pinctrl-0 = <&spi_0_pins>; | ||||
| &soc { | ||||
| 	 pwm { | ||||
|                 pinctrl-0 = <&pwm_pins>; | ||||
|                 pinctrl-names = "default"; | ||||
|                 used-pwm-indices = <1>, <1>, <1>, <0>; | ||||
|          //       status = "ok"; | ||||
|         }; | ||||
| 	gpio_keys { | ||||
| 		compatible = "gpio-keys"; | ||||
| 		pinctrl-0 = <&button_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
| 			cs-select = <0>; | ||||
|  | ||||
| 			m25p80@0 { | ||||
| 				  compatible = "n25q128a11"; | ||||
| 				  #address-cells = <1>; | ||||
| 				  #size-cells = <1>; | ||||
| 				  reg = <0>; | ||||
| 				  spi-max-frequency = <50000000>; | ||||
| 		button@1 { | ||||
| 			label = "reset"; | ||||
| 			linux,code = <KEY_RESTART>; | ||||
| 			gpios = <&tlmm 67 GPIO_ACTIVE_LOW>; | ||||
| 			linux,input-type = <1>; | ||||
| 			debounce-interval = <60>; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 		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"; | ||||
| 		}; | ||||
|  | ||||
| 		qcom,test@0 { | ||||
| 			status = "ok"; | ||||
| 		}; | ||||
|  | ||||
| 		phy@84000 { | ||||
| 			status = "ok"; | ||||
| 		}; | ||||
|  | ||||
| 		phy@86000 { | ||||
| 			status = "ok"; | ||||
| 		}; | ||||
|  | ||||
| 		pci@20000000 { | ||||
| 			perst-gpio = <&tlmm 58 1>; | ||||
| 			status = "ok"; | ||||
|  | ||||
| 			pcie0_rp: pcie0_rp { | ||||
| 				reg = <0 0 0 0 0>; | ||||
| 			}; | ||||
| 		}; | ||||
|  | ||||
| 		phy@8e000 { | ||||
| 			status = "ok"; | ||||
| 		}; | ||||
|  | ||||
| 		pci@10000000 { | ||||
| 			perst-gpio = <&tlmm 61 0x1>; | ||||
| 			status = "ok"; | ||||
| 		}; | ||||
|  | ||||
| 		mdio@90000 { | ||||
| 	mdio: mdio@90000 { | ||||
| 		pinctrl-0 = <&mdio_pins>; | ||||
| 		pinctrl-names = "default"; | ||||
| 		phy-reset-gpio = <&tlmm 64 0 &tlmm 66 0>; | ||||
| 		compatible = "qcom,ipq40xx-mdio", "qcom,qca-mdio"; | ||||
| 		phy0: ethernet-phy@0 { | ||||
| 			reg = <16>; | ||||
| 		}; | ||||
| @@ -311,8 +434,6 @@ | ||||
| 	}; | ||||
|  | ||||
| 	ess-switch@3a000000 { | ||||
| 			pinctrl-0 = <&uniphy_pins>; | ||||
| 			pinctrl-names = "default"; | ||||
| 		switch_cpu_bmp = <0x1>;  /* cpu port bitmap */ | ||||
| 		switch_lan_bmp = <0x3e>; /* lan port bitmap */ | ||||
| 		switch_wan_bmp = <0xc0>; /* wan port bitmap */ | ||||
| @@ -623,19 +744,77 @@ | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
| 		gpio_keys { | ||||
| 			compatible = "gpio-keys"; | ||||
| 			pinctrl-0 = <&button_pins>; | ||||
| 			pinctrl-names = "default"; | ||||
| 			status = "ok"; | ||||
|  | ||||
| 			button@1 { | ||||
| 				label = "reset"; | ||||
| 				linux,code = <KEY_RESTART>; | ||||
| 				gpios = <&tlmm 67 GPIO_ACTIVE_LOW>; | ||||
| 				linux,input-type = <1>; | ||||
| 				debounce-interval = <60>; | ||||
| 	dp1 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <1>; | ||||
| 		reg = <0x3a001000 0x200>; | ||||
| 		qcom,mactype = <0>; | ||||
| 		local-mac-address = [000000000000]; | ||||
| 		qcom,link-poll = <1>; | ||||
| 		qcom,phy-mdio-addr = <16>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
|  | ||||
| 	dp2 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <2>; | ||||
| 		reg = <0x3a001200 0x200>; | ||||
| 		qcom,mactype = <0>; | ||||
| 		local-mac-address = [000000000000]; | ||||
| 		qcom,link-poll = <1>; | ||||
| 		qcom,phy-mdio-addr = <17>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
|  | ||||
| 	dp3 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <3>; | ||||
| 		reg = <0x3a001400 0x200>; | ||||
| 		qcom,mactype = <0>; | ||||
| 		local-mac-address = [000000000000]; | ||||
| 		qcom,link-poll = <1>; | ||||
| 		qcom,phy-mdio-addr = <18>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
|  | ||||
| 	dp4 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <4>; | ||||
| 		reg = <0x3a001600 0x200>; | ||||
| 		qcom,mactype = <0>; | ||||
| 		local-mac-address = [000000000000]; | ||||
| 		qcom,link-poll = <1>; | ||||
| 		qcom,phy-mdio-addr = <19>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
|  | ||||
| 	dp5 { | ||||
| 		device_type = "network"; | ||||
| 		compatible = "qcom,nss-dp"; | ||||
| 		qcom,id = <5>; | ||||
| 		reg = <0x3a001800 0x200>; | ||||
| 		qcom,mactype = <1>; | ||||
| 		local-mac-address = [000000000000]; | ||||
| 		qcom,link-poll = <1>; | ||||
| 		qcom,phy-mdio-addr = <0>; | ||||
| 		phy-mode = "sgmii"; | ||||
| 	}; | ||||
|  | ||||
| 	dp6 { | ||||
| 		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"; | ||||
| 	}; | ||||
|  | ||||
| 	leds { | ||||
| @@ -661,29 +840,157 @@ | ||||
| 			default-state = "off"; | ||||
| 		}; | ||||
| 	}; | ||||
|  | ||||
| 		dp1 { | ||||
| 			device_type = "network"; | ||||
| 			compatible = "qcom,nss-dp"; | ||||
| 			qcom,id = <5>; | ||||
| 			reg = <0x3a001800 0x200>; | ||||
| 			qcom,mactype = <1>; | ||||
| 			local-mac-address = [000000000000]; | ||||
| 			qcom,link-poll = <1>; | ||||
| 			qcom,phy-mdio-addr = <0>; | ||||
| 			phy-mode = "sgmii"; | ||||
| 	nss-macsec0 { | ||||
| 		compatible = "qcom,nss-macsec"; | ||||
| 		phy_addr = <0>; | ||||
| 		phy_access_mode = <0>; | ||||
| 		mdiobus = <&mdio>; | ||||
| 	}; | ||||
| 	nss-macsec1 { | ||||
| 		compatible = "qcom,nss-macsec"; | ||||
| 		phy_addr = <0x1c>; | ||||
| 		phy_access_mode = <0>; | ||||
| 		mdiobus = <&mdio>; | ||||
| 	}; | ||||
| 	i2c_5: i2c@78ba000 { | ||||
| 		compatible = "qcom,i2c-qup-v2.2.1"; | ||||
| 		#address-cells = <1>; | ||||
| 		#size-cells = <0>; | ||||
| 		reg = <0x78ba000 0x600>; | ||||
| 		interrupts = <GIC_SPI 300 0x4>; | ||||
| 		clocks = <&gcc GCC_BLSP1_AHB_CLK>, | ||||
| 			<&gcc GCC_BLSP1_QUP6_I2C_APPS_CLK>; | ||||
| 		clock-names = "iface", "core"; | ||||
| 		clock-frequency  = <100000>; | ||||
| 		dmas = <&blsp_dma 23>, <&blsp_dma 22>; | ||||
| 		dma-names = "rx", "tx"; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| 		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"; | ||||
| &serial_blsp4 { | ||||
| 	pinctrl-0 = <&uart_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &spi_0 { /* BLSP1 QUP1 */ | ||||
| 	pinctrl-0 = <&spi_0_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	cs-select = <0>; | ||||
| 	status = "ok"; | ||||
|  | ||||
| 	m25p80@0 { | ||||
| 		#address-cells = <1>; | ||||
| 		#size-cells = <1>; | ||||
| 		reg = <0>; | ||||
| 		compatible = "n25q128a11"; | ||||
| 		linux,modalias = "m25p80", "n25q128a11"; | ||||
| 		spi-max-frequency = <50000000>; | ||||
| 		use-default-sizes; | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &serial_blsp2 { | ||||
| 	pinctrl-0 = <&hsuart_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &msm_imem { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &ssphy_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qusb_phy_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &usb3_0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &cryptobam { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &crypto { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &i2c_0 { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &i2c_1 { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &i2c_5 { | ||||
| 	pinctrl-0 = <&i2c_5_pins>; | ||||
|         pinctrl-names = "default"; | ||||
|         status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qpic_bam { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &nand { | ||||
| 	pinctrl-0 = <&qpic_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| &qpic_lcd { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &qpic_lcd_panel { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &pcie0 { | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
|  | ||||
| &pcie0_rp { | ||||
| 	status = "ok"; | ||||
|  | ||||
| 	mhi_0: qcom,mhi@0 { | ||||
| 		reg = <0 0 0 0 0 >; | ||||
| 		qrtr_instance_id = <0x20>; | ||||
| 		#address-cells = <0x2>; | ||||
| 		#size-cells = <0x2>; | ||||
| #if !defined(__IPQ_MEM_PROFILE_256_MB__) | ||||
| 		memory-region = <&mhi_region0>; | ||||
| #endif | ||||
|  | ||||
| #if !defined(__CNSS2__) | ||||
| 		base-addr = <0x51100000>; | ||||
| 		m3-dump-addr = <0x53400000>; | ||||
| 		etr-addr = <0x53500000>; | ||||
| 		qcom,caldb-addr = <0x53600000>; | ||||
| 		mhi,max-channels = <30>; | ||||
| 		mhi,timeout = <10000>; | ||||
| 		qcom,board_id= <0xa4>; | ||||
|  | ||||
| 		pcie0_mhi: pcie0_mhi { | ||||
| 			status = "ok"; | ||||
| 		}; | ||||
| #endif | ||||
| 	}; | ||||
| }; | ||||
|  | ||||
| &pcie1_rp { | ||||
| 	status = "disabled"; | ||||
|  | ||||
| 	mhi_1: qcom,mhi@1 { | ||||
| 		pcie1_mhi: pcie1_mhi { | ||||
| 			status = "disabled"; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| @@ -704,15 +1011,12 @@ | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| &wifi0 { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &wifi1 { | ||||
| 	qcom,board_id = <0x294>; | ||||
| 	status = "ok"; | ||||
| }; | ||||
|  | ||||
| /* No support for QCN9000 in 256M profile */ | ||||
| #if !defined(__IPQ_MEM_PROFILE_256_MB__) | ||||
| &wifi2 { | ||||
| #ifdef __IPQ_MEM_PROFILE_512_MB__ | ||||
| @@ -727,15 +1031,12 @@ | ||||
|        * |   ETR   |  0x4FE00000  |   1MB   | | ||||
|        * +---------+--------------+---------+ | ||||
|        * |  Caldb  |  0x4FF00000  |   8MB   | | ||||
|        * +---------+--------------+---------+ | ||||
|        * | Pageable|  0x50700000  |   8MB   | | ||||
|        * +==================================+ | ||||
|        */ | ||||
| 	base-addr = <0x4E900000>; | ||||
| 	m3-dump-addr = <0x4FD00000>; | ||||
| 	etr-addr = <0x4FE00000>; | ||||
| 	caldb-addr = <0x4FF00000>; | ||||
| 	pageable-addr = <0x50700000>; | ||||
| 	hremote-size = <0x1400000>; | ||||
| 	tgt-mem-mode = <0x1>; | ||||
| #else | ||||
| @@ -745,66 +1046,32 @@ | ||||
|        * +---------+--------------+---------+ | ||||
|        * | HREMOTE |  0x51100000  |   35MB  | | ||||
|        * +---------+--------------+---------+ | ||||
|        * | M3 DUMP |  0x53400000  |   1MB   | | ||||
|        * | M3 Dump |  0x53400000  |   1MB   | | ||||
|        * +---------+--------------+---------+ | ||||
|        * |   ETR   |  0x53500000  |   1MB   | | ||||
|        * +---------+--------------+---------+ | ||||
|        * |  Caldb  |  0x53600000  |   8MB   | | ||||
|        * +---------+--------------+---------+ | ||||
|        * | Pageable|  0x53E00000  |   8MB   | | ||||
|        * +==================================+ | ||||
|        */ | ||||
| 	base-addr = <0x51100000>; | ||||
| 	m3-dump-addr = <0x53400000>; | ||||
| 	etr-addr = <0x53500000>; | ||||
| 	caldb-addr = <0x53600000>; | ||||
| 	pageable-addr = <0x53E00000>; | ||||
| 	hremote-size = <0x2300000>; | ||||
| 	tgt-mem-mode = <0x0>; | ||||
| #endif | ||||
| 	caldb-size = <0x800000>; | ||||
| 	hremote_node = <&qcn9000_pcie0>; | ||||
| 	pageable-size = <0x800000>; | ||||
| 	board_id = <0xa4>; | ||||
| 	status = "ok"; | ||||
| }; | ||||
| #endif | ||||
|  | ||||
| &wifi3 { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| &pcie0_rp { | ||||
| 	status = "ok"; | ||||
|  | ||||
| 	mhi_0: qcom,mhi@0 { | ||||
| 		reg = <0 0 0 0 0 >; | ||||
| 		qrtr_instance_id = <0x20>; | ||||
| 		#address-cells = <0x2>; | ||||
| 		#size-cells = <0x2>; | ||||
| #if defined(__CNSS2__) | ||||
| #if !defined(__IPQ_MEM_PROFILE_256_MB__) | ||||
| 		memory-region = <&mhi_region0>; | ||||
| #endif | ||||
| #else | ||||
| #ifdef __IPQ_MEM_PROFILE_512_MB__ | ||||
| 		base-addr = <0x4E900000>; | ||||
| 		m3-dump-addr = <0x4FD00000>; | ||||
| 		etr-addr = <0x4FE00000>; | ||||
| 		qcom,caldb-addr = <0x4FF00000>; | ||||
| 		pageable-addr = <0x50700000>; | ||||
| #else | ||||
| 		base-addr = <0x51100000>; | ||||
| 		m3-dump-addr = <0x53400000>; | ||||
| 		etr-addr = <0x53500000>; | ||||
| 		qcom,caldb-addr = <0x53600000>; | ||||
| 		pageable-addr = <0x53E00000>; | ||||
| #endif | ||||
| 		qcom,board_id= <0xa4>; | ||||
|  | ||||
| 	pcie0_mhi: pcie0_mhi { | ||||
| 		status = "ok"; | ||||
| 	}; | ||||
| #endif | ||||
| 	}; | ||||
| }; | ||||
| &wifi3 { | ||||
| 	status = "disabled"; | ||||
| }; | ||||
|  | ||||
| #include "qcom-ipq807x-mhi.dtsi" | ||||
| #endif | ||||
|   | ||||
| @@ -18,6 +18,26 @@ define Device/edgecore_eap104 | ||||
| endef | ||||
| TARGET_DEVICES += edgecore_eap104 | ||||
|  | ||||
| define Device/liteon_wpx8324 | ||||
|   DEVICE_TITLE := Liteon WPX8324 | ||||
|   DEVICE_DTS := qcom-ipq5018-liteon-wpx8324 | ||||
|   SUPPORTED_DEVICES := liteon,wpx8324 | ||||
|   DEVICE_PACKAGES := ath11k-wifi-liteon-wpx8324 ath11k-firmware-ipq50xx-spruce ath11k-firmware-qcn6122 | ||||
|   DEVICE_DTS_CONFIG := config@mp03.5-c1 | ||||
| endef | ||||
| TARGET_DEVICES += liteon_wpx8324 | ||||
|  | ||||
| define Device/motorola_q14 | ||||
|   DEVICE_TITLE := Motorola Q14 | ||||
|   DEVICE_DTS := qcom-ipq5018-q14 | ||||
|   SUPPORTED_DEVICES := motorola,q14 | ||||
|   DEVICE_PACKAGES := ath11k-wifi-motorola-q14 ath11k-firmware-ipq50xx-spruce ath11k-firmware-qcn6122 | ||||
|   DEVICE_DTS_CONFIG := config@mp03.5-c1 | ||||
|   IMAGES := sysupgrade.tar mmc-factory.bin | ||||
|   IMAGE/mmc-factory.bin := append-ubi | qsdk-ipq-factory-mmc | ||||
| endef | ||||
| TARGET_DEVICES += motorola_q14 | ||||
|  | ||||
| define Device/qcom_mp03_1 | ||||
|   DEVICE_TITLE := Qualcomm Maple 03.1 | ||||
|   DEVICE_DTS := qcom-ipq5018-mp03.1 | ||||
| @@ -25,7 +45,7 @@ define Device/qcom_mp03_1 | ||||
|   DEVICE_PACKAGES := ath11k-wifi-qcom-ipq5018 | ||||
|   DEVICE_DTS_CONFIG := config@mp03.1 | ||||
| endef | ||||
| #TARGET_DEVICES += qcom_mp03_1 | ||||
| TARGET_DEVICES += qcom_mp03_1 | ||||
|  | ||||
| define Device/qcom_mp03_3 | ||||
|   DEVICE_TITLE := Qualcomm Maple 03.3 | ||||
| @@ -34,4 +54,4 @@ define Device/qcom_mp03_3 | ||||
|   DEVICE_PACKAGES := ath11k-wifi-qcom-ipq5018 | ||||
|   DEVICE_DTS_CONFIG := config@mp03.3 | ||||
| endef | ||||
| #TARGET_DEVICES += qcom_mp03_3 | ||||
| TARGET_DEVICES += qcom_mp03_3 | ||||
|   | ||||
| @@ -1,5 +1,7 @@ | ||||
| KERNEL_LOADADDR := 0x41008000 | ||||
|  | ||||
| DEVICE_VARS += CE_TYPE | ||||
|  | ||||
| define Device/cig_wf188n | ||||
|   DEVICE_TITLE := Cigtech WF-188n | ||||
|   DEVICE_DTS := qcom-ipq6018-cig-wf188n | ||||
| @@ -23,7 +25,7 @@ define Device/hfcl_ion4xi | ||||
|   DEVICE_DTS := qcom-ipq6018-hfcl-ion4xi | ||||
|   DEVICE_DTS_CONFIG := config@cp01-c1 | ||||
|   SUPPORTED_DEVICES := hfcl,ion4xi | ||||
|   DEVICE_PACKAGES := ath11k-wifi-qcom-ipq6018 uboot-envtools | ||||
|   DEVICE_PACKAGES := ath11k-wifi-hfcl-ion4xi uboot-envtools | ||||
| endef | ||||
| TARGET_DEVICES += hfcl_ion4xi | ||||
|  | ||||
| @@ -36,23 +38,58 @@ define Device/edgecore_eap101 | ||||
| endef | ||||
| TARGET_DEVICES += edgecore_eap101 | ||||
|  | ||||
| define Device/indio_um-310ax-v1 | ||||
|   DEVICE_TITLE := Indio UM-310AX V1 | ||||
|   DEVICE_DTS := qcom-ipq6018-indio-um-310ax-v1 | ||||
|   DEVICE_DTS_CONFIG := config@cp03-c1 | ||||
|   SUPPORTED_DEVICES := indio,um-310ax-v1 | ||||
|   DEVICE_PACKAGES := ath11k-wifi-indio-um-310ax-v1 uboot-env | ||||
| endef | ||||
| TARGET_DEVICES += indio_um-310ax-v1 | ||||
|  | ||||
| define Device/indio_um-510axp-v1 | ||||
|   DEVICE_TITLE := Indio UM-510AXP V1 | ||||
|   DEVICE_DTS := qcom-ipq6018-indio-um-510axp-v1 | ||||
|   DEVICE_DTS_CONFIG := config@cp03-c1 | ||||
|   SUPPORTED_DEVICES := indio,um-510axp-v1 | ||||
|   DEVICE_PACKAGES := ath11k-wifi-indio-um-510axp-v1 uboot-env | ||||
| endef | ||||
| TARGET_DEVICES += indio_um-510axp-v1 | ||||
|  | ||||
| define Device/indio_um-510axm-v1 | ||||
|   DEVICE_TITLE := Indio UM-510AXM V1 | ||||
|   DEVICE_DTS := qcom-ipq6018-indio-um-510axm-v1 | ||||
|   DEVICE_DTS_CONFIG := config@cp03-c1 | ||||
|   SUPPORTED_DEVICES := indio,um-510axm-v1 | ||||
|   DEVICE_PACKAGES := ath11k-wifi-indio-um-510axm-v1 uboot-env | ||||
| endef | ||||
| TARGET_DEVICES += indio_um-510axm-v1 | ||||
|  | ||||
| define Device/wallys_dr6018 | ||||
|   DEVICE_TITLE := Wallys DR6018 | ||||
|   DEVICE_DTS := qcom-ipq6018-wallys-dr6018 | ||||
|   DEVICE_DTS_CONFIG := config@cp01-c4 | ||||
|   SUPPORTED_DEVICES := wallys,dr6018 | ||||
|   DEVICE_PACKAGES := ath11k-wifi-wallys-dr6018 uboot-envtools | ||||
|   DEVICE_PACKAGES := ath11k-wifi-wallys-dr6018 uboot-envtools -kmod-usb-dwc3-of-simple kmod-usb-dwc3-qcom kmod-usb3 kmod-usb2 | ||||
| endef | ||||
| #TARGET_DEVICES += wallys_dr6018 | ||||
| TARGET_DEVICES += wallys_dr6018 | ||||
|  | ||||
| define Device/wallys_dr6018_v4 | ||||
|   DEVICE_TITLE := Wallys DR6018 V4 | ||||
|   DEVICE_DTS := qcom-ipq6018-wallys-dr6018-v4 | ||||
|   DEVICE_DTS_CONFIG := config@cp01-c4 | ||||
|   SUPPORTED_DEVICES := wallys,dr6018-v4 | ||||
|   DEVICE_PACKAGES := ath11k-wifi-wallys-dr6018-v4 uboot-envtools | ||||
|   DEVICE_PACKAGES := ath11k-wifi-wallys-dr6018-v4 uboot-envtools ath11k-firmware-qcn9000 | ||||
| endef | ||||
| #TARGET_DEVICES += wallys_dr6018_v4 | ||||
| TARGET_DEVICES += wallys_dr6018_v4 | ||||
|  | ||||
| define Device/qcom_cp01_c1 | ||||
|   DEVICE_TITLE := Qualcomm Cypress C1 | ||||
|   DEVICE_DTS := qcom-ipq6018-cp01-c1 | ||||
|   SUPPORTED_DEVICES := qcom,ipq6018-cp01 | ||||
|   DEVICE_PACKAGES := ath11k-wifi-qcom-ipq6018 | ||||
| endef | ||||
| TARGET_DEVICES += qcom_cp01_c1 | ||||
|  | ||||
| define Device/glinet_ax1800 | ||||
|   DEVICE_TITLE := GL-iNet AX1800 | ||||
| @@ -68,7 +105,7 @@ define Device/glinet_axt1800 | ||||
|   DEVICE_DTS := qcom-ipq6018-gl-axt1800 | ||||
|   SUPPORTED_DEVICES := glinet,axt1800 | ||||
|   DEVICE_DTS_CONFIG := config@cp03-c1 | ||||
|   DEVICE_PACKAGES := ath11k-wifi-gl-ax1800 -kmod-usb-dwc3-of-simple kmod-usb-dwc3-qcom kmod-usb3 | ||||
|   DEVICE_PACKAGES := ath11k-wifi-gl-axt1800 -kmod-usb-dwc3-of-simple kmod-usb-dwc3-qcom kmod-usb3 | ||||
| endef | ||||
| TARGET_DEVICES += glinet_axt1800 | ||||
|  | ||||
| @@ -80,3 +117,53 @@ define Device/yuncore_ax840 | ||||
|   DEVICE_PACKAGES := ath11k-wifi-yuncore-ax840 uboot-env | ||||
| endef | ||||
| TARGET_DEVICES += yuncore_ax840 | ||||
|  | ||||
| define Device/plasmacloud_common_64k | ||||
|   DEVICE_PACKAGES := uboot-envtools | ||||
|   CE_TYPE := | ||||
|   BLOCKSIZE := 64k | ||||
|   IMAGES := sysupgrade.tar factory.bin | ||||
|   IMAGE/factory.bin := append-rootfs | pad-rootfs | openmesh-image ce_type=$$$$(CE_TYPE) | ||||
|   IMAGE/sysupgrade.tar := append-rootfs | pad-rootfs | sysupgrade-tar rootfs=$$$$@ | append-metadata | ||||
|   KERNEL += | pad-to $$(BLOCKSIZE) | ||||
| endef | ||||
|  | ||||
| define Device/plasmacloud_pax1800-v1 | ||||
|   $(Device/plasmacloud_common_64k) | ||||
|   DEVICE_TITLE := Plasma Cloud PAX1800 v1 | ||||
|   DEVICE_DTS := qcom-ipq6018-pax1800-v1 | ||||
|   SUPPORTED_DEVICES := plasmacloud,pax1800-v1 | ||||
|   DEVICE_DTS_CONFIG := config@cp03-c1 | ||||
|   CE_TYPE := PAX1800 | ||||
|   DEVICE_PACKAGES += ath11k-wifi-plasmacloud-pax1800 | ||||
| endef | ||||
| TARGET_DEVICES += plasmacloud_pax1800-v1 | ||||
|  | ||||
| define Device/plasmacloud_pax1800-v2 | ||||
|   $(Device/plasmacloud_common_64k) | ||||
|   DEVICE_TITLE := Plasma Cloud PAX1800 v2 | ||||
|   DEVICE_DTS := qcom-ipq6018-pax1800-v2 | ||||
|   SUPPORTED_DEVICES := plasmacloud,pax1800-v2 | ||||
|   DEVICE_DTS_CONFIG := config@plasmacloud.pax1800v2 | ||||
|   CE_TYPE := PAX1800v2 | ||||
|   DEVICE_PACKAGES += ath11k-wifi-plasmacloud-pax1800 | ||||
| endef | ||||
| TARGET_DEVICES += plasmacloud_pax1800-v2 | ||||
|  | ||||
| define Device/meshpp_s618_cp03 | ||||
|   DEVICE_TITLE := S618 cp03 | ||||
|   DEVICE_DTS := qcom-ipq6018-meshpp-s618-cp03 | ||||
|   SUPPORTED_DEVICES := meshpp,s618-cp03 | ||||
|   DEVICE_DTS_CONFIG := config@cp03-c1 | ||||
|   DEVICE_PACKAGES := ath11k-wifi-meshpp-s618 -kmod-usb-dwc3-of-simple kmod-usb-dwc3-qcom kmod-usb3 | ||||
| endef | ||||
| TARGET_DEVICES += meshpp_s618_cp03 | ||||
|  | ||||
| define Device/meshpp_s618_cp01 | ||||
|   DEVICE_TITLE := S618 cp01 | ||||
|   DEVICE_DTS := qcom-ipq6018-meshpp-s618-cp01 | ||||
|   SUPPORTED_DEVICES := meshpp,s618-cp01 | ||||
|   DEVICE_DTS_CONFIG := config@cp01-c1 | ||||
|   DEVICE_PACKAGES := ath11k-wifi-meshpp-s618 -kmod-usb-dwc3-of-simple kmod-usb-dwc3-qcom kmod-usb3 | ||||
| endef | ||||
| TARGET_DEVICES += meshpp_s618_cp01 | ||||
|   | ||||
| @@ -2,16 +2,16 @@ KERNEL_LOADADDR := 0x41208000 | ||||
|  | ||||
| define Device/qcom_hk01 | ||||
|   DEVICE_TITLE := Qualcomm Hawkeye HK01 | ||||
|   DEVICE_DTS := ipq8074-hk01 | ||||
|   DEVICE_DTS := qcom-ipq807x-hk01 | ||||
|   DEVICE_DTS_CONFIG=config@hk01 | ||||
|   SUPPORTED_DEVICES := qcom,ipq807x-hk01 | ||||
|   DEVICE_PACKAGES := ath11k-wifi-qcom-ipq8074 | ||||
| endef | ||||
| #TARGET_DEVICES += qcom_hk01 | ||||
| TARGET_DEVICES += qcom_hk01 | ||||
|  | ||||
| define Device/qcom_hk14 | ||||
|   DEVICE_TITLE := Qualcomm Hawkeye HK14 | ||||
|   DEVICE_DTS := ipq8074-hk14 | ||||
|   DEVICE_DTS := qcom-ipq807x-hk14 | ||||
|   DEVICE_DTS_CONFIG=config@hk14 | ||||
|   SUPPORTED_DEVICES := qcom,ipq807x-hk14 | ||||
|   DEVICE_PACKAGES := ath11k-wifi-qcom-ipq8074 kmod-ath11k-pci ath11k-firmware-qcn9000 | ||||
| @@ -41,6 +41,8 @@ define Device/cig_wf196 | ||||
|   DEVICE_DTS := qcom-ipq807x-wf196 | ||||
|   DEVICE_DTS_CONFIG=config@hk14 | ||||
|   SUPPORTED_DEVICES := cig,wf196 | ||||
|   BLOCKSIZE := 256k | ||||
|   PAGESIZE := 4096 | ||||
|   DEVICE_PACKAGES := ath11k-wifi-cig-wf196 aq-fw-download uboot-envtools kmod-usb3 kmod-usb2 \ | ||||
|   	ath11k-firmware-qcn9000 ath11k-wifi-cig-wf196_6g | ||||
| endef | ||||
|   | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										85
									
								
								feeds/ipq807x/ipq807x/ipq50xx/config-default
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								feeds/ipq807x/ipq807x/ipq50xx/config-default
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,85 @@ | ||||
| # CONFIG_AHCI_IPQ is not set | ||||
| CONFIG_ARCH_IPQ5018=y | ||||
| # CONFIG_DIAGFWD_BRIDGE_CODE is not set | ||||
| CONFIG_IPQ_ADSS_5018=y | ||||
| CONFIG_IPQ_APSS_5018=y | ||||
| CONFIG_IPQ_GCC_5018=y | ||||
| # CONFIG_NET_SWITCHDEV is not set | ||||
| CONFIG_NUM_ALT_PARTITION=16 | ||||
| CONFIG_PINCTRL_IPQ5018=y | ||||
| # CONFIG_IPC_LOGGING is not set | ||||
| CONFIG_IPQ_SUBSYSTEM_DUMP=y | ||||
| CONFIG_SPS=y | ||||
| CONFIG_SPS_SUPPORT_NDP_BAM=y | ||||
| CONFIG_CORESIGHT=y | ||||
| CONFIG_CORESIGHT_CSR=y | ||||
| CONFIG_CORESIGHT_CTI=y | ||||
| CONFIG_CORESIGHT_EVENT=y | ||||
| CONFIG_CORESIGHT_HWEVENT=y | ||||
| CONFIG_CORESIGHT_LINKS_AND_SINKS=y | ||||
| CONFIG_CORESIGHT_LINK_AND_SINK_TMC=y | ||||
| CONFIG_CORESIGHT_QCOM_REPLICATOR=y | ||||
| # CONFIG_INPUT_PM8941_PWRKEY is not set | ||||
| CONFIG_MDIO_QCA=y | ||||
| # CONFIG_CRYPTO_ALL_CASES is not set | ||||
| CONFIG_CRYPTO_DEV_QCOM_ICE=y | ||||
| # CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set | ||||
| CONFIG_CRYPTO_SHA512=y | ||||
| # CONFIG_CORESIGHT_QPDI is not set | ||||
| # CONFIG_CORESIGHT_SINK_ETBV10 is not set | ||||
| CONFIG_CORESIGHT_SINK_TPIU=y | ||||
| # CONFIG_CORESIGHT_SOURCE_DUMMY is not set | ||||
| CONFIG_CORESIGHT_SOURCE_ETM3X=y | ||||
| CONFIG_CORESIGHT_SOURCE_ETM4X=y | ||||
| # CONFIG_CORESIGHT_REMOTE_ETM is not set | ||||
| CONFIG_CORESIGHT_STM=y | ||||
| CONFIG_CORESIGHT_TPDA=y | ||||
| CONFIG_CORESIGHT_TPDM=y | ||||
| # CONFIG_CORESIGHT_TPDM_DEFAULT_ENABLE is not set | ||||
| CONFIG_IIO=y | ||||
| # CONFIG_IIO_BUFFER is not set | ||||
| # CONFIG_IIO_TRIGGER is not set | ||||
| CONFIG_PCIE_DW_PLAT=y | ||||
| CONFIG_PHY_IPQ_UNIPHY_PCIE=y | ||||
| CONFIG_VMSPLIT_2G=y | ||||
| # CONFIG_VMSPLIT_3G is not set | ||||
| CONFIG_PPS=y | ||||
| CONFIG_PTP_1588_CLOCK=y | ||||
| # CONFIG_DP83640_PHY is not set | ||||
| CONFIG_PWM_IPQ5018=y | ||||
| CONFIG_QCOM_APM=y | ||||
| CONFIG_QCOM_DCC=y | ||||
| # CONFIG_QCOM_SPMI_TEMP_ALARM is not set | ||||
| CONFIG_MMC_SDHCI_MSM_ICE=y | ||||
| CONFIG_USB_BAM=y | ||||
| CONFIG_MAILBOX=y | ||||
| # CONFIG_USB_QCOM_DIAG_BRIDGE is not set | ||||
| # CONFIG_USB_CONFIGFS_F_DIAG is not set | ||||
| # CONFIG_NF_IPV6_DUMMY_HEADER is not set | ||||
| CONFIG_RMNET_DATA=y | ||||
| CONFIG_RMNET_DATA_DEBUG_PKT=y | ||||
| CONFIG_MTD_NAND_SERIAL=y | ||||
| CONFIG_PAGE_SCOPE_MULTI_PAGE_READ=y | ||||
| # CONFIG_RMNET_DATA_FC is not set | ||||
| CONFIG_CRYPTO_NO_ZERO_LEN_HASH=y | ||||
| CONFIG_CRYPTO_DISABLE_AES192_TEST=y | ||||
| # CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set | ||||
| # CONFIG_CPU_FREQ_GOV_PERFORMANCE is not set | ||||
| # CONFIG_CPU_FREQ_GOV_POWERSAVE is not set | ||||
| # CONFIG_CPU_FREQ_GOV_ONDEMAND is not set | ||||
| # CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set | ||||
| CONFIG_QTI_EUD=y | ||||
| CONFIG_USB_QCA_M31_PHY=y | ||||
| CONFIG_QGIC2_MSI=y | ||||
| CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y | ||||
| CONFIG_PWM_IPQ4019=y | ||||
| CONFIG_RMNET=y | ||||
| CONFIG_QCOM_QMI_RMNET=y | ||||
| CONFIG_QCOM_QMI_DFC=y | ||||
| CONFIG_QCOM_QMI_POWER_COLLAPSE=y | ||||
| CONFIG_RMNET_CTL=y | ||||
| CONFIG_RMNET_CTL_DEBUG=y | ||||
| CONFIG_SND_SOC_IPQ_LPASS=y | ||||
| CONFIG_SND_SOC_IPQ_LPASS_PCM_RAW=y | ||||
| # CONFIG_SND_SOC_IPQ_PCM_RAW is not set | ||||
| CONFIG_QCOM_RESTART_REASON=y | ||||
							
								
								
									
										73
									
								
								feeds/ipq807x/ipq807x/ipq50xx/config-lowmem
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								feeds/ipq807x/ipq807x/ipq50xx/config-lowmem
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,73 @@ | ||||
| # CONFIG_AHCI_IPQ is not set | ||||
| CONFIG_ARCH_IPQ5018=y | ||||
| # CONFIG_DIAGFWD_BRIDGE_CODE is not set | ||||
| CONFIG_IPQ_ADSS_5018=y | ||||
| CONFIG_IPQ_APSS_5018=y | ||||
| CONFIG_IPQ_GCC_5018=y | ||||
| # CONFIG_NET_SWITCHDEV is not set | ||||
| CONFIG_NUM_ALT_PARTITION=16 | ||||
| CONFIG_PINCTRL_IPQ5018=y | ||||
| # CONFIG_IPC_LOGGING is not set | ||||
| CONFIG_IPQ_SUBSYSTEM_DUMP=y | ||||
| # CONFIG_SPS is not set | ||||
| # CONFIG_SPS_SUPPORT_NDP_BAM is not set | ||||
| # CONFIG_CORESIGHT is not set | ||||
| # CONFIG_INPUT_PM8941_PWRKEY is not set | ||||
| CONFIG_MDIO_QCA=y | ||||
| # CONFIG_CRYPTO_ALL_CASES is not set | ||||
| # CONFIG_CRYPTO_DEV_QCOM_ICE is not set | ||||
| # CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set | ||||
| # CONFIG_CRYPTO_SHA512 is not set | ||||
| # CONFIG_IIO is not set | ||||
| # CONFIG_IIO_BUFFER is not set | ||||
| # CONFIG_IIO_TRIGGER is not set | ||||
| CONFIG_PCIE_DW_PLAT=y | ||||
| CONFIG_PHY_IPQ_UNIPHY_PCIE=y | ||||
| CONFIG_VMSPLIT_2G=y | ||||
| # CONFIG_VMSPLIT_3G is not set | ||||
| # CONFIG_PPS is not set | ||||
| # CONFIG_PTP_1588_CLOCK is not set | ||||
| # CONFIG_DP83640_PHY is not set | ||||
| CONFIG_PWM_IPQ5018=y | ||||
| CONFIG_QCOM_APM=y | ||||
| # CONFIG_QCOM_DCC is not set | ||||
| # CONFIG_QCOM_SPMI_TEMP_ALARM is not set | ||||
| CONFIG_MMC_SDHCI_MSM_ICE=y | ||||
| CONFIG_USB_BAM=y | ||||
| CONFIG_MAILBOX=y | ||||
| # CONFIG_USB_QCOM_DIAG_BRIDGE is not set | ||||
| # CONFIG_USB_CONFIGFS_F_DIAG is not set | ||||
| # CONFIG_NF_IPV6_DUMMY_HEADER is not set | ||||
| # CONFIG_RMNET_DATA is not set | ||||
| # CONFIG_RMNET_DATA_DEBUG_PKT is not set | ||||
| CONFIG_MTD_NAND_SERIAL=y | ||||
| CONFIG_PAGE_SCOPE_MULTI_PAGE_READ=y | ||||
| # CONFIG_RMNET_DATA_FC is not set | ||||
| # CONFIG_CRYPTO_NO_ZERO_LEN_HASH is not set | ||||
| # CONFIG_CRYPTO_DISABLE_AES192_TEST is not set | ||||
| # CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set | ||||
| # CONFIG_CPU_FREQ_GOV_PERFORMANCE is not set | ||||
| # CONFIG_CPU_FREQ_GOV_POWERSAVE is not set | ||||
| # CONFIG_CPU_FREQ_GOV_ONDEMAND is not set | ||||
| # CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set | ||||
| CONFIG_QTI_EUD=y | ||||
| CONFIG_USB_QCA_M31_PHY=y | ||||
| CONFIG_SQUASHFS_XZ=y | ||||
| # CONFIG_SQUASHFS_ZLIB is not set | ||||
| # CONFIG_JFFS2_LZMA is not set | ||||
| CONFIG_JFFS2_ZLIB=y | ||||
| # CONFIG_LZO_COMPRESS is not set | ||||
| # CONFIG_LZO_DECOMPRESS is not set | ||||
| CONFIG_XZ_DEC=y | ||||
| # CONFIG_XZ_DEC_X86 is not set | ||||
| # CONFIG_XZ_DEC_POWERPC is not set | ||||
| # CONFIG_XZ_DEC_IA64 is not set | ||||
| CONFIG_XZ_DEC_ARM=y | ||||
| # CONFIG_XZ_DEC_ARMTHUMB is not set | ||||
| # CONFIG_XZ_DEC_SPARC is not set | ||||
| CONFIG_XZ_DEC_BCJ=y | ||||
| # CONFIG_LZO_COMPRESS is not set | ||||
| # CONFIG_LZO_DECOMPRESS is not set | ||||
| # CONFIG_CRYPTO is not set | ||||
| CONFIG_QGIC2_MSI=y | ||||
| CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,8 +1,6 @@ | ||||
| SUBTARGET:=ipq60xx | ||||
| BOARDNAME:=IPQ60xx based boards | ||||
|  | ||||
| KERNEL_PATCHVER:=5.4 | ||||
|  | ||||
| DEFAULT_PACKAGES += ath11k-firmware-ipq60xx qca-nss-fw-ipq60xx | ||||
|  | ||||
| define Target/Description | ||||
|   | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -2,15 +2,12 @@ define KernelPackage/usb-phy-ipq807x | ||||
|   TITLE:=DWC3 USB QCOM PHY driver for IPQ807x | ||||
|   DEPENDS:=@TARGET_ipq807x | ||||
|   KCONFIG:= \ | ||||
| 	CONFIG_PHY_QCOM_QUSB2 \ | ||||
| 	CONFIG_PHY_QCOM_QMP=y \ | ||||
| 	CONFIG_USB_QCOM_QUSB_PHY \ | ||||
| 	CONFIG_USB_QCOM_QMP_PHY | ||||
|   FILES:= \ | ||||
| 	$(LINUX_DIR)/drivers/phy/qualcomm/phy-qcom-qusb2.ko@ge5.4 \ | ||||
| 	$(LINUX_DIR)/drivers/usb/phy/phy-msm-qusb.ko@le4.4 \ | ||||
| 	$(LINUX_DIR)/drivers/usb/phy/phy-msm-ssusb-qmp.ko@le4.4 | ||||
|   AUTOLOAD:=$(call AutoLoad,45,phy-qcom-qusb2 phy-msm-qusb phy-msm-ssusb-qmp,1) | ||||
| 	$(LINUX_DIR)/drivers/usb/phy/phy-msm-qusb.ko \ | ||||
| 	$(LINUX_DIR)/drivers/usb/phy/phy-msm-ssusb-qmp.ko | ||||
|   AUTOLOAD:=$(call AutoLoad,45,phy-msm-qusb phy-msm-ssusb-qmp,1) | ||||
|   $(call AddDepends/usb) | ||||
| endef | ||||
|  | ||||
| @@ -22,45 +19,46 @@ endef | ||||
| $(eval $(call KernelPackage,usb-phy-ipq807x)) | ||||
|  | ||||
|  | ||||
| define KernelPackage/usb-dwc3-internal | ||||
|   TITLE:=DWC3 USB controller driver | ||||
|   DEPENDS:=+USB_GADGET_SUPPORT:kmod-usb-gadget +kmod-usb-core | ||||
| define KernelPackage/qrtr_mproc | ||||
|   TITLE:= Ath11k Specific kernel configs for IPQ807x and IPQ60xx | ||||
|   DEPENDS+= @TARGET_ipq807x | ||||
|   KCONFIG:= \ | ||||
|         CONFIG_USB_DWC3 \ | ||||
|         CONFIG_USB_DWC3_HOST=n \ | ||||
|         CONFIG_USB_DWC3_GADGET=n \ | ||||
|         CONFIG_USB_DWC3_DUAL_ROLE=y \ | ||||
|         CONFIG_EXTCON=y \ | ||||
|         CONFIG_USB_DWC3_DEBUG=n \ | ||||
|         CONFIG_USB_DWC3_VERBOSE=n | ||||
|   FILES:= $(LINUX_DIR)/drivers/usb/dwc3/dwc3.ko | ||||
|   AUTOLOAD:=$(call AutoLoad,54,dwc3,1) | ||||
|   $(call AddPlatformDepends/usb) | ||||
|           CONFIG_QRTR=y \ | ||||
|           CONFIG_QRTR_MHI=y \ | ||||
|           CONFIG_MHI_BUS=y \ | ||||
|           CONFIG_MHI_QTI=y \ | ||||
|           CONFIG_QCOM_APCS_IPC=y \ | ||||
|           CONFIG_QCOM_GLINK_SSR=y \ | ||||
|           CONFIG_QCOM_Q6V5_WCSS=y \ | ||||
|           CONFIG_MSM_RPM_RPMSG=y \ | ||||
|           CONFIG_RPMSG_QCOM_GLINK_RPM=y \ | ||||
|           CONFIG_REGULATOR_RPM_GLINK=y \ | ||||
|           CONFIG_QCOM_SYSMON=y \ | ||||
|           CONFIG_RPMSG=y \ | ||||
|           CONFIG_RPMSG_CHAR=y \ | ||||
|           CONFIG_RPMSG_QCOM_GLINK_SMEM=y \ | ||||
|           CONFIG_RPMSG_QCOM_SMD=y \ | ||||
|           CONFIG_QRTR_SMD=y \ | ||||
|           CONFIG_QCOM_QMI_HELPERS=y \ | ||||
|           CONFIG_SAMPLES=y \ | ||||
|           CONFIG_SAMPLE_QMI_CLIENT=m \ | ||||
|           CONFIG_SAMPLE_TRACE_EVENTS=n \ | ||||
|           CONFIG_SAMPLE_KOBJECT=n \ | ||||
|           CONFIG_SAMPLE_KPROBES=n \ | ||||
|           CONFIG_SAMPLE_KRETPROBES=n \ | ||||
|           CONFIG_SAMPLE_HW_BREAKPOINT=n \ | ||||
|           CONFIG_SAMPLE_KFIFO=n \ | ||||
|           CONFIG_SAMPLE_CONFIGFS=n \ | ||||
|           CONFIG_SAMPLE_RPMSG_CLIENT=n \ | ||||
|           CONFIG_MAILBOX=y \ | ||||
|           CONFIG_DIAG_OVER_QRTR=y | ||||
| endef | ||||
|  | ||||
| define KernelPackage/usb-dwc3-internal/description | ||||
|  This driver provides support for the Dual Role SuperSpeed | ||||
|  USB Controller based on the Synopsys DesignWare USB3 IP Core | ||||
| define KernelPackage/qrtr_mproc/description | ||||
| Kernel configs for ath11k support specific to ipq807x and IPQ60xx | ||||
| endef | ||||
|  | ||||
| $(eval $(call KernelPackage,usb-dwc3-internal)) | ||||
|  | ||||
| define KernelPackage/usb-dwc3-qcom-internal | ||||
|   TITLE:=DWC3 QTI USB driver | ||||
|   DEPENDS:=@!LINUX_4_14 @(TARGET_ipq807x||TARGET_ipq60xx||TARGET_ipq95xx||TARGET_ipq50xx) +kmod-usb-dwc3-internal | ||||
|   KCONFIG:= CONFIG_USB_DWC3_QCOM | ||||
|   FILES:= $(LINUX_DIR)/drivers/usb/dwc3/dwc3-qcom.ko | ||||
|   AUTOLOAD:=$(call AutoLoad,53,dwc3-qcom,1) | ||||
|   $(call AddPlatformDepends/usb) | ||||
| endef | ||||
|  | ||||
| define KernelPackage/usb-dwc3-qcom-internal/description | ||||
|  Some QTI SoCs use DesignWare Core IP for USB2/3 functionality. | ||||
|  This driver also handles Qscratch wrapper which is needed for | ||||
|  peripheral mode support. | ||||
| endef | ||||
|  | ||||
| $(eval $(call KernelPackage,usb-dwc3-qcom-internal)) | ||||
| $(eval $(call KernelPackage,qrtr_mproc)) | ||||
|  | ||||
| define KernelPackage/bt_tty | ||||
|   TITLE:= BT Inter-processor Communication | ||||
| @@ -86,7 +84,7 @@ define KernelPackage/usb-phy-ipq5018 | ||||
|         CONFIG_PHY_IPQ_UNIPHY_USB | ||||
|   FILES:= \ | ||||
|         $(LINUX_DIR)/drivers/usb/phy/phy-qca-m31.ko \ | ||||
|         $(LINUX_DIR)/drivers/phy/qualcomm/phy-qca-uniphy.ko | ||||
|         $(LINUX_DIR)/drivers/phy/phy-qca-uniphy.ko | ||||
|   AUTOLOAD:=$(call AutoLoad,45,phy-qca-m31 phy-qca-uniphy,1) | ||||
|   $(call AddDepends/usb) | ||||
| endef | ||||
| @@ -98,30 +96,13 @@ endef | ||||
|  | ||||
| $(eval $(call KernelPackage,usb-phy-ipq5018)) | ||||
|  | ||||
| define KernelPackage/usb-f-diag | ||||
|   TITLE:=USB DIAG | ||||
|   KCONFIG:=CONFIG_USB_F_DIAG \ | ||||
|         CONFIG_USB_CONFIGFS_F_DIAG=y \ | ||||
|         CONFIG_DIAG_OVER_USB=y | ||||
|   DEPENDS:=+kmod-usb-lib-composite +kmod-usb-configfs | ||||
|   FILES:=$(LINUX_DIR)/drivers/usb/gadget/function/usb_f_diag.ko | ||||
|   AUTOLOAD:=$(call AutoLoad,52,usb_f_diag) | ||||
|   $(call AddPlatformDepends/usb) | ||||
| endef | ||||
|  | ||||
| define KernelPackage/usb-f-diag/description | ||||
|  USB DIAG | ||||
| endef | ||||
|  | ||||
| $(eval $(call KernelPackage,usb-f-diag)) | ||||
|  | ||||
| define KernelPackage/diag-char | ||||
|   TITLE:=CHAR DIAG | ||||
|   KCONFIG:= CONFIG_DIAG_MHI=y@ge5.4 \ | ||||
|           CONFIG_DIAG_OVER_PCIE=n@ge5.4 \ | ||||
|           CONFIG_DIAGFWD_BRIDGE_CODE=y \ | ||||
|           CONFIG_DIAG_CHAR | ||||
|   DEPENDS:=+kmod-lib-crc-ccitt +kmod-usb-f-diag | ||||
|           CONFIG_DIAG_CHAR=m | ||||
|   DEPENDS:=+kmod-lib-crc-ccitt | ||||
|   FILES:=$(LINUX_DIR)/drivers/char/diag/diagchar.ko | ||||
| endef | ||||
|  | ||||
| @@ -131,34 +112,21 @@ endef | ||||
|  | ||||
| $(eval $(call KernelPackage,diag-char)) | ||||
|  | ||||
| define KernelPackage/usb-configfs | ||||
|  TITLE:= USB functions | ||||
|   KCONFIG:=CONFIG_USB_CONFIGFS \ | ||||
|         CONFIG_USB_CONFIGFS_SERIAL=n \ | ||||
|         CONFIG_USB_CONFIGFS_ACM=n \ | ||||
|         CONFIG_USB_CONFIGFS_OBEX=n \ | ||||
|         CONFIG_USB_CONFIGFS_NCM=n \ | ||||
|         CONFIG_USB_CONFIGFS_ECM=n \ | ||||
|         CONFIG_USB_CONFIGFS_ECM_SUBSET=n \ | ||||
|         CONFIG_USB_CONFIGFS_RNDIS=n \ | ||||
|         CONFIG_USB_CONFIGFS_EEM=n \ | ||||
|         CONFIG_USB_CONFIGFS_MASS_STORAGE=n \ | ||||
|         CONFIG_USB_CONFIGFS_F_LB_SS=n \ | ||||
|         CONFIG_USB_CONFIGFS_F_FS=n \ | ||||
|         CONFIG_USB_CONFIGFS_F_UAC1=n \ | ||||
|         CONFIG_USB_CONFIGFS_F_UAC2=n \ | ||||
|         CONFIG_USB_CONFIGFS_F_MIDI=n \ | ||||
|         CONFIG_USB_CONFIGFS_F_HID=n \ | ||||
|         CONFIG_USB_CONFIGFS_F_PRINTER=n \ | ||||
|         CONFIG_USB_CONFIGFS_F_QDSS=n | ||||
|   $(call AddPlatformDepends/usb) | ||||
| define KernelPackage/usb-dwc3-qcom | ||||
|   TITLE:=DWC3 Qualcomm USB driver | ||||
|   DEPENDS:=@(!LINUX_4_14) @TARGET_ipq807x +kmod-usb-dwc3 | ||||
|   KCONFIG:= CONFIG_USB_DWC3_QCOM | ||||
|   FILES:= $(LINUX_DIR)/drivers/usb/dwc3/dwc3-qcom.ko \ | ||||
|         $(LINUX_DIR)/drivers/usb/dwc3/dbm.ko | ||||
|   AUTOLOAD:=$(call AutoLoad,53,dwc3-qcom dbm,1) | ||||
|   $(call AddDepends/usb) | ||||
| endef | ||||
|  | ||||
| define KernelPackage/usb-configfs/description | ||||
|  USB functions | ||||
| define KernelPackage/usb-dwc3-qcom/description | ||||
|  Some Qualcomm SoCs use DesignWare Core IP for USB2/3 functionality. | ||||
|  This driver also handles Qscratch wrapper which is needed for | ||||
|  peripheral mode support. | ||||
| endef | ||||
|  | ||||
| $(eval $(call KernelPackage,usb-configfs)) | ||||
|  | ||||
|  | ||||
|  | ||||
| $(eval $(call KernelPackage,usb-dwc3-qcom)) | ||||
|   | ||||
							
								
								
									
										25
									
								
								feeds/ipq807x/ipq807x/patches/001-backport_kbuild_fix.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								feeds/ipq807x/ipq807x/patches/001-backport_kbuild_fix.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | ||||
| --- a/scripts/Makefile.lib | ||||
| +++ b/scripts/Makefile.lib | ||||
| @@ -96,10 +96,10 @@ obj-dirs	:= $(addprefix $(obj)/,$(obj-di | ||||
|  # Note: Files that end up in two or more modules are compiled without the | ||||
|  #       KBUILD_MODNAME definition. The reason is that any made-up name would | ||||
|  #       differ in different configs. | ||||
| -name-fix = $(subst $(comma),_,$(subst -,_,$1)) | ||||
| -basename_flags = -D"KBUILD_BASENAME=KBUILD_STR($(call name-fix,$(basetarget)))" | ||||
| +name-fix = $(squote)$(quote)$(subst $(comma),_,$(subst -,_,$1))$(quote)$(squote) | ||||
| +basename_flags = -DKBUILD_BASENAME=$(call name-fix,$(basetarget)) | ||||
|  modname_flags  = $(if $(filter 1,$(words $(modname))),\ | ||||
| -                 -D"KBUILD_MODNAME=KBUILD_STR($(call name-fix,$(modname)))") | ||||
| +                 -DKBUILD_MODNAME=$(call name-fix,$(modname))) | ||||
|   | ||||
|  orig_c_flags   = $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) $(KBUILD_SUBDIR_CCFLAGS) \ | ||||
|                   $(ccflags-y) $(CFLAGS_$(basetarget).o) | ||||
| @@ -155,7 +155,7 @@ endif | ||||
|   | ||||
|  c_flags        = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(LINUXINCLUDE)     \ | ||||
|  		 $(__c_flags) $(modkern_cflags)                           \ | ||||
| -		 -D"KBUILD_STR(s)=\#s" $(basename_flags) $(modname_flags) | ||||
| +		 $(basename_flags) $(modname_flags) | ||||
|   | ||||
|  a_flags        = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(LINUXINCLUDE)     \ | ||||
|  		 $(__a_flags) $(modkern_aflags) | ||||
| @@ -1,26 +0,0 @@ | ||||
| Index: linux-5.4.164-qsdk-d5fcb18e5420670c8734c6a659873e73adab6dac/arch/arm64/boot/dts/qcom/ipq8074.dtsi | ||||
| =================================================================== | ||||
| --- linux-5.4.164-qsdk-d5fcb18e5420670c8734c6a659873e73adab6dac.orig/arch/arm64/boot/dts/qcom/ipq8074.dtsi | ||||
| +++ linux-5.4.164-qsdk-d5fcb18e5420670c8734c6a659873e73adab6dac/arch/arm64/boot/dts/qcom/ipq8074.dtsi | ||||
| @@ -1587,7 +1587,7 @@ | ||||
|  		}; | ||||
|   | ||||
|  		wifi1: wifi1@c0000000 { | ||||
| -			compatible = "qcom,cnss-qca8074v2", "qcom,ipq8074-wifi"; | ||||
| +			compatible = "qcom,ipq8074-wifi"; | ||||
|  			reg = <0xc000000 0x2000000>; | ||||
|  			qcom,hw-mode-id = <1>; | ||||
|  		#ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
| Index: linux-5.4.164-qsdk-d5fcb18e5420670c8734c6a659873e73adab6dac/arch/arm64/boot/dts/qcom/ipq6018.dtsi | ||||
| =================================================================== | ||||
| --- linux-5.4.164-qsdk-d5fcb18e5420670c8734c6a659873e73adab6dac.orig/arch/arm64/boot/dts/qcom/ipq6018.dtsi | ||||
| +++ linux-5.4.164-qsdk-d5fcb18e5420670c8734c6a659873e73adab6dac/arch/arm64/boot/dts/qcom/ipq6018.dtsi | ||||
| @@ -1561,7 +1561,7 @@ | ||||
|  		}; | ||||
|   | ||||
|  		wifi0: wifi@c000000 { | ||||
| -			compatible = "qcom,cnss-qca6018", "qcom,ipq6018-wifi"; | ||||
| +			compatible = "qcom,ipq6018-wifi"; | ||||
|  			reg = <0xc000000 0x1000000>; | ||||
|  			qcom,hw-mode-id = <1>; | ||||
|  #ifdef __IPQ_MEM_PROFILE_256_MB__ | ||||
							
								
								
									
										976
									
								
								feeds/ipq807x/ipq807x/patches/100-qrtr-ns.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										976
									
								
								feeds/ipq807x/ipq807x/patches/100-qrtr-ns.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,976 @@ | ||||
| Index: linux-4.4.60/net/qrtr/ns.c | ||||
| =================================================================== | ||||
| --- /dev/null | ||||
| +++ linux-4.4.60/net/qrtr/ns.c | ||||
| @@ -0,0 +1,760 @@ | ||||
| +// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause | ||||
| +/* | ||||
| + * Copyright (c) 2015, Sony Mobile Communications Inc. | ||||
| + * Copyright (c) 2013, The Linux Foundation. All rights reserved. | ||||
| + * Copyright (c) 2020, Linaro Ltd. | ||||
| + */ | ||||
| + | ||||
| +#include <linux/module.h> | ||||
| +#include <linux/qrtr.h> | ||||
| +#include <linux/workqueue.h> | ||||
| +#include <net/sock.h> | ||||
| + | ||||
| +#include "qrtr.h" | ||||
| + | ||||
| +#define CREATE_TRACE_POINTS | ||||
| +#include <trace/events/qrtr.h> | ||||
| + | ||||
| +static RADIX_TREE(nodes, GFP_KERNEL); | ||||
| + | ||||
| +static struct { | ||||
| +	struct socket *sock; | ||||
| +	struct sockaddr_qrtr bcast_sq; | ||||
| +	struct list_head lookups; | ||||
| +	struct workqueue_struct *workqueue; | ||||
| +	struct work_struct work; | ||||
| +	int local_node; | ||||
| +} qrtr_ns; | ||||
| + | ||||
| +static const char * const qrtr_ctrl_pkt_strings[] = { | ||||
| +	[QRTR_TYPE_HELLO]	= "hello", | ||||
| +	[QRTR_TYPE_BYE]		= "bye", | ||||
| +	[QRTR_TYPE_NEW_SERVER]	= "new-server", | ||||
| +	[QRTR_TYPE_DEL_SERVER]	= "del-server", | ||||
| +	[QRTR_TYPE_DEL_CLIENT]	= "del-client", | ||||
| +	[QRTR_TYPE_RESUME_TX]	= "resume-tx", | ||||
| +	[QRTR_TYPE_EXIT]	= "exit", | ||||
| +	[QRTR_TYPE_PING]	= "ping", | ||||
| +	[QRTR_TYPE_NEW_LOOKUP]	= "new-lookup", | ||||
| +	[QRTR_TYPE_DEL_LOOKUP]	= "del-lookup", | ||||
| +}; | ||||
| + | ||||
| +struct qrtr_server_filter { | ||||
| +	unsigned int service; | ||||
| +	unsigned int instance; | ||||
| +	unsigned int ifilter; | ||||
| +}; | ||||
| + | ||||
| +struct qrtr_lookup { | ||||
| +	unsigned int service; | ||||
| +	unsigned int instance; | ||||
| + | ||||
| +	struct sockaddr_qrtr sq; | ||||
| +	struct list_head li; | ||||
| +}; | ||||
| + | ||||
| +struct qrtr_server { | ||||
| +	unsigned int service; | ||||
| +	unsigned int instance; | ||||
| + | ||||
| +	unsigned int node; | ||||
| +	unsigned int port; | ||||
| + | ||||
| +	struct list_head qli; | ||||
| +}; | ||||
| + | ||||
| +struct qrtr_node { | ||||
| +	unsigned int id; | ||||
| +	struct radix_tree_root servers; | ||||
| +}; | ||||
| + | ||||
| +static struct qrtr_node *node_get(unsigned int node_id) | ||||
| +{ | ||||
| +	struct qrtr_node *node; | ||||
| + | ||||
| +	node = radix_tree_lookup(&nodes, node_id); | ||||
| +	if (node) | ||||
| +		return node; | ||||
| + | ||||
| +	/* If node didn't exist, allocate and insert it to the tree */ | ||||
| +	node = kzalloc(sizeof(*node), GFP_KERNEL); | ||||
| +	if (!node) | ||||
| +		return NULL; | ||||
| + | ||||
| +	node->id = node_id; | ||||
| + | ||||
| +	radix_tree_insert(&nodes, node_id, node); | ||||
| + | ||||
| +	return node; | ||||
| +} | ||||
| + | ||||
| +static int server_match(const struct qrtr_server *srv, | ||||
| +			const struct qrtr_server_filter *f) | ||||
| +{ | ||||
| +	unsigned int ifilter = f->ifilter; | ||||
| + | ||||
| +	if (f->service != 0 && srv->service != f->service) | ||||
| +		return 0; | ||||
| +	if (!ifilter && f->instance) | ||||
| +		ifilter = ~0; | ||||
| + | ||||
| +	return (srv->instance & ifilter) == f->instance; | ||||
| +} | ||||
| + | ||||
| +static int service_announce_new(struct sockaddr_qrtr *dest, | ||||
| +				struct qrtr_server *srv) | ||||
| +{ | ||||
| +	struct qrtr_ctrl_pkt pkt; | ||||
| +	struct msghdr msg = { }; | ||||
| +	struct kvec iv; | ||||
| + | ||||
| +	trace_qrtr_ns_service_announce_new(srv->service, srv->instance, | ||||
| +					   srv->node, srv->port); | ||||
| + | ||||
| +	iv.iov_base = &pkt; | ||||
| +	iv.iov_len = sizeof(pkt); | ||||
| + | ||||
| +	memset(&pkt, 0, sizeof(pkt)); | ||||
| +	pkt.cmd = cpu_to_le32(QRTR_TYPE_NEW_SERVER); | ||||
| +	pkt.server.service = cpu_to_le32(srv->service); | ||||
| +	pkt.server.instance = cpu_to_le32(srv->instance); | ||||
| +	pkt.server.node = cpu_to_le32(srv->node); | ||||
| +	pkt.server.port = cpu_to_le32(srv->port); | ||||
| + | ||||
| +	msg.msg_name = (struct sockaddr *)dest; | ||||
| +	msg.msg_namelen = sizeof(*dest); | ||||
| + | ||||
| +	return kernel_sendmsg(qrtr_ns.sock, &msg, &iv, 1, sizeof(pkt)); | ||||
| +} | ||||
| + | ||||
| +static int service_announce_del(struct sockaddr_qrtr *dest, | ||||
| +				struct qrtr_server *srv) | ||||
| +{ | ||||
| +	struct qrtr_ctrl_pkt pkt; | ||||
| +	struct msghdr msg = { }; | ||||
| +	struct kvec iv; | ||||
| +	int ret; | ||||
| + | ||||
| +	trace_qrtr_ns_service_announce_del(srv->service, srv->instance, | ||||
| +					   srv->node, srv->port); | ||||
| + | ||||
| +	iv.iov_base = &pkt; | ||||
| +	iv.iov_len = sizeof(pkt); | ||||
| + | ||||
| +	memset(&pkt, 0, sizeof(pkt)); | ||||
| +	pkt.cmd = cpu_to_le32(QRTR_TYPE_DEL_SERVER); | ||||
| +	pkt.server.service = cpu_to_le32(srv->service); | ||||
| +	pkt.server.instance = cpu_to_le32(srv->instance); | ||||
| +	pkt.server.node = cpu_to_le32(srv->node); | ||||
| +	pkt.server.port = cpu_to_le32(srv->port); | ||||
| + | ||||
| +	msg.msg_name = (struct sockaddr *)dest; | ||||
| +	msg.msg_namelen = sizeof(*dest); | ||||
| + | ||||
| +	ret = kernel_sendmsg(qrtr_ns.sock, &msg, &iv, 1, sizeof(pkt)); | ||||
| +	if (ret < 0) | ||||
| +		pr_err("failed to announce del service\n"); | ||||
| + | ||||
| +	return ret; | ||||
| +} | ||||
| + | ||||
| +static void lookup_notify(struct sockaddr_qrtr *to, struct qrtr_server *srv, | ||||
| +			  bool new) | ||||
| +{ | ||||
| +	struct qrtr_ctrl_pkt pkt; | ||||
| +	struct msghdr msg = { }; | ||||
| +	struct kvec iv; | ||||
| +	int ret; | ||||
| + | ||||
| +	iv.iov_base = &pkt; | ||||
| +	iv.iov_len = sizeof(pkt); | ||||
| + | ||||
| +	memset(&pkt, 0, sizeof(pkt)); | ||||
| +	pkt.cmd = new ? cpu_to_le32(QRTR_TYPE_NEW_SERVER) : | ||||
| +			cpu_to_le32(QRTR_TYPE_DEL_SERVER); | ||||
| +	if (srv) { | ||||
| +		pkt.server.service = cpu_to_le32(srv->service); | ||||
| +		pkt.server.instance = cpu_to_le32(srv->instance); | ||||
| +		pkt.server.node = cpu_to_le32(srv->node); | ||||
| +		pkt.server.port = cpu_to_le32(srv->port); | ||||
| +	} | ||||
| + | ||||
| +	msg.msg_name = (struct sockaddr *)to; | ||||
| +	msg.msg_namelen = sizeof(*to); | ||||
| + | ||||
| +	ret = kernel_sendmsg(qrtr_ns.sock, &msg, &iv, 1, sizeof(pkt)); | ||||
| +	if (ret < 0) | ||||
| +		pr_err("failed to send lookup notification\n"); | ||||
| +} | ||||
| + | ||||
| +static int announce_servers(struct sockaddr_qrtr *sq) | ||||
| +{ | ||||
| +	struct radix_tree_iter iter; | ||||
| +	struct qrtr_server *srv; | ||||
| +	struct qrtr_node *node; | ||||
| +	void __rcu **slot; | ||||
| +	int ret; | ||||
| + | ||||
| +	node = node_get(qrtr_ns.local_node); | ||||
| +	if (!node) | ||||
| +		return 0; | ||||
| + | ||||
| +	/* Announce the list of servers registered in this node */ | ||||
| +	radix_tree_for_each_slot(slot, &node->servers, &iter, 0) { | ||||
| +		srv = radix_tree_deref_slot(slot); | ||||
| + | ||||
| +		ret = service_announce_new(sq, srv); | ||||
| +		if (ret < 0) { | ||||
| +			pr_err("failed to announce new service\n"); | ||||
| +			return ret; | ||||
| +		} | ||||
| +	} | ||||
| + | ||||
| +	return 0; | ||||
| +} | ||||
| + | ||||
| +static struct qrtr_server *server_add(unsigned int service, | ||||
| +				      unsigned int instance, | ||||
| +				      unsigned int node_id, | ||||
| +				      unsigned int port) | ||||
| +{ | ||||
| +	struct qrtr_server *srv; | ||||
| +	struct qrtr_server *old; | ||||
| +	struct qrtr_node *node; | ||||
| + | ||||
| +	if (!service || !port) | ||||
| +		return NULL; | ||||
| + | ||||
| +	srv = kzalloc(sizeof(*srv), GFP_KERNEL); | ||||
| +	if (!srv) | ||||
| +		return NULL; | ||||
| + | ||||
| +	srv->service = service; | ||||
| +	srv->instance = instance; | ||||
| +	srv->node = node_id; | ||||
| +	srv->port = port; | ||||
| + | ||||
| +	node = node_get(node_id); | ||||
| +	if (!node) | ||||
| +		goto err; | ||||
| + | ||||
| +	/* Delete the old server on the same port */ | ||||
| +	old = radix_tree_lookup(&node->servers, port); | ||||
| +	if (old) { | ||||
| +		radix_tree_delete(&node->servers, port); | ||||
| +		kfree(old); | ||||
| +	} | ||||
| + | ||||
| +	radix_tree_insert(&node->servers, port, srv); | ||||
| + | ||||
| +	trace_qrtr_ns_server_add(srv->service, srv->instance, | ||||
| +				 srv->node, srv->port); | ||||
| + | ||||
| +	return srv; | ||||
| + | ||||
| +err: | ||||
| +	kfree(srv); | ||||
| +	return NULL; | ||||
| +} | ||||
| + | ||||
| +static int server_del(struct qrtr_node *node, unsigned int port) | ||||
| +{ | ||||
| +	struct qrtr_lookup *lookup; | ||||
| +	struct qrtr_server *srv; | ||||
| +	struct list_head *li; | ||||
| + | ||||
| +	srv = radix_tree_lookup(&node->servers, port); | ||||
| +	if (!srv) | ||||
| +		return -ENOENT; | ||||
| + | ||||
| +	radix_tree_delete(&node->servers, port); | ||||
| + | ||||
| +	/* Broadcast the removal of local servers */ | ||||
| +	if (srv->node == qrtr_ns.local_node) | ||||
| +		service_announce_del(&qrtr_ns.bcast_sq, srv); | ||||
| + | ||||
| +	/* Announce the service's disappearance to observers */ | ||||
| +	list_for_each(li, &qrtr_ns.lookups) { | ||||
| +		lookup = container_of(li, struct qrtr_lookup, li); | ||||
| +		if (lookup->service && lookup->service != srv->service) | ||||
| +			continue; | ||||
| +		if (lookup->instance && lookup->instance != srv->instance) | ||||
| +			continue; | ||||
| + | ||||
| +		lookup_notify(&lookup->sq, srv, false); | ||||
| +	} | ||||
| + | ||||
| +	kfree(srv); | ||||
| + | ||||
| +	return 0; | ||||
| +} | ||||
| + | ||||
| +static int say_hello(struct sockaddr_qrtr *dest) | ||||
| +{ | ||||
| +	struct qrtr_ctrl_pkt pkt; | ||||
| +	struct msghdr msg = { }; | ||||
| +	struct kvec iv; | ||||
| +	int ret; | ||||
| + | ||||
| +	iv.iov_base = &pkt; | ||||
| +	iv.iov_len = sizeof(pkt); | ||||
| + | ||||
| +	memset(&pkt, 0, sizeof(pkt)); | ||||
| +	pkt.cmd = cpu_to_le32(QRTR_TYPE_HELLO); | ||||
| + | ||||
| +	msg.msg_name = (struct sockaddr *)dest; | ||||
| +	msg.msg_namelen = sizeof(*dest); | ||||
| + | ||||
| +	ret = kernel_sendmsg(qrtr_ns.sock, &msg, &iv, 1, sizeof(pkt)); | ||||
| +	if (ret < 0) | ||||
| +		pr_err("failed to send hello msg\n"); | ||||
| + | ||||
| +	return ret; | ||||
| +} | ||||
| + | ||||
| +/* Announce the list of servers registered on the local node */ | ||||
| +static int ctrl_cmd_hello(struct sockaddr_qrtr *sq) | ||||
| +{ | ||||
| +	int ret; | ||||
| + | ||||
| +	ret = say_hello(sq); | ||||
| +	if (ret < 0) | ||||
| +		return ret; | ||||
| + | ||||
| +	return announce_servers(sq); | ||||
| +} | ||||
| + | ||||
| +static int ctrl_cmd_bye(struct sockaddr_qrtr *from) | ||||
| +{ | ||||
| +	struct qrtr_node *local_node; | ||||
| +	struct radix_tree_iter iter; | ||||
| +	struct qrtr_ctrl_pkt pkt; | ||||
| +	struct qrtr_server *srv; | ||||
| +	struct sockaddr_qrtr sq; | ||||
| +	struct msghdr msg = { }; | ||||
| +	struct qrtr_node *node; | ||||
| +	void __rcu **slot; | ||||
| +	struct kvec iv; | ||||
| +	int ret; | ||||
| + | ||||
| +	iv.iov_base = &pkt; | ||||
| +	iv.iov_len = sizeof(pkt); | ||||
| + | ||||
| +	node = node_get(from->sq_node); | ||||
| +	if (!node) | ||||
| +		return 0; | ||||
| + | ||||
| +	/* Advertise removal of this client to all servers of remote node */ | ||||
| +	radix_tree_for_each_slot(slot, &node->servers, &iter, 0) { | ||||
| +		srv = radix_tree_deref_slot(slot); | ||||
| +		server_del(node, srv->port); | ||||
| +	} | ||||
| + | ||||
| +	/* Advertise the removal of this client to all local servers */ | ||||
| +	local_node = node_get(qrtr_ns.local_node); | ||||
| +	if (!local_node) | ||||
| +		return 0; | ||||
| + | ||||
| +	memset(&pkt, 0, sizeof(pkt)); | ||||
| +	pkt.cmd = cpu_to_le32(QRTR_TYPE_BYE); | ||||
| +	pkt.client.node = cpu_to_le32(from->sq_node); | ||||
| + | ||||
| +	radix_tree_for_each_slot(slot, &local_node->servers, &iter, 0) { | ||||
| +		srv = radix_tree_deref_slot(slot); | ||||
| + | ||||
| +		sq.sq_family = AF_QIPCRTR; | ||||
| +		sq.sq_node = srv->node; | ||||
| +		sq.sq_port = srv->port; | ||||
| + | ||||
| +		msg.msg_name = (struct sockaddr *)&sq; | ||||
| +		msg.msg_namelen = sizeof(sq); | ||||
| + | ||||
| +		ret = kernel_sendmsg(qrtr_ns.sock, &msg, &iv, 1, sizeof(pkt)); | ||||
| +		if (ret < 0) { | ||||
| +			pr_err("failed to send bye cmd\n"); | ||||
| +			return ret; | ||||
| +		} | ||||
| +	} | ||||
| + | ||||
| +	return 0; | ||||
| +} | ||||
| + | ||||
| +static int ctrl_cmd_del_client(struct sockaddr_qrtr *from, | ||||
| +			       unsigned int node_id, unsigned int port) | ||||
| +{ | ||||
| +	struct qrtr_node *local_node; | ||||
| +	struct radix_tree_iter iter; | ||||
| +	struct qrtr_lookup *lookup; | ||||
| +	struct qrtr_ctrl_pkt pkt; | ||||
| +	struct msghdr msg = { }; | ||||
| +	struct qrtr_server *srv; | ||||
| +	struct sockaddr_qrtr sq; | ||||
| +	struct qrtr_node *node; | ||||
| +	struct list_head *tmp; | ||||
| +	struct list_head *li; | ||||
| +	void __rcu **slot; | ||||
| +	struct kvec iv; | ||||
| +	int ret; | ||||
| + | ||||
| +	iv.iov_base = &pkt; | ||||
| +	iv.iov_len = sizeof(pkt); | ||||
| + | ||||
| +	/* Don't accept spoofed messages */ | ||||
| +	if (from->sq_node != node_id) | ||||
| +		return -EINVAL; | ||||
| + | ||||
| +	/* Local DEL_CLIENT messages comes from the port being closed */ | ||||
| +	if (from->sq_node == qrtr_ns.local_node && from->sq_port != port) | ||||
| +		return -EINVAL; | ||||
| + | ||||
| +	/* Remove any lookups by this client */ | ||||
| +	list_for_each_safe(li, tmp, &qrtr_ns.lookups) { | ||||
| +		lookup = container_of(li, struct qrtr_lookup, li); | ||||
| +		if (lookup->sq.sq_node != node_id) | ||||
| +			continue; | ||||
| +		if (lookup->sq.sq_port != port) | ||||
| +			continue; | ||||
| + | ||||
| +		list_del(&lookup->li); | ||||
| +		kfree(lookup); | ||||
| +	} | ||||
| + | ||||
| +	/* Remove the server belonging to this port */ | ||||
| +	node = node_get(node_id); | ||||
| +	if (node) | ||||
| +		server_del(node, port); | ||||
| + | ||||
| +	/* Advertise the removal of this client to all local servers */ | ||||
| +	local_node = node_get(qrtr_ns.local_node); | ||||
| +	if (!local_node) | ||||
| +		return 0; | ||||
| + | ||||
| +	memset(&pkt, 0, sizeof(pkt)); | ||||
| +	pkt.cmd = cpu_to_le32(QRTR_TYPE_DEL_CLIENT); | ||||
| +	pkt.client.node = cpu_to_le32(node_id); | ||||
| +	pkt.client.port = cpu_to_le32(port); | ||||
| + | ||||
| +	radix_tree_for_each_slot(slot, &local_node->servers, &iter, 0) { | ||||
| +		srv = radix_tree_deref_slot(slot); | ||||
| + | ||||
| +		sq.sq_family = AF_QIPCRTR; | ||||
| +		sq.sq_node = srv->node; | ||||
| +		sq.sq_port = srv->port; | ||||
| + | ||||
| +		msg.msg_name = (struct sockaddr *)&sq; | ||||
| +		msg.msg_namelen = sizeof(sq); | ||||
| + | ||||
| +		ret = kernel_sendmsg(qrtr_ns.sock, &msg, &iv, 1, sizeof(pkt)); | ||||
| +		if (ret < 0) { | ||||
| +			pr_err("failed to send del client cmd\n"); | ||||
| +			return ret; | ||||
| +		} | ||||
| +	} | ||||
| + | ||||
| +	return 0; | ||||
| +} | ||||
| + | ||||
| +static int ctrl_cmd_new_server(struct sockaddr_qrtr *from, | ||||
| +			       unsigned int service, unsigned int instance, | ||||
| +			       unsigned int node_id, unsigned int port) | ||||
| +{ | ||||
| +	struct qrtr_lookup *lookup; | ||||
| +	struct qrtr_server *srv; | ||||
| +	struct list_head *li; | ||||
| +	int ret = 0; | ||||
| + | ||||
| +	/* Ignore specified node and port for local servers */ | ||||
| +	if (from->sq_node == qrtr_ns.local_node) { | ||||
| +		node_id = from->sq_node; | ||||
| +		port = from->sq_port; | ||||
| +	} | ||||
| + | ||||
| +	/* Don't accept spoofed messages */ | ||||
| +	if (from->sq_node != node_id) | ||||
| +		return -EINVAL; | ||||
| + | ||||
| +	srv = server_add(service, instance, node_id, port); | ||||
| +	if (!srv) | ||||
| +		return -EINVAL; | ||||
| + | ||||
| +	if (srv->node == qrtr_ns.local_node) { | ||||
| +		ret = service_announce_new(&qrtr_ns.bcast_sq, srv); | ||||
| +		if (ret < 0) { | ||||
| +			pr_err("failed to announce new service\n"); | ||||
| +			return ret; | ||||
| +		} | ||||
| +	} | ||||
| + | ||||
| +	/* Notify any potential lookups about the new server */ | ||||
| +	list_for_each(li, &qrtr_ns.lookups) { | ||||
| +		lookup = container_of(li, struct qrtr_lookup, li); | ||||
| +		if (lookup->service && lookup->service != service) | ||||
| +			continue; | ||||
| +		if (lookup->instance && lookup->instance != instance) | ||||
| +			continue; | ||||
| + | ||||
| +		lookup_notify(&lookup->sq, srv, true); | ||||
| +	} | ||||
| + | ||||
| +	return ret; | ||||
| +} | ||||
| + | ||||
| +static int ctrl_cmd_del_server(struct sockaddr_qrtr *from, | ||||
| +			       unsigned int service, unsigned int instance, | ||||
| +			       unsigned int node_id, unsigned int port) | ||||
| +{ | ||||
| +	struct qrtr_node *node; | ||||
| + | ||||
| +	/* Ignore specified node and port for local servers*/ | ||||
| +	if (from->sq_node == qrtr_ns.local_node) { | ||||
| +		node_id = from->sq_node; | ||||
| +		port = from->sq_port; | ||||
| +	} | ||||
| + | ||||
| +	/* Don't accept spoofed messages */ | ||||
| +	if (from->sq_node != node_id) | ||||
| +		return -EINVAL; | ||||
| + | ||||
| +	/* Local servers may only unregister themselves */ | ||||
| +	if (from->sq_node == qrtr_ns.local_node && from->sq_port != port) | ||||
| +		return -EINVAL; | ||||
| + | ||||
| +	node = node_get(node_id); | ||||
| +	if (!node) | ||||
| +		return -ENOENT; | ||||
| + | ||||
| +	return server_del(node, port); | ||||
| +} | ||||
| + | ||||
| +static int ctrl_cmd_new_lookup(struct sockaddr_qrtr *from, | ||||
| +			       unsigned int service, unsigned int instance) | ||||
| +{ | ||||
| +	struct radix_tree_iter node_iter; | ||||
| +	struct qrtr_server_filter filter; | ||||
| +	struct radix_tree_iter srv_iter; | ||||
| +	struct qrtr_lookup *lookup; | ||||
| +	struct qrtr_node *node; | ||||
| +	void __rcu **node_slot; | ||||
| +	void __rcu **srv_slot; | ||||
| + | ||||
| +	/* Accept only local observers */ | ||||
| +	if (from->sq_node != qrtr_ns.local_node) | ||||
| +		return -EINVAL; | ||||
| + | ||||
| +	lookup = kzalloc(sizeof(*lookup), GFP_KERNEL); | ||||
| +	if (!lookup) | ||||
| +		return -ENOMEM; | ||||
| + | ||||
| +	lookup->sq = *from; | ||||
| +	lookup->service = service; | ||||
| +	lookup->instance = instance; | ||||
| +	list_add_tail(&lookup->li, &qrtr_ns.lookups); | ||||
| + | ||||
| +	memset(&filter, 0, sizeof(filter)); | ||||
| +	filter.service = service; | ||||
| +	filter.instance = instance; | ||||
| + | ||||
| +	radix_tree_for_each_slot(node_slot, &nodes, &node_iter, 0) { | ||||
| +		node = radix_tree_deref_slot(node_slot); | ||||
| + | ||||
| +		radix_tree_for_each_slot(srv_slot, &node->servers, | ||||
| +					 &srv_iter, 0) { | ||||
| +			struct qrtr_server *srv; | ||||
| + | ||||
| +			srv = radix_tree_deref_slot(srv_slot); | ||||
| +			if (!server_match(srv, &filter)) | ||||
| +				continue; | ||||
| + | ||||
| +			lookup_notify(from, srv, true); | ||||
| +		} | ||||
| +	} | ||||
| + | ||||
| +	/* Empty notification, to indicate end of listing */ | ||||
| +	lookup_notify(from, NULL, true); | ||||
| + | ||||
| +	return 0; | ||||
| +} | ||||
| + | ||||
| +static void ctrl_cmd_del_lookup(struct sockaddr_qrtr *from, | ||||
| +				unsigned int service, unsigned int instance) | ||||
| +{ | ||||
| +	struct qrtr_lookup *lookup; | ||||
| +	struct list_head *tmp; | ||||
| +	struct list_head *li; | ||||
| + | ||||
| +	list_for_each_safe(li, tmp, &qrtr_ns.lookups) { | ||||
| +		lookup = container_of(li, struct qrtr_lookup, li); | ||||
| +		if (lookup->sq.sq_node != from->sq_node) | ||||
| +			continue; | ||||
| +		if (lookup->sq.sq_port != from->sq_port) | ||||
| +			continue; | ||||
| +		if (lookup->service != service) | ||||
| +			continue; | ||||
| +		if (lookup->instance && lookup->instance != instance) | ||||
| +			continue; | ||||
| + | ||||
| +		list_del(&lookup->li); | ||||
| +		kfree(lookup); | ||||
| +	} | ||||
| +} | ||||
| + | ||||
| +static void qrtr_ns_worker(struct work_struct *work) | ||||
| +{ | ||||
| +	const struct qrtr_ctrl_pkt *pkt; | ||||
| +	size_t recv_buf_size = 4096; | ||||
| +	struct sockaddr_qrtr sq; | ||||
| +	struct msghdr msg = { }; | ||||
| +	unsigned int cmd; | ||||
| +	ssize_t msglen; | ||||
| +	void *recv_buf; | ||||
| +	struct kvec iv; | ||||
| +	int ret; | ||||
| + | ||||
| +	msg.msg_name = (struct sockaddr *)&sq; | ||||
| +	msg.msg_namelen = sizeof(sq); | ||||
| + | ||||
| +	recv_buf = kzalloc(recv_buf_size, GFP_KERNEL); | ||||
| +	if (!recv_buf) | ||||
| +		return; | ||||
| + | ||||
| +	for (;;) { | ||||
| +		iv.iov_base = recv_buf; | ||||
| +		iv.iov_len = recv_buf_size; | ||||
| + | ||||
| +		msglen = kernel_recvmsg(qrtr_ns.sock, &msg, &iv, 1, | ||||
| +					iv.iov_len, MSG_DONTWAIT); | ||||
| + | ||||
| +		if (msglen == -EAGAIN) | ||||
| +			break; | ||||
| + | ||||
| +		if (msglen < 0) { | ||||
| +			pr_err("error receiving packet: %zd\n", msglen); | ||||
| +			break; | ||||
| +		} | ||||
| + | ||||
| +		pkt = recv_buf; | ||||
| +		cmd = le32_to_cpu(pkt->cmd); | ||||
| +		if (cmd < ARRAY_SIZE(qrtr_ctrl_pkt_strings) && | ||||
| +		    qrtr_ctrl_pkt_strings[cmd]) | ||||
| +			trace_qrtr_ns_message(qrtr_ctrl_pkt_strings[cmd], | ||||
| +					      sq.sq_node, sq.sq_port); | ||||
| + | ||||
| +		ret = 0; | ||||
| +		switch (cmd) { | ||||
| +		case QRTR_TYPE_HELLO: | ||||
| +			ret = ctrl_cmd_hello(&sq); | ||||
| +			break; | ||||
| +		case QRTR_TYPE_BYE: | ||||
| +			ret = ctrl_cmd_bye(&sq); | ||||
| +			break; | ||||
| +		case QRTR_TYPE_DEL_CLIENT: | ||||
| +			ret = ctrl_cmd_del_client(&sq, | ||||
| +					le32_to_cpu(pkt->client.node), | ||||
| +					le32_to_cpu(pkt->client.port)); | ||||
| +			break; | ||||
| +		case QRTR_TYPE_NEW_SERVER: | ||||
| +			ret = ctrl_cmd_new_server(&sq, | ||||
| +					le32_to_cpu(pkt->server.service), | ||||
| +					le32_to_cpu(pkt->server.instance), | ||||
| +					le32_to_cpu(pkt->server.node), | ||||
| +					le32_to_cpu(pkt->server.port)); | ||||
| +			break; | ||||
| +		case QRTR_TYPE_DEL_SERVER: | ||||
| +			ret = ctrl_cmd_del_server(&sq, | ||||
| +					 le32_to_cpu(pkt->server.service), | ||||
| +					 le32_to_cpu(pkt->server.instance), | ||||
| +					 le32_to_cpu(pkt->server.node), | ||||
| +					 le32_to_cpu(pkt->server.port)); | ||||
| +			break; | ||||
| +		case QRTR_TYPE_EXIT: | ||||
| +		case QRTR_TYPE_PING: | ||||
| +		case QRTR_TYPE_RESUME_TX: | ||||
| +			break; | ||||
| +		case QRTR_TYPE_NEW_LOOKUP: | ||||
| +			ret = ctrl_cmd_new_lookup(&sq, | ||||
| +					 le32_to_cpu(pkt->server.service), | ||||
| +					 le32_to_cpu(pkt->server.instance)); | ||||
| +			break; | ||||
| +		case QRTR_TYPE_DEL_LOOKUP: | ||||
| +			ctrl_cmd_del_lookup(&sq, | ||||
| +				    le32_to_cpu(pkt->server.service), | ||||
| +				    le32_to_cpu(pkt->server.instance)); | ||||
| +			break; | ||||
| +		} | ||||
| + | ||||
| +		if (ret < 0) | ||||
| +			pr_err("failed while handling packet from %d:%d", | ||||
| +			       sq.sq_node, sq.sq_port); | ||||
| +	} | ||||
| + | ||||
| +	kfree(recv_buf); | ||||
| +} | ||||
| + | ||||
| +static void qrtr_ns_data_ready(struct sock *sk) | ||||
| +{ | ||||
| +	queue_work(qrtr_ns.workqueue, &qrtr_ns.work); | ||||
| +} | ||||
| + | ||||
| +void qrtr_ns_init(void) | ||||
| +{ | ||||
| +	struct sockaddr_qrtr sq; | ||||
| +	int sl = sizeof(sq); | ||||
| +	int ret; | ||||
| + | ||||
| +	INIT_LIST_HEAD(&qrtr_ns.lookups); | ||||
| +	INIT_WORK(&qrtr_ns.work, qrtr_ns_worker); | ||||
| + | ||||
| +	ret = sock_create_kern(&init_net, AF_QIPCRTR, SOCK_DGRAM, | ||||
| +			       PF_QIPCRTR, &qrtr_ns.sock); | ||||
| +	if (ret < 0) | ||||
| +		return; | ||||
| + | ||||
| +	ret = kernel_getsockname(qrtr_ns.sock, (struct sockaddr *)&sq, &sl); | ||||
| +	if (ret < 0) { | ||||
| +		pr_err("failed to get socket name\n"); | ||||
| +		goto err_sock; | ||||
| +	} | ||||
| + | ||||
| +	qrtr_ns.workqueue = alloc_workqueue("qrtr_ns_handler", WQ_UNBOUND, 1); | ||||
| +	if (!qrtr_ns.workqueue) | ||||
| +		goto err_sock; | ||||
| + | ||||
| +	qrtr_ns.sock->sk->sk_data_ready = qrtr_ns_data_ready; | ||||
| + | ||||
| +	sq.sq_port = QRTR_PORT_CTRL; | ||||
| +	qrtr_ns.local_node = sq.sq_node; | ||||
| + | ||||
| +	ret = kernel_bind(qrtr_ns.sock, (struct sockaddr *)&sq, sizeof(sq)); | ||||
| +	if (ret < 0) { | ||||
| +		pr_err("failed to bind to socket\n"); | ||||
| +		goto err_wq; | ||||
| +	} | ||||
| + | ||||
| +	qrtr_ns.bcast_sq.sq_family = AF_QIPCRTR; | ||||
| +	qrtr_ns.bcast_sq.sq_node = QRTR_NODE_BCAST; | ||||
| +	qrtr_ns.bcast_sq.sq_port = QRTR_PORT_CTRL; | ||||
| + | ||||
| +	ret = say_hello(&qrtr_ns.bcast_sq); | ||||
| +	if (ret < 0) | ||||
| +		goto err_wq; | ||||
| + | ||||
| +	return; | ||||
| + | ||||
| +err_wq: | ||||
| +	destroy_workqueue(qrtr_ns.workqueue); | ||||
| +err_sock: | ||||
| +	sock_release(qrtr_ns.sock); | ||||
| +} | ||||
| +EXPORT_SYMBOL_GPL(qrtr_ns_init); | ||||
| + | ||||
| +void qrtr_ns_remove(void) | ||||
| +{ | ||||
| +	cancel_work_sync(&qrtr_ns.work); | ||||
| +	destroy_workqueue(qrtr_ns.workqueue); | ||||
| +	sock_release(qrtr_ns.sock); | ||||
| +} | ||||
| +EXPORT_SYMBOL_GPL(qrtr_ns_remove); | ||||
| + | ||||
| +MODULE_AUTHOR("Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>"); | ||||
| +MODULE_DESCRIPTION("Qualcomm IPC Router Nameservice"); | ||||
| +MODULE_LICENSE("Dual BSD/GPL"); | ||||
| Index: linux-4.4.60/net/qrtr/qrtr.c | ||||
| =================================================================== | ||||
| --- linux-4.4.60.orig/net/qrtr/qrtr.c | ||||
| +++ linux-4.4.60/net/qrtr/qrtr.c | ||||
| @@ -135,6 +135,8 @@ static DEFINE_IDR(qrtr_ports); | ||||
|  static DEFINE_MUTEX(qrtr_port_lock); | ||||
|  static DEFINE_MUTEX(qrtr_node_locking); | ||||
|   | ||||
| +static struct delayed_work qrtr_ns_work; | ||||
| + | ||||
|  /** | ||||
|   * struct qrtr_node - endpoint node | ||||
|   * @ep_lock: lock for endpoint management and callbacks | ||||
| @@ -1765,33 +1767,6 @@ static int qrtr_create(struct net *net, | ||||
|  	return 0; | ||||
|  } | ||||
|   | ||||
| -static const struct nla_policy qrtr_policy[IFA_MAX + 1] = { | ||||
| -	[IFA_LOCAL] = { .type = NLA_U32 }, | ||||
| -}; | ||||
| - | ||||
| -static int qrtr_addr_doit(struct sk_buff *skb, struct nlmsghdr *nlh) | ||||
| -{ | ||||
| -	struct nlattr *tb[IFA_MAX + 1]; | ||||
| -	struct ifaddrmsg *ifm; | ||||
| -	int rc; | ||||
| - | ||||
| -	if (!netlink_capable(skb, CAP_NET_ADMIN)) | ||||
| -		return -EPERM; | ||||
| - | ||||
| -	ASSERT_RTNL(); | ||||
| - | ||||
| -	rc = nlmsg_parse(nlh, sizeof(*ifm), tb, IFA_MAX, qrtr_policy); | ||||
| -	if (rc < 0) | ||||
| -		return rc; | ||||
| - | ||||
| -	ifm = nlmsg_data(nlh); | ||||
| -	if (!tb[IFA_LOCAL]) | ||||
| -		return -EINVAL; | ||||
| - | ||||
| -	qrtr_local_nid = nla_get_u32(tb[IFA_LOCAL]); | ||||
| -	return 0; | ||||
| -} | ||||
| - | ||||
|  static const struct net_proto_family qrtr_family = { | ||||
|  	.owner	= THIS_MODULE, | ||||
|  	.family	= AF_QIPCRTR, | ||||
| @@ -1811,7 +1786,8 @@ static int __init qrtr_proto_init(void) | ||||
|  		proto_unregister(&qrtr_proto); | ||||
|  		return rc; | ||||
|  	} | ||||
| -	rtnl_register(PF_QIPCRTR, RTM_NEWADDR, qrtr_addr_doit, NULL, NULL); | ||||
| + | ||||
| +	qrtr_ns_init(); | ||||
|   | ||||
|  	return 0; | ||||
|  } | ||||
| @@ -1819,7 +1795,8 @@ postcore_initcall(qrtr_proto_init); | ||||
|   | ||||
|  static void __exit qrtr_proto_fini(void) | ||||
|  { | ||||
| -	rtnl_unregister(PF_QIPCRTR, RTM_NEWADDR); | ||||
| +	cancel_delayed_work_sync(&qrtr_ns_work); | ||||
| +	qrtr_ns_remove(); | ||||
|  	sock_unregister(qrtr_family.family); | ||||
|  	proto_unregister(&qrtr_proto); | ||||
|  } | ||||
| Index: linux-4.4.60/net/qrtr/qrtr.h | ||||
| =================================================================== | ||||
| --- linux-4.4.60.orig/net/qrtr/qrtr.h | ||||
| +++ linux-4.4.60/net/qrtr/qrtr.h | ||||
| @@ -33,4 +33,9 @@ void qrtr_endpoint_unregister(struct qrt | ||||
|  int qrtr_endpoint_post(struct qrtr_endpoint *ep, const void *data, size_t len); | ||||
|   | ||||
|  int qrtr_peek_pkt_size(const void *data); | ||||
| + | ||||
| +void qrtr_ns_init(void); | ||||
| + | ||||
| +void qrtr_ns_remove(void); | ||||
| + | ||||
|  #endif | ||||
| Index: linux-4.4.60/net/qrtr/Makefile | ||||
| =================================================================== | ||||
| --- linux-4.4.60.orig/net/qrtr/Makefile | ||||
| +++ linux-4.4.60/net/qrtr/Makefile | ||||
| @@ -1,4 +1,4 @@ | ||||
| -obj-$(CONFIG_QRTR) := qrtr.o | ||||
| +obj-$(CONFIG_QRTR) := qrtr.o ns.o | ||||
|   | ||||
|  obj-$(CONFIG_QRTR_SMD) += qrtr-smd.o | ||||
|  qrtr-smd-y	:= smd.o | ||||
| Index: linux-4.4.60/include/trace/events/qrtr.h | ||||
| =================================================================== | ||||
| --- /dev/null | ||||
| +++ linux-4.4.60/include/trace/events/qrtr.h | ||||
| @@ -0,0 +1,115 @@ | ||||
| +/* SPDX-License-Identifier: GPL-2.0 */ | ||||
| +#undef TRACE_SYSTEM | ||||
| +#define TRACE_SYSTEM qrtr | ||||
| + | ||||
| +#if !defined(_TRACE_QRTR_H) || defined(TRACE_HEADER_MULTI_READ) | ||||
| +#define _TRACE_QRTR_H | ||||
| + | ||||
| +#include <linux/qrtr.h> | ||||
| +#include <linux/tracepoint.h> | ||||
| + | ||||
| +TRACE_EVENT(qrtr_ns_service_announce_new, | ||||
| + | ||||
| +	TP_PROTO(__le32 service, __le32 instance, __le32 node, __le32 port), | ||||
| + | ||||
| +	TP_ARGS(service, instance, node, port), | ||||
| + | ||||
| +	TP_STRUCT__entry( | ||||
| +		__field(__le32, service) | ||||
| +		__field(__le32, instance) | ||||
| +		__field(__le32, node) | ||||
| +		__field(__le32, port) | ||||
| +	), | ||||
| + | ||||
| +	TP_fast_assign( | ||||
| +		__entry->service = service; | ||||
| +		__entry->instance = instance; | ||||
| +		__entry->node = node; | ||||
| +		__entry->port = port; | ||||
| +	), | ||||
| + | ||||
| +	TP_printk("advertising new server [%d:%x]@[%d:%d]", | ||||
| +		  __entry->service, __entry->instance, __entry->node, | ||||
| +		  __entry->port | ||||
| +	) | ||||
| +); | ||||
| + | ||||
| +TRACE_EVENT(qrtr_ns_service_announce_del, | ||||
| + | ||||
| +	TP_PROTO(__le32 service, __le32 instance, __le32 node, __le32 port), | ||||
| + | ||||
| +	TP_ARGS(service, instance, node, port), | ||||
| + | ||||
| +	TP_STRUCT__entry( | ||||
| +		__field(__le32, service) | ||||
| +		__field(__le32, instance) | ||||
| +		__field(__le32, node) | ||||
| +		__field(__le32, port) | ||||
| +	), | ||||
| + | ||||
| +	TP_fast_assign( | ||||
| +		__entry->service = service; | ||||
| +		__entry->instance = instance; | ||||
| +		__entry->node = node; | ||||
| +		__entry->port = port; | ||||
| +	), | ||||
| + | ||||
| +	TP_printk("advertising removal of server [%d:%x]@[%d:%d]", | ||||
| +		  __entry->service, __entry->instance, __entry->node, | ||||
| +		  __entry->port | ||||
| +	) | ||||
| +); | ||||
| + | ||||
| +TRACE_EVENT(qrtr_ns_server_add, | ||||
| + | ||||
| +	TP_PROTO(__le32 service, __le32 instance, __le32 node, __le32 port), | ||||
| + | ||||
| +	TP_ARGS(service, instance, node, port), | ||||
| + | ||||
| +	TP_STRUCT__entry( | ||||
| +		__field(__le32, service) | ||||
| +		__field(__le32, instance) | ||||
| +		__field(__le32, node) | ||||
| +		__field(__le32, port) | ||||
| +	), | ||||
| + | ||||
| +	TP_fast_assign( | ||||
| +		__entry->service = service; | ||||
| +		__entry->instance = instance; | ||||
| +		__entry->node = node; | ||||
| +		__entry->port = port; | ||||
| +	), | ||||
| + | ||||
| +	TP_printk("add server [%d:%x]@[%d:%d]", | ||||
| +		  __entry->service, __entry->instance, __entry->node, | ||||
| +		  __entry->port | ||||
| +	) | ||||
| +); | ||||
| + | ||||
| +TRACE_EVENT(qrtr_ns_message, | ||||
| + | ||||
| +	TP_PROTO(const char * const ctrl_pkt_str, __u32 sq_node, __u32 sq_port), | ||||
| + | ||||
| +	TP_ARGS(ctrl_pkt_str, sq_node, sq_port), | ||||
| + | ||||
| +	TP_STRUCT__entry( | ||||
| +		__string(ctrl_pkt_str, ctrl_pkt_str) | ||||
| +		__field(__u32, sq_node) | ||||
| +		__field(__u32, sq_port) | ||||
| +	), | ||||
| + | ||||
| +	TP_fast_assign( | ||||
| +		__assign_str(ctrl_pkt_str, ctrl_pkt_str); | ||||
| +		__entry->sq_node = sq_node; | ||||
| +		__entry->sq_port = sq_port; | ||||
| +	), | ||||
| + | ||||
| +	TP_printk("%s from %d:%d", | ||||
| +		  __get_str(ctrl_pkt_str), __entry->sq_node, __entry->sq_port | ||||
| +	) | ||||
| +); | ||||
| + | ||||
| +#endif /* _TRACE_QRTR_H */ | ||||
| + | ||||
| +/* This part must be outside protection */ | ||||
| +#include <trace/define_trace.h> | ||||
| @@ -1,78 +0,0 @@ | ||||
| Index: linux-5.4.164-qsdk-d5fcb18e5420670c8734c6a659873e73adab6dac/drivers/net/phy/aquantia_main.c | ||||
| =================================================================== | ||||
| --- linux-5.4.164-qsdk-d5fcb18e5420670c8734c6a659873e73adab6dac.orig/drivers/net/phy/aquantia_main.c | ||||
| +++ linux-5.4.164-qsdk-d5fcb18e5420670c8734c6a659873e73adab6dac/drivers/net/phy/aquantia_main.c | ||||
| @@ -25,9 +25,11 @@ | ||||
|  #define PHY_ID_AQR109	0x03a1b502 | ||||
|  #define PHY_ID_AQR111	0x03a1b610 | ||||
|  #define PHY_ID_AQR111B0	0x03a1b612 | ||||
| +#define PHY_ID_AQR111C 0x03a1b7e2 | ||||
|  #define PHY_ID_AQR112	0x03a1b660 | ||||
|  #define PHY_ID_AQR112C	0x03a1b792 | ||||
|  #define PHY_ID_AQR113C	0x31c31C10 | ||||
| +#define PHY_ID_AQR114C	0x31c31C22 | ||||
|  #define PHY_ID_AQCS109	0x03a1b5c2 | ||||
|  #define PHY_ID_AQR405	0x03a1b4b0 | ||||
|   | ||||
| @@ -1011,6 +1013,24 @@ static struct phy_driver aqr_driver[] = | ||||
|  	.link_change_notify = aqr107_link_change_notify, | ||||
|  }, | ||||
|  { | ||||
| +	PHY_ID_MATCH_MODEL(PHY_ID_AQR111C), | ||||
| +	.name		= "Aquantia AQR111C", | ||||
| +	.probe		= aqr107_probe, | ||||
| +	.config_init	= aqr107_config_init, | ||||
| +	.config_aneg    = aqr_config_aneg, | ||||
| +	.config_intr	= aqr_config_intr, | ||||
| +	.ack_interrupt	= aqr_ack_interrupt, | ||||
| +	.read_status	= aqr107_read_status, | ||||
| +	.get_tunable    = aqr107_get_tunable, | ||||
| +	.set_tunable    = aqr107_set_tunable, | ||||
| +	.suspend	= aqr107_suspend, | ||||
| +	.resume		= aqr107_resume, | ||||
| +	.get_sset_count	= aqr107_get_sset_count, | ||||
| +	.get_strings	= aqr107_get_strings, | ||||
| +	.get_stats	= aqr107_get_stats, | ||||
| +	.link_change_notify = aqr107_link_change_notify, | ||||
| +}, | ||||
| +{ | ||||
|  	PHY_ID_MATCH_MODEL(PHY_ID_AQR112), | ||||
|  	.name		= "Aquantia AQR112", | ||||
|  	.probe		= aqr107_probe, | ||||
| @@ -1065,6 +1085,24 @@ static struct phy_driver aqr_driver[] = | ||||
|  	.link_change_notify = aqr107_link_change_notify, | ||||
|  }, | ||||
|  { | ||||
| +	PHY_ID_MATCH_MODEL(PHY_ID_AQR114C), | ||||
| +	.name		= "Aquantia AQR114C", | ||||
| +	.probe		= aqr107_probe, | ||||
| +	.config_init	= aqr107_config_init, | ||||
| +	.config_aneg    = aqr_config_aneg, | ||||
| +	.config_intr	= aqr_config_intr, | ||||
| +	.ack_interrupt	= aqr_ack_interrupt, | ||||
| +	.read_status	= aqr107_read_status, | ||||
| +	.get_tunable    = aqr107_get_tunable, | ||||
| +	.set_tunable    = aqr107_set_tunable, | ||||
| +	.suspend	= aqr107_suspend, | ||||
| +	.resume		= aqr107_resume, | ||||
| +	.get_sset_count	= aqr107_get_sset_count, | ||||
| +	.get_strings	= aqr107_get_strings, | ||||
| +	.get_stats	= aqr107_get_stats, | ||||
| +	.link_change_notify = aqr107_link_change_notify, | ||||
| +}, | ||||
| +{ | ||||
|  	PHY_ID_MATCH_MODEL(PHY_ID_AQCS109), | ||||
|  	.name		= "Aquantia AQCS109", | ||||
|  	.probe		= aqr107_probe, | ||||
| @@ -1104,9 +1142,11 @@ static struct mdio_device_id __maybe_unu | ||||
|  	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR109) }, | ||||
|  	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR111) }, | ||||
|  	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR111B0) }, | ||||
| +	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR111C) }, | ||||
|  	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR112) }, | ||||
|  	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR112C) }, | ||||
|  	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR113C) }, | ||||
| +	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR114C) }, | ||||
|  	{ PHY_ID_MATCH_MODEL(PHY_ID_AQCS109) }, | ||||
|  	{ PHY_ID_MATCH_MODEL(PHY_ID_AQR405) }, | ||||
|  	{ } | ||||
							
								
								
									
										16
									
								
								feeds/ipq807x/ipq807x/patches/101-squashfs.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								feeds/ipq807x/ipq807x/patches/101-squashfs.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | ||||
| Index: linux-4.4.60/fs/squashfs/xz_wrapper.c | ||||
| =================================================================== | ||||
| --- linux-4.4.60.orig/fs/squashfs/xz_wrapper.c | ||||
| +++ linux-4.4.60/fs/squashfs/xz_wrapper.c | ||||
| @@ -40,10 +40,8 @@ struct squashfs_xz { | ||||
|  }; | ||||
|   | ||||
|  struct disk_comp_opts { | ||||
| -	__le32 flags; | ||||
| -	__le16 bit_opts; | ||||
| -	__le16 fb; | ||||
|  	__le32 dictionary_size; | ||||
| +	__le32 flags; | ||||
|  }; | ||||
|   | ||||
|  struct comp_opts { | ||||
							
								
								
									
										90
									
								
								feeds/ipq807x/ipq807x/patches/102-aq-phy.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								feeds/ipq807x/ipq807x/patches/102-aq-phy.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,90 @@ | ||||
| Index: linux-4.4.60-qsdk-ad8f8efb2edcd35cdb130466cfc1923c37ef7ec1/drivers/net/phy/aquantia.c | ||||
| =================================================================== | ||||
| --- linux-4.4.60-qsdk-ad8f8efb2edcd35cdb130466cfc1923c37ef7ec1.orig/drivers/net/phy/aquantia.c | ||||
| +++ linux-4.4.60-qsdk-ad8f8efb2edcd35cdb130466cfc1923c37ef7ec1/drivers/net/phy/aquantia.c | ||||
| @@ -32,6 +32,7 @@ | ||||
|  #define PHY_ID_AQR112	0x03a1b660 | ||||
|  #define PHY_ID_AQR113C	0x31c31C10 | ||||
|  #define PHY_ID_AQR112C	0x03a1b792 | ||||
| +#define PHY_ID_AQR114C	0x31c31C22 | ||||
|   | ||||
|  #define AQ_PHY_MAX_VALID_MMD_REG		0xff01 | ||||
|  #define AQ_PHY_MAX_INVALID_MMD_REG		0xffff | ||||
| @@ -756,6 +757,25 @@ static struct phy_driver aquantia_driver | ||||
|  	.update_link	= aquantia_update_link, | ||||
|  	.driver		= { .owner = THIS_MODULE,}, | ||||
|  }, | ||||
| +{ | ||||
| +	.phy_id		= PHY_ID_AQR114C, | ||||
| +	.phy_id_mask	= 0xfffffff0, | ||||
| +	.name		= "Aquantia AQR114C", | ||||
| +	.features	= PHY_AQUANTIA_FEATURES, | ||||
| +	.flags		= PHY_HAS_INTERRUPT, | ||||
| +	.probe		= aquantia_phy_probe, | ||||
| +	.soft_reset	= aquantia_soft_reset, | ||||
| +	.config_init	= aquantia_config_init, | ||||
| +	.aneg_done	= aquantia_aneg_done, | ||||
| +	.config_aneg	= aquantia_config_aneg, | ||||
| +	.config_intr	= aquantia_config_intr, | ||||
| +	.ack_interrupt	= aquantia_ack_interrupt, | ||||
| +	.read_status	= aquantia_read_status, | ||||
| +	.suspend	= aquantia_suspend, | ||||
| +	.resume		= aquantia_resume, | ||||
| +	.update_link	= aquantia_update_link, | ||||
| +	.driver		= { .owner = THIS_MODULE,}, | ||||
| +}, | ||||
|  }; | ||||
|   | ||||
|  module_phy_driver(aquantia_driver); | ||||
| @@ -773,6 +793,7 @@ static struct mdio_device_id __maybe_unu | ||||
|  	{ PHY_ID_AQR112, 0xfffffff0 }, | ||||
|  	{ PHY_ID_AQR113C, 0xfffffff0 }, | ||||
|  	{ PHY_ID_AQR112C, 0xfffffff0 }, | ||||
| +	{ PHY_ID_AQR114C, 0xfffffff0 }, | ||||
|  	{ } | ||||
|  }; | ||||
|   | ||||
| Index: linux-4.4.60-qsdk-10fd7d14853b7020b804acae690c8acec5d954ce/drivers/net/phy/aquantia.c | ||||
| =================================================================== | ||||
| --- linux-4.4.60-qsdk-10fd7d14853b7020b804acae690c8acec5d954ce.orig/drivers/net/phy/aquantia.c | ||||
| +++ linux-4.4.60-qsdk-10fd7d14853b7020b804acae690c8acec5d954ce/drivers/net/phy/aquantia.c | ||||
| @@ -29,6 +29,7 @@ | ||||
|  #define PHY_ID_AQR109	0x03a1b502 | ||||
|  #define PHY_ID_AQR111	0x03a1b610 | ||||
|  #define PHY_ID_AQR111B0	0x03a1b612 | ||||
| +#define PHY_ID_AQR111C	0x03a1b7e2 | ||||
|  #define PHY_ID_AQR112	0x03a1b660 | ||||
|  #define PHY_ID_AQR113C	0x31c31C10 | ||||
|  #define PHY_ID_AQR112C	0x03a1b792 | ||||
| @@ -701,6 +702,23 @@ static struct phy_driver aquantia_driver | ||||
|  	.driver         = { .owner = THIS_MODULE,}, | ||||
|  }, | ||||
|  { | ||||
| +	.phy_id         = PHY_ID_AQR111C, | ||||
| +	.phy_id_mask    = 0xfffffff0, | ||||
| +	.name           = "Aquantia AQR111C", | ||||
| +	.features       = PHY_AQUANTIA_FEATURES, | ||||
| +	.flags          = PHY_HAS_INTERRUPT, | ||||
| +	.probe          = aquantia_phy_probe, | ||||
| +	.soft_reset     = aquantia_soft_reset, | ||||
| +	.config_init    = aquantia_config_init, | ||||
| +	.aneg_done      = aquantia_aneg_done, | ||||
| +	.config_aneg    = aquantia_config_aneg, | ||||
| +	.config_intr    = aquantia_config_intr, | ||||
| +	.ack_interrupt  = aquantia_ack_interrupt, | ||||
| +	.read_status    = aquantia_read_status, | ||||
| +	.update_link    = aquantia_update_link, | ||||
| +	.driver         = { .owner = THIS_MODULE,}, | ||||
| +}, | ||||
| +{ | ||||
|  	.phy_id		= PHY_ID_AQR112, | ||||
|  	.phy_id_mask	= 0xfffffff0, | ||||
|  	.name		= "Aquantia AQR112", | ||||
| @@ -790,6 +808,7 @@ static struct mdio_device_id __maybe_unu | ||||
|  	{ PHY_ID_AQR109, 0xfffffff0 }, | ||||
|  	{ PHY_ID_AQR111, 0xfffffff0 }, | ||||
|  	{ PHY_ID_AQR111B0, 0xfffffff0 }, | ||||
| +	{ PHY_ID_AQR111C, 0xfffffff0 }, | ||||
|  	{ PHY_ID_AQR112, 0xfffffff0 }, | ||||
|  	{ PHY_ID_AQR113C, 0xfffffff0 }, | ||||
|  	{ PHY_ID_AQR112C, 0xfffffff0 }, | ||||
							
								
								
									
										11
									
								
								feeds/ipq807x/ipq807x/patches/103-fix-dtc-gcc10-build.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								feeds/ipq807x/ipq807x/patches/103-fix-dtc-gcc10-build.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| --- a/scripts/dtc/dtc-lexer.lex.c_shipped | ||||
| +++ b/scripts/dtc/dtc-lexer.lex.c_shipped | ||||
| @@ -637,7 +637,7 @@ char *yytext; | ||||
|  #include "srcpos.h" | ||||
|  #include "dtc-parser.tab.h" | ||||
|   | ||||
| -YYLTYPE yylloc; | ||||
| +extern YYLTYPE yylloc; | ||||
|  extern bool treesource_error; | ||||
|   | ||||
|  /* CAUTION: this will stop working if we ever use yyless() or yyunput() */ | ||||
| @@ -1,17 +1,17 @@ | ||||
| Index: linux-5.4.164-qsdk-d5fcb18e5420670c8734c6a659873e73adab6dac/drivers/clk/qcom/clk-branch.c | ||||
| Index: linux-4.4.60-qsdk-10fd7d14853b7020b804acae690c8acec5d954ce/drivers/clk/qcom/clk-branch.c | ||||
| =================================================================== | ||||
| --- linux-5.4.164-qsdk-d5fcb18e5420670c8734c6a659873e73adab6dac.orig/drivers/clk/qcom/clk-branch.c | ||||
| +++ linux-5.4.164-qsdk-d5fcb18e5420670c8734c6a659873e73adab6dac/drivers/clk/qcom/clk-branch.c | ||||
| @@ -67,7 +67,7 @@ static int clk_branch_wait(const struct | ||||
| --- linux-4.4.60-qsdk-10fd7d14853b7020b804acae690c8acec5d954ce.orig/drivers/clk/qcom/clk-branch.c | ||||
| +++ linux-4.4.60-qsdk-10fd7d14853b7020b804acae690c8acec5d954ce/drivers/clk/qcom/clk-branch.c | ||||
| @@ -75,7 +75,7 @@ static int clk_branch_wait(const struct | ||||
|  		bool (check_halt)(const struct clk_branch *, bool)) | ||||
|  { | ||||
|  	bool voted = br->halt_check & BRANCH_VOTED; | ||||
| -	const char *name = clk_hw_get_name(&br->clkr.hw); | ||||
| +	//const char *name = clk_hw_get_name(&br->clkr.hw); | ||||
|   | ||||
|  	/* | ||||
|  	 * Skip checking halt bit if we're explicitly ignoring the bit or the | ||||
| @@ -88,8 +88,8 @@ static int clk_branch_wait(const struct | ||||
|  	/* Skip checking halt bit if the clock is in hardware gated mode */ | ||||
|  	if (clk_branch_in_hwcg_mode(br)) | ||||
| @@ -93,8 +93,8 @@ static int clk_branch_wait(const struct | ||||
|  				return 0; | ||||
|  			udelay(1); | ||||
|  		} | ||||
| @@ -22,3 +22,16 @@ Index: linux-5.4.164-qsdk-d5fcb18e5420670c8734c6a659873e73adab6dac/drivers/clk/q | ||||
|  		return -EBUSY; | ||||
|  	} | ||||
|  	return 0; | ||||
| Index: linux-4.4.60-qsdk-10fd7d14853b7020b804acae690c8acec5d954ce/drivers/usb/phy/phy-msm-qusb.c | ||||
| =================================================================== | ||||
| --- linux-4.4.60-qsdk-10fd7d14853b7020b804acae690c8acec5d954ce.orig/drivers/usb/phy/phy-msm-qusb.c | ||||
| +++ linux-4.4.60-qsdk-10fd7d14853b7020b804acae690c8acec5d954ce/drivers/usb/phy/phy-msm-qusb.c | ||||
| @@ -491,7 +491,7 @@ static int qusb_phy_init(struct usb_phy | ||||
|  		dev_err(phy->dev, "QUSB PHY PLL LOCK fails:%x\n", | ||||
|  			readb_relaxed(qphy->base | ||||
|  				+ QUSB2PHY_PLL_STATUS)); | ||||
| -		WARN_ON(1); | ||||
| +		//WARN_ON(1); | ||||
|  	} | ||||
|   | ||||
|  	/* Set OTG VBUS Valid from HSPHY to controller */ | ||||
|   | ||||
| @@ -1,15 +1,37 @@ | ||||
| Index: linux-5.4.164-qsdk-d5fcb18e5420670c8734c6a659873e73adab6dac/drivers/mtd/nand/raw/nand_ids.c | ||||
| Index: linux-4.4.60-qsdk-10fd7d14853b7020b804acae690c8acec5d954ce/drivers/mtd/nand/nand_ids.c | ||||
| =================================================================== | ||||
| --- linux-5.4.164-qsdk-d5fcb18e5420670c8734c6a659873e73adab6dac.orig/drivers/mtd/nand/raw/nand_ids.c | ||||
| +++ linux-5.4.164-qsdk-d5fcb18e5420670c8734c6a659873e73adab6dac/drivers/mtd/nand/raw/nand_ids.c | ||||
| @@ -114,6 +114,10 @@ struct nand_flash_dev nand_flash_ids[] = | ||||
|  		{ .id = {0xc8, 0x42} }, | ||||
|  		SZ_2K, SZ_256, SZ_128K, 0, 2, 128, NAND_ECC_INFO(8, SZ_512), 0}, | ||||
|   | ||||
| --- linux-4.4.60-qsdk-10fd7d14853b7020b804acae690c8acec5d954ce.orig/drivers/mtd/nand/nand_ids.c | ||||
| +++ linux-4.4.60-qsdk-10fd7d14853b7020b804acae690c8acec5d954ce/drivers/mtd/nand/nand_ids.c | ||||
| @@ -62,6 +62,12 @@ struct nand_flash_dev nand_flash_ids[] = | ||||
|  	{"TH58NYG3S0H 8G 1.8V 8-bit", | ||||
|  		{ .id = {0x98, 0xa3, 0x91, 0x26} }, | ||||
|  		  SZ_4K, SZ_1K, SZ_256K, 0, 4, 256, NAND_ECC_INFO(8, SZ_512) }, | ||||
| + | ||||
| +	{"F59D2G81KA 2G 1.8V 8-bit", | ||||
| +		{ .id = {0xc8, 0x5a, 0x90, 0x04} }, | ||||
| +		SZ_2K, SZ_256, SZ_128K, 0, 4, 128, NAND_ECC_INFO(8, SZ_512) }, | ||||
| + | ||||
| + | ||||
|  	LEGACY_ID_NAND("NAND 4MiB 5V 8-bit",   0x6B, 4, SZ_8K, SP_OPTIONS), | ||||
|  	LEGACY_ID_NAND("NAND 4MiB 3,3V 8-bit", 0xE3, 4, SZ_8K, SP_OPTIONS), | ||||
|  	LEGACY_ID_NAND("NAND 4MiB 3,3V 8-bit", 0xE5, 4, SZ_8K, SP_OPTIONS), | ||||
| @@ -190,6 +196,7 @@ struct nand_manufacturers nand_manuf_ids | ||||
|  	{NAND_MFR_SANDISK, "SanDisk"}, | ||||
|  	{NAND_MFR_INTEL, "Intel"}, | ||||
|  	{NAND_MFR_ATO, "ATO"}, | ||||
| +	{NAND_MFR_ESMT, "ESMT"}, | ||||
|  	{NAND_MFR_GIGA, "GigaDevice"}, | ||||
|  	{NAND_MFR_ATO, "ATO"}, | ||||
|  	{NAND_MFR_WINBOND, "Winbond"}, | ||||
| Index: linux-4.4.60-qsdk-10fd7d14853b7020b804acae690c8acec5d954ce/include/linux/mtd/nand.h | ||||
| =================================================================== | ||||
| --- linux-4.4.60-qsdk-10fd7d14853b7020b804acae690c8acec5d954ce.orig/include/linux/mtd/nand.h | ||||
| +++ linux-4.4.60-qsdk-10fd7d14853b7020b804acae690c8acec5d954ce/include/linux/mtd/nand.h | ||||
| @@ -778,6 +778,7 @@ static inline struct mtd_info *nand_to_m | ||||
|  #define NAND_MFR_ATO		0x9b | ||||
|  #define NAND_MFR_WINBOND	0xef | ||||
|  #define NAND_MFR_FIDELIX	0xe5 | ||||
| +#define NAND_MFR_ESMT		0xc8 | ||||
|   | ||||
|  /* The maximum expected count of bytes in the NAND ID sequence */ | ||||
|  #define NAND_MAX_ID_LEN 8 | ||||
|   | ||||
							
								
								
									
										147
									
								
								feeds/ipq807x/ipq807x/patches/106-pstore.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										147
									
								
								feeds/ipq807x/ipq807x/patches/106-pstore.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,147 @@ | ||||
| Index: linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016/arch/arm64/boot/dts/qcom/qcom-ipq6018-memory.dtsi | ||||
| =================================================================== | ||||
| --- linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016.orig/arch/arm64/boot/dts/qcom/qcom-ipq6018-memory.dtsi | ||||
| +++ linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016/arch/arm64/boot/dts/qcom/qcom-ipq6018-memory.dtsi | ||||
| @@ -92,6 +92,12 @@ | ||||
|  			reg = <0x0 0x40000000 0x0 0x00800000>; | ||||
|  		}; | ||||
|   | ||||
| +		ramoops@4A0f0000 { | ||||
| +			compatible = "ramoops"; | ||||
| +			reg = <0 0x4A0f0000 0 0x10000>; | ||||
| +			record-size = <0x1000>; | ||||
| +		}; | ||||
| + | ||||
|  		uboot@4A100000 { | ||||
|  			no-map; | ||||
|  			reg = <0x0 0x4A100000 0x0 0x00400000>; | ||||
| @@ -211,6 +217,12 @@ | ||||
|  			reg = <0x0 0x40000000 0x0 0x01000000>; | ||||
|  		}; | ||||
|   | ||||
| +		ramoops@4A0f0000 { | ||||
| +			compatible = "ramoops"; | ||||
| +			reg = <0 0x4A0f0000 0 0x10000>; | ||||
| +			record-size = <0x1000>; | ||||
| +		}; | ||||
| + | ||||
|  		uboot@4A100000 { | ||||
|  			no-map; | ||||
|  			reg = <0x0 0x4A100000 0x0 0x00400000>; | ||||
| @@ -330,6 +342,12 @@ | ||||
|  			reg = <0x0 0x40000000 0x0 0x01000000>; | ||||
|  		}; | ||||
|   | ||||
| +		ramoops@4A0f0000 { | ||||
| +			compatible = "ramoops"; | ||||
| +			reg = <0 0x4A0f0000 0 0x10000>; | ||||
| +			record-size = <0x1000>; | ||||
| +		}; | ||||
| + | ||||
|  		uboot@4A100000 { | ||||
|  			no-map; | ||||
|  			reg = <0x0 0x4A100000 0x0 0x00400000>; | ||||
| Index: linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016/fs/pstore/ram.c | ||||
| =================================================================== | ||||
| --- linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016.orig/fs/pstore/ram.c | ||||
| +++ linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016/fs/pstore/ram.c | ||||
| @@ -466,15 +466,46 @@ static int ramoops_init_prz(struct devic | ||||
|  	return 0; | ||||
|  } | ||||
|   | ||||
| +static int ramoops_parse_dt(struct platform_device *pdev, | ||||
| +                            struct ramoops_platform_data *pdata) | ||||
| +{ | ||||
| +	struct resource *res; | ||||
| + | ||||
| +	dev_dbg(&pdev->dev, "using Device Tree\n"); | ||||
| + | ||||
| +	res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | ||||
| +	if (!res) { | ||||
| +		dev_err(&pdev->dev, | ||||
| +			"failed to locate DT /reserved-memory resource\n"); | ||||
| +		return -EINVAL; | ||||
| +	} | ||||
| + | ||||
| +	pdata->mem_size = resource_size(res); | ||||
| +	pdata->mem_address = res->start; | ||||
| +	pdata->dump_oops = true; | ||||
| +	pdata->record_size = 0x1000; | ||||
| +	return 0; | ||||
| +} | ||||
| + | ||||
|  static int ramoops_probe(struct platform_device *pdev) | ||||
|  { | ||||
|  	struct device *dev = &pdev->dev; | ||||
|  	struct ramoops_platform_data *pdata = pdev->dev.platform_data; | ||||
| +	struct ramoops_platform_data pdata_local; | ||||
|  	struct ramoops_context *cxt = &oops_cxt; | ||||
|  	size_t dump_mem_sz; | ||||
|  	phys_addr_t paddr; | ||||
|  	int err = -EINVAL; | ||||
|   | ||||
| +	if (dev_of_node(dev) && !pdata) { | ||||
| +		pdata = &pdata_local; | ||||
| +		memset(pdata, 0, sizeof(*pdata)); | ||||
| + | ||||
| +		err = ramoops_parse_dt(pdev, pdata); | ||||
| +		if (err < 0) | ||||
| +		goto fail_out; | ||||
| +	} | ||||
| + | ||||
|  	/* Only a single ramoops area allowed at a time, so fail extra | ||||
|  	 * probes. | ||||
|  	 */ | ||||
| @@ -603,11 +634,17 @@ static int ramoops_remove(struct platfor | ||||
|  	return 0; | ||||
|  } | ||||
|   | ||||
| +static const struct of_device_id dt_match[] = { | ||||
| +	{ .compatible = "ramoops" }, | ||||
| +	{} | ||||
| +}; | ||||
| + | ||||
|  static struct platform_driver ramoops_driver = { | ||||
|  	.probe		= ramoops_probe, | ||||
|  	.remove		= ramoops_remove, | ||||
|  	.driver		= { | ||||
|  		.name	= "ramoops", | ||||
| +		.of_match_table = dt_match, | ||||
|  	}, | ||||
|  }; | ||||
|   | ||||
| Index: linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016/drivers/of/platform.c | ||||
| =================================================================== | ||||
| --- linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016.orig/drivers/of/platform.c | ||||
| +++ linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016/drivers/of/platform.c | ||||
| @@ -53,6 +53,30 @@ struct platform_device *of_find_device_b | ||||
|  } | ||||
|  EXPORT_SYMBOL(of_find_device_by_node); | ||||
|   | ||||
| +static const struct of_device_id reserved_mem_matches[] = { | ||||
| +        { .compatible = "ramoops" }, | ||||
| +        {} | ||||
| +}; | ||||
| + | ||||
| +static int __init of_platform_default_populate_init(void) | ||||
| +{ | ||||
| +	struct device_node *node; | ||||
| + | ||||
| +	if (!of_have_populated_dt()) | ||||
| +		return -ENODEV; | ||||
| + | ||||
| +	/* | ||||
| +	 * Handle certain compatibles explicitly, since we don't want to create | ||||
| +	 * platform_devices for every node in /reserved-memory with a | ||||
| +	 * "compatible", | ||||
| +	 */ | ||||
| +	for_each_matching_node(node, reserved_mem_matches) | ||||
| +		of_platform_device_create(node, NULL, NULL); | ||||
| + | ||||
| +	return 0; | ||||
| +} | ||||
| +arch_initcall_sync(of_platform_default_populate_init); | ||||
| + | ||||
|  #ifdef CONFIG_OF_ADDRESS | ||||
|  /* | ||||
|   * The following routines scan a subtree and registers a device for | ||||
| @@ -1,13 +1,14 @@ | ||||
| Index: linux-5.4.164-qsdk-d5fcb18e5420670c8734c6a659873e73adab6dac/net/bridge/br_forward.c | ||||
| Index: linux-4.4.60-qsdk-10fd7d14853b7020b804acae690c8acec5d954ce/net/bridge/br_forward.c | ||||
| =================================================================== | ||||
| --- linux-5.4.164-qsdk-d5fcb18e5420670c8734c6a659873e73adab6dac.orig/net/bridge/br_forward.c | ||||
| +++ linux-5.4.164-qsdk-d5fcb18e5420670c8734c6a659873e73adab6dac/net/bridge/br_forward.c | ||||
| @@ -24,7 +24,7 @@ static inline int should_deliver(const s | ||||
| --- linux-4.4.60-qsdk-10fd7d14853b7020b804acae690c8acec5d954ce.orig/net/bridge/br_forward.c | ||||
| +++ linux-4.4.60-qsdk-10fd7d14853b7020b804acae690c8acec5d954ce/net/bridge/br_forward.c | ||||
| @@ -33,8 +33,7 @@ static inline int should_deliver(const s | ||||
|  	struct net_bridge_vlan_group *vg; | ||||
|   | ||||
|  	vg = nbp_vlan_group_rcu(p); | ||||
| -	return (((p->flags & BR_HAIRPIN_MODE) && !is_multicast_ether_addr(eth_hdr(skb)->h_dest)) | ||||
| +	return (((p->flags & BR_HAIRPIN_MODE)) | ||||
|  		|| (skb->dev != p->dev)) && | ||||
|  		br_allowed_egress(vg, skb) && (p->state == BR_STATE_FORWARDING) && | ||||
|  		nbp_switchdev_allowed_egress(p, skb) && | ||||
| -	return ((skb->dev != p->dev) || ((p->flags & BR_HAIRPIN_MODE) && | ||||
| -		(!is_multicast_ether_addr(eth_hdr(skb)->h_dest)))) && | ||||
| +	return ((skb->dev != p->dev) || (p->flags & BR_HAIRPIN_MODE)) && | ||||
|  		br_allowed_egress(vg, skb) && p->state == BR_STATE_FORWARDING; | ||||
|  } | ||||
|   | ||||
|   | ||||
| @@ -1,15 +1,14 @@ | ||||
| Index: linux-5.4.164-qsdk-d5fcb18e5420670c8734c6a659873e73adab6dac/drivers/mtd/nand/raw/nand_ids.c | ||||
| Index: linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016/drivers/mtd/nand/qcom_nandc.c | ||||
| =================================================================== | ||||
| --- linux-5.4.164-qsdk-d5fcb18e5420670c8734c6a659873e73adab6dac.orig/drivers/mtd/nand/raw/nand_ids.c | ||||
| +++ linux-5.4.164-qsdk-d5fcb18e5420670c8734c6a659873e73adab6dac/drivers/mtd/nand/raw/nand_ids.c | ||||
| @@ -118,6 +118,10 @@ struct nand_flash_dev nand_flash_ids[] = | ||||
|  		{ .id = {0xc8, 0x5a, 0x90, 0x04} }, | ||||
|  		SZ_2K, SZ_256, SZ_128K, 0, 4, 128, NAND_ECC_INFO(8, SZ_512) }, | ||||
|   | ||||
| --- linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016.orig/drivers/mtd/nand/qcom_nandc.c | ||||
| +++ linux-4.4.60-qsdk-11f09717303ecd83c3a64e9efe23f25921dc1016/drivers/mtd/nand/qcom_nandc.c | ||||
| @@ -405,6 +405,9 @@ struct nand_flash_dev qspinand_flash_ids | ||||
|  	{"MX35UF1GE4AC SPI NAND 1G 1.8V", | ||||
|  		{ .id = {0xc2, 0x92} }, | ||||
|  		SZ_2K, SZ_128, SZ_128K, 0, 2, 64, NAND_ECC_INFO(4, SZ_512), 0}, | ||||
| +	{"W25N01GW SPI NAND 1.8V 1G-BIT", | ||||
| +		{ .id = {0xef, 0xba} }, | ||||
| +		SZ_2K, SZ_128, SZ_128K, 0, 2, 64, NAND_ECC_INFO(4, SZ_512), 0}, | ||||
| + | ||||
|  	LEGACY_ID_NAND("NAND 4MiB 5V 8-bit",   0x6B, 4, SZ_8K, SP_OPTIONS), | ||||
|  	LEGACY_ID_NAND("NAND 4MiB 3,3V 8-bit", 0xE3, 4, SZ_8K, SP_OPTIONS), | ||||
|  	LEGACY_ID_NAND("NAND 4MiB 3,3V 8-bit", 0xE5, 4, SZ_8K, SP_OPTIONS), | ||||
|  	{NULL} | ||||
|  }; | ||||
|   | ||||
|   | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user