1*093c738aSLeonard Göhrs/* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-3-Clause) */ 2*093c738aSLeonard Göhrs/* 3*093c738aSLeonard Göhrs * Copyright (C) 2020 STMicroelectronics - All Rights Reserved 4*093c738aSLeonard Göhrs * Copyright (C) 2021 Rouven Czerwinski, Pengutronix 5*093c738aSLeonard Göhrs * Copyright (C) 2024 Leonard Goehrs, Pengutronix 6*093c738aSLeonard Göhrs */ 7*093c738aSLeonard Göhrs 8*093c738aSLeonard Göhrs/dts-v1/; 9*093c738aSLeonard Göhrs 10*093c738aSLeonard Göhrs#include "stm32mp153.dtsi" 11*093c738aSLeonard Göhrs#include "stm32mp15xc.dtsi" 12*093c738aSLeonard Göhrs#include "stm32mp15-ddr3-1x4Gb-1066-binG.dtsi" 13*093c738aSLeonard Göhrs#include "stm32mp15xx-osd32.dtsi" 14*093c738aSLeonard Göhrs#include "stm32mp15xxac-pinctrl.dtsi" 15*093c738aSLeonard Göhrs 16*093c738aSLeonard Göhrs/ { 17*093c738aSLeonard Göhrs model = "Linux Automation GmbH FairyTux 2"; 18*093c738aSLeonard Göhrs compatible = "lxa,stm32mp153c-fairytux-2", "oct,stm32mp15xx-osd32", "st,stm32mp153"; 19*093c738aSLeonard Göhrs 20*093c738aSLeonard Göhrs aliases { 21*093c738aSLeonard Göhrs mmc1 = &sdmmc2; 22*093c738aSLeonard Göhrs serial0 = &uart4; 23*093c738aSLeonard Göhrs }; 24*093c738aSLeonard Göhrs 25*093c738aSLeonard Göhrs chosen { 26*093c738aSLeonard Göhrs stdout-path = &uart4; 27*093c738aSLeonard Göhrs }; 28*093c738aSLeonard Göhrs 29*093c738aSLeonard Göhrs led-controller-0 { 30*093c738aSLeonard Göhrs compatible = "gpio-leds"; 31*093c738aSLeonard Göhrs 32*093c738aSLeonard Göhrs led-0 { 33*093c738aSLeonard Göhrs label = "fairytux:green:status"; 34*093c738aSLeonard Göhrs gpios = <&gpioa 13 1>; 35*093c738aSLeonard Göhrs linux,default-trigger = "heartbeat"; 36*093c738aSLeonard Göhrs }; 37*093c738aSLeonard Göhrs }; 38*093c738aSLeonard Göhrs 39*093c738aSLeonard Göhrs reg_3v3: regulator_3v3 { 40*093c738aSLeonard Göhrs compatible = "regulator-fixed"; 41*093c738aSLeonard Göhrs regulator-name = "3V3"; 42*093c738aSLeonard Göhrs regulator-min-microvolt = <3300000>; 43*093c738aSLeonard Göhrs regulator-max-microvolt = <3300000>; 44*093c738aSLeonard Göhrs regulator-always-on; 45*093c738aSLeonard Göhrs vin-supply = <&v3v3>; 46*093c738aSLeonard Göhrs }; 47*093c738aSLeonard Göhrs}; 48*093c738aSLeonard Göhrs 49*093c738aSLeonard Göhrs&pinctrl { 50*093c738aSLeonard Göhrs fairytux_sdmmc2_d47_pins_b: fairytux-sdmmc2-d47-1 { 51*093c738aSLeonard Göhrs pins { 52*093c738aSLeonard Göhrs pinmux = <STM32_PINMUX('A', 8, AF9)>, /* SDMMC2_D4 */ 53*093c738aSLeonard Göhrs <STM32_PINMUX('A', 9, AF10)>, /* SDMMC2_D5 */ 54*093c738aSLeonard Göhrs <STM32_PINMUX('C', 6, AF10)>, /* SDMMC2_D6 */ 55*093c738aSLeonard Göhrs <STM32_PINMUX('C', 7, AF10)>; /* SDMMC2_D7 */ 56*093c738aSLeonard Göhrs slew-rate = <1>; 57*093c738aSLeonard Göhrs drive-push-pull; 58*093c738aSLeonard Göhrs bias-disable; 59*093c738aSLeonard Göhrs }; 60*093c738aSLeonard Göhrs }; 61*093c738aSLeonard Göhrs}; 62*093c738aSLeonard Göhrs 63*093c738aSLeonard Göhrs/* VCO = 624 MHz => P = 208, Q = 48, R = 104 */ 64*093c738aSLeonard Göhrs&pll3 { 65*093c738aSLeonard Göhrs st,pll = <&pll3_cfg2>; 66*093c738aSLeonard Göhrs 67*093c738aSLeonard Göhrs pll3_cfg2: pll3-cfg2 { 68*093c738aSLeonard Göhrs st,pll_vco = <&pll3_vco_624Mhz>; 69*093c738aSLeonard Göhrs st,pll_div_pqr = <2 12 5>; 70*093c738aSLeonard Göhrs }; 71*093c738aSLeonard Göhrs}; 72*093c738aSLeonard Göhrs 73*093c738aSLeonard Göhrs/* VCO = 750.0 MHz => P = 125, Q = 75, R = 62.5 */ 74*093c738aSLeonard Göhrs&pll4 { 75*093c738aSLeonard Göhrs st,pll = <&pll4_cfg2>; 76*093c738aSLeonard Göhrs 77*093c738aSLeonard Göhrs pll4_cfg2: pll4-cfg2 { 78*093c738aSLeonard Göhrs st,pll_vco = <&pll4_vco_750Mhz>; 79*093c738aSLeonard Göhrs st,pll_div_pqr = <5 9 11>; 80*093c738aSLeonard Göhrs }; 81*093c738aSLeonard Göhrs}; 82*093c738aSLeonard Göhrs 83*093c738aSLeonard Göhrs&rcc { 84*093c738aSLeonard Göhrs /* change parent clocks */ 85*093c738aSLeonard Göhrs st,clksrc = < 86*093c738aSLeonard Göhrs CLK_MPU_PLL1P 87*093c738aSLeonard Göhrs CLK_AXI_PLL2P 88*093c738aSLeonard Göhrs CLK_MCU_PLL3P 89*093c738aSLeonard Göhrs CLK_RTC_LSE 90*093c738aSLeonard Göhrs CLK_MCO1_DISABLED 91*093c738aSLeonard Göhrs CLK_MCO2_DISABLED 92*093c738aSLeonard Göhrs CLK_CKPER_HSE 93*093c738aSLeonard Göhrs CLK_FMC_ACLK 94*093c738aSLeonard Göhrs CLK_QSPI_ACLK 95*093c738aSLeonard Göhrs CLK_ETH_PLL4P 96*093c738aSLeonard Göhrs CLK_SDMMC12_PLL3R 97*093c738aSLeonard Göhrs CLK_DSI_DSIPLL 98*093c738aSLeonard Göhrs CLK_STGEN_HSE 99*093c738aSLeonard Göhrs CLK_USBPHY_HSE 100*093c738aSLeonard Göhrs CLK_SPI2S1_PLL3Q 101*093c738aSLeonard Göhrs CLK_SPI2S23_PLL3Q 102*093c738aSLeonard Göhrs CLK_SPI45_HSI 103*093c738aSLeonard Göhrs CLK_SPI6_HSI 104*093c738aSLeonard Göhrs CLK_I2C46_HSI 105*093c738aSLeonard Göhrs CLK_SDMMC3_DISABLED 106*093c738aSLeonard Göhrs CLK_USBO_USBPHY 107*093c738aSLeonard Göhrs CLK_ADC_CKPER 108*093c738aSLeonard Göhrs CLK_CEC_DISABLED 109*093c738aSLeonard Göhrs CLK_I2C12_HSI 110*093c738aSLeonard Göhrs CLK_I2C35_HSI 111*093c738aSLeonard Göhrs CLK_UART1_HSI 112*093c738aSLeonard Göhrs CLK_UART24_HSI 113*093c738aSLeonard Göhrs CLK_UART35_HSI 114*093c738aSLeonard Göhrs CLK_UART6_HSI 115*093c738aSLeonard Göhrs CLK_UART78_HSI 116*093c738aSLeonard Göhrs CLK_SPDIF_DISABLED 117*093c738aSLeonard Göhrs CLK_FDCAN_PLL3Q 118*093c738aSLeonard Göhrs CLK_SAI1_DISABLED 119*093c738aSLeonard Göhrs CLK_SAI2_DISABLED 120*093c738aSLeonard Göhrs CLK_SAI3_DISABLED 121*093c738aSLeonard Göhrs CLK_SAI4_DISABLED 122*093c738aSLeonard Göhrs CLK_RNG1_LSI 123*093c738aSLeonard Göhrs CLK_RNG2_LSI 124*093c738aSLeonard Göhrs CLK_LPTIM1_PCLK1 125*093c738aSLeonard Göhrs CLK_LPTIM23_PCLK3 126*093c738aSLeonard Göhrs CLK_LPTIM45_LSE 127*093c738aSLeonard Göhrs >; 128*093c738aSLeonard Göhrs 129*093c738aSLeonard Göhrs st,pll_vco { 130*093c738aSLeonard Göhrs pll3_vco_624Mhz: pll3-vco-624Mhz { 131*093c738aSLeonard Göhrs src = <CLK_PLL3_HSE>; 132*093c738aSLeonard Göhrs divmn = <1 51>; 133*093c738aSLeonard Göhrs }; 134*093c738aSLeonard Göhrs 135*093c738aSLeonard Göhrs pll4_vco_750Mhz: pll4-vco-750Mhz { 136*093c738aSLeonard Göhrs src = <CLK_PLL4_HSE>; 137*093c738aSLeonard Göhrs divmn = <3 124>; 138*093c738aSLeonard Göhrs }; 139*093c738aSLeonard Göhrs }; 140*093c738aSLeonard Göhrs}; 141*093c738aSLeonard Göhrs 142*093c738aSLeonard Göhrs&sdmmc2 { 143*093c738aSLeonard Göhrs pinctrl-names = "default"; 144*093c738aSLeonard Göhrs pinctrl-0 = <&sdmmc2_b4_pins_a &fairytux_sdmmc2_d47_pins_b>; 145*093c738aSLeonard Göhrs bus-width = <8>; 146*093c738aSLeonard Göhrs mmc-ddr-3_3v; 147*093c738aSLeonard Göhrs no-1-8-v; 148*093c738aSLeonard Göhrs no-sd; 149*093c738aSLeonard Göhrs no-sdio; 150*093c738aSLeonard Göhrs non-removable; 151*093c738aSLeonard Göhrs st,neg-edge; 152*093c738aSLeonard Göhrs vmmc-supply = <®_3v3>; 153*093c738aSLeonard Göhrs status = "okay"; 154*093c738aSLeonard Göhrs}; 155*093c738aSLeonard Göhrs 156*093c738aSLeonard Göhrs&uart4 { 157*093c738aSLeonard Göhrs pinctrl-names = "default"; 158*093c738aSLeonard Göhrs pinctrl-0 = <&uart4_pins_a>; 159*093c738aSLeonard Göhrs status = "okay"; 160*093c738aSLeonard Göhrs}; 161