1// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
2/*
3 * Copyright (C) 2023 DH electronics GmbH
4 */
5
6#include <dt-bindings/clock/imx6ul-clock.h>
7#include <dt-bindings/gpio/gpio.h>
8#include <dt-bindings/input/input.h>
9#include <dt-bindings/leds/common.h>
10#include <dt-bindings/pwm/pwm.h>
11#include <dt-bindings/regulator/dlg,da9063-regulator.h>
12#include "imx6ull.dtsi"
13
14/ {
15	aliases {
16		/delete-property/ mmc0;
17		/delete-property/ mmc1;
18	};
19
20	memory@80000000 {
21		/* Appropriate memory size will be filled by U-Boot */
22		reg = <0x80000000 0>;
23		device_type = "memory";
24	};
25};
26
27&cpu0 {
28	/*
29	 * Due to the design as a solderable SOM, there are no capacitors
30	 * below the SoC, therefore higher voltages are required.
31	 * Due to CPU lifetime consideration of the SoC manufacturer and
32	 * the preferred area of operation in the industrial related
33	 * environment, set the maximum frequency for each DHCOM i.MX6ULL
34	 * to 792MHz, as with the industrial type.
35	 */
36	clock-frequency = <792000000>;
37	operating-points = <
38		/* kHz	uV */
39		792000	1250000 /* Voltage increased */
40		528000	1175000
41		396000	1025000
42		198000	950000
43	>;
44	fsl,soc-operating-points = <
45		/* KHz	uV */
46		792000	1250000 /* Voltage increased */
47		528000	1175000
48		396000	1175000
49		198000	1175000
50	>;
51};
52
53&gpio1 {
54	pinctrl-0 = <&pinctrl_spi1_switch>;
55	pinctrl-names = "default";
56	/*
57	 * Pin SPI_BOOT_FLASH_EN (GPIO 1.9) is a switch for either using the
58	 * DHCOM SPI1 interface or accessing the SPI bootflash. Both using
59	 * ecspi1, but muxed to different pins. The DHCOM SPI1 interface uses
60	 * the pins PAD_LCD_DATA21..23 and the SPI bootflash uses the pins
61	 * PAD_CSI_DATA04..07. If the SPI bootflash is enabled the pins for
62	 * DHCOM GPIOs N/O/P/Q/R/S/T/U aren't usable anymore, because they
63	 * are used for the bus interface to the SPI bootflash. The GPIOs are
64	 * disconnected by a buffer which is also controlled via the pin
65	 * SPI_BOOT_FLASH_EN. Therefore the access to the bootflash is a
66	 * special case and is disabled by setting GPIO 1.9 to high.
67	 */
68	spi1-switch-hog {
69		gpio-hog;
70		gpios = <9 0>;
71		output-high;
72		line-name = "spi1-switch";
73	};
74};
75
76&i2c1 {
77	clock-frequency = <100000>;
78	pinctrl-0 = <&pinctrl_i2c1>;
79	pinctrl-1 = <&pinctrl_i2c1_gpio>;
80	pinctrl-names = "default", "gpio";
81	scl-gpios = <&gpio1 28 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
82	sda-gpios = <&gpio1 29 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
83	status = "okay";
84
85	pmic@58 {
86		compatible = "dlg,da9061";
87		reg = <0x58>;
88
89		onkey {
90			compatible = "dlg,da9061-onkey", "dlg,da9062-onkey";
91			status = "disabled";
92		};
93
94		regulators {
95			vdd_soc_in_1v4: buck1 {
96				regulator-allowed-modes = <DA9063_BUCK_MODE_SLEEP>; /* PFM */
97				regulator-always-on;
98				regulator-boot-on;
99				regulator-initial-mode = <DA9063_BUCK_MODE_SLEEP>;
100				regulator-max-microvolt = <1400000>;
101				regulator-min-microvolt = <1400000>;
102				regulator-name = "vdd_soc_in_1v4";
103			};
104
105			vcc_3v3: buck2 {
106				regulator-allowed-modes = <DA9063_BUCK_MODE_SYNC>; /* PWM */
107				regulator-always-on;
108				regulator-boot-on;
109				regulator-initial-mode = <DA9063_BUCK_MODE_SYNC>;
110				regulator-max-microvolt = <3300000>;
111				regulator-min-microvolt = <3300000>;
112				regulator-name = "vcc_3v3";
113			};
114
115			/*
116			 * The current DRR3 memory can be supplied with a
117			 * voltage of either 1.35V or 1.5V. For reasons of
118			 * backward compatibility to only 1.5V DDR3 memory,
119			 * the voltage is set to 1.5V.
120			 */
121			vcc_ddr_1v35: buck3 {
122				regulator-allowed-modes = <DA9063_BUCK_MODE_SYNC>; /* PWM */
123				regulator-always-on;
124				regulator-boot-on;
125				regulator-initial-mode = <DA9063_BUCK_MODE_SYNC>;
126				regulator-max-microvolt = <1500000>;
127				regulator-min-microvolt = <1500000>;
128				regulator-name = "vcc_ddr_1v35";
129			};
130
131			vcc_2v5: ldo1 {
132				regulator-always-on;
133				regulator-boot-on;
134				regulator-max-microvolt = <2500000>;
135				regulator-min-microvolt = <2500000>;
136				regulator-name = "vcc_2v5";
137			};
138
139			vdd_snvs_in_3v3: ldo2 {
140				regulator-always-on;
141				regulator-boot-on;
142				regulator-max-microvolt = <3300000>;
143				regulator-min-microvolt = <3300000>;
144				regulator-name = "vdd_snvs_in_3v3";
145			};
146
147			vcc_1v8: ldo3 {
148				regulator-always-on;
149				regulator-boot-on;
150				regulator-max-microvolt = <1800000>;
151				regulator-min-microvolt = <1800000>;
152				regulator-name = "vcc_1v8";
153			};
154
155			vcc_1v2: ldo4 {
156				regulator-always-on;
157				regulator-boot-on;
158				regulator-max-microvolt = <1200000>;
159				regulator-min-microvolt = <1200000>;
160				regulator-name = "vcc_1v2";
161			};
162		};
163
164		thermal {
165			compatible = "dlg,da9061-thermal", "dlg,da9062-thermal";
166			status = "disabled";
167		};
168
169		watchdog {
170			compatible = "dlg,da9061-watchdog", "dlg,da9062-watchdog";
171			status = "disabled";
172		};
173	};
174};
175
176&ocotp {
177	/* Don't get write access by default */
178	read-only;
179};
180
181&reg_arm {
182	vin-supply = <&vdd_soc_in_1v4>;
183};
184
185&reg_soc {
186	vin-supply = <&vdd_soc_in_1v4>;
187};
188
189/* BT on LGA (BT_REG_ON is connected to LGA pin E1) */
190&uart2 {
191	pinctrl-0 = <&pinctrl_uart2>;
192	pinctrl-names = "default";
193	uart-has-rtscts;
194	status = "okay";
195
196	/*
197	 * Actually, the maximum speed of the chip is 4MBdps, but there are
198	 * limitations that prevent this speed. It hasn't yet been figured out
199	 * what the reason for this is. Currently, the maximum speed of 3MBdps
200	 * can be used without any problems. If the limitation can be overcome,
201	 * the speed can be increased accordingly.
202	 */
203	bluetooth: bluetooth {
204		compatible = "brcm,bcm43430a1-bt"; /* muRata 1DX */
205		max-speed = <3000000>;
206		vbat-supply = <&vcc_3v3>;
207		vddio-supply = <&vcc_3v3>;
208	};
209};
210
211/* WiFi on LGA (WL_REG_ON is connected to LGA pin E3) */
212&usdhc1 {
213	#address-cells = <1>;
214	#size-cells = <0>;
215	bus-width = <4>;
216	no-1-8-v;
217	non-removable;
218	keep-power-in-suspend;
219	pinctrl-0 = <&pinctrl_usdhc1_wifi>;
220	pinctrl-names = "default";
221	wakeup-source;
222	status = "okay";
223
224	brcmf: wifi@1 {
225		compatible = "brcm,bcm43430a1-fmac", "brcm,bcm4329-fmac"; /* muRata 1DX */
226		reg = <1>;
227	};
228};
229
230&iomuxc {
231	pinctrl_i2c1: i2c1-grp {
232		fsl,pins = <
233			MX6UL_PAD_UART4_TX_DATA__I2C1_SCL	0x4001b8b0
234			MX6UL_PAD_UART4_RX_DATA__I2C1_SDA	0x4001b8b0
235		>;
236	};
237
238	pinctrl_i2c1_gpio: i2c1-gpio-grp {
239		fsl,pins = <
240			MX6UL_PAD_UART4_TX_DATA__GPIO1_IO28	0x4001b8b0
241			MX6UL_PAD_UART4_RX_DATA__GPIO1_IO29	0x4001b8b0
242		>;
243	};
244
245	pinctrl_spi1_switch: spi1-switch-grp {
246		fsl,pins = <
247			MX6UL_PAD_GPIO1_IO09__GPIO1_IO09	0x120b0 /* SPI_BOOT_FLASH_EN */
248		>;
249	};
250
251	pinctrl_uart2: uart2-grp {
252		fsl,pins = <
253			MX6UL_PAD_UART2_TX_DATA__UART2_DCE_TX	0x1b0b1
254			MX6UL_PAD_UART2_RX_DATA__UART2_DCE_RX	0x1b0b1
255			MX6UL_PAD_UART3_RX_DATA__UART2_DCE_RTS	0x1b0b1
256			MX6UL_PAD_UART3_TX_DATA__UART2_DCE_CTS	0x1b0b1
257		>;
258	};
259
260	pinctrl_usdhc1_wifi: usdhc1-wifi-grp {
261		fsl,pins = <
262			MX6UL_PAD_SD1_CMD__USDHC1_CMD		0x1b0b0
263			MX6UL_PAD_SD1_CLK__USDHC1_CLK		0x10010
264			MX6UL_PAD_SD1_DATA0__USDHC1_DATA0	0x1b0b0
265			MX6UL_PAD_SD1_DATA1__USDHC1_DATA1	0x1b0b0
266			MX6UL_PAD_SD1_DATA2__USDHC1_DATA2	0x1b0b0
267			MX6UL_PAD_SD1_DATA3__USDHC1_DATA3	0x1b0b0
268		>;
269	};
270};
271