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")),
("STM32WLE.*:ADC:.*", ("adc", "g0", "ADC")),
("STM32G0.*:ADC:.*", ("adc", "g0", "ADC")),
("STM32G0.*:ADC_COMMON:.*", ("adccommon", "v3", "ADC_COMMON")),
("STM32U0.*:ADC:.*", ("adc", "u0", "ADC")),
("STM32U0.*:ADC_COMMON:.*", ("adccommon", "v3", "ADC_COMMON")),
("STM32G4.*:ADC:.*", ("adc", "g4", "ADC")),
("STM32G4.*:ADC_COMMON:.*", ("adccommon", "v4", "ADC_COMMON")),
(".*:ADC_COMMON:aditf2_v1_1", ("adccommon", "v2", "ADC_COMMON")),
(".*:ADC_COMMON:aditf5_v2_0", ("adccommon", "v3", "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")),
("STM32G0.*:ADC\\d*_COMMON:.*", ("adccommon", "v3", "ADC_COMMON")),
("STM32U0.*:ADC\\d*_COMMON:.*", ("adccommon", "v3", "ADC_COMMON")),
("STM32G4.*:ADC\\d*_COMMON:.*", ("adccommon", "v4", "ADC_COMMON")),
(
"STM32H50.*:ADC_COMMON:aditf5_v3_0_H5",
("adccommon", "h50", "ADC_COMMON"),
"STM32(L[45]|W[BL]).*:ADC\\d*_COMMON:.*",
("adccommon", "v3", "ADC_COMMON"),
),
("STM32H5.*:ADC_COMMON:aditf5_v3_0_H5", ("adccommon", "h5", "ADC_COMMON")),
("STM32H7.*:ADC_COMMON:.*", ("adccommon", "v4", "ADC_COMMON")),
("STM32H7.*:ADC3_COMMON:.*", ("adccommon", "v4", "ADC_COMMON")),
("STM32F3.*:ADC\\d*_COMMON:.*", ("adccommon", "f3", "ADC_COMMON")),
("STM32F[247].*:ADC\\d*_COMMON:.*", ("adccommon", "v2", "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")),
("STM32F3.*:OPAMP:tsmc018_ull_opamp_v1_0", ("opamp", "f3", "OPAMP")),
("STM32H7.*:OPAMP:.*", ("opamp", "h_v1", "OPAMP")),
@ -1022,6 +1018,14 @@ fn process_core(
"IRTIM",
// We add this as ghost peri
"SYS",
"ADC_COMMON",
"ADC1_COMMON",
"ADC12_COMMON",
"ADC123_COMMON",
"ADC3_COMMON",
"ADC4_COMMON",
"ADC34_COMMON",
"ADC345_COMMON",
// These are software libraries
"FREERTOS",
"PDM2PCM",
@ -1040,16 +1044,6 @@ fn process_core(
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());
}
const GHOST_PERIS: &[&str] = &[
@ -1092,9 +1086,17 @@ fn process_core(
"VREFINTCAL",
"UID",
"HSEM",
"ADC1_COMMON",
"ADC12_COMMON",
"ADC123_COMMON",
"ADC3_COMMON",
"ADC4_COMMON",
"ADC34_COMMON",
"ADC345_COMMON",
];
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() {
entry.insert("unknown".to_string());
}

View File

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

View File

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