181 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			181 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
 | |
| /*
 | |
|  * sc7280 fragment for devices with Chrome bootloader
 | |
|  *
 | |
|  * This file mainly tries to abstract out the memory protections put into
 | |
|  * place by the Chrome bootloader which are different than what's put into
 | |
|  * place by Qualcomm's typical bootloader. It also has a smattering of other
 | |
|  * things that will hold true for any conceivable Chrome design
 | |
|  *
 | |
|  * Copyright 2022 Google LLC.
 | |
|  */
 | |
| 
 | |
| /*
 | |
|  * Reserved memory changes
 | |
|  *
 | |
|  * Delete all unused memory nodes and define the peripheral memory regions
 | |
|  * required by the setup for Chrome boards.
 | |
|  */
 | |
| 
 | |
| /delete-node/ &cdsp_mem;
 | |
| /delete-node/ &domain_idle_states;
 | |
| /delete-node/ &gpu_zap_mem;
 | |
| /delete-node/ &gpu_zap_shader;
 | |
| /delete-node/ &hyp_mem;
 | |
| /delete-node/ &xbl_mem;
 | |
| /delete-node/ &reserved_xbl_uefi_log;
 | |
| /delete-node/ &sec_apps_mem;
 | |
| 
 | |
| / {
 | |
| 	cpus {
 | |
| 		domain_idle_states: domain-idle-states {
 | |
| 			CLUSTER_SLEEP_0: cluster-sleep-0 {
 | |
| 				compatible = "domain-idle-state";
 | |
| 				arm,psci-suspend-param = <0x40003444>;
 | |
| 				entry-latency-us = <2752>;
 | |
| 				exit-latency-us = <6562>;
 | |
| 				min-residency-us = <9926>;
 | |
| 			};
 | |
| 		};
 | |
| 	};
 | |
| 
 | |
| 	reserved-memory {
 | |
| 		camera_mem: memory@8ad00000 {
 | |
| 			reg = <0x0 0x8ad00000 0x0 0x500000>;
 | |
| 			no-map;
 | |
| 		};
 | |
| 
 | |
| 		venus_mem: memory@8b200000 {
 | |
| 			reg = <0x0 0x8b200000 0x0 0x500000>;
 | |
| 			no-map;
 | |
| 		};
 | |
| 	};
 | |
| };
 | |
| 
 | |
| &CLUSTER_PD {
 | |
| 	domain-idle-states = <&CLUSTER_SLEEP_0>;
 | |
| };
 | |
| 
 | |
| &lpass_aon {
 | |
| 	status = "okay";
 | |
| };
 | |
| 
 | |
| &lpass_core {
 | |
| 	status = "okay";
 | |
| };
 | |
| 
 | |
| &lpass_hm {
 | |
| 	status = "okay";
 | |
| };
 | |
| 
 | |
| &lpasscc {
 | |
| 	status = "okay";
 | |
| };
 | |
| 
 | |
| &pdc_reset {
 | |
| 	status = "okay";
 | |
| };
 | |
| 
 | |
| /* The PMIC PON code isn't compatible w/ how Chrome EC/BIOS handle things. */
 | |
| &pmk8350_pon {
 | |
| 	status = "disabled";
 | |
| };
 | |
| 
 | |
| /*
 | |
|  * Chrome designs always boot from SPI flash hooked up to the qspi.
 | |
|  *
 | |
|  * It's expected that all boards will support "dual SPI" at 37.5 MHz.
 | |
|  * If some boards need a different speed or have a package that allows
 | |
|  * Quad SPI together with WP then those boards can easily override.
 | |
|  */
 | |
| &qspi {
 | |
| 	status = "okay";
 | |
| 	pinctrl-names = "default", "sleep";
 | |
| 	pinctrl-0 = <&qspi_clk>, <&qspi_cs0>, <&qspi_data0>, <&qspi_data1>;
 | |
| 	pinctrl-1 = <&qspi_sleep>;
 | |
| 
 | |
| 	spi_flash: flash@0 {
 | |
| 		compatible = "jedec,spi-nor";
 | |
| 		reg = <0>;
 | |
| 
 | |
| 		spi-max-frequency = <37500000>;
 | |
| 		spi-tx-bus-width = <2>;
 | |
| 		spi-rx-bus-width = <2>;
 | |
| 	};
 | |
| };
 | |
| 
 | |
| /* Currently not used */
 | |
| &remoteproc_cdsp {
 | |
| 	/delete-property/ memory-region;
 | |
| };
 | |
| 
 | |
| &remoteproc_wpss {
 | |
| 	compatible = "qcom,sc7280-wpss-pil";
 | |
| 	clocks = <&gcc GCC_WPSS_AHB_BDG_MST_CLK>,
 | |
| 		 <&gcc GCC_WPSS_AHB_CLK>,
 | |
| 		 <&gcc GCC_WPSS_RSCP_CLK>,
 | |
| 		 <&rpmhcc RPMH_CXO_CLK>;
 | |
| 	clock-names = "ahb_bdg",
 | |
| 		      "ahb",
 | |
| 		      "rscp",
 | |
| 		      "xo";
 | |
| 
 | |
| 	resets = <&aoss_reset AOSS_CC_WCSS_RESTART>,
 | |
| 		 <&pdc_reset PDC_WPSS_SYNC_RESET>;
 | |
| 	reset-names = "restart", "pdc_sync";
 | |
| 
 | |
| 	qcom,halt-regs = <&tcsr_1 0x17000>;
 | |
| 
 | |
| 	firmware-name = "ath11k/WCN6750/hw1.0/wpss.mdt";
 | |
| 
 | |
| 	status = "okay";
 | |
| };
 | |
| 
 | |
| &scm {
 | |
| 	/* TF-A firmware maps memory cached so mark dma-coherent to match. */
 | |
| 	dma-coherent;
 | |
| };
 | |
| 
 | |
| &venus {
 | |
| 	iommus = <&apps_smmu 0x2180 0x20>,
 | |
| 		 <&apps_smmu 0x2184 0x20>;
 | |
| 
 | |
| 	status = "okay";
 | |
| 
 | |
| 	video-firmware {
 | |
| 		iommus = <&apps_smmu 0x21a2 0x0>;
 | |
| 	};
 | |
| };
 | |
| 
 | |
| &watchdog {
 | |
| 	status = "okay";
 | |
| };
 | |
| 
 | |
| &wifi {
 | |
| 	status = "okay";
 | |
| 
 | |
| 	wifi-firmware {
 | |
| 		iommus = <&apps_smmu 0x1c02 0x1>;
 | |
| 	};
 | |
| };
 | |
| 
 | |
| /* PINCTRL - chrome-common pinctrl */
 | |
| 
 | |
| &tlmm {
 | |
| 	qspi_sleep: qspi-sleep-state {
 | |
| 		pins = "gpio12", "gpio13", "gpio14", "gpio15";
 | |
| 
 | |
| 		/*
 | |
| 		 * When we're not actively transferring we want pins as GPIOs
 | |
| 		 * with output disabled so that the quad SPI IP block stops
 | |
| 		 * driving them. We rely on the normal pulls configured in
 | |
| 		 * the active state and don't redefine them here. Also note
 | |
| 		 * that we don't need the reverse (output-enable) in the
 | |
| 		 * normal mode since the "output-enable" only matters for
 | |
| 		 * GPIO function.
 | |
| 		 */
 | |
| 		function = "gpio";
 | |
| 		output-disable;
 | |
| 	};
 | |
| };
 |