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