Skip to content

Commit f21a2e2

Browse files
committed
peripheral: add fifo size field for the relevant peripherals
- The field name is 'sys_fentries' (it's borrowed from sysconfig) - The field value is different across chips and peripherals. - The field is relevant for I2C, SPI, UART peripherals, for the rest it has 'None' value
1 parent 2340a8e commit f21a2e2

File tree

4 files changed

+25
-0
lines changed

4 files changed

+25
-0
lines changed

mspm0-data-gen/src/generate.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,7 @@ fn generate_peripherals2(
244244
let (ty, version) = get_peripheral_type_version(chip_name, &name);
245245
let address = get_peripheral_addresses(chip_name, &name, header, sysconfig)?;
246246
let power_domain = get_power_domain(peripheral, ty, chip_name)?;
247+
let sys_fentries = get_sys_fentries(peripheral, chip_name)?;
247248

248249
let mut peri = Peripheral {
249250
name: name.clone(),
@@ -252,6 +253,7 @@ fn generate_peripherals2(
252253
address,
253254
power_domain,
254255
pins: vec![],
256+
sys_fentries,
255257
};
256258

257259
// Lookup the pins
@@ -345,6 +347,17 @@ fn generate_peripherals2(
345347
Ok(peripherals)
346348
}
347349

350+
fn get_sys_fentries(
351+
peripheral: &sysconfig::Peripheral,
352+
chip_name: &str,
353+
) -> anyhow::Result<Option<u8>> {
354+
let Some(sys_fentries) = peripheral.attributes.get("SYS_FENTRIES").unwrap().as_str() else {
355+
return Ok(None);
356+
};
357+
358+
Ok(Some(sys_fentries.parse::<u8>().unwrap()))
359+
}
360+
348361
fn get_power_domain(
349362
peripheral: &sysconfig::Peripheral,
350363
ty: PeripheralType,
@@ -458,6 +471,7 @@ fn generate_missing(
458471
// DMA always lives in PD1
459472
power_domain: PowerDomain::Pd1,
460473
pins: vec![],
474+
sys_fentries: None,
461475
},
462476
);
463477

@@ -485,6 +499,7 @@ fn generate_missing(
485499
// GPIO always lives in PD0
486500
power_domain: PowerDomain::Pd0,
487501
pins: vec![],
502+
sys_fentries: None,
488503
});
489504

490505
let pin = device_pin

mspm0-data-types/src/lib.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,9 @@ pub struct Peripheral {
228228
pub power_domain: PowerDomain,
229229

230230
pub pins: Vec<PeripheralPin>,
231+
232+
#[serde(skip_serializing_if = "Option::is_none")]
233+
pub sys_fentries: Option<u8>,
231234
}
232235

233236
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]

mspm0-metapac-gen/res/metadata.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ pub struct Peripheral {
2020
pub version: Option<&'static str>,
2121
pub pins: &'static [PeripheralPin],
2222
pub power_domain: PowerDomain,
23+
pub sys_fentries: Option<u8>,
2324
}
2425

2526
#[derive(Debug, Eq, PartialEq, Clone)]

mspm0-metapac-gen/src/metadata.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,13 +189,19 @@ fn generate_peripheral(
189189
PowerDomain::Backup => quote! { PowerDomain::Backup },
190190
};
191191

192+
let sys_fentries = match peripheral.sys_fentries {
193+
Some(sys_fentries) => quote! { Some(#sys_fentries) },
194+
None => quote! { None },
195+
};
196+
192197
Some(quote! {
193198
Peripheral {
194199
name: #name,
195200
kind: #kind,
196201
version: #version,
197202
pins: &[#(#pins),*],
198203
power_domain: #power_domain,
204+
sys_fentries: #sys_fentries,
199205
}
200206
})
201207
}

0 commit comments

Comments
 (0)