Linux Audio

Check our new training course

Embedded Linux training

Mar 10-20, 2025, special US time zones
Register
Loading...
Note: File does not exist in v5.9.
  1// SPDX-License-Identifier: GPL-2.0 OR MIT
  2/*
  3 * Copyright (C) 2021 StarFive Technology Co., Ltd.
  4 * Copyright (C) 2021 Emil Renner Berthing <kernel@esmil.dk>
  5 */
  6
  7/dts-v1/;
  8#include "jh7100.dtsi"
  9#include <dt-bindings/gpio/gpio.h>
 10#include <dt-bindings/leds/common.h>
 11#include <dt-bindings/pinctrl/pinctrl-starfive-jh7100.h>
 12
 13/ {
 14	aliases {
 15		mmc0 = &sdio0;
 16		mmc1 = &sdio1;
 17		serial0 = &uart3;
 18	};
 19
 20	chosen {
 21		stdout-path = "serial0:115200n8";
 22	};
 23
 24	cpus {
 25		timebase-frequency = <6250000>;
 26	};
 27
 28	memory@80000000 {
 29		device_type = "memory";
 30		reg = <0x0 0x80000000 0x2 0x0>;
 31	};
 32
 33	leds {
 34		compatible = "gpio-leds";
 35
 36		led-ack {
 37			gpios = <&gpio 43 GPIO_ACTIVE_HIGH>;
 38			color = <LED_COLOR_ID_GREEN>;
 39			function = LED_FUNCTION_HEARTBEAT;
 40			linux,default-trigger = "heartbeat";
 41			label = "ack";
 42		};
 43	};
 44
 45	reserved-memory {
 46		#address-cells = <2>;
 47		#size-cells = <2>;
 48		ranges;
 49
 50		dma-reserved@fa000000 {
 51			reg = <0x0 0xfa000000 0x0 0x1000000>;
 52			no-map;
 53		};
 54
 55		linux,dma@107a000000 {
 56			compatible = "shared-dma-pool";
 57			reg = <0x10 0x7a000000 0x0 0x1000000>;
 58			no-map;
 59			linux,dma-default;
 60		};
 61	};
 62
 63	soc {
 64		dma-ranges = <0x00 0x80000000 0x00 0x80000000 0x00 0x7a000000>,
 65			     <0x00 0xfa000000 0x10 0x7a000000 0x00 0x01000000>,
 66			     <0x00 0xfb000000 0x00 0xfb000000 0x07 0x85000000>;
 67	};
 68
 69	wifi_pwrseq: wifi-pwrseq {
 70		compatible = "mmc-pwrseq-simple";
 71		reset-gpios = <&gpio 37 GPIO_ACTIVE_LOW>;
 72	};
 73};
 74
 75&gmac {
 76	pinctrl-names = "default";
 77	pinctrl-0 = <&gmac_pins>;
 78	phy-mode = "rgmii-id";
 79	status = "okay";
 80
 81	mdio: mdio {
 82		#address-cells = <1>;
 83		#size-cells = <0>;
 84		compatible = "snps,dwmac-mdio";
 85	};
 86};
 87
 88&gpio {
 89	gmac_pins: gmac-0 {
 90		gtxclk-pins {
 91			pins = <PAD_FUNC_SHARE(115)>;
 92			bias-pull-up;
 93			drive-strength = <35>;
 94			input-enable;
 95			input-schmitt-enable;
 96			slew-rate = <0>;
 97		};
 98		miitxclk-pins {
 99			pins = <PAD_FUNC_SHARE(116)>;
100			bias-pull-up;
101			drive-strength = <14>;
102			input-enable;
103			input-schmitt-disable;
104			slew-rate = <0>;
105		};
106		tx-pins {
107			pins = <PAD_FUNC_SHARE(117)>,
108			       <PAD_FUNC_SHARE(119)>,
109			       <PAD_FUNC_SHARE(120)>,
110			       <PAD_FUNC_SHARE(121)>,
111			       <PAD_FUNC_SHARE(122)>,
112			       <PAD_FUNC_SHARE(123)>,
113			       <PAD_FUNC_SHARE(124)>,
114			       <PAD_FUNC_SHARE(125)>,
115			       <PAD_FUNC_SHARE(126)>;
116			bias-pull-up;
117			drive-strength = <35>;
118			input-disable;
119			input-schmitt-disable;
120			slew-rate = <0>;
121		};
122		rxclk-pins {
123			pins = <PAD_FUNC_SHARE(127)>;
124			bias-pull-up;
125			drive-strength = <14>;
126			input-enable;
127			input-schmitt-disable;
128			slew-rate = <6>;
129		};
130		rxer-pins {
131			pins = <PAD_FUNC_SHARE(129)>;
132			bias-pull-up;
133			drive-strength = <14>;
134			input-enable;
135			input-schmitt-disable;
136			slew-rate = <0>;
137		};
138		rx-pins {
139			pins = <PAD_FUNC_SHARE(128)>,
140			       <PAD_FUNC_SHARE(130)>,
141			       <PAD_FUNC_SHARE(131)>,
142			       <PAD_FUNC_SHARE(132)>,
143			       <PAD_FUNC_SHARE(133)>,
144			       <PAD_FUNC_SHARE(134)>,
145			       <PAD_FUNC_SHARE(135)>,
146			       <PAD_FUNC_SHARE(136)>,
147			       <PAD_FUNC_SHARE(137)>,
148			       <PAD_FUNC_SHARE(138)>,
149			       <PAD_FUNC_SHARE(139)>,
150			       <PAD_FUNC_SHARE(140)>,
151			       <PAD_FUNC_SHARE(141)>;
152			bias-pull-up;
153			drive-strength = <14>;
154			input-enable;
155			input-schmitt-enable;
156			slew-rate = <0>;
157		};
158	};
159
160	i2c0_pins: i2c0-0 {
161		i2c-pins {
162			pinmux = <GPIOMUX(62, GPO_LOW,
163				  GPO_I2C0_PAD_SCK_OEN,
164				  GPI_I2C0_PAD_SCK_IN)>,
165				 <GPIOMUX(61, GPO_LOW,
166				  GPO_I2C0_PAD_SDA_OEN,
167				  GPI_I2C0_PAD_SDA_IN)>;
168			bias-disable; /* external pull-up */
169			input-enable;
170			input-schmitt-enable;
171		};
172	};
173
174	i2c1_pins: i2c1-0 {
175		i2c-pins {
176			pinmux = <GPIOMUX(47, GPO_LOW,
177				  GPO_I2C1_PAD_SCK_OEN,
178				  GPI_I2C1_PAD_SCK_IN)>,
179				 <GPIOMUX(48, GPO_LOW,
180				  GPO_I2C1_PAD_SDA_OEN,
181				  GPI_I2C1_PAD_SDA_IN)>;
182			bias-pull-up;
183			input-enable;
184			input-schmitt-enable;
185		};
186	};
187
188	i2c2_pins: i2c2-0 {
189		i2c-pins {
190			pinmux = <GPIOMUX(60, GPO_LOW,
191				  GPO_I2C2_PAD_SCK_OEN,
192				  GPI_I2C2_PAD_SCK_IN)>,
193				 <GPIOMUX(59, GPO_LOW,
194				  GPO_I2C2_PAD_SDA_OEN,
195				  GPI_I2C2_PAD_SDA_IN)>;
196			bias-disable; /* external pull-up */
197			input-enable;
198			input-schmitt-enable;
199		};
200	};
201
202	pwm_pins: pwm-0 {
203		pwm-pins {
204			pinmux = <GPIOMUX(7,
205				  GPO_PWM_PAD_OUT_BIT0,
206				  GPO_PWM_PAD_OE_N_BIT0,
207				  GPI_NONE)>,
208				 <GPIOMUX(5,
209				  GPO_PWM_PAD_OUT_BIT1,
210				  GPO_PWM_PAD_OE_N_BIT1,
211				  GPI_NONE)>;
212			bias-disable;
213			drive-strength = <35>;
214			input-disable;
215			input-schmitt-disable;
216			slew-rate = <0>;
217		};
218	};
219
220	sdio0_pins: sdio0-0 {
221		clk-pins {
222			pinmux = <GPIOMUX(54, GPO_SDIO0_PAD_CCLK_OUT,
223				  GPO_ENABLE, GPI_NONE)>;
224			bias-disable;
225			input-disable;
226			input-schmitt-disable;
227		};
228		sdio-pins {
229			pinmux = <GPIOMUX(55, GPO_LOW, GPO_DISABLE,
230				  GPI_SDIO0_PAD_CARD_DETECT_N)>,
231				 <GPIOMUX(53,
232				  GPO_SDIO0_PAD_CCMD_OUT,
233				  GPO_SDIO0_PAD_CCMD_OEN,
234				  GPI_SDIO0_PAD_CCMD_IN)>,
235				 <GPIOMUX(49,
236				  GPO_SDIO0_PAD_CDATA_OUT_BIT0,
237				  GPO_SDIO0_PAD_CDATA_OEN_BIT0,
238				  GPI_SDIO0_PAD_CDATA_IN_BIT0)>,
239				 <GPIOMUX(50,
240				  GPO_SDIO0_PAD_CDATA_OUT_BIT1,
241				  GPO_SDIO0_PAD_CDATA_OEN_BIT1,
242				  GPI_SDIO0_PAD_CDATA_IN_BIT1)>,
243				 <GPIOMUX(51,
244				  GPO_SDIO0_PAD_CDATA_OUT_BIT2,
245				  GPO_SDIO0_PAD_CDATA_OEN_BIT2,
246				  GPI_SDIO0_PAD_CDATA_IN_BIT2)>,
247				 <GPIOMUX(52,
248				  GPO_SDIO0_PAD_CDATA_OUT_BIT3,
249				  GPO_SDIO0_PAD_CDATA_OEN_BIT3,
250				  GPI_SDIO0_PAD_CDATA_IN_BIT3)>;
251			bias-pull-up;
252			input-enable;
253			input-schmitt-enable;
254		};
255	};
256
257	sdio1_pins: sdio1-0 {
258		clk-pins {
259			pinmux = <GPIOMUX(33, GPO_SDIO1_PAD_CCLK_OUT,
260				  GPO_ENABLE, GPI_NONE)>;
261			bias-disable;
262			input-disable;
263			input-schmitt-disable;
264		};
265		sdio-pins {
266			pinmux = <GPIOMUX(29,
267				  GPO_SDIO1_PAD_CCMD_OUT,
268				  GPO_SDIO1_PAD_CCMD_OEN,
269				  GPI_SDIO1_PAD_CCMD_IN)>,
270				 <GPIOMUX(36,
271				  GPO_SDIO1_PAD_CDATA_OUT_BIT0,
272				  GPO_SDIO1_PAD_CDATA_OEN_BIT0,
273				  GPI_SDIO1_PAD_CDATA_IN_BIT0)>,
274				 <GPIOMUX(30,
275				  GPO_SDIO1_PAD_CDATA_OUT_BIT1,
276				  GPO_SDIO1_PAD_CDATA_OEN_BIT1,
277				  GPI_SDIO1_PAD_CDATA_IN_BIT1)>,
278				 <GPIOMUX(34,
279				  GPO_SDIO1_PAD_CDATA_OUT_BIT2,
280				  GPO_SDIO1_PAD_CDATA_OEN_BIT2,
281				  GPI_SDIO1_PAD_CDATA_IN_BIT2)>,
282				 <GPIOMUX(31,
283				  GPO_SDIO1_PAD_CDATA_OUT_BIT3,
284				  GPO_SDIO1_PAD_CDATA_OEN_BIT3,
285				  GPI_SDIO1_PAD_CDATA_IN_BIT3)>;
286			bias-pull-up;
287			input-enable;
288			input-schmitt-enable;
289		};
290	};
291
292	uart3_pins: uart3-0 {
293		rx-pins {
294			pinmux = <GPIOMUX(13, GPO_LOW, GPO_DISABLE,
295				  GPI_UART3_PAD_SIN)>;
296			bias-pull-up;
297			drive-strength = <14>;
298			input-enable;
299			input-schmitt-enable;
300			slew-rate = <0>;
301		};
302		tx-pins {
303			pinmux = <GPIOMUX(14, GPO_UART3_PAD_SOUT,
304				  GPO_ENABLE, GPI_NONE)>;
305			bias-disable;
306			drive-strength = <35>;
307			input-disable;
308			input-schmitt-disable;
309			slew-rate = <0>;
310		};
311	};
312};
313
314&i2c0 {
315	clock-frequency = <100000>;
316	i2c-sda-hold-time-ns = <300>;
317	i2c-sda-falling-time-ns = <500>;
318	i2c-scl-falling-time-ns = <500>;
319	pinctrl-names = "default";
320	pinctrl-0 = <&i2c0_pins>;
321	status = "okay";
322
323	pmic@5e {
324		compatible = "ti,tps65086";
325		reg = <0x5e>;
326		gpio-controller;
327		#gpio-cells = <2>;
328
329		regulators {
330		};
331	};
332};
333
334&i2c1 {
335	clock-frequency = <400000>;
336	i2c-sda-hold-time-ns = <300>;
337	i2c-sda-falling-time-ns = <100>;
338	i2c-scl-falling-time-ns = <100>;
339	pinctrl-names = "default";
340	pinctrl-0 = <&i2c1_pins>;
341	status = "okay";
342};
343
344&i2c2 {
345	clock-frequency = <100000>;
346	i2c-sda-hold-time-ns = <300>;
347	i2c-sda-falling-time-ns = <500>;
348	i2c-scl-falling-time-ns = <500>;
349	pinctrl-names = "default";
350	pinctrl-0 = <&i2c2_pins>;
351	status = "okay";
352};
353
354&osc_sys {
355	clock-frequency = <25000000>;
356};
357
358&osc_aud {
359	clock-frequency = <27000000>;
360};
361
362&pwm {
363	pinctrl-names = "default";
364	pinctrl-0 = <&pwm_pins>;
365	status = "okay";
366};
367
368&sdio0 {
369	broken-cd;
370	bus-width = <4>;
371	cap-sd-highspeed;
372	pinctrl-names = "default";
373	pinctrl-0 = <&sdio0_pins>;
374	status = "okay";
375};
376
377&sdio1 {
378	#address-cells = <1>;
379	#size-cells = <0>;
380	bus-width = <4>;
381	cap-sd-highspeed;
382	cap-sdio-irq;
383	cap-power-off-card;
384	mmc-pwrseq = <&wifi_pwrseq>;
385	non-removable;
386	pinctrl-names = "default";
387	pinctrl-0 = <&sdio1_pins>;
388	status = "okay";
389
390	wifi@1 {
391		compatible = "brcm,bcm4329-fmac";
392		reg = <1>;
393	};
394};
395
396&uart3 {
397	pinctrl-names = "default";
398	pinctrl-0 = <&uart3_pins>;
399	status = "okay";
400};