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