adc: fix chips with multiple ADC_COMMON, normalize ADC to ADC1.

This commit is contained in:
Dario Nieuwenhuis 2024-04-28 23:28:37 +02:00
parent 849ed606a1
commit 24a684e9e6
3 changed files with 31 additions and 28 deletions

View File

@ -215,24 +215,20 @@ impl PeriMatcher {
("STM32WL5.*:ADC:.*", ("adc", "g0", "ADC")), ("STM32WL5.*:ADC:.*", ("adc", "g0", "ADC")),
("STM32WLE.*:ADC:.*", ("adc", "g0", "ADC")), ("STM32WLE.*:ADC:.*", ("adc", "g0", "ADC")),
("STM32G0.*:ADC:.*", ("adc", "g0", "ADC")), ("STM32G0.*:ADC:.*", ("adc", "g0", "ADC")),
("STM32G0.*:ADC_COMMON:.*", ("adccommon", "v3", "ADC_COMMON")),
("STM32U0.*:ADC:.*", ("adc", "u0", "ADC")), ("STM32U0.*:ADC:.*", ("adc", "u0", "ADC")),
("STM32U0.*:ADC_COMMON:.*", ("adccommon", "v3", "ADC_COMMON")),
("STM32G4.*:ADC:.*", ("adc", "g4", "ADC")), ("STM32G4.*:ADC:.*", ("adc", "g4", "ADC")),
("STM32G4.*:ADC_COMMON:.*", ("adccommon", "v4", "ADC_COMMON")), ("STM32G0.*:ADC\\d*_COMMON:.*", ("adccommon", "v3", "ADC_COMMON")),
(".*:ADC_COMMON:aditf2_v1_1", ("adccommon", "v2", "ADC_COMMON")), ("STM32U0.*:ADC\\d*_COMMON:.*", ("adccommon", "v3", "ADC_COMMON")),
(".*:ADC_COMMON:aditf5_v2_0", ("adccommon", "v3", "ADC_COMMON")), ("STM32G4.*:ADC\\d*_COMMON:.*", ("adccommon", "v4", "ADC_COMMON")),
(".*:ADC_COMMON:aditf5_v2_2", ("adccommon", "v3", "ADC_COMMON")),
(".*:ADC_COMMON:aditf4_v3_0_WL", ("adccommon", "v3", "ADC_COMMON")),
(".*:ADC_COMMON:aditf5_v1_1", ("adccommon", "f3", "ADC_COMMON")),
(".*:ADC3_COMMON:aditf5_v1_1", ("adccommon", "f3", "ADC_COMMON")),
( (
"STM32H50.*:ADC_COMMON:aditf5_v3_0_H5", "STM32(L[45]|W[BL]).*:ADC\\d*_COMMON:.*",
("adccommon", "h50", "ADC_COMMON"), ("adccommon", "v3", "ADC_COMMON"),
), ),
("STM32H5.*:ADC_COMMON:aditf5_v3_0_H5", ("adccommon", "h5", "ADC_COMMON")), ("STM32F3.*:ADC\\d*_COMMON:.*", ("adccommon", "f3", "ADC_COMMON")),
("STM32H7.*:ADC_COMMON:.*", ("adccommon", "v4", "ADC_COMMON")), ("STM32F[247].*:ADC\\d*_COMMON:.*", ("adccommon", "v2", "ADC_COMMON")),
("STM32H7.*:ADC3_COMMON:.*", ("adccommon", "v4", "ADC_COMMON")), ("STM32H50.*:ADC\\d*_COMMON:.*", ("adccommon", "h50", "ADC_COMMON")),
("STM32H5.*:ADC\\d*_COMMON:.*", ("adccommon", "h5", "ADC_COMMON")),
("STM32H7.*:ADC\\d*_COMMON:.*", ("adccommon", "v4", "ADC_COMMON")),
("STM32G4.*:OPAMP:G4_tsmc90_fastOpamp", ("opamp", "g4", "OPAMP")), ("STM32G4.*:OPAMP:G4_tsmc90_fastOpamp", ("opamp", "g4", "OPAMP")),
("STM32F3.*:OPAMP:tsmc018_ull_opamp_v1_0", ("opamp", "f3", "OPAMP")), ("STM32F3.*:OPAMP:tsmc018_ull_opamp_v1_0", ("opamp", "f3", "OPAMP")),
("STM32H7.*:OPAMP:.*", ("opamp", "h_v1", "OPAMP")), ("STM32H7.*:OPAMP:.*", ("opamp", "h_v1", "OPAMP")),
@ -1022,6 +1018,14 @@ fn process_core(
"IRTIM", "IRTIM",
// We add this as ghost peri // We add this as ghost peri
"SYS", "SYS",
"ADC_COMMON",
"ADC1_COMMON",
"ADC12_COMMON",
"ADC123_COMMON",
"ADC3_COMMON",
"ADC4_COMMON",
"ADC34_COMMON",
"ADC345_COMMON",
// These are software libraries // These are software libraries
"FREERTOS", "FREERTOS",
"PDM2PCM", "PDM2PCM",
@ -1040,16 +1044,6 @@ fn process_core(
continue; continue;
} }
if pname.starts_with("ADC") {
if let Entry::Vacant(entry) = peri_kinds.entry("ADC_COMMON".to_string()) {
entry.insert(format!("ADC_COMMON:{}", ip.version.strip_suffix("_Cube").unwrap()));
}
}
if pname.starts_with("ADC3") && (chip_name.starts_with("STM32H7") || chip_name.starts_with("STM32F3")) {
if let Entry::Vacant(entry) = peri_kinds.entry("ADC3_COMMON".to_string()) {
entry.insert(format!("ADC3_COMMON:{}", ip.version.strip_suffix("_Cube").unwrap()));
}
}
peri_kinds.insert(pname.to_string(), pkind.to_string()); peri_kinds.insert(pname.to_string(), pkind.to_string());
} }
const GHOST_PERIS: &[&str] = &[ const GHOST_PERIS: &[&str] = &[
@ -1092,9 +1086,17 @@ fn process_core(
"VREFINTCAL", "VREFINTCAL",
"UID", "UID",
"HSEM", "HSEM",
"ADC1_COMMON",
"ADC12_COMMON",
"ADC123_COMMON",
"ADC3_COMMON",
"ADC4_COMMON",
"ADC34_COMMON",
"ADC345_COMMON",
]; ];
for pname in GHOST_PERIS { for pname in GHOST_PERIS {
if let Entry::Vacant(entry) = peri_kinds.entry(pname.to_string()) { let normalized_pname = normalize_peri_name(pname);
if let Entry::Vacant(entry) = peri_kinds.entry(normalized_pname.to_string()) {
if defines.get_peri_addr(pname).is_some() { if defines.get_peri_addr(pname).is_some() {
entry.insert("unknown".to_string()); entry.insert("unknown".to_string());
} }

View File

@ -176,11 +176,11 @@ impl Defines {
), ),
("FLASH", &["FLASH_R_BASE", "FLASH_REG_BASE"]), ("FLASH", &["FLASH_R_BASE", "FLASH_REG_BASE"]),
("ADC", &["ADC1_BASE", "ADC_BASE"]), ("ADC", &["ADC1_BASE", "ADC_BASE"]),
("ADC1", &["ADC1_BASE", "ADC_BASE"]),
( (
"ADC_COMMON", "ADC1_COMMON",
&["ADC_COMMON", "ADC1_COMMON", "ADC12_COMMON", "ADC123_COMMON"], &["ADC1_COMMON_BASE", "ADC_COMMON_BASE", "ADC1_COMMON", "ADC_COMMON"],
), ),
("ADC3_COMMON", &["ADC3_COMMON", "ADC4_COMMON", "ADC34_COMMON"]),
("CAN", &["CAN_BASE", "CAN1_BASE"]), ("CAN", &["CAN_BASE", "CAN1_BASE"]),
("FMC", &["FMC_BASE", "FMC_R_BASE"]), ("FMC", &["FMC_BASE", "FMC_R_BASE"]),
("FSMC", &["FSMC_R_BASE"]), ("FSMC", &["FSMC_R_BASE"]),

View File

@ -1,5 +1,6 @@
#[rustfmt::skip] #[rustfmt::skip]
static NORMALIZE: &[(&str, &str)] = &[ static NORMALIZE: &[(&str, &str)] = &[
("ADC", "ADC1"),
("HRTIM", "HRTIM1"), ("HRTIM", "HRTIM1"),
("HDMI_CEC", "CEC"), ("HDMI_CEC", "CEC"),
("SUBGHZ", "SUBGHZSPI"), ("SUBGHZ", "SUBGHZSPI"),