// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-3-Clause) /* * Copyright (C) 2025, STMicroelectronics - All Rights Reserved * Author: STM32CubeMX code generation for STMicroelectronics. */ /* For more information on Device Tree configuration, please refer to * https://wiki.st.com/stm32mpu/wiki/Category:Device_tree_configuration */ /dts-v1/; #include #include "stm32mp157.dtsi" #include "stm32mp15xc.dtsi" #include "stm32mp15xxac-pinctrl.dtsi" #include "stm32mp15-m4-srm.dtsi" /* USER CODE BEGIN includes */ #include #include #include #include #include #include #include "stm32mp157c-dk2-scmi.dtsi" #include "stm32mp15-pinctrl.dtsi" /* USER CODE END includes */ / { model = "STMicroelectronics STM32MP157F-DK2 STM32CubeMX board - openstlinux-6.6-yocto-scarthgap-mpu-v24.11.06"; compatible = "st,stm32mp157f-dk2-2-mx", "st,stm32mp157f-dk2", "st,stm32mp157"; memory@c0000000 { device_type = "memory"; reg = <0xc0000000 0x20000000>; /* USER CODE BEGIN memory */ /* USER CODE END memory */ }; reserved-memory { #address-cells = <1>; #size-cells = <1>; ranges; /* USER CODE BEGIN reserved-memory */ mcuram2:mcuram2@10000000{ compatible = "shared-dma-pool"; reg = <0x10000000 0x40000>; no-map; }; vdev0vring0:vdev0vring0@10040000{ compatible = "shared-dma-pool"; reg = <0x10040000 0x1000>; no-map; }; vdev0vring1:vdev0vring1@10041000{ compatible = "shared-dma-pool"; reg = <0x10041000 0x1000>; no-map; }; vdev0buffer:vdev0buffer@10042000{ compatible = "shared-dma-pool"; reg = <0x10042000 0x4000>; no-map; }; mcu_rsc_table:mcu-rsc-table@10048000{ compatible = "shared-dma-pool"; reg = <0x10048000 0x8000>; no-map; }; mcuram:mcuram@30000000{ compatible = "shared-dma-pool"; reg = <0x30000000 0x40000>; no-map; }; retram:retram@38000000{ compatible = "shared-dma-pool"; reg = <0x38000000 0x10000>; no-map; }; gpu_reserved:gpu@d4000000{ reg = <0xd4000000 0x4000000>; no-map; }; linux,cma{ compatible = "shared-dma-pool"; reusable; size = <0x8000000>; alignment = <0x2000>; linux,cma-default; }; /* USER CODE END reserved-memory */ }; /* USER CODE BEGIN root */ aliases{ mmc0 = &sdmmc1; mmc1 = &sdmmc2; rtc0 = &i2c4_rtc; rtc1 = &rtc; ethernet0 = ðernet0; serial0 = &usart1; serial1 = &usart2; serial2 = &usart3; }; /* DVI Transmitter Definition */ dvi_transmitter: tfp410 { compatible = "ti,tfp410"; pinctrl-names = "default"; pinctrl-0 = <&tfp410_pins>; powerdown-gpios = <&gpioa 6 GPIO_ACTIVE_LOW>; reset-gpios = <&gpioa 4 GPIO_ACTIVE_LOW>; /* HDMI_NRST auf PA4 (aktiv niedrig) */ /* Neuer Eintrag für den Interrupt-Pin PA3 */ interrupt-parent = <&gpioa>; interrupts = <3 IRQ_TYPE_EDGE_FALLING>; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; tfp410_in: endpoint { remote-endpoint = <<dc_out0>; }; }; port@1 { reg = <1>; tfp410_out: endpoint { remote-endpoint = <&dvi_connector_in>; }; }; }; }; /* DVI Connector Definition */ dvi: connector { compatible = "dvi-connector"; label = "dvi"; ddc-i2c-bus = <&i2c2>; port { dvi_connector_in: endpoint { remote-endpoint = <&tfp410_out>; }; }; }; led{ compatible = "gpio-leds"; led-a{ label = "heartbeat"; gpios = <&gpiof 12 GPIO_ACTIVE_HIGH>; linux,default-trigger = "heartbeat"; default-state = "off"; }; }; sound{ compatible = "simple-audio-card"; simple-audio-card,name = "STM32MP1-DCM-Audio"; simple-audio-card,format = "i2s"; simple-audio-card,widgets = "Microphone", "Mic Jack", "Line", "Line In", "Line", "Line Out", "Headphone", "Headphone Jack"; simple-audio-card,routing = "Line Out", "LOUT", "Line Out", "ROUT", "Headphone Jack", "LHPOUT", "Headphone Jack", "RHPOUT", "LLINEIN", "Line In", "RLINEIN", "Line In", "MICIN", "Mic Jack"; simple-audio-card,cpu { sound-dai = <&sai2>; /* Anpassen an den verwendeten SAI-Port */ }; simple-audio-card,codec { sound-dai = <&tlv320ahc>; system-clock-frequency = <12288000>; /* Typischer Takt, anpassen falls nötig */ }; }; vin:vin{ compatible = "regulator-fixed"; regulator-name = "vin"; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; regulator-always-on; }; chosen{ #address-cells = <1>; #size-cells = <1>; ranges; stdout-path = "serial1:115200n8"; framebuffer { compatible = "simple-framebuffer"; clocks = <&rcc LTDC_PX>; status = "disabled"; }; }; wifi_pwrseq: wifi-pwrseq { compatible = "mmc-pwrseq-simple"; /* reset-gpios = <&gpioh 4 GPIO_ACTIVE_LOW>; */ /* Fügen Sie hier weitere Reset- oder Power-Control-Pins hinzu, falls notwendig */ }; /* USER CODE END root */ clocks{ /* USER CODE BEGIN clocks */ /* USER CODE END clocks */ #ifndef CONFIG_TFABOOT clk_lsi: clk-lsi { clock-frequency = <32000>; }; clk_hsi: clk-hsi { clock-frequency = <64000000>; }; clk_csi: clk-csi { clock-frequency = <4000000>; }; clk_lse: clk-lse { clock-frequency = <32768>; st,css; }; clk_hse: clk-hse { clock-frequency = <24000000>; }; #endif /*CONFIG_TFABOOT*/ }; }; /*root*/ &pinctrl { u-boot,dm-pre-reloc; swd_pins_mx: swd_pins_mx-0 { pins { pinmux = , /* SWDIO */ ; /* SWCLK */ bias-disable; }; }; eth1_pins_mx: eth1_mx-0 { pins1 { pinmux = , /* ETH1_RX_CLK */ , /* ETH1_RX_CTL */ , /* ETH1_RXD0 */ , /* ETH1_RXD1 */ , /* ETH1_RXD2 */ , /* ETH1_RXD3 */ ; /* ETH1_PHY_INTN */ bias-disable; }; pins2 { pinmux = ; /* ETH1_MDIO */ bias-disable; drive-push-pull; slew-rate = <0>; }; pins3 { pinmux = , /* ETH1_TX_CTL */ , /* ETH1_MDC */ , /* ETH1_GTX_CLK */ , /* ETH1_CLK125 */ , /* ETH1_TXD0 */ , /* ETH1_TXD1 */ , /* ETH1_TXD2 */ ; /* ETH1_TXD3 */ bias-disable; drive-push-pull; slew-rate = <2>; }; }; eth1_sleep_pins_mx: eth1_sleep_mx-0 { pins { pinmux = , /* ETH1_RX_CLK */ , /* ETH1_RX_CTL */ , /* ETH1_RXD0 */ , /* ETH1_RXD1 */ , /* ETH1_RXD2 */ , /* ETH1_RXD3 */ , /* ETH1_PHY_INTN */ , /* ETH1_MDIO */ , /* ETH1_TX_CTL */ , /* ETH1_MDC */ , /* ETH1_GTX_CLK */ , /* ETH1_CLK125 */ , /* ETH1_TXD0 */ , /* ETH1_TXD1 */ , /* ETH1_TXD2 */ ; /* ETH1_TXD3 */ }; }; hdmi_cec_pins_mx: hdmi_cec_mx-0 { pins { pinmux = ; /* CEC */ bias-disable; drive-open-drain; slew-rate = <0>; }; }; hdmi_cec_sleep_pins_mx: hdmi_cec_sleep_mx-0 { pins { pinmux = ; /* CEC */ }; }; i2c1_pins_mx: i2c1_mx-0 { pins { pinmux = , /* I2C1_SCL */ ; /* I2C1_SDA */ bias-disable; drive-open-drain; slew-rate = <0>; }; }; i2c1_sleep_pins_mx: i2c1_sleep_mx-0 { pins { pinmux = , /* I2C1_SCL */ ; /* I2C1_SDA */ }; }; i2c2_pins_mx: i2c2_mx-0 { pins { pinmux = , /* I2C2_SCL */ ; /* I2C2_SDA */ bias-disable; drive-open-drain; slew-rate = <0>; }; }; i2c2_sleep_pins_mx: i2c2_sleep_mx-0 { pins { pinmux = , /* I2C2_SCL */ ; /* I2C2_SDA */ }; }; i2c3_pins_mx: i2c3_mx-0 { pins { pinmux = , /* I2C3_SCL */ ; /* I2C3_SDA */ bias-disable; drive-open-drain; slew-rate = <0>; }; }; i2c3_sleep_pins_mx: i2c3_sleep_mx-0 { pins { pinmux = , /* I2C3_SCL */ ; /* I2C3_SDA */ }; }; rtc_pins_mx: rtc_mx-0 { pins { pinmux = ; /* RTC_LSCO */ }; }; rtc_sleep_pins_mx: rtc_sleep_mx-0 { pins { pinmux = ; /* RTC_LSCO */ }; }; ltdc_pins_mx: ltdc_mx-0 { pins1 { pinmux = , /* LTDC_B0 */ , /* LTDC_B1 */ , /* LTDC_B2 */ , /* LTDC_B3 */ , /* LTDC_B4 */ , /* LTDC_B5 */ , /* LTDC_B6 */ , /* LTDC_B7 */ , /* LTDC_G0 */ , /* LTDC_G1 */ , /* LTDC_G2 */ , /* LTDC_G3 */ , /* LTDC_G4 */ , /* LTDC_G5 */ , /* LTDC_G6 */ , /* LTDC_G7 */ , /* LTDC_R0 */ , /* LTDC_R1 */ , /* LTDC_R2 */ , /* LTDC_R3 */ , /* LTDC_R4 */ , /* LTDC_R5 */ , /* LTDC_R6 */ , /* LTDC_R7 */ , /* LTDC_DE */ , /* LTDC_HSYNC */ ; /* LTDC_VSYNC */ bias-disable; drive-push-pull; slew-rate = <0>; }; pins2 { pinmux = ; /* LTDC_CLK */ bias-disable; drive-push-pull; slew-rate = <1>; }; }; ltdc_sleep_pins_mx: ltdc_sleep_mx-0 { pins { pinmux = , /* LTDC_B0 */ , /* LTDC_B1 */ , /* LTDC_B2 */ , /* LTDC_B3 */ , /* LTDC_B4 */ , /* LTDC_B5 */ , /* LTDC_B6 */ , /* LTDC_B7 */ , /* LTDC_G0 */ , /* LTDC_G1 */ , /* LTDC_G2 */ , /* LTDC_G3 */ , /* LTDC_G4 */ , /* LTDC_G5 */ , /* LTDC_G6 */ , /* LTDC_G7 */ , /* LTDC_R0 */ , /* LTDC_R1 */ , /* LTDC_R2 */ , /* LTDC_R3 */ , /* LTDC_R4 */ , /* LTDC_R5 */ , /* LTDC_R6 */ , /* LTDC_R7 */ /* , */ /* LTDC_DE */ , /* LTDC_HSYNC */ , /* LTDC_VSYNC */ ; /* LTDC_CLK */ }; }; quadspi_pins_mx: quadspi_mx-0 { u-boot,dm-pre-reloc; pins1 { u-boot,dm-pre-reloc; pinmux = ; /* QUADSPI_BK1_NCS */ bias-pull-up; drive-push-pull; slew-rate = <1>; }; pins2 { u-boot,dm-pre-reloc; pinmux = ; /* QUADSPI_CLK */ bias-disable; drive-push-pull; slew-rate = <3>; }; pins3 { u-boot,dm-pre-reloc; pinmux = , /* QUADSPI_BK1_IO0 */ , /* QUADSPI_BK1_IO1 */ , /* QUADSPI_BK1_IO2 */ ; /* QUADSPI_BK1_IO3 */ bias-disable; drive-push-pull; slew-rate = <1>; }; }; quadspi_sleep_pins_mx: quadspi_sleep_mx-0 { u-boot,dm-pre-reloc; pins { u-boot,dm-pre-reloc; pinmux = , /* QUADSPI_BK1_NCS */ , /* QUADSPI_CLK */ , /* QUADSPI_BK1_IO0 */ , /* QUADSPI_BK1_IO1 */ , /* QUADSPI_BK1_IO2 */ ; /* QUADSPI_BK1_IO3 */ }; }; sai2a_pins_mx: sai2a_mx-0 { pins { pinmux = ; /* SAI2_SD_A */ /* ,*/ /* SAI2_MCLK_A */ /* ,*/ /* SAI2_SCK_A */ /* ;*/ /* SAI2_FS_A */ bias-disable; drive-push-pull; slew-rate = <0>; }; }; sai2a_sleep_pins_mx: sai2a_sleep_mx-0 { pins { pinmux = ; /* SAI2_SD_A */ /* ,*/ /* SAI2_MCLK_A */ /* ,*/ /* SAI2_SCK_A */ /* ;*/ /* SAI2_FS_A */ }; }; sai2b_pins_mx: sai2b_mx-0 { pins { pinmux = , /* SAI2_SD_B */ , /* SAI2_MCLK_B */ , /* SAI2_SCK_B */ ; /* SAI2_FS_B */ bias-disable; drive-push-pull; slew-rate = <0>; }; }; sai2b_sleep_pins_mx: sai2b_sleep_mx-0 { pins { pinmux = , /* SAI2_SD_B */ , /* SAI2_MCLK_B */ , /* SAI2_SCK_B */ ; /* SAI2_FS_B */ }; }; sdmmc1_pins_mx: sdmmc1_mx-0 { u-boot,dm-pre-reloc; pins1 { u-boot,dm-pre-reloc; pinmux = , /* SDMMC1_D0 */ , /* SDMMC1_D1 */ , /* SDMMC1_D2 */ , /* SDMMC1_D3 */ ; /* SDMMC1_CMD */ bias-disable; drive-push-pull; slew-rate = <1>; }; pins2 { u-boot,dm-pre-reloc; pinmux = ; /* SDMMC1_CK */ bias-disable; drive-push-pull; slew-rate = <2>; }; }; sdmmc1_opendrain_pins_mx: sdmmc1_opendrain_mx-0 { u-boot,dm-pre-reloc; pins1 { u-boot,dm-pre-reloc; pinmux = , /* SDMMC1_D0 */ , /* SDMMC1_D1 */ , /* SDMMC1_D2 */ ; /* SDMMC1_D3 */ bias-disable; drive-push-pull; slew-rate = <1>; }; pins2 { u-boot,dm-pre-reloc; pinmux = ; /* SDMMC1_CK */ bias-disable; drive-push-pull; slew-rate = <2>; }; pins3 { u-boot,dm-pre-reloc; pinmux = ; /* SDMMC1_CMD */ bias-disable; drive-open-drain; slew-rate = <1>; }; }; sdmmc1_sleep_pins_mx: sdmmc1_sleep_mx-0 { u-boot,dm-pre-reloc; pins { u-boot,dm-pre-reloc; pinmux = , /* SDMMC1_D0 */ , /* SDMMC1_D1 */ , /* SDMMC1_D2 */ , /* SDMMC1_D3 */ , /* SDMMC1_CK */ ; /* SDMMC1_CMD */ }; }; sdmmc1_cd_pins: sdmmc1_cd_pins-0 { u-boot,dm-pre-reloc; pins { pinmux = ; /* SD_DETECT auf PF2 */ bias-pull-up; /* Pull-up für Card-Detect */ }; }; sdmmc2_pins_mx: sdmmc2_mx-0 { u-boot,dm-pre-reloc; pins1 { u-boot,dm-pre-reloc; pinmux = , /* SDMMC2_D0 */ , /* SDMMC2_D1 */ , /* SDMMC2_D2 */ , /* SDMMC2_D3 */ , /* SDMMC2_D4 */ , /* SDMMC2_D5 */ , /* SDMMC2_D6 */ , /* SDMMC2_D7 */ ; /* SDMMC2_CMD */ bias-pull-up; drive-push-pull; slew-rate = <1>; }; pins2 { u-boot,dm-pre-reloc; pinmux = ; /* SDMMC2_CK */ bias-pull-up; drive-push-pull; slew-rate = <2>; }; }; sdmmc2_opendrain_pins_mx: sdmmc2_opendrain_mx-0 { u-boot,dm-pre-reloc; pins1 { u-boot,dm-pre-reloc; pinmux = , /* SDMMC2_D0 */ , /* SDMMC2_D1 */ , /* SDMMC2_D2 */ , /* SDMMC2_D3 */ , /* SDMMC2_D4 */ , /* SDMMC2_D5 */ , /* SDMMC2_D6 */ ; /* SDMMC2_D7 */ bias-pull-up; drive-push-pull; slew-rate = <1>; }; pins2 { u-boot,dm-pre-reloc; pinmux = ; /* SDMMC2_CK */ bias-pull-up; drive-push-pull; slew-rate = <2>; }; pins3 { u-boot,dm-pre-reloc; pinmux = ; /* SDMMC2_CMD */ bias-pull-up; drive-open-drain; slew-rate = <1>; }; }; sdmmc2_sleep_pins_mx: sdmmc2_sleep_mx-0 { u-boot,dm-pre-reloc; pins { u-boot,dm-pre-reloc; pinmux = , /* SDMMC2_D0 */ , /* SDMMC2_D1 */ , /* SDMMC2_D2 */ , /* SDMMC2_D3 */ , /* SDMMC2_D4 */ , /* SDMMC2_D5 */ , /* SDMMC2_D6 */ , /* SDMMC2_D7 */ , /* SDMMC2_CMD */ ; /* SDMMC2_CK */ }; }; sdmmc3_pins_mx: sdmmc3_mx-0 { u-boot,dm-pre-reloc; pins1 { u-boot,dm-pre-reloc; pinmux = , /* SDMMC3_D0 */ , /* SDMMC3_D1 */ , /* SDMMC3_D2 */ , /* SDMMC3_D3 */ ; /* SDMMC3_CMD */ bias-disable; drive-push-pull; slew-rate = <1>; }; pins2 { u-boot,dm-pre-reloc; pinmux = ; /* SDMMC3_CK */ bias-disable; drive-push-pull; slew-rate = <2>; }; }; sdmmc3_opendrain_pins_mx: sdmmc3_opendrain_mx-0 { u-boot,dm-pre-reloc; pins1 { u-boot,dm-pre-reloc; pinmux = , /* SDMMC3_D0 */ , /* SDMMC3_D1 */ , /* SDMMC3_D2 */ ; /* SDMMC3_D3 */ bias-disable; drive-push-pull; slew-rate = <1>; }; pins2 { u-boot,dm-pre-reloc; pinmux = ; /* SDMMC3_CK */ bias-disable; drive-push-pull; slew-rate = <2>; }; pins3 { u-boot,dm-pre-reloc; pinmux = ; /* SDMMC3_CMD */ bias-disable; drive-open-drain; slew-rate = <1>; }; }; sdmmc3_sleep_pins_mx: sdmmc3_sleep_mx-0 { u-boot,dm-pre-reloc; pins { u-boot,dm-pre-reloc; pinmux = , /* SDMMC3_D0 */ , /* SDMMC3_D1 */ , /* SDMMC3_D2 */ , /* SDMMC3_D3 */ , /* SDMMC3_CK */ ; /* SDMMC3_CMD */ }; }; usart1_pins_mx: usart1_mx-0 { pins1 { pinmux = ; /* USART1_TX */ bias-disable; drive-push-pull; slew-rate = <0>; }; pins2 { pinmux = ; /* USART1_RX */ bias-disable; }; pins3 { pinmux = ; /* USART1_RTS - für RS-485 Richtungssteuerung */ bias-disable; drive-push-pull; slew-rate = <0>; }; /* Für 4-Draht-Modus zusätzlich CTS */ pins4 { pinmux = ; /* USART1_CTS */ bias-disable; }; }; usart1_sleep_pins_mx: usart1_sleep_mx-0 { pins { pinmux = , /* USART1_TX */ , /* USART1_RX */ , /* USART1_RTS */ ; /* USART1_CTS */ }; }; usart2_pins_mx: usart2_mx-0 { u-boot,dm-pre-reloc; pins1 { u-boot,dm-pre-reloc; pinmux = ; /* USART2_TX */ bias-disable; drive-push-pull; slew-rate = <0>; }; pins2 { u-boot,dm-pre-reloc; pinmux = ; /* USART2_RX */ bias-disable; }; }; usart2_sleep_pins_mx: usart2_sleep_mx-0 { u-boot,dm-pre-reloc; pins { u-boot,dm-pre-reloc; pinmux = , /* USART2_TX */ ; /* USART2_RX */ }; }; usart3_pins_mx: usart3_mx-0 { pins1 { pinmux = , /* USART3_TX */ ; /* USART3_RTS */ bias-disable; bias-disable; drive-push-pull; slew-rate = <0>; }; pins2 { pinmux = , /* USART3_RX */ ; /* USART3_CTS */ bias-disable; }; }; usart3_sleep_pins_mx: usart3_sleep_mx-0 { pins { pinmux = , /* USART3_TX */ , /* USART3_RX */ , /* USART3_RTS */ ; /* USART3_CTS */ }; }; tfp410_pins: tfp410_pins-0 { pins { pinmux = , /* TFP410 Powerdown-Pin */ ; /* TFP410 Reset-Pin (HDMI_NRST) */ bias-disable; /* Für Powerdown und Reset */ }; pins2 { pinmux = ; /* TFP410 Interrupt-Pin separater Eintrag */ bias-pull-up; /* Pull-up für Interrupt-Pin */ }; }; m4_spi1_pins_mx: m4_spi1_mx-0 { pins { pinmux = , /* SPI1_MOSI */ ; /* SPI1_MISO */ bias-disable; drive-push-pull; slew-rate = <1>; /* High speed für SPI-Kommunikation */ }; }; m4_spi1_sleep_pins_mx: m4_spi1_sleep_mx-0 { pins { pinmux = , /* SPI1_MOSI */ ; /* SPI1_MISO */ bias-disable; }; }; m4_spi2_pins_mx: m4_spi2_mx-0 { pins { pinmux = , /* SPI2_MOSI */ ; /* SPI2_MISO */ bias-disable; drive-push-pull; slew-rate = <1>; /* High speed für SPI-Kommunikation */ }; }; m4_spi2_sleep_pins_mx: m4_spi2_sleep_mx-0 { pins { pinmux = , /* SPI2_MOSI */ ; /* SPI2_MISO */ bias-disable; }; }; /* USER CODE BEGIN pinctrl */ /* USER CODE END pinctrl */ }; &pinctrl_z { u-boot,dm-pre-reloc; i2c4_pins_z_mx: i2c4_mx-0 { u-boot,dm-pre-reloc; pins { u-boot,dm-pre-reloc; pinmux = , /* I2C4_SCL */ ; /* I2C4_SDA */ bias-disable; drive-open-drain; slew-rate = <0>; }; }; i2c4_sleep_pins_z_mx: i2c4_sleep_mx-0 { u-boot,dm-pre-reloc; pins { u-boot,dm-pre-reloc; pinmux = , /* I2C4_SCL */ ; /* I2C4_SDA */ }; }; /* USER CODE BEGIN pinctrl_z */ /* USER CODE END pinctrl_z */ }; &m4_rproc{ /*Restriction: "memory-region" property is not managed - please to use User-Section if needed*/ mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>; mbox-names = "vq0", "vq1", "shutdown"; status = "okay"; /* USER CODE BEGIN m4_rproc */ memory-region = <&retram>, <&mcuram>, <&mcuram2>, <&vdev0vring0>, <&vdev0vring1>, <&vdev0buffer>, <&mcu_rsc_table>; interrupt-parent = <&exti>; interrupts = <68 1>; wakeup-source; /* USER CODE END m4_rproc */ m4_system_resources{ status = "okay"; /* USER CODE BEGIN m4_system_resources */ /* USER CODE END m4_system_resources */ }; }; &adc { pinctrl-names = "default", "sleep"; pinctrl-0 = <&adc_pins_mx>; pinctrl-1 = <&adc_sleep_pins_mx>; status = "okay"; /* USER CODE BEGIN adc */ vdd-supply = <&vdd>; vdda-supply = <&vdd>; vref-supply = <&vrefbuf>; adc1:adc@0{ status = "okay"; channel@18{ reg = <18>; st,min-sample-time-ns = <5000>; }; channel@19{ reg = <19>; st,min-sample-time-ns = <5000>; }; }; adc2:adc@100{ status = "okay"; channel@18{ reg = <18>; st,min-sample-time-ns = <5000>; }; channel@19{ reg = <19>; st,min-sample-time-ns = <5000>; }; }; /* USER CODE END adc */ }; &bsec { status = "okay"; /* USER CODE BEGIN bsec */ /* USER CODE END bsec */ }; &cec { pinctrl-names = "default", "sleep"; pinctrl-0 = <&hdmi_cec_pins_mx>; pinctrl-1 = <&hdmi_cec_sleep_pins_mx>; status = "okay"; /* USER CODE BEGIN cec */ /* USER CODE END cec */ }; &crc1 { status = "okay"; /* USER CODE BEGIN crc1 */ /* USER CODE END crc1 */ }; &cryp1 { status = "okay"; /* USER CODE BEGIN cryp1 */ /* USER CODE END cryp1 */ }; &dma1 { status = "okay"; /* USER CODE BEGIN dma1 */ sram = <&dma_pool>; /* USER CODE END dma1 */ }; &dma2 { status = "disabled"; /* Für Linux deaktivieren */ /* USER CODE BEGIN dma2 */ /* sram = <&dma_pool>; */ /* USER CODE END dma2 */ }; &dmamux1 { status = "okay"; dma-masters = <&dma1>; dma-channels = <8>; /* USER CODE BEGIN dmamux1 */ /* USER CODE END dmamux1 */ }; &dts { /* Temperatursensor */ status = "okay"; /* USER CODE BEGIN dts */ /* USER CODE END dts */ }; ðernet0{ pinctrl-names = "default", "sleep"; pinctrl-0 = <ð1_pins_mx>; pinctrl-1 = <ð1_sleep_pins_mx>; status = "okay"; /* USER CODE BEGIN ethernet0 */ phy-mode = "rgmii-id"; max-speed = <1000>; phy-handle = <&phy0>; nvmem-cells = <ðernet_mac_address>; nvmem-cell-names = "mac-address"; st,eth-clk-sel = "true"; clock-names = "stmmaceth", "mac-clk-tx", "mac-clk-rx", "eth-ck", "syscfg-clk", "ethstp"; clocks = <&rcc ETHMAC>, <&rcc ETHTX>, <&rcc ETHRX>, <&rcc ETHCK_K>, <&rcc SYSCFG>, <&rcc ETHSTP>; mdio0 { #address-cells = <1>; #size-cells = <0>; compatible = "snps,dwmac-mdio"; phy0: ethernet-phy@1 { compatible = "ethernet-phy-ieee802.3-c22"; reg = <1>; interrupt-parent = <&gpiog>; interrupts = <12 IRQ_TYPE_EDGE_FALLING>; ti,rx-internal-delay = ; ti,tx-internal-delay = ; ti,fifo-depth = ; ti,min-output-impedance; enet-phy-lane-no-swap; ti,clk-output-sel = ; }; }; /* USER CODE END ethernet0 */ }; &fmc{ /* NAND */ u-boot,dm-pre-reloc; pinctrl-names = "default", "sleep"; pinctrl-0 = <&fmc_pins_mx>; pinctrl-1 = <&fmc_sleep_pins_mx>; status = "okay"; /* USER CODE BEGIN fmc */ nand-controller@4,0 { status = "okay"; nand: nand@0 { reg = <0>; nand-on-flash-bbt; nand-ecc-strength = <4>; nand-ecc-step-size = <512>; #address-cells = <1>; #size-cells = <1>; }; }; /* USER CODE END fmc */ }; &gpu { status = "okay"; /* USER CODE BEGIN gpu */ contiguous-area = <&gpu_reserved>; /* USER CODE END gpu */ }; &hash1 { u-boot,dm-pre-reloc; status = "okay"; /* USER CODE BEGIN hash1 */ /* USER CODE END hash1 */ }; &hsem { status = "okay"; /* USER CODE BEGIN hsem */ /* USER CODE END hsem */ }; &i2c1 { pinctrl-names = "default", "sleep"; pinctrl-0 = <&i2c1_pins_mx>; pinctrl-1 = <&i2c1_sleep_pins_mx>; status = "okay"; /* USER CODE BEGIN i2c1 */ i2c-scl-rising-time-ns = <100>; i2c-scl-falling-time-ns = <7>; /delete-property/ dmas; /delete-property/ dma-names; /* TLV320AHC Audio Codec */ tlv320ahc: tlv320ahc@18 { compatible = "ti,tlv320aic23"; reg = <0x18>; #sound-dai-cells = <0>; status = "okay"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; tlv320ahc_tx_endpoint: endpoint { remote-endpoint = <&sai2a_endpoint>; }; }; port@1 { reg = <1>; tlv320ahc_rx_endpoint: endpoint { remote-endpoint = <&sai2b_endpoint>; }; }; }; }; /* USER CODE END i2c1 */ }; &i2c2 { pinctrl-names = "default", "sleep"; pinctrl-0 = <&i2c2_pins_mx>; pinctrl-1 = <&i2c2_sleep_pins_mx>; status = "okay"; /* USER CODE BEGIN i2c2 */ i2c-scl-rising-time-ns = <100>; /* Typischer Wert für Standard-I2C-Leitungen */ i2c-scl-falling-time-ns = <100>; /* Typischer Wert für Standard-I2C-Leitungen */ clock-frequency = <100000>; /* 100 kHz ist eine sichere Standard-Frequenz */ /delete-property/ dmas; /delete-property/ dma-names; /* EDID-Kommunikation mit dem angeschlossenen Display */ dvi-connector@50 { compatible = "dvi-connector"; reg = <0x50>; /* Das ist die Standard-I2C-Adresse für EDID */ }; /* USER CODE END i2c2 */ }; &i2c3 { /* Grundlegende I2C3-Konfiguration */ pinctrl-names = "default", "sleep"; pinctrl-0 = <&i2c3_pins_mx>; pinctrl-1 = <&i2c3_sleep_pins_mx>; i2c-scl-rising-time-ns = <100>; i2c-scl-falling-time-ns = <100>; clock-frequency = <100000>; /* 100 kHz ist sicher für MAX9744 */ status = "okay"; /* MAX9744ETH+ Class-D Amplifier */ max9744: max9744@4b { compatible = "maxim,max9744"; reg = <0x4B>; /* Typische I2C-Adresse für MAX9744 */ status = "okay"; /* Wenn Sie spezifische GPIO-Pins für Steuerung haben */ /* shutdown-gpios = <&gpiox XX GPIO_ACTIVE_HIGH>; */ /* Ersetzen Sie mit tatsächlichem GPIO-Pin falls vorhanden */ }; }; &i2c4 { u-boot,dm-pre-reloc; pinctrl-names = "default", "sleep"; pinctrl-0 = <&i2c4_pins_z_mx>; pinctrl-1 = <&i2c4_sleep_pins_z_mx>; status = "okay"; /* USER CODE BEGIN i2c4 */ i2c-scl-rising-time-ns = <185>; i2c-scl-falling-time-ns = <20>; clock-frequency = <400000>; /delete-property/ dmas; /delete-property/ dma-names; pmic:stpmic@33{ compatible = "st,stpmic1"; reg = <0x33>; interrupts-extended = <&exti 55 IRQ_TYPE_EDGE_FALLING>; interrupt-controller; #interrupt-cells = <2>; status = "okay"; wakeup-source; regulators { compatible = "st,stpmic1-regulators"; buck1-supply = <&vin>; buck2-supply = <&vin>; buck3-supply = <&vin>; buck4-supply = <&vin>; ldo1-supply = <&v3v3>; ldo2-supply = <&v3v3>; ldo3-supply = <&vdd_ddr>; ldo4-supply = <&vin>; ldo5-supply = <&v3v3>; ldo6-supply = <&v3v3>; vref_ddr-supply = <&vin>; boost-supply = <&vin>; pwr_sw1-supply = <&bst_out>; pwr_sw2-supply = <&bst_out>; vddcore: buck1 { regulator-name = "vddcore"; regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1350000>; regulator-always-on; regulator-initial-mode = <0>; regulator-over-current-protection; }; vdd_ddr: buck2 { regulator-name = "vdd_ddr"; regulator-min-microvolt = <1350000>; regulator-max-microvolt = <1350000>; regulator-always-on; regulator-initial-mode = <0>; regulator-over-current-protection; }; vdd: buck3 { regulator-name = "vdd"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-always-on; st,mask-reset; regulator-initial-mode = <0>; regulator-over-current-protection; }; v3v3: buck4 { regulator-name = "v3v3"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-always-on; regulator-over-current-protection; regulator-initial-mode = <0>; }; v1v8_audio: ldo1 { regulator-name = "v1v8_audio"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-always-on; interrupts = ; }; vdd_eth_2v5: ldo2 { regulator-name = "dd_eth_2v5"; regulator-min-microvolt = <2500000>; regulator-max-microvolt = <2500000>; regulator-always-on; interrupts = ; }; vtt_ddr: ldo3 { regulator-name = "vtt_ddr"; regulator-min-microvolt = <500000>; regulator-max-microvolt = <750000>; regulator-always-on; regulator-over-current-protection; }; vdd_usb: ldo4 { regulator-name = "vdd_usb"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; interrupts = ; }; vdda: ldo5 { regulator-name = "vdda"; regulator-min-microvolt = <2900000>; regulator-max-microvolt = <2900000>; interrupts = ; regulator-boot-on; }; vdd_eth_1v0: ldo6 { regulator-name = "vdd_eth_1v0"; regulator-min-microvolt = <1000000>; regulator-max-microvolt = <1000000>; regulator-always-on; interrupts = ; }; vref_ddr: vref_ddr { regulator-name = "vref_ddr"; regulator-always-on; regulator-over-current-protection; }; bst_out: boost { regulator-name = "bst_out"; interrupts = ; }; vbus_otg: pwr_sw1 { regulator-name = "vbus_otg"; interrupts = ; regulator-active-discharge; }; vbus_sw: pwr_sw2 { regulator-name = "vbus_sw"; interrupts = ; regulator-active-discharge; }; }; onkey{ compatible = "st,stpmic1-onkey"; interrupts = , ; interrupt-names = "onkey-falling", "onkey-rising"; power-off-time-sec = <10>; status = "okay"; }; watchdog { compatible = "st,stpmic1-wdt"; status = "disabled"; }; }; i2c4_eeprom: eeprom@50 { compatible = "microchip,24c32", "atmel,24c32"; reg = <0x50>; status = "okay"; }; i2c4_rtc: rtc@52 { compatible = "microcrystal,rv3028"; reg = <0x52>; enable-level-switching-mode; status = "okay"; }; /* USER CODE END i2c4 */ }; &ipcc { status = "okay"; /* USER CODE BEGIN ipcc */ /* USER CODE END ipcc */ }; &iwdg2{ /* Watchdog für Cortex-A7 Core (Linux) */ status = "okay"; /* timeout-sec = <32>;*/ /* Timeout in Sekunden */ /* USER CODE BEGIN iwdg2 */ timeout-sec = <32>; /* USER CODE END iwdg2 */ }; <dc { status = "okay"; /* USER CODE BEGIN ltdc */ pinctrl-names = "default", "sleep"; pinctrl-0 = <<dc_pins_mx>; pinctrl-1 = <<dc_sleep_pins_mx>; default-on; port{ #address-cells = <1>; #size-cells = <0>; ltdc_ep0_out:endpoint{ remote-endpoint = <&tfp410_in>; }; }; /* USER CODE END ltdc */ }; &m4_spi1 { pinctrl-names = "default"; pinctrl-0 = <&m4_spi1_pins_mx>; status = "okay"; /* USER CODE BEGIN m4_spi1 */ /* USER CODE END m4_spi1 */ }; &m4_spi2 { pinctrl-names = "default"; pinctrl-0 = <&m4_spi2_pins_mx>; status = "okay"; /* USER CODE BEGIN m4_spi2 */ /* USER CODE END m4_spi2 */ }; &m4_timers2 { status = "okay"; /* USER CODE BEGIN m4_timers2 */ /* USER CODE END m4_timers2 */ }; &mdma1 { status = "okay"; /* USER CODE BEGIN mdma1 */ /* USER CODE END mdma1 */ }; &pwr_regulators { status = "okay"; /* USER CODE BEGIN pwr_regulators */ vdd-supply = <&vdd>; vdd_3v3_usbfs-supply = <&vdd_usb>; /* USER CODE END pwr_regulators */ }; &qspi{ u-boot,dm-pre-reloc; pinctrl-names = "default", "sleep"; pinctrl-0 = <&quadspi_pins_mx>; pinctrl-1 = <&quadspi_sleep_pins_mx>; status = "okay"; /* USER CODE BEGIN qspi */ reg = <0x58003000 0x1000>, <0x70000000 0x4000000>; #address-cells = <1>; #size-cells = <0>; flash0: w25q128@0 { compatible = "winbond,w25q128", "jedec,spi-nor", "spi-flash"; reg = <0>; spi-rx-bus-width = <4>; spi-max-frequency = <50000000>; m25p,fast-read; #address-cells = <1>; #size-cells = <1>; }; /* USER CODE END qspi */ }; &rcc { u-boot,dm-pre-reloc; status = "okay"; /* USER CODE BEGIN rcc */ /* USER CODE END rcc */ }; &rtc { pinctrl-names = "default", "sleep"; pinctrl-0 = <&rtc_pins_mx>; pinctrl-1 = <&rtc_sleep_pins_mx>; status = "okay"; /* USER CODE BEGIN rtc */ st,lsco = ; /* USER CODE END rtc */ }; &sai2 { /* Für I2S-Modus konfigurieren */ st,iec60958; clocks = <&rcc SAI2>, <&rcc PLL3_Q>, <&rcc PLL3_R>; clock-names = "pclk", "x8k", "x11k"; status = "okay"; sai2a: audio-controller@4400b004 { #sound-dai-cells = <0>; #clock-cells = <0>; dma-names = "tx"; pinctrl-names = "default", "sleep"; pinctrl-0 = <&sai2a_pins_mx>; pinctrl-1 = <&sai2a_sleep_pins_mx>; status = "okay"; sai2a_port: port { sai2a_endpoint: endpoint { remote-endpoint = <&tlv320ahc_tx_endpoint>; dai-format = "i2s"; mclk-fs = <256>; dai-tdm-slot-num = <2>; dai-tdm-slot-width = <32>; }; }; }; sai2b: audio-controller@4400b024 { #sound-dai-cells = <0>; dma-names = "rx"; pinctrl-names = "default", "sleep"; pinctrl-0 = <&sai2b_pins_mx>; pinctrl-1 = <&sai2b_sleep_pins_mx>; status = "okay"; sai2b_port: port { sai2b_endpoint: endpoint { remote-endpoint = <&tlv320ahc_rx_endpoint>; dai-format = "i2s"; mclk-fs = <256>; dai-tdm-slot-num = <2>; dai-tdm-slot-width = <32>; }; }; }; }; &sdmmc1 { u-boot,dm-pre-reloc; pinctrl-names = "default", "opendrain", "sleep"; pinctrl-0 = <&sdmmc1_pins_mx &sdmmc1_cd_pins>; pinctrl-1 = <&sdmmc1_opendrain_pins_mx>; pinctrl-2 = <&sdmmc1_sleep_pins_mx>; status = "okay"; /* USER CODE BEGIN sdmmc1 */ cd-gpios = <&gpiof 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; disable-wp; st,neg-edge; bus-width = <4>; vmmc-supply = <&v3v3>; /* USER CODE END sdmmc1 */ }; &sdmmc2{ u-boot,dm-pre-reloc; pinctrl-names = "default", "opendrain", "sleep"; pinctrl-0 = <&sdmmc2_pins_mx>; pinctrl-1 = <&sdmmc2_opendrain_pins_mx>; pinctrl-2 = <&sdmmc2_sleep_pins_mx>; status = "okay"; /* USER CODE BEGIN sdmmc2 */ non-removable; no-sd; no-sdio; st,neg-edge; bus-width = <8>; vmmc-supply = <&v3v3>; vqmmc-supply = <&v3v3>; mmc-ddr-3_3v; /* USER CODE END sdmmc2 */ }; &sdmmc3 { pinctrl-names = "default", "opendrain", "sleep"; pinctrl-0 = <&sdmmc3_pins_mx>; pinctrl-1 = <&sdmmc3_opendrain_pins_mx>; pinctrl-2 = <&sdmmc3_sleep_pins_mx>; status = "okay"; non-removable; cap-sdio-irq; st,neg-edge; bus-width = <4>; vmmc-supply = <&v3v3>; mmc-pwrseq = <&wifi_pwrseq>; #address-cells = <1>; #size-cells = <0>; maya_w2: wifi@1 { reg = <1>; compatible = "u-blox,maya-w2"; }; }; &tamp { /* Tamper-Controller des STM32MP157. Dieser Controller dient der Erkennung von Manipulationsversuchen */ status = "okay"; /* USER CODE BEGIN tamp */ /* USER CODE END tamp */ }; &usart1 { /* RS-485 */ pinctrl-names = "default", "sleep"; pinctrl-0 = <&usart1_pins_mx>; pinctrl-1 = <&usart1_sleep_pins_mx>; status = "okay"; /* RS-485 Konfiguration */ rs485-rts-delay = <0 0>; /* Keine Verzögerung für RTS Umschaltung */ linux,rs485-enabled-at-boot-time; /* RS-485 bei Boot aktivieren */ rs485-rts-active-high; /* RTS auf High setzen zum Senden (typisch für RS-485) */ uart-has-rtscts; /* Aktiviert Hardware-Flow-Control-Pins */ /* DMA deaktivieren, falls nicht benötigt */ /delete-property/ dmas; /delete-property/ dma-names; }; &usart2 { u-boot,dm-pre-reloc; pinctrl-names = "default", "sleep"; pinctrl-0 = <&usart2_pins_mx>; pinctrl-1 = <&usart2_sleep_pins_mx>; status = "okay"; /* Konsole/Debug-Einstellungen */ console-port; /* Markiert diesen Port als Konsole */ /delete-property/ dmas; /* DMA deaktivieren für Konsole */ /delete-property/ dma-names; }; &usart3 { pinctrl-names = "default", "sleep"; pinctrl-0 = <&usart3_pins_mx>; pinctrl-1 = <&usart3_sleep_pins_mx>; status = "okay"; uart-has-rtscts; maya_w2_bt: bluetooth { compatible = "u-blox,maya-w2-bt"; max-speed = <3000000>; vbat-supply = <&v3v3>; vddio-supply = <&v3v3>; /* shutdown-gpios = <&gpioz 6 GPIO_ACTIVE_HIGH>; */ /* Anpassen nach Ihrem Pin-Setup */ }; }; &usbh_ehci { status = "okay"; /* USER CODE BEGIN usbh_ehci */ phys = <&usbphyc_port0>; #address-cells = <1>; #size-cells = <0>; hub@1{ compatible = "usb424,2514"; reg = <1>; vdd-supply = <&v3v3>; }; /* USER CODE END usbh_ehci */ }; &usbh_ohci { status = "okay"; /* USER CODE BEGIN usbh_ohci */ /* USER CODE END usbh_ohci */ }; &usbotg_hs { u-boot,dm-pre-reloc; status = "okay"; /* USER CODE BEGIN usbotg_hs */ phys = <&usbphyc_port1 0>; phy-names = "usb2-phy"; /* usb-role-switch; * dr_mode = "host"; /* Alternativen: "peripheral" oder "otg" */ /* port{ usbotg_hs_ep:endpoint{ remote-endpoint = <&con_usbotg_hs_ep>; }; }; */ /* USER CODE END usbotg_hs */ }; &usbphyc { u-boot,dm-pre-reloc; status = "okay"; /* USER CODE BEGIN usbphyc */ /* USER CODE END usbphyc */ }; &usbphyc_port0 { u-boot,dm-pre-reloc; status = "okay"; /* USER CODE BEGIN usbphyc_port0 */ phy-supply = <&vdd_usb>; st,tune-hs-dc-level = <2>; st,enable-fs-rftime-tuning; st,enable-hs-rftime-reduction; st,trim-hs-current = <15>; st,trim-hs-impedance = <1>; st,tune-squelch-level = <3>; st,tune-hs-rx-offset = <2>; st,no-lsfs-sc; /* USER CODE END usbphyc_port0 */ }; &usbphyc_port1 { u-boot,dm-pre-reloc; status = "okay"; /* USER CODE BEGIN usbphyc_port1 */ phy-supply = <&vdd_usb>; st,tune-hs-dc-level = <2>; st,enable-fs-rftime-tuning; st,enable-hs-rftime-reduction; st,trim-hs-current = <15>; st,trim-hs-impedance = <1>; st,tune-squelch-level = <3>; st,tune-hs-rx-offset = <2>; st,no-lsfs-sc; /* USER CODE END usbphyc_port1 */ }; &vrefbuf { status = "okay"; /* USER CODE BEGIN vrefbuf */ regulator-min-microvolt = <2500000>; regulator-max-microvolt = <2500000>; vdda-supply = <&vdd>; /* USER CODE END vrefbuf */ }; /* USER CODE BEGIN addons */ &arm_wdt { timeout-sec = <32>; status = "okay"; }; &cpu0 { cpu-supply = <&vddcore>; }; &cpu1 { cpu-supply = <&vddcore>; }; &ddrperfm { status = "okay"; }; &usbh_ohci{ phys = <&usbphyc_port0>; }; &sram{ dma_pool:dma_pool@0{ reg = <0x50000 0x10000>; pool; }; }; &maya_w2_bt { clocks = <&rcc USART3>; clock-names = "extclk"; }; &m4_rproc{ /*Restriction: "memory-region" property is not managed - please to use User-Section if needed*/ mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>; mbox-names = "vq0", "vq1", "shutdown"; status = "okay"; /* USER CODE BEGIN m4_rproc */ memory-region = <&retram>, <&mcuram>, <&mcuram2>, <&vdev0vring0>, <&vdev0vring1>, <&vdev0buffer>; interrupt-parent = <&exti>; interrupts = <68 1>; wakeup-source; /* USER CODE END m4_rproc */ m4_system_resources{ status = "okay"; m4_dma2: m4_dma2 { compatible = "st,stm32-dma"; status = "okay"; exclusive-use; /* Markiert für exklusiven M4-Zugriff */ }; m4_dmamux1: m4_dmamux1 { compatible = "st,stm32-dmamux"; dma-masters = <&m4_dma2>; dma-channels = <8>; /* Anzahl der DMA2-Kanäle */ status = "okay"; exclusive-use; }; /* USER CODE BEGIN m4_system_resources */ /* USER CODE END m4_system_resources */ }; }; /* USER CODE END addons */