xref: /freebsd/sys/contrib/device-tree/src/arm64/qcom/sc7280-chrome-common.dtsi (revision 84943d6f38e936ac3b7a3947ca26eeb27a39f938)
1c9ccf3a3SEmmanuel Vadot// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2c9ccf3a3SEmmanuel Vadot/*
3c9ccf3a3SEmmanuel Vadot * sc7280 fragment for devices with Chrome bootloader
4c9ccf3a3SEmmanuel Vadot *
5c9ccf3a3SEmmanuel Vadot * This file mainly tries to abstract out the memory protections put into
6c9ccf3a3SEmmanuel Vadot * place by the Chrome bootloader which are different than what's put into
7c9ccf3a3SEmmanuel Vadot * place by Qualcomm's typical bootloader. It also has a smattering of other
8c9ccf3a3SEmmanuel Vadot * things that will hold true for any conceivable Chrome design
9c9ccf3a3SEmmanuel Vadot *
10c9ccf3a3SEmmanuel Vadot * Copyright 2022 Google LLC.
11c9ccf3a3SEmmanuel Vadot */
12c9ccf3a3SEmmanuel Vadot
13c9ccf3a3SEmmanuel Vadot/*
14c9ccf3a3SEmmanuel Vadot * Reserved memory changes
15c9ccf3a3SEmmanuel Vadot *
16c9ccf3a3SEmmanuel Vadot * Delete all unused memory nodes and define the peripheral memory regions
17c9ccf3a3SEmmanuel Vadot * required by the setup for Chrome boards.
18c9ccf3a3SEmmanuel Vadot */
19c9ccf3a3SEmmanuel Vadot
20c9ccf3a3SEmmanuel Vadot/delete-node/ &hyp_mem;
21c9ccf3a3SEmmanuel Vadot/delete-node/ &xbl_mem;
22c9ccf3a3SEmmanuel Vadot/delete-node/ &reserved_xbl_uefi_log;
23c9ccf3a3SEmmanuel Vadot/delete-node/ &sec_apps_mem;
24c9ccf3a3SEmmanuel Vadot
25c9ccf3a3SEmmanuel Vadot/ {
26c9ccf3a3SEmmanuel Vadot	reserved-memory {
27c9ccf3a3SEmmanuel Vadot		adsp_mem: memory@86700000 {
28c9ccf3a3SEmmanuel Vadot			reg = <0x0 0x86700000 0x0 0x2800000>;
29c9ccf3a3SEmmanuel Vadot			no-map;
30c9ccf3a3SEmmanuel Vadot		};
31c9ccf3a3SEmmanuel Vadot
32c9ccf3a3SEmmanuel Vadot		camera_mem: memory@8ad00000 {
33c9ccf3a3SEmmanuel Vadot			reg = <0x0 0x8ad00000 0x0 0x500000>;
34c9ccf3a3SEmmanuel Vadot			no-map;
35c9ccf3a3SEmmanuel Vadot		};
36c9ccf3a3SEmmanuel Vadot
37c9ccf3a3SEmmanuel Vadot		venus_mem: memory@8b200000 {
38c9ccf3a3SEmmanuel Vadot			reg = <0x0 0x8b200000 0x0 0x500000>;
39c9ccf3a3SEmmanuel Vadot			no-map;
40c9ccf3a3SEmmanuel Vadot		};
41c9ccf3a3SEmmanuel Vadot
42c9ccf3a3SEmmanuel Vadot		wpss_mem: memory@9ae00000 {
43c9ccf3a3SEmmanuel Vadot			reg = <0x0 0x9ae00000 0x0 0x1900000>;
44c9ccf3a3SEmmanuel Vadot			no-map;
45c9ccf3a3SEmmanuel Vadot		};
46c9ccf3a3SEmmanuel Vadot	};
47c9ccf3a3SEmmanuel Vadot};
48c9ccf3a3SEmmanuel Vadot
49*84943d6fSEmmanuel Vadot&lpass_aon {
50*84943d6fSEmmanuel Vadot	status = "okay";
51*84943d6fSEmmanuel Vadot};
52*84943d6fSEmmanuel Vadot
53*84943d6fSEmmanuel Vadot&lpass_core {
54*84943d6fSEmmanuel Vadot	status = "okay";
55*84943d6fSEmmanuel Vadot};
56*84943d6fSEmmanuel Vadot
57*84943d6fSEmmanuel Vadot&lpass_hm {
58*84943d6fSEmmanuel Vadot	status = "okay";
59*84943d6fSEmmanuel Vadot};
60*84943d6fSEmmanuel Vadot
61*84943d6fSEmmanuel Vadot&lpasscc {
62*84943d6fSEmmanuel Vadot	status = "okay";
63*84943d6fSEmmanuel Vadot};
64*84943d6fSEmmanuel Vadot
65*84943d6fSEmmanuel Vadot&pdc_reset {
66*84943d6fSEmmanuel Vadot	status = "okay";
67*84943d6fSEmmanuel Vadot};
68*84943d6fSEmmanuel Vadot
69c9ccf3a3SEmmanuel Vadot/* The PMIC PON code isn't compatible w/ how Chrome EC/BIOS handle things. */
70c9ccf3a3SEmmanuel Vadot&pmk8350_pon {
71c9ccf3a3SEmmanuel Vadot	status = "disabled";
72c9ccf3a3SEmmanuel Vadot};
73c9ccf3a3SEmmanuel Vadot
74c9ccf3a3SEmmanuel Vadot/*
75c9ccf3a3SEmmanuel Vadot * Chrome designs always boot from SPI flash hooked up to the qspi.
76c9ccf3a3SEmmanuel Vadot *
77c9ccf3a3SEmmanuel Vadot * It's expected that all boards will support "dual SPI" at 37.5 MHz.
78c9ccf3a3SEmmanuel Vadot * If some boards need a different speed or have a package that allows
79c9ccf3a3SEmmanuel Vadot * Quad SPI together with WP then those boards can easily override.
80c9ccf3a3SEmmanuel Vadot */
81c9ccf3a3SEmmanuel Vadot&qspi {
82c9ccf3a3SEmmanuel Vadot	status = "okay";
83fac71e4eSEmmanuel Vadot	pinctrl-names = "default", "sleep";
84fac71e4eSEmmanuel Vadot	pinctrl-0 = <&qspi_clk>, <&qspi_cs0>, <&qspi_data0>, <&qspi_data1>;
85fac71e4eSEmmanuel Vadot	pinctrl-1 = <&qspi_sleep>;
86c9ccf3a3SEmmanuel Vadot
87c9ccf3a3SEmmanuel Vadot	spi_flash: flash@0 {
88c9ccf3a3SEmmanuel Vadot		compatible = "jedec,spi-nor";
89c9ccf3a3SEmmanuel Vadot		reg = <0>;
90c9ccf3a3SEmmanuel Vadot
91c9ccf3a3SEmmanuel Vadot		spi-max-frequency = <37500000>;
92c9ccf3a3SEmmanuel Vadot		spi-tx-bus-width = <2>;
93c9ccf3a3SEmmanuel Vadot		spi-rx-bus-width = <2>;
94c9ccf3a3SEmmanuel Vadot	};
95c9ccf3a3SEmmanuel Vadot};
96c9ccf3a3SEmmanuel Vadot
97b97ee269SEmmanuel Vadot&remoteproc_wpss {
98b97ee269SEmmanuel Vadot	status = "okay";
99b97ee269SEmmanuel Vadot	firmware-name = "ath11k/WCN6750/hw1.0/wpss.mdt";
100c9ccf3a3SEmmanuel Vadot};
101c9ccf3a3SEmmanuel Vadot
102fac71e4eSEmmanuel Vadot&scm {
103fac71e4eSEmmanuel Vadot	/* TF-A firmware maps memory cached so mark dma-coherent to match. */
104fac71e4eSEmmanuel Vadot	dma-coherent;
105fac71e4eSEmmanuel Vadot};
106fac71e4eSEmmanuel Vadot
107*84943d6fSEmmanuel Vadot&watchdog {
108*84943d6fSEmmanuel Vadot	status = "okay";
109*84943d6fSEmmanuel Vadot};
110*84943d6fSEmmanuel Vadot
111b97ee269SEmmanuel Vadot&wifi {
112b97ee269SEmmanuel Vadot	status = "okay";
113b97ee269SEmmanuel Vadot
114b97ee269SEmmanuel Vadot	wifi-firmware {
115b97ee269SEmmanuel Vadot		iommus = <&apps_smmu 0x1c02 0x1>;
116b97ee269SEmmanuel Vadot	};
117b97ee269SEmmanuel Vadot};
118fac71e4eSEmmanuel Vadot
119fac71e4eSEmmanuel Vadot/* PINCTRL - chrome-common pinctrl */
120fac71e4eSEmmanuel Vadot
121fac71e4eSEmmanuel Vadot&tlmm {
122fac71e4eSEmmanuel Vadot	qspi_sleep: qspi-sleep-state {
123fac71e4eSEmmanuel Vadot		pins = "gpio12", "gpio13", "gpio14", "gpio15";
124fac71e4eSEmmanuel Vadot
125fac71e4eSEmmanuel Vadot		/*
126fac71e4eSEmmanuel Vadot		 * When we're not actively transferring we want pins as GPIOs
127fac71e4eSEmmanuel Vadot		 * with output disabled so that the quad SPI IP block stops
128fac71e4eSEmmanuel Vadot		 * driving them. We rely on the normal pulls configured in
129fac71e4eSEmmanuel Vadot		 * the active state and don't redefine them here. Also note
130fac71e4eSEmmanuel Vadot		 * that we don't need the reverse (output-enable) in the
131fac71e4eSEmmanuel Vadot		 * normal mode since the "output-enable" only matters for
132fac71e4eSEmmanuel Vadot		 * GPIO function.
133fac71e4eSEmmanuel Vadot		 */
134fac71e4eSEmmanuel Vadot		function = "gpio";
135fac71e4eSEmmanuel Vadot		output-disable;
136fac71e4eSEmmanuel Vadot	};
137fac71e4eSEmmanuel Vadot};
138