xref: /rk3399_ARM-atf/fdts/stm32mp151a-prtt1a.dts (revision d594239d4ebf2d44521bc30ec4b59b23f08c5a36)
13812cebaSDavid Jander// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
23812cebaSDavid Jander/*
33812cebaSDavid Jander * Copyright (C) 2023, Protonic Holland - All Rights Reserved
4*d594239dSLionel Debieve * Copyright (C) 2024, STMicroelectronics - All Rights Reserved
53812cebaSDavid Jander * Author: David Jander <david@protonic.nl>
63812cebaSDavid Jander */
73812cebaSDavid Jander/dts-v1/;
83812cebaSDavid Jander
93812cebaSDavid Jander#include "stm32mp151.dtsi"
103812cebaSDavid Jander#include "stm32mp15-pinctrl.dtsi"
113812cebaSDavid Jander#include "stm32mp15xxad-pinctrl.dtsi"
123812cebaSDavid Jander#include <dt-bindings/clock/stm32mp1-clksrc.h>
133812cebaSDavid Jander#include "stm32mp15-ddr3-1x2Gb-1066-binG.dtsi"
143812cebaSDavid Jander
153812cebaSDavid Jander/ {
163812cebaSDavid Jander	model = "Protonic PRTT1A";
173812cebaSDavid Jander	compatible = "prt,prtt1a", "st,stm32mp151";
183812cebaSDavid Jander
193812cebaSDavid Jander	chosen {
203812cebaSDavid Jander		stdout-path = "serial0:115200n8";
213812cebaSDavid Jander	};
223812cebaSDavid Jander
233812cebaSDavid Jander	aliases {
243812cebaSDavid Jander		mmc0 = &sdmmc1;
253812cebaSDavid Jander		mmc1 = &sdmmc2;
263812cebaSDavid Jander		serial0 = &uart4;
273812cebaSDavid Jander	};
283812cebaSDavid Jander
293812cebaSDavid Jander	memory@c0000000 {
303812cebaSDavid Jander		device_type = "memory";
313812cebaSDavid Jander		reg = <0xC0000000 0x10000000>;
323812cebaSDavid Jander	};
333812cebaSDavid Jander};
343812cebaSDavid Jander
353812cebaSDavid Jander&iwdg2 {
363812cebaSDavid Jander	timeout-sec = <32>;
373812cebaSDavid Jander	status = "okay";
383812cebaSDavid Jander	secure-status = "okay";
393812cebaSDavid Jander};
403812cebaSDavid Jander
413812cebaSDavid Jander&qspi {
423812cebaSDavid Jander	pinctrl-names = "default", "sleep";
434c8e8ea7SYann Gautier	pinctrl-0 = <&qspi_clk_pins_a
444c8e8ea7SYann Gautier		     &qspi_bk1_pins_a
454c8e8ea7SYann Gautier		     &qspi_cs1_pins_a>;
463812cebaSDavid Jander	reg = <0x58003000 0x1000>, <0x70000000 0x4000000>;
473812cebaSDavid Jander	#address-cells = <1>;
483812cebaSDavid Jander	#size-cells = <0>;
493812cebaSDavid Jander	status = "okay";
503812cebaSDavid Jander
513812cebaSDavid Jander	flash@0 {
523812cebaSDavid Jander		compatible = "spi-nand";
533812cebaSDavid Jander		reg = <0>;
543812cebaSDavid Jander		spi-rx-bus-width = <4>;
553812cebaSDavid Jander		spi-max-frequency = <104000000>;
563812cebaSDavid Jander		#address-cells = <1>;
573812cebaSDavid Jander		#size-cells = <1>;
583812cebaSDavid Jander	};
593812cebaSDavid Jander};
603812cebaSDavid Jander
613812cebaSDavid Jander&qspi_bk1_pins_a {
624c8e8ea7SYann Gautier	pins {
633812cebaSDavid Jander		bias-pull-up;
643812cebaSDavid Jander		drive-push-pull;
653812cebaSDavid Jander		slew-rate = <1>;
663812cebaSDavid Jander	};
673812cebaSDavid Jander};
683812cebaSDavid Jander
693812cebaSDavid Jander&rcc {
703812cebaSDavid Jander	st,clksrc = <
713812cebaSDavid Jander		CLK_MPU_PLL1P
723812cebaSDavid Jander		CLK_AXI_PLL2P
733812cebaSDavid Jander		CLK_MCU_PLL3P
743812cebaSDavid Jander		CLK_PLL12_HSE
753812cebaSDavid Jander		CLK_PLL3_HSE
763812cebaSDavid Jander		CLK_PLL4_HSE
773812cebaSDavid Jander		CLK_RTC_LSI
783812cebaSDavid Jander		CLK_MCO1_DISABLED
793812cebaSDavid Jander		CLK_MCO2_DISABLED
803812cebaSDavid Jander	>;
813812cebaSDavid Jander
823812cebaSDavid Jander	st,clkdiv = <
833812cebaSDavid Jander		1 /*MPU*/
843812cebaSDavid Jander		0 /*AXI*/
853812cebaSDavid Jander		0 /*MCU*/
863812cebaSDavid Jander		1 /*APB1*/
873812cebaSDavid Jander		1 /*APB2*/
883812cebaSDavid Jander		1 /*APB3*/
893812cebaSDavid Jander		1 /*APB4*/
903812cebaSDavid Jander		2 /*APB5*/
913812cebaSDavid Jander		23 /*RTC*/
923812cebaSDavid Jander		0 /*MCO1*/
933812cebaSDavid Jander		0 /*MCO2*/
943812cebaSDavid Jander	>;
953812cebaSDavid Jander
963812cebaSDavid Jander	st,pkcs = <
973812cebaSDavid Jander		CLK_CKPER_HSE
983812cebaSDavid Jander		CLK_FMC_ACLK
993812cebaSDavid Jander		CLK_QSPI_ACLK
1003812cebaSDavid Jander		CLK_ETH_DISABLED
1013812cebaSDavid Jander		CLK_SDMMC12_PLL4P
1023812cebaSDavid Jander		CLK_DSI_DSIPLL
1033812cebaSDavid Jander		CLK_STGEN_HSE
1043812cebaSDavid Jander		CLK_USBPHY_HSE
1053812cebaSDavid Jander		CLK_SPI2S1_PLL3Q
1063812cebaSDavid Jander		CLK_SPI2S23_PLL3Q
1073812cebaSDavid Jander		CLK_SPI45_HSI
1083812cebaSDavid Jander		CLK_SPI6_HSI
1093812cebaSDavid Jander		CLK_I2C46_HSI
1103812cebaSDavid Jander		CLK_SDMMC3_PLL4P
1113812cebaSDavid Jander		CLK_USBO_USBPHY
1123812cebaSDavid Jander		CLK_ADC_CKPER
1133812cebaSDavid Jander		CLK_CEC_LSI
1143812cebaSDavid Jander		CLK_I2C12_HSI
1153812cebaSDavid Jander		CLK_I2C35_HSI
1163812cebaSDavid Jander		CLK_UART1_HSI
1173812cebaSDavid Jander		CLK_UART24_HSI
1183812cebaSDavid Jander		CLK_UART35_HSI
1193812cebaSDavid Jander		CLK_UART6_HSI
1203812cebaSDavid Jander		CLK_UART78_HSI
1213812cebaSDavid Jander		CLK_SPDIF_PLL4P
1223812cebaSDavid Jander		CLK_FDCAN_PLL4R
1233812cebaSDavid Jander		CLK_SAI1_PLL3Q
1243812cebaSDavid Jander		CLK_SAI2_PLL3Q
1253812cebaSDavid Jander		CLK_SAI3_PLL3Q
1263812cebaSDavid Jander		CLK_SAI4_PLL3Q
127*d594239dSLionel Debieve		CLK_RNG1_CSI
1283812cebaSDavid Jander		CLK_RNG2_LSI
1293812cebaSDavid Jander		CLK_LPTIM1_PCLK1
1303812cebaSDavid Jander		CLK_LPTIM23_PCLK3
1313812cebaSDavid Jander		CLK_LPTIM45_LSI
1323812cebaSDavid Jander	>;
1333812cebaSDavid Jander
1343812cebaSDavid Jander	/* VCO = 1300.0 MHz => P = 650 (CPU) */
1353812cebaSDavid Jander	pll1: st,pll@0 {
1363812cebaSDavid Jander		compatible = "st,stm32mp1-pll";
1373812cebaSDavid Jander		reg = <0>;
1383812cebaSDavid Jander		cfg = <2 80 0 0 0 PQR(1,0,0)>;
1393812cebaSDavid Jander		frac = <0x800>;
1403812cebaSDavid Jander	};
1413812cebaSDavid Jander
1423812cebaSDavid Jander	/* VCO = 1066.0 MHz => P = 266 (AXI), Q = 533 (GPU), R = 533 (DDR) */
1433812cebaSDavid Jander	pll2: st,pll@1 {
1443812cebaSDavid Jander		compatible = "st,stm32mp1-pll";
1453812cebaSDavid Jander		reg = <1>;
1463812cebaSDavid Jander		cfg = <2 65 1 0 0 PQR(1,1,1)>;
1473812cebaSDavid Jander		frac = <0x1400>;
1483812cebaSDavid Jander	};
1493812cebaSDavid Jander
1503812cebaSDavid Jander	/* VCO = 417.8 MHz => P = 209, Q = 24, R = 11 */
1513812cebaSDavid Jander	pll3: st,pll@2 {
1523812cebaSDavid Jander		compatible = "st,stm32mp1-pll";
1533812cebaSDavid Jander		reg = <2>;
1543812cebaSDavid Jander		cfg = <1 33 1 16 36 PQR(1,1,1)>;
1553812cebaSDavid Jander		frac = <0x1a04>;
1563812cebaSDavid Jander	};
1573812cebaSDavid Jander
1583812cebaSDavid Jander	/* VCO = 480.0 MHz => P = 120, Q = 40, R = 96 */
1593812cebaSDavid Jander	pll4: st,pll@3 {
1603812cebaSDavid Jander		compatible = "st,stm32mp1-pll";
1613812cebaSDavid Jander		reg = <3>;
1623812cebaSDavid Jander		cfg = <1 39 3 11 4 PQR(1,1,1)>;
1633812cebaSDavid Jander	};
1643812cebaSDavid Jander};
1653812cebaSDavid Jander
1663812cebaSDavid Jander&rng1 {
1673812cebaSDavid Jander	status = "okay";
1683812cebaSDavid Jander};
1693812cebaSDavid Jander
1703812cebaSDavid Jander&rtc {
1713812cebaSDavid Jander	status = "okay";
1723812cebaSDavid Jander};
1733812cebaSDavid Jander
1743812cebaSDavid Jander&sdmmc1 {
1753812cebaSDavid Jander	pinctrl-names = "default";
1763812cebaSDavid Jander	pinctrl-0 = <&sdmmc1_b4_pins_a>;
1773812cebaSDavid Jander	bus-width = <4>;
1783812cebaSDavid Jander	status = "okay";
1793812cebaSDavid Jander};
1803812cebaSDavid Jander
1813812cebaSDavid Jander&sdmmc1_b4_pins_a {
1823812cebaSDavid Jander	pins1 {
1833812cebaSDavid Jander		bias-pull-up;
1843812cebaSDavid Jander	};
1853812cebaSDavid Jander	pins2 {
1863812cebaSDavid Jander		bias-pull-up;
1873812cebaSDavid Jander	};
1883812cebaSDavid Jander};
1893812cebaSDavid Jander
1903812cebaSDavid Jander/* NOTE: Although the PRTT1A does not have an eMMC, we declare it
1913812cebaSDavid Jander * anyway, in order to be able to use the same binary for the
1923812cebaSDavid Jander * PRTT1C also. All involved pins are N.C. on PRTT1A/S for that
1933812cebaSDavid Jander * reason, so it should do no harm. All inputs configured with
1943812cebaSDavid Jander * pull-ups to avoid floating inputs. */
1953812cebaSDavid Jander&sdmmc2 {
1963812cebaSDavid Jander	pinctrl-names = "default";
1973812cebaSDavid Jander	pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_a>;
1983812cebaSDavid Jander	bus-width = <8>;
1993812cebaSDavid Jander	status = "okay";
2003812cebaSDavid Jander};
2013812cebaSDavid Jander
2023812cebaSDavid Jander&sdmmc2_b4_pins_a {
2033812cebaSDavid Jander	pins1 {
2043812cebaSDavid Jander		pinmux = <STM32_PINMUX('B', 14, AF9)>, /* SDMMC2_D0 */
2053812cebaSDavid Jander			 <STM32_PINMUX('B', 7, AF10)>, /* SDMMC2_D1 */
2063812cebaSDavid Jander			 <STM32_PINMUX('B', 3, AF9)>, /* SDMMC2_D2 */
2073812cebaSDavid Jander			 <STM32_PINMUX('B', 4, AF9)>, /* SDMMC2_D3 */
2083812cebaSDavid Jander			 <STM32_PINMUX('G', 6, AF10)>; /* SDMMC2_CMD */
2093812cebaSDavid Jander	};
2103812cebaSDavid Jander};
2113812cebaSDavid Jander
2123812cebaSDavid Jander&sdmmc2_d47_pins_a {
2133812cebaSDavid Jander	pins {
2143812cebaSDavid Jander		pinmux = <STM32_PINMUX('A', 8, AF9)>, /* SDMMC2_D4 */
2153812cebaSDavid Jander			 <STM32_PINMUX('A', 9, AF10)>, /* SDMMC2_D5 */
2163812cebaSDavid Jander			 <STM32_PINMUX('C', 6, AF10)>, /* SDMMC2_D6 */
2173812cebaSDavid Jander			 <STM32_PINMUX('C', 7, AF10)>; /* SDMMC2_D7 */
2183812cebaSDavid Jander	};
2193812cebaSDavid Jander};
2203812cebaSDavid Jander
2213812cebaSDavid Jander&uart4 {
2223812cebaSDavid Jander	pinctrl-names = "default";
2233812cebaSDavid Jander	pinctrl-0 = <&uart4_pins_a>;
2243812cebaSDavid Jander	status = "okay";
2253812cebaSDavid Jander};
2263812cebaSDavid Jander
2273812cebaSDavid Jander&uart4_pins_a {
2283812cebaSDavid Jander	pins1 {
2293812cebaSDavid Jander		pinmux = <STM32_PINMUX('B', 9, AF8)>; /* UART4_TX */
2303812cebaSDavid Jander		bias-disable;
2313812cebaSDavid Jander		drive-push-pull;
2323812cebaSDavid Jander		slew-rate = <0>;
2333812cebaSDavid Jander	};
2343812cebaSDavid Jander	pins2 {
2353812cebaSDavid Jander		pinmux = <STM32_PINMUX('B', 2, AF8)>; /* UART4_RX */
2363812cebaSDavid Jander		bias-pull-up;
2373812cebaSDavid Jander	};
2383812cebaSDavid Jander};
239