162306a36Sopenharmony_ci// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * sc7280 fragment for devices with Chrome bootloader
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * This file mainly tries to abstract out the memory protections put into
662306a36Sopenharmony_ci * place by the Chrome bootloader which are different than what's put into
762306a36Sopenharmony_ci * place by Qualcomm's typical bootloader. It also has a smattering of other
862306a36Sopenharmony_ci * things that will hold true for any conceivable Chrome design
962306a36Sopenharmony_ci *
1062306a36Sopenharmony_ci * Copyright 2022 Google LLC.
1162306a36Sopenharmony_ci */
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci/*
1462306a36Sopenharmony_ci * Reserved memory changes
1562306a36Sopenharmony_ci *
1662306a36Sopenharmony_ci * Delete all unused memory nodes and define the peripheral memory regions
1762306a36Sopenharmony_ci * required by the setup for Chrome boards.
1862306a36Sopenharmony_ci */
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci/delete-node/ &hyp_mem;
2162306a36Sopenharmony_ci/delete-node/ &xbl_mem;
2262306a36Sopenharmony_ci/delete-node/ &reserved_xbl_uefi_log;
2362306a36Sopenharmony_ci/delete-node/ &sec_apps_mem;
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci/ {
2662306a36Sopenharmony_ci	reserved-memory {
2762306a36Sopenharmony_ci		adsp_mem: memory@86700000 {
2862306a36Sopenharmony_ci			reg = <0x0 0x86700000 0x0 0x2800000>;
2962306a36Sopenharmony_ci			no-map;
3062306a36Sopenharmony_ci		};
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci		camera_mem: memory@8ad00000 {
3362306a36Sopenharmony_ci			reg = <0x0 0x8ad00000 0x0 0x500000>;
3462306a36Sopenharmony_ci			no-map;
3562306a36Sopenharmony_ci		};
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci		venus_mem: memory@8b200000 {
3862306a36Sopenharmony_ci			reg = <0x0 0x8b200000 0x0 0x500000>;
3962306a36Sopenharmony_ci			no-map;
4062306a36Sopenharmony_ci		};
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci		wpss_mem: memory@9ae00000 {
4362306a36Sopenharmony_ci			reg = <0x0 0x9ae00000 0x0 0x1900000>;
4462306a36Sopenharmony_ci			no-map;
4562306a36Sopenharmony_ci		};
4662306a36Sopenharmony_ci	};
4762306a36Sopenharmony_ci};
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci&lpass_aon {
5062306a36Sopenharmony_ci	status = "okay";
5162306a36Sopenharmony_ci};
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ci&lpass_core {
5462306a36Sopenharmony_ci	status = "okay";
5562306a36Sopenharmony_ci};
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci&lpass_hm {
5862306a36Sopenharmony_ci	status = "okay";
5962306a36Sopenharmony_ci};
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ci&lpasscc {
6262306a36Sopenharmony_ci	status = "okay";
6362306a36Sopenharmony_ci};
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ci&pdc_reset {
6662306a36Sopenharmony_ci	status = "okay";
6762306a36Sopenharmony_ci};
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci/* The PMIC PON code isn't compatible w/ how Chrome EC/BIOS handle things. */
7062306a36Sopenharmony_ci&pmk8350_pon {
7162306a36Sopenharmony_ci	status = "disabled";
7262306a36Sopenharmony_ci};
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ci/*
7562306a36Sopenharmony_ci * Chrome designs always boot from SPI flash hooked up to the qspi.
7662306a36Sopenharmony_ci *
7762306a36Sopenharmony_ci * It's expected that all boards will support "dual SPI" at 37.5 MHz.
7862306a36Sopenharmony_ci * If some boards need a different speed or have a package that allows
7962306a36Sopenharmony_ci * Quad SPI together with WP then those boards can easily override.
8062306a36Sopenharmony_ci */
8162306a36Sopenharmony_ci&qspi {
8262306a36Sopenharmony_ci	status = "okay";
8362306a36Sopenharmony_ci	pinctrl-names = "default", "sleep";
8462306a36Sopenharmony_ci	pinctrl-0 = <&qspi_clk>, <&qspi_cs0>, <&qspi_data0>, <&qspi_data1>;
8562306a36Sopenharmony_ci	pinctrl-1 = <&qspi_sleep>;
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ci	spi_flash: flash@0 {
8862306a36Sopenharmony_ci		compatible = "jedec,spi-nor";
8962306a36Sopenharmony_ci		reg = <0>;
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ci		spi-max-frequency = <37500000>;
9262306a36Sopenharmony_ci		spi-tx-bus-width = <2>;
9362306a36Sopenharmony_ci		spi-rx-bus-width = <2>;
9462306a36Sopenharmony_ci	};
9562306a36Sopenharmony_ci};
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ci&remoteproc_wpss {
9862306a36Sopenharmony_ci	status = "okay";
9962306a36Sopenharmony_ci	firmware-name = "ath11k/WCN6750/hw1.0/wpss.mdt";
10062306a36Sopenharmony_ci};
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ci&scm {
10362306a36Sopenharmony_ci	/* TF-A firmware maps memory cached so mark dma-coherent to match. */
10462306a36Sopenharmony_ci	dma-coherent;
10562306a36Sopenharmony_ci};
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_ci&watchdog {
10862306a36Sopenharmony_ci	status = "okay";
10962306a36Sopenharmony_ci};
11062306a36Sopenharmony_ci
11162306a36Sopenharmony_ci&wifi {
11262306a36Sopenharmony_ci	status = "okay";
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_ci	wifi-firmware {
11562306a36Sopenharmony_ci		iommus = <&apps_smmu 0x1c02 0x1>;
11662306a36Sopenharmony_ci	};
11762306a36Sopenharmony_ci};
11862306a36Sopenharmony_ci
11962306a36Sopenharmony_ci/* PINCTRL - chrome-common pinctrl */
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ci&tlmm {
12262306a36Sopenharmony_ci	qspi_sleep: qspi-sleep-state {
12362306a36Sopenharmony_ci		pins = "gpio12", "gpio13", "gpio14", "gpio15";
12462306a36Sopenharmony_ci
12562306a36Sopenharmony_ci		/*
12662306a36Sopenharmony_ci		 * When we're not actively transferring we want pins as GPIOs
12762306a36Sopenharmony_ci		 * with output disabled so that the quad SPI IP block stops
12862306a36Sopenharmony_ci		 * driving them. We rely on the normal pulls configured in
12962306a36Sopenharmony_ci		 * the active state and don't redefine them here. Also note
13062306a36Sopenharmony_ci		 * that we don't need the reverse (output-enable) in the
13162306a36Sopenharmony_ci		 * normal mode since the "output-enable" only matters for
13262306a36Sopenharmony_ci		 * GPIO function.
13362306a36Sopenharmony_ci		 */
13462306a36Sopenharmony_ci		function = "gpio";
13562306a36Sopenharmony_ci		output-disable;
13662306a36Sopenharmony_ci	};
13762306a36Sopenharmony_ci};
138