Browse Source
Add one device tree to support a family of boards (PRTT1C, PRTT1S, PRTT1A) based on STM32MP151AAD3, used as sensors and actuators for industrial, 10BaseT1L based networks. This change was tested with barebox 2022.12.0 bootloader and kernel v6.2.0-rc1. Signed-off-by: David Jander <david@protonic.nl> Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Change-Id: Ibab9933eadd7aa379ae0a7c7ccbfc2fbb9a44ca8pull/1996/head
David Jander
3 years ago
committed by
Oleksij Rempel
3 changed files with 361 additions and 0 deletions
@ -0,0 +1,119 @@ |
|||
// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) |
|||
/* |
|||
* Copyright (C) 2023, STMicroelectronics - All Rights Reserved |
|||
*/ |
|||
|
|||
/* |
|||
* File generated by STMicroelectronics STM32CubeMX DDR Tool for MPUs |
|||
* DDR type: DDR3 / DDR3L |
|||
* DDR width: 16bits |
|||
* DDR density: 4Gb |
|||
* System frequency: 533000Khz |
|||
* Relaxed Timing Mode: false |
|||
* Address mapping type: RBC |
|||
* |
|||
* Save Date: 2020.02.20, save Time: 18:45:20 |
|||
*/ |
|||
|
|||
#define DDR_MEM_NAME "DDR3-DDR3L 16bits 533000kHz" |
|||
#define DDR_MEM_SPEED 533000 |
|||
#define DDR_MEM_SIZE 0x10000000 |
|||
|
|||
#define DDR_MSTR 0x00041401 |
|||
#define DDR_MRCTRL0 0x00000010 |
|||
#define DDR_MRCTRL1 0x00000000 |
|||
#define DDR_DERATEEN 0x00000000 |
|||
#define DDR_DERATEINT 0x00800000 |
|||
#define DDR_PWRCTL 0x00000000 |
|||
#define DDR_PWRTMG 0x00400010 |
|||
#define DDR_HWLPCTL 0x00000000 |
|||
#define DDR_RFSHCTL0 0x00210000 |
|||
#define DDR_RFSHCTL3 0x00000000 |
|||
#define DDR_RFSHTMG 0x0040008B |
|||
#define DDR_CRCPARCTL0 0x00000000 |
|||
#define DDR_DRAMTMG0 0x121B1214 |
|||
#define DDR_DRAMTMG1 0x000A041C |
|||
#define DDR_DRAMTMG2 0x0608090F |
|||
#define DDR_DRAMTMG3 0x0050400C |
|||
#define DDR_DRAMTMG4 0x08040608 |
|||
#define DDR_DRAMTMG5 0x06060403 |
|||
#define DDR_DRAMTMG6 0x02020002 |
|||
#define DDR_DRAMTMG7 0x00000202 |
|||
#define DDR_DRAMTMG8 0x00001005 |
|||
#define DDR_DRAMTMG14 0x000000A0 |
|||
#define DDR_ZQCTL0 0xC2000040 |
|||
#define DDR_DFITMG0 0x02060105 |
|||
#define DDR_DFITMG1 0x00000202 |
|||
#define DDR_DFILPCFG0 0x07000000 |
|||
#define DDR_DFIUPD0 0xC0400003 |
|||
#define DDR_DFIUPD1 0x00000000 |
|||
#define DDR_DFIUPD2 0x00000000 |
|||
#define DDR_DFIPHYMSTR 0x00000000 |
|||
#define DDR_ODTCFG 0x06000600 |
|||
#define DDR_ODTMAP 0x00000001 |
|||
#define DDR_SCHED 0x00000C01 |
|||
#define DDR_SCHED1 0x00000000 |
|||
#define DDR_PERFHPR1 0x01000001 |
|||
#define DDR_PERFLPR1 0x08000200 |
|||
#define DDR_PERFWR1 0x08000400 |
|||
#define DDR_DBG0 0x00000000 |
|||
#define DDR_DBG1 0x00000000 |
|||
#define DDR_DBGCMD 0x00000000 |
|||
#define DDR_POISONCFG 0x00000000 |
|||
#define DDR_PCCFG 0x00000010 |
|||
#define DDR_PCFGR_0 0x00010000 |
|||
#define DDR_PCFGW_0 0x00000000 |
|||
#define DDR_PCFGQOS0_0 0x02100C03 |
|||
#define DDR_PCFGQOS1_0 0x00800100 |
|||
#define DDR_PCFGWQOS0_0 0x01100C03 |
|||
#define DDR_PCFGWQOS1_0 0x01000200 |
|||
#define DDR_PCFGR_1 0x00010000 |
|||
#define DDR_PCFGW_1 0x00000000 |
|||
#define DDR_PCFGQOS0_1 0x02100C03 |
|||
#define DDR_PCFGQOS1_1 0x00800040 |
|||
#define DDR_PCFGWQOS0_1 0x01100C03 |
|||
#define DDR_PCFGWQOS1_1 0x01000200 |
|||
#define DDR_ADDRMAP1 0x00151515 |
|||
#define DDR_ADDRMAP2 0x00000000 |
|||
#define DDR_ADDRMAP3 0x1F000000 |
|||
#define DDR_ADDRMAP4 0x00001F1F |
|||
#define DDR_ADDRMAP5 0x03030303 |
|||
#define DDR_ADDRMAP6 0x0F0F0303 |
|||
#define DDR_ADDRMAP9 0x00000000 |
|||
#define DDR_ADDRMAP10 0x00000000 |
|||
#define DDR_ADDRMAP11 0x00000000 |
|||
#define DDR_PGCR 0x01442E02 |
|||
#define DDR_PTR0 0x0022AA5B |
|||
#define DDR_PTR1 0x04841104 |
|||
#define DDR_PTR2 0x042DA068 |
|||
#define DDR_ACIOCR 0x10400812 |
|||
#define DDR_DXCCR 0x00000C40 |
|||
#define DDR_DSGCR 0xF200011F |
|||
#define DDR_DCR 0x0000000B |
|||
#define DDR_DTPR0 0x38D488D0 |
|||
#define DDR_DTPR1 0x098B00D8 |
|||
#define DDR_DTPR2 0x10023600 |
|||
#define DDR_MR0 0x00000840 |
|||
#define DDR_MR1 0x00000000 |
|||
#define DDR_MR2 0x00000248 |
|||
#define DDR_MR3 0x00000000 |
|||
#define DDR_ODTCR 0x00010000 |
|||
#define DDR_ZQ0CR1 0x00000038 |
|||
#define DDR_DX0GCR 0x0000CE81 |
|||
#define DDR_DX0DLLCR 0x40000000 |
|||
#define DDR_DX0DQTR 0xFFFFFFFF |
|||
#define DDR_DX0DQSTR 0x3DB02000 |
|||
#define DDR_DX1GCR 0x0000CE81 |
|||
#define DDR_DX1DLLCR 0x40000000 |
|||
#define DDR_DX1DQTR 0xFFFFFFFF |
|||
#define DDR_DX1DQSTR 0x3DB02000 |
|||
#define DDR_DX2GCR 0x0000CE80 |
|||
#define DDR_DX2DLLCR 0x40000000 |
|||
#define DDR_DX2DQTR 0xFFFFFFFF |
|||
#define DDR_DX2DQSTR 0x3DB02000 |
|||
#define DDR_DX3GCR 0x0000CE80 |
|||
#define DDR_DX3DLLCR 0x40000000 |
|||
#define DDR_DX3DQTR 0xFFFFFFFF |
|||
#define DDR_DX3DQSTR 0x3DB02000 |
|||
|
|||
#include "stm32mp15-ddr.dtsi" |
@ -0,0 +1,7 @@ |
|||
// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) |
|||
/* |
|||
* Copyright (c) 2023, Oleksij Rempel <kernel@pengutronix.de>, Pengutronix |
|||
*/ |
|||
|
|||
#define DDR_SIZE 0x10000000 /* 256 MB */ |
|||
#include "stm32mp15-fw-config.dtsi" |
@ -0,0 +1,235 @@ |
|||
// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) |
|||
/* |
|||
* Copyright (C) 2023, Protonic Holland - All Rights Reserved |
|||
* Author: David Jander <david@protonic.nl> |
|||
*/ |
|||
/dts-v1/; |
|||
|
|||
#include "stm32mp151.dtsi" |
|||
#include "stm32mp15-pinctrl.dtsi" |
|||
#include "stm32mp15xxad-pinctrl.dtsi" |
|||
#include <dt-bindings/clock/stm32mp1-clksrc.h> |
|||
#include "stm32mp15-ddr3-1x2Gb-1066-binG.dtsi" |
|||
|
|||
/ { |
|||
model = "Protonic PRTT1A"; |
|||
compatible = "prt,prtt1a", "st,stm32mp151"; |
|||
|
|||
chosen { |
|||
stdout-path = "serial0:115200n8"; |
|||
}; |
|||
|
|||
aliases { |
|||
mmc0 = &sdmmc1; |
|||
mmc1 = &sdmmc2; |
|||
serial0 = &uart4; |
|||
}; |
|||
|
|||
memory@c0000000 { |
|||
device_type = "memory"; |
|||
reg = <0xC0000000 0x10000000>; |
|||
}; |
|||
}; |
|||
|
|||
&iwdg2 { |
|||
timeout-sec = <32>; |
|||
status = "okay"; |
|||
secure-status = "okay"; |
|||
}; |
|||
|
|||
&qspi { |
|||
pinctrl-names = "default", "sleep"; |
|||
pinctrl-0 = <&qspi_clk_pins_a &qspi_bk1_pins_a>; |
|||
reg = <0x58003000 0x1000>, <0x70000000 0x4000000>; |
|||
#address-cells = <1>; |
|||
#size-cells = <0>; |
|||
status = "okay"; |
|||
|
|||
flash@0 { |
|||
compatible = "spi-nand"; |
|||
reg = <0>; |
|||
spi-rx-bus-width = <4>; |
|||
spi-max-frequency = <104000000>; |
|||
#address-cells = <1>; |
|||
#size-cells = <1>; |
|||
}; |
|||
}; |
|||
|
|||
&qspi_bk1_pins_a { |
|||
pins1 { |
|||
bias-pull-up; |
|||
drive-push-pull; |
|||
slew-rate = <1>; |
|||
}; |
|||
}; |
|||
|
|||
&rcc { |
|||
st,clksrc = < |
|||
CLK_MPU_PLL1P |
|||
CLK_AXI_PLL2P |
|||
CLK_MCU_PLL3P |
|||
CLK_PLL12_HSE |
|||
CLK_PLL3_HSE |
|||
CLK_PLL4_HSE |
|||
CLK_RTC_LSI |
|||
CLK_MCO1_DISABLED |
|||
CLK_MCO2_DISABLED |
|||
>; |
|||
|
|||
st,clkdiv = < |
|||
1 /*MPU*/ |
|||
0 /*AXI*/ |
|||
0 /*MCU*/ |
|||
1 /*APB1*/ |
|||
1 /*APB2*/ |
|||
1 /*APB3*/ |
|||
1 /*APB4*/ |
|||
2 /*APB5*/ |
|||
23 /*RTC*/ |
|||
0 /*MCO1*/ |
|||
0 /*MCO2*/ |
|||
>; |
|||
|
|||
st,pkcs = < |
|||
CLK_CKPER_HSE |
|||
CLK_FMC_ACLK |
|||
CLK_QSPI_ACLK |
|||
CLK_ETH_DISABLED |
|||
CLK_SDMMC12_PLL4P |
|||
CLK_DSI_DSIPLL |
|||
CLK_STGEN_HSE |
|||
CLK_USBPHY_HSE |
|||
CLK_SPI2S1_PLL3Q |
|||
CLK_SPI2S23_PLL3Q |
|||
CLK_SPI45_HSI |
|||
CLK_SPI6_HSI |
|||
CLK_I2C46_HSI |
|||
CLK_SDMMC3_PLL4P |
|||
CLK_USBO_USBPHY |
|||
CLK_ADC_CKPER |
|||
CLK_CEC_LSI |
|||
CLK_I2C12_HSI |
|||
CLK_I2C35_HSI |
|||
CLK_UART1_HSI |
|||
CLK_UART24_HSI |
|||
CLK_UART35_HSI |
|||
CLK_UART6_HSI |
|||
CLK_UART78_HSI |
|||
CLK_SPDIF_PLL4P |
|||
CLK_FDCAN_PLL4R |
|||
CLK_SAI1_PLL3Q |
|||
CLK_SAI2_PLL3Q |
|||
CLK_SAI3_PLL3Q |
|||
CLK_SAI4_PLL3Q |
|||
CLK_RNG1_LSI |
|||
CLK_RNG2_LSI |
|||
CLK_LPTIM1_PCLK1 |
|||
CLK_LPTIM23_PCLK3 |
|||
CLK_LPTIM45_LSI |
|||
>; |
|||
|
|||
/* VCO = 1300.0 MHz => P = 650 (CPU) */ |
|||
pll1: st,pll@0 { |
|||
compatible = "st,stm32mp1-pll"; |
|||
reg = <0>; |
|||
cfg = <2 80 0 0 0 PQR(1,0,0)>; |
|||
frac = <0x800>; |
|||
}; |
|||
|
|||
/* VCO = 1066.0 MHz => P = 266 (AXI), Q = 533 (GPU), R = 533 (DDR) */ |
|||
pll2: st,pll@1 { |
|||
compatible = "st,stm32mp1-pll"; |
|||
reg = <1>; |
|||
cfg = <2 65 1 0 0 PQR(1,1,1)>; |
|||
frac = <0x1400>; |
|||
}; |
|||
|
|||
/* VCO = 417.8 MHz => P = 209, Q = 24, R = 11 */ |
|||
pll3: st,pll@2 { |
|||
compatible = "st,stm32mp1-pll"; |
|||
reg = <2>; |
|||
cfg = <1 33 1 16 36 PQR(1,1,1)>; |
|||
frac = <0x1a04>; |
|||
}; |
|||
|
|||
/* VCO = 480.0 MHz => P = 120, Q = 40, R = 96 */ |
|||
pll4: st,pll@3 { |
|||
compatible = "st,stm32mp1-pll"; |
|||
reg = <3>; |
|||
cfg = <1 39 3 11 4 PQR(1,1,1)>; |
|||
}; |
|||
}; |
|||
|
|||
&rng1 { |
|||
status = "okay"; |
|||
}; |
|||
|
|||
&rtc { |
|||
status = "okay"; |
|||
}; |
|||
|
|||
&sdmmc1 { |
|||
pinctrl-names = "default"; |
|||
pinctrl-0 = <&sdmmc1_b4_pins_a>; |
|||
bus-width = <4>; |
|||
status = "okay"; |
|||
}; |
|||
|
|||
&sdmmc1_b4_pins_a { |
|||
pins1 { |
|||
bias-pull-up; |
|||
}; |
|||
pins2 { |
|||
bias-pull-up; |
|||
}; |
|||
}; |
|||
|
|||
/* NOTE: Although the PRTT1A does not have an eMMC, we declare it |
|||
* anyway, in order to be able to use the same binary for the |
|||
* PRTT1C also. All involved pins are N.C. on PRTT1A/S for that |
|||
* reason, so it should do no harm. All inputs configured with |
|||
* pull-ups to avoid floating inputs. */ |
|||
&sdmmc2 { |
|||
pinctrl-names = "default"; |
|||
pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_a>; |
|||
bus-width = <8>; |
|||
status = "okay"; |
|||
}; |
|||
|
|||
&sdmmc2_b4_pins_a { |
|||
pins1 { |
|||
pinmux = <STM32_PINMUX('B', 14, AF9)>, /* SDMMC2_D0 */ |
|||
<STM32_PINMUX('B', 7, AF10)>, /* SDMMC2_D1 */ |
|||
<STM32_PINMUX('B', 3, AF9)>, /* SDMMC2_D2 */ |
|||
<STM32_PINMUX('B', 4, AF9)>, /* SDMMC2_D3 */ |
|||
<STM32_PINMUX('G', 6, AF10)>; /* SDMMC2_CMD */ |
|||
}; |
|||
}; |
|||
|
|||
&sdmmc2_d47_pins_a { |
|||
pins { |
|||
pinmux = <STM32_PINMUX('A', 8, AF9)>, /* SDMMC2_D4 */ |
|||
<STM32_PINMUX('A', 9, AF10)>, /* SDMMC2_D5 */ |
|||
<STM32_PINMUX('C', 6, AF10)>, /* SDMMC2_D6 */ |
|||
<STM32_PINMUX('C', 7, AF10)>; /* SDMMC2_D7 */ |
|||
}; |
|||
}; |
|||
|
|||
&uart4 { |
|||
pinctrl-names = "default"; |
|||
pinctrl-0 = <&uart4_pins_a>; |
|||
status = "okay"; |
|||
}; |
|||
|
|||
&uart4_pins_a { |
|||
pins1 { |
|||
pinmux = <STM32_PINMUX('B', 9, AF8)>; /* UART4_TX */ |
|||
bias-disable; |
|||
drive-push-pull; |
|||
slew-rate = <0>; |
|||
}; |
|||
pins2 { |
|||
pinmux = <STM32_PINMUX('B', 2, AF8)>; /* UART4_RX */ |
|||
bias-pull-up; |
|||
}; |
|||
}; |
Loading…
Reference in new issue