Skip to content

Commit daf3b61

Browse files
committed
rcc: add peripheral clock definitions for the rest of the H5 family
1 parent 86ec4c5 commit daf3b61

File tree

2 files changed

+91
-30
lines changed

2 files changed

+91
-30
lines changed

Cargo.toml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,15 @@ rm0481 = ["gpio-h5x"] # STM32H52x/6x/7x
3131
gpio-h503 = []
3232
gpio-h5x = []
3333

34+
ethernet = []
35+
otfdec = []
36+
sdmmc2 = []
37+
3438
rt = ["stm32h5/rt"]
3539
stm32h503 = ["stm32h5/stm32h503", "device-selected", "rm0492"]
3640
stm32h562 = ["stm32h5/stm32h562", "device-selected", "rm0481"]
37-
stm32h563 = ["stm32h5/stm32h563", "device-selected", "rm0481"]
38-
stm32h573 = ["stm32h5/stm32h573", "device-selected", "rm0481"]
41+
stm32h563 = ["stm32h5/stm32h563", "device-selected", "rm0481", "sdmmc2", "ethernet"]
42+
stm32h573 = ["stm32h5/stm32h573", "device-selected", "rm0481", "otfdec", "sdmmc2", "ethernet"]
3943
# Flags for examples
4044
log = ["dep:log"]
4145
log-itm = ["log"]

src/rcc/rec.rs

Lines changed: 85 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -475,10 +475,6 @@ macro_rules! variant_return_type {
475475
// Peripherals with an individual kernel clock must be marked "kernel clk". If a
476476
// kernel clock multiplexer is shared between multiple peripherals, all those
477477
// peripherals must instead be marked with a common "group clk".
478-
//
479-
// NOTE: The stm32h5 crate does not have definitions for the clock source variants for registers for
480-
// any processors other than the STM32H503 at this time. Therefore, peripherals which have
481-
// selectable clock sources are currently only specified for the H503 (rm0492).
482478
peripheral_reset_and_enable_control! {
483479

484480
#[cfg(all())]
@@ -495,6 +491,19 @@ peripheral_reset_and_enable_control! {
495491
AHB1, "" => [
496492
(NoReset) Gtzc1
497493
];
494+
#[cfg(feature = "rm0481")]
495+
AHB1, "" => [
496+
(NoReset) Dcache,
497+
(NoReset) Tzsc1,
498+
Fmac,
499+
Cordic
500+
];
501+
#[cfg(feature = "ethernet")]
502+
AHB1, "" => [
503+
(NoReset) Ethrx,
504+
(NoReset) Ethtx,
505+
Eth
506+
];
498507

499508
#[cfg(all())]
500509
AHB2, "AMBA High-performance Bus (AHB2) peripherals" => [
@@ -504,69 +513,117 @@ peripheral_reset_and_enable_control! {
504513
Gpiod,
505514
Gpioc,
506515
Gpiob,
507-
Gpioa
516+
Gpioa,
517+
Rng [kernel clk: Rng RNG ccipr5 "RNG"],
518+
Adc [group clk: AdcDac(Variant) ADCDAC ccipr5 "ADC/DAC"]
508519
];
509520
#[cfg(feature = "rm0492")]
510521
AHB2, "" => [
511-
Rng [kernel clk: Rng RNG ccipr5 "RNG"],
512-
Adc [group clk: AdcDac(Variant) ADCDAC ccipr5 "ADC/DAC"],
513522
Dac12 [group clk: AdcDac]
514523
];
524+
#[cfg(feature = "rm0481")]
525+
AHB2, "" => [
526+
Gpioi,
527+
Gpiog,
528+
Gpiof,
529+
Gpioe,
530+
Dac1 [group clk: AdcDac]
531+
];
515532

533+
#[cfg(feature = "rm0481")]
534+
AHB4, "AMBA High-performance Bus (AHB4) peripherals" => [
535+
Octospi1 [kernel clk: Octospi1 OCTOSPI1 ccipr4 "OCTOSPI1"],
536+
Fmc,
537+
538+
Sdmmc1 [kernel clk: Sdmmc1 SDMMC ccipr4 "SDMMC1"]
539+
];
540+
#[cfg(feature = "sdmmc2")]
541+
AHB4, "" => [
542+
Sdmmc2 [kernel clk: Sdmmc2 SDMMC ccipr4 "SDMMC2"]
543+
];
544+
#[cfg(feature = "otfdec")]
545+
AHB4, "" => [
546+
Otfdec1
547+
];
516548

517549
#[cfg(all())]
518550
APB1L, "Advanced Peripheral Bus 1L (APB1L) peripherals" => [
551+
Usart2 [kernel clk: Usart2(Variant) USART ccipr1 "USART2"],
552+
Usart3 [kernel clk: Usart3(Variant) USART ccipr1 "USART3"],
519553
Crs,
554+
I3c1 [kernel clk: I3c1(Variant) I3C ccipr4 "I3C1"],
555+
I2c2 [kernel clk: I2c2 I2C ccipr4 "I2C2"],
556+
I2c1 [kernel clk: I2c1 I2C ccipr4 "I2C1"],
557+
Spi3 [kernel clk: Spi3(Variant) SPI123 ccipr3 "SPI3"],
558+
Spi2 [kernel clk: Spi2(Variant) SPI123 ccipr3 "SPI2"],
520559
(NoReset) Wwdg,
521560
Tim2, Tim3, Tim6, Tim7
522561
];
523562
#[cfg(feature = "rm0492")]
524563
APB1L, "" => [
525-
I3c1 [kernel clk: I3c1(Variant) I3C ccipr4 "I3C1"],
526-
527-
I2c1 [kernel clk: I2c1 I2C ccipr4 "I2C1"],
528-
I2c2 [kernel clk: I2c2 I2C ccipr4 "I2C2"],
529-
530-
Usart2 [kernel clk: Usart2(Variant) USART ccipr1 "USART2"],
531-
Usart3 [kernel clk: Usart3(Variant) USART ccipr1 "USART3"],
532-
533-
Spi2 [kernel clk: Spi2(Variant) SPI123 ccipr3 "SPI2"],
534-
Spi3 [kernel clk: Spi3(Variant) SPI123 ccipr3 "SPI3"],
535564
Opamp,
536565
Comp
537566
];
567+
#[cfg(feature = "rm0481")]
568+
APB1L, "" => [
569+
Uart8 [kernel clk: Uart8(Variant) USART ccipr1 "UART8"],
570+
Uart7 [kernel clk: Uart7(Variant) USART ccipr1 "UART7"],
571+
Cec [kernel clk: Cec(Variant) CEC ccipr5 "CEC"],
572+
Usart11 [kernel clk: Usart11(Variant) USART ccipr2 "USART11"],
573+
Usart10 [kernel clk: Usart10(Variant) USART ccipr1 "USART10"],
574+
Usart6 [kernel clk: Usart6(Variant) USART ccipr1 "USART6"],
575+
Uart5 [kernel clk: Uart5(Variant) USART ccipr1 "USART5"],
576+
Uart4 [kernel clk: Uart4(Variant) USART ccipr1 "USART4"],
577+
Tim14, Tim13, Tim12, Tim5, Tim4
578+
];
538579

539580
#[cfg(all())]
540581
APB1H, "Advanced Peripheral Bus 1H (APB1H) peripherals" => [
582+
Fdcan [kernel clk: Fdcan(Variant) FDCAN ccipr5 "FDCAN"],
583+
Lptim2 [kernel clk: Lptim2(Variant) LPTIM ccipr2 "LPTIM2"],
541584
Dts
542585
];
543-
#[cfg(feature = "rm0492")]
586+
#[cfg(feature = "rm0481")]
544587
APB1H, "" => [
545-
Lptim2 [kernel clk: Lptim2(Variant) LPTIM ccipr2 "LPTIM2"],
546-
Fdcan [kernel clk: Fdcan(Variant) FDCAN ccipr5 "FDCAN"]
588+
Ucpd1,
589+
Uart12 [kernel clk: Uart12(Variant) USART ccipr2 "USART12"],
590+
Uart9 [kernel clk: Uart9(Variant) USART ccipr1 "UART9"]
547591
];
548592

549593
#[cfg(all())]
550594
APB2, "Advanced Peripheral Bus 2 (APB2) peripherals" => [
595+
Usb [kernel clk: Usb USB ccipr4 "USB"],
596+
Usart1 [kernel clk: Usart1(Variant) USART ccipr1 "USART1"],
597+
Spi1 [kernel clk: Spi1(Variant) SPI123 ccipr3 "SPI1"],
551598
Tim1
552599
];
553-
#[cfg(feature = "rm0492")]
600+
#[cfg(feature = "rm0481")]
554601
APB2, "" => [
555-
Usb [kernel clk: Usb USB ccipr4 "USB"],
556-
Usart1 [kernel clk: Usart1(Variant) USART ccipr1 "USART1"],
557-
Spi1 [kernel clk: Spi1(Variant) SPI123 ccipr3 "SPI1"]
602+
Sai2 [kernel clk: Sai2(Variant) SAI ccipr5 "SAI2"],
603+
Sai1 [kernel clk: Sai1(Variant) SAI ccipr5 "SAI1"],
604+
Spi6 [kernel clk: Spi6(Variant) SPI456 ccipr3 "SPI6"],
605+
Spi4 [kernel clk: Spi4(Variant) SPI456 ccipr3 "SPI4"],
606+
Tim17, Tim16, Tim15, Tim8
558607
];
559608

560609
#[cfg(all())]
561610
APB3, "Advanced Peripheral Bus 3 (APB3) peripherals" => [
562611
(NoReset) RtcApb,
612+
LpTim1 [kernel clk: LpTim1(Variant) LPTIM ccipr2 "LPTIM1"],
613+
I3c2 [kernel clk: I3c2(Variant) I3C ccipr4 "I3C2"],
614+
LpUart1 [kernel clk: LpUart1(Variant) USART ccipr3 "LPUART1"],
563615
(NoReset) Sbs
564616
];
565-
#[cfg(feature = "rm0492")]
617+
#[cfg(feature = "rm0481")]
566618
APB3, "" => [
567-
I3c2 [kernel clk: I3c2(Variant) I3C ccipr4 "I3C2"],
568-
LpTim1 [kernel clk: LpTim1(Variant) LPTIM ccipr2 "LPTIM1"],
569-
LpUart1 [kernel clk: LpUart1(Variant) USART ccipr3 "LPUART1"]
619+
Vref,
620+
LpTim6 [kernel clk: LpTim6(Variant) LPTIM ccipr2 "LPTIM6"],
621+
LpTim5 [kernel clk: LpTim5(Variant) LPTIM ccipr2 "LPTIM5"],
622+
LpTim4 [kernel clk: LpTim4(Variant) LPTIM ccipr2 "LPTIM4"],
623+
LpTim3 [kernel clk: LpTim3(Variant) LPTIM ccipr2 "LPTIM3"],
624+
I2c4 [kernel clk: I2c4 I2C ccipr4 "I2C4"],
625+
I2c3 [kernel clk: I2c3 I2C ccipr4 "I2C3"],
626+
Spi5 [kernel clk: Spi5(Variant) SPI456 ccipr3 "SPI5"]
570627
];
571628

572629
}

0 commit comments

Comments
 (0)