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