Merge pull request #292 from xoviat/rcc

rcc: more cleanup
This commit is contained in:
xoviat 2023-10-17 22:26:59 +00:00 committed by GitHub
commit 6f7449303b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
20 changed files with 43 additions and 46 deletions

View File

@ -1048,7 +1048,7 @@ enum/SW:
- name: HSE - name: HSE
description: HSE oscillator used as system clock description: HSE oscillator used as system clock
value: 1 value: 1
- name: PLL - name: PLL1_P
description: PLL used as system clock description: PLL used as system clock
value: 2 value: 2
- name: HSI48 - name: HSI48
@ -1075,6 +1075,6 @@ enum/USBSW:
- name: HSI48 - name: HSI48
description: NOT ALLOWED IN F0x0 - HSI48 selected as USB clock source description: NOT ALLOWED IN F0x0 - HSI48 selected as USB clock source
value: 0 value: 0
- name: PLLCLK - name: PLL1_P
description: PLL clock selected as USB clock source description: PLL clock selected as USB clock source
value: 1 value: 1

View File

@ -822,7 +822,7 @@ enum/SW:
- name: HSE - name: HSE
description: HSE selected as system clock description: HSE selected as system clock
value: 1 value: 1
- name: PLL - name: PLL1_P
description: PLL selected as system clock description: PLL selected as system clock
value: 2 value: 2
enum/USBPRE: enum/USBPRE:

View File

@ -844,6 +844,6 @@ enum/SW:
- name: HSE - name: HSE
description: HSE selected as system clock description: HSE selected as system clock
value: 1 value: 1
- name: PLL - name: PLL1_P
description: PLL selected as system clock description: PLL selected as system clock
value: 2 value: 2

View File

@ -1980,6 +1980,6 @@ enum/SW:
- name: HSE - name: HSE
description: HSE selected as system clock description: HSE selected as system clock
value: 1 value: 1
- name: PLL - name: PLL1_P
description: PLL selected as system clock description: PLL selected as system clock
value: 2 value: 2

View File

@ -1238,16 +1238,16 @@ enum/SW:
- name: HSE - name: HSE
description: HSE oscillator used as system clock description: HSE oscillator used as system clock
value: 1 value: 1
- name: PLL - name: PLL1_P
description: PLL used as system clock description: PLL used as system clock
value: 2 value: 2
enum/TIMSW: enum/TIMSW:
bit_size: 1 bit_size: 1
variants: variants:
- name: PCLK2 - name: PCLK2_TIM
description: PCLK2 clock (doubled frequency when prescaled) description: PCLK2 clock (doubled frequency when prescaled)
value: 0 value: 0
- name: PLL - name: PLL1_P
description: PLL vco output (running up to 144 MHz) description: PLL vco output (running up to 144 MHz)
value: 1 value: 1
enum/USARTSW: enum/USARTSW:

View File

@ -1214,16 +1214,16 @@ enum/SW:
- name: HSE - name: HSE
description: HSE oscillator used as system clock description: HSE oscillator used as system clock
value: 1 value: 1
- name: PLL - name: PLL1_P
description: PLL used as system clock description: PLL used as system clock
value: 2 value: 2
enum/TIMSW: enum/TIMSW:
bit_size: 1 bit_size: 1
variants: variants:
- name: PCLK2 - name: PCLK2_TIM
description: PCLK2 clock (doubled frequency when prescaled) description: PCLK2 clock (doubled frequency when prescaled)
value: 0 value: 0
- name: PLL - name: PLL1_P
description: PLL vco output (running up to 144 MHz) description: PLL vco output (running up to 144 MHz)
value: 1 value: 1
enum/USARTSW: enum/USARTSW:

View File

@ -3467,7 +3467,7 @@ enum/SW:
- name: HSE - name: HSE
description: HSE oscillator used as system clock description: HSE oscillator used as system clock
value: 1 value: 1
- name: PLL - name: PLL1_P
description: PLL used as system clock description: PLL used as system clock
value: 2 value: 2
enum/TIMPRE: enum/TIMPRE:

View File

@ -1926,7 +1926,7 @@ enum/SW:
- name: HSE - name: HSE
description: HSE oscillator used as system clock description: HSE oscillator used as system clock
value: 1 value: 1
- name: PLL - name: PLL1_P
description: PLL used as system clock description: PLL used as system clock
value: 2 value: 2
enum/TIMPRE: enum/TIMPRE:

View File

@ -3144,7 +3144,7 @@ enum/SW:
- name: HSE - name: HSE
description: HSE oscillator used as system clock description: HSE oscillator used as system clock
value: 1 value: 1
- name: PLL - name: PLL1_P
description: PLL used as system clock description: PLL used as system clock
value: 2 value: 2
enum/TIMPRE: enum/TIMPRE:

View File

@ -1848,7 +1848,7 @@ enum/SW:
enum/TIM15SEL: enum/TIM15SEL:
bit_size: 1 bit_size: 1
variants: variants:
- name: TIMPCLK - name: PCLK1_TIM
description: TIMPCLK used as TIM15 clock source description: TIMPCLK used as TIM15 clock source
value: 0 value: 0
- name: PLL1_Q - name: PLL1_Q
@ -1857,7 +1857,7 @@ enum/TIM15SEL:
enum/TIM1SEL: enum/TIM1SEL:
bit_size: 1 bit_size: 1
variants: variants:
- name: TIMPCLK - name: PCLK1_TIM
description: TIMPCLK used as TIM1 clock source description: TIMPCLK used as TIM1 clock source
value: 0 value: 0
- name: PLL1_Q - name: PLL1_Q

View File

@ -3697,7 +3697,7 @@ enum/LPTIM2SEL:
enum/LPUARTSEL: enum/LPUARTSEL:
bit_size: 3 bit_size: 3
variants: variants:
- name: RCC_PCLK_D3 - name: PCLK3
description: rcc_pclk_d3 selected as peripheral clock description: rcc_pclk_d3 selected as peripheral clock
value: 0 value: 0
- name: PLL2_Q - name: PLL2_Q

View File

@ -2632,7 +2632,7 @@ enum/LPTIM2SEL:
enum/LPUARTSEL: enum/LPUARTSEL:
bit_size: 3 bit_size: 3
variants: variants:
- name: RCC_PCLK_D3 - name: PCLK3
description: rcc_pclk_d3 selected as peripheral clock description: rcc_pclk_d3 selected as peripheral clock
value: 0 value: 0
- name: PLL2_Q - name: PLL2_Q

View File

@ -3697,7 +3697,7 @@ enum/LPTIM2SEL:
enum/LPUARTSEL: enum/LPUARTSEL:
bit_size: 3 bit_size: 3
variants: variants:
- name: RCC_PCLK_D3 - name: PCLK3
description: rcc_pclk_d3 selected as peripheral clock description: rcc_pclk_d3 selected as peripheral clock
value: 0 value: 0
- name: PLL2_Q - name: PLL2_Q

View File

@ -1201,7 +1201,7 @@ enum/SW:
- name: HSE - name: HSE
description: HSE oscillator used as system clock description: HSE oscillator used as system clock
value: 2 value: 2
- name: PLL - name: PLL1_P
description: PLL used as system clock description: PLL used as system clock
value: 3 value: 3
enum/UARTSEL: enum/UARTSEL:

View File

@ -1240,7 +1240,7 @@ enum/SW:
- name: HSE - name: HSE
description: HSE oscillator used as system clock description: HSE oscillator used as system clock
value: 2 value: 2
- name: PLL - name: PLL1_P
description: PLL used as system clock description: PLL used as system clock
value: 3 value: 3
enum/UARTSEL: enum/UARTSEL:

View File

@ -1045,6 +1045,6 @@ enum/SW:
- name: HSE - name: HSE
description: HSE oscillator used as system clock description: HSE oscillator used as system clock
value: 2 value: 2
- name: PLL - name: PLL1_P
description: PLL used as system clock description: PLL used as system clock
value: 3 value: 3

View File

@ -2267,7 +2267,7 @@ enum/SW:
- name: HSE - name: HSE
description: HSE selected as system clock description: HSE selected as system clock
value: 2 value: 2
- name: PLL - name: PLL1_P
description: PLL selected as system clock description: PLL selected as system clock
value: 3 value: 3
enum/SWPMI1SEL: enum/SWPMI1SEL:

View File

@ -1668,7 +1668,7 @@ enum/ADCSEL:
- name: DISABLE - name: DISABLE
description: No clock selected description: No clock selected
value: 0 value: 0
- name: PLLADC1CLK - name: PLLSAI1_R
description: PLLADC1CLK clock selected description: PLLADC1CLK clock selected
value: 1 value: 1
- name: SYS - name: SYS
@ -1716,7 +1716,7 @@ enum/DSISEL:
- name: DSIPHY - name: DSIPHY
description: DSI-PHY is selected as DSI byte lane clock source (usual case) description: DSI-PHY is selected as DSI byte lane clock source (usual case)
value: 0 value: 0
- name: PLLDSICLK - name: PLLSAI2_Q
description: PLLDSICLK is selected as DSI byte lane clock source, used in case DSI PLL and DSIPHY are off (low-power mode) description: PLLDSICLK is selected as DSI byte lane clock source, used in case DSI PLL and DSIPHY are off (low-power mode)
value: 1 value: 1
enum/HPRE: enum/HPRE:
@ -1971,7 +1971,7 @@ enum/OSPISEL:
- name: MSI - name: MSI
description: MSI clock selected as OctoSPI kernel clock description: MSI clock selected as OctoSPI kernel clock
value: 1 value: 1
- name: PLL48M1CLK - name: PLL1_Q
description: PLL48M1CLK clock selected as OctoSPI kernel clock description: PLL48M1CLK clock selected as OctoSPI kernel clock
value: 2 value: 2
enum/PLLM: enum/PLLM:
@ -2434,7 +2434,7 @@ enum/SDMMCSEL:
- name: HSI48 - name: HSI48
description: 48 MHz clock is selected as SDMMC kernel clock description: 48 MHz clock is selected as SDMMC kernel clock
value: 0 value: 0
- name: PLLSAI3CLK - name: PLL1_P
description: PLLSAI3CLK is selected as SDMMC kernel clock, used in case higher frequency than 48MHz is needed (for SDR50 mode) description: PLLSAI3CLK is selected as SDMMC kernel clock, used in case higher frequency than 48MHz is needed (for SDR50 mode)
value: 1 value: 1
enum/STOPWUCK: enum/STOPWUCK:
@ -2458,7 +2458,7 @@ enum/SW:
- name: HSE - name: HSE
description: HSE selected as system clock description: HSE selected as system clock
value: 2 value: 2
- name: PLL - name: PLL1_R
description: PLL selected as system clock description: PLL selected as system clock
value: 3 value: 3
enum/UART4SEL: enum/UART4SEL:

View File

@ -1933,7 +1933,7 @@ enum/CLK48SEL:
- name: PLLSAI1_Q - name: PLLSAI1_Q
description: PLLSAI1_Q aka PLL48M1CLK clock selected description: PLLSAI1_Q aka PLL48M1CLK clock selected
value: 1 value: 1
- name: PLL_Q - name: PLL1_Q
description: PLL_Q aka PLL48M2CLK clock selected description: PLL_Q aka PLL48M2CLK clock selected
value: 2 value: 2
- name: MSI - name: MSI
@ -2468,7 +2468,7 @@ enum/PLLSRC:
- name: MSI - name: MSI
description: MSI selected as PLL input clock description: MSI selected as PLL input clock
value: 1 value: 1
- name: HSI16 - name: HSI
description: HSI selected as PLL input clock description: HSI selected as PLL input clock
value: 2 value: 2
- name: HSE - name: HSE
@ -2513,7 +2513,7 @@ enum/STOPWUCK:
- name: MSI - name: MSI
description: MSI oscillator selected as wake-up from Stop clock and CSS backup clock description: MSI oscillator selected as wake-up from Stop clock and CSS backup clock
value: 0 value: 0
- name: HSI16 - name: HSI
description: HSI oscillator selected as wake-up from stop clock and CSS backup clock description: HSI oscillator selected as wake-up from stop clock and CSS backup clock
value: 1 value: 1
enum/SW: enum/SW:
@ -2522,12 +2522,12 @@ enum/SW:
- name: MSI - name: MSI
description: MSI selected as system clock description: MSI selected as system clock
value: 0 value: 0
- name: HSI16 - name: HSI
description: HSI selected as system clock description: HSI selected as system clock
value: 1 value: 1
- name: HSE - name: HSE
description: HSE selected as system clock description: HSE selected as system clock
value: 2 value: 2
- name: PLL - name: PLL1_R
description: PLL selected as system clock description: PLL selected as system clock
value: 3 value: 3

View File

@ -17,7 +17,7 @@ impl PeripheralToClock {
let mut peripheral_to_clock = HashMap::new(); let mut peripheral_to_clock = HashMap::new();
let checked_rccs = HashSet::from([ let checked_rccs = HashSet::from([
"c0", "f0", "f1", "f100", "f1c1", "f2", "f3", "f3_v2", "f4", "f410", "f7", "g0", "g4", "h5", "h50", "h7", "c0", "f0", "f1", "f100", "f1c1", "f2", "f3", "f3_v2", "f4", "f410", "f7", "g0", "g4", "h5", "h50", "h7",
"h7ab", "h7rm0433", "l0", "l0_v2", "l1", "l4", "h7ab", "h7rm0433", "l0", "l0_v2", "l1", "l4", "l4plus", "l5",
]); ]);
let allowed_variants = HashSet::from([ let allowed_variants = HashSet::from([
"DISABLE", "DISABLE",
@ -73,22 +73,17 @@ impl PeripheralToClock {
"SAI2_EXTCLK", "SAI2_EXTCLK",
"B_0x0", "B_0x0",
"B_0x1", "B_0x1",
"PLL",
"PLLCLK",
"RCC_PCLK_D3",
"I2S_CKIN", "I2S_CKIN",
"DAC_HOLD", "DAC_HOLD",
"DAC_HOLD_2", "DAC_HOLD_2",
"TIMPCLK",
"RTCCLK", "RTCCLK",
"RTC_WKUP", "RTC_WKUP",
"DSIPHY", "DSIPHY",
"PLLDSICLK",
]); ]);
for (rcc_name, ir) in &registers.registers { for (rcc_name, ir) in &registers.registers {
if let Some(rcc_name) = rcc_name.strip_prefix("rcc_") { if let Some(rcc_name) = rcc_name.strip_prefix("rcc_") {
let rcc_enum_map: HashMap<&String, HashMap<&String, &Enum>> = { let rcc_enum_map: HashMap<&String, HashMap<&String, (&String, &Enum)>> = {
let rcc_blocks = &ir.blocks.get("RCC").unwrap().items; let rcc_blocks = &ir.blocks.get("RCC").unwrap().items;
rcc_blocks rcc_blocks
@ -101,10 +96,10 @@ impl PeripheralToClock {
f.fields f.fields
.iter() .iter()
.filter_map(|f| { .filter_map(|f| {
let enumm = f.enumm.as_ref()?; let enumm_name = f.enumm.as_ref()?;
let enumm = ir.enums.get(enumm)?; let enumm = ir.enums.get(enumm_name)?;
Some((&f.name, enumm)) Some((&f.name, (enumm_name, enumm)))
}) })
.collect(), .collect(),
) )
@ -124,7 +119,7 @@ impl PeripheralToClock {
_ => return Ok(()), _ => return Ok(()),
}; };
let enumm = match block_map.get(field) { let (enumm_name, enumm) = match block_map.get(field) {
Some(enumm) => enumm, Some(enumm) => enumm,
_ => return Ok(()), _ => return Ok(()),
}; };
@ -135,15 +130,17 @@ impl PeripheralToClock {
if !allowed_variants.contains(name.as_str()) { if !allowed_variants.contains(name.as_str()) {
return Err(anyhow!( return Err(anyhow!(
"rcc: prohibited variant name {} for rcc_{}", "rcc: prohibited variant name {} in enum {} for rcc_{}",
v.name.as_str(), v.name.as_str(),
enumm_name,
rcc_name rcc_name
)); ));
} }
} else if !allowed_variants.contains(v.name.as_str()) { } else if !allowed_variants.contains(v.name.as_str()) {
return Err(anyhow!( return Err(anyhow!(
"rcc: prohibited variant name {} for rcc_{}", "rcc: prohibited variant name {} in enum {} for rcc_{}",
v.name.as_str(), v.name.as_str(),
enumm_name,
rcc_name rcc_name
)); ));
} }