1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
/// Voltage regulators in AXP173 that can be enabled or disabled. pub enum LdoKind { /// LDO2. LDO2, /// LDO3. LDO3, /// LDO4. LDO4, } /// LDO of AXP173. pub struct Ldo { pub(crate) kind: LdoKind, pub(crate) voltage: u8, } impl Ldo { /// Selects LDO2 voltage. /// `voltage`: four bit voltage: 1.8 - 3.3V, 100 mV per LSB. /// # Panics /// Panics if supplied voltage value is greater than 2^4 due to failed assertion. pub fn ldo2_with_voltage(voltage: u8) -> Self { assert!(voltage <= 0b1111); // Only 4-bit wide Self { kind: LdoKind::LDO2, voltage, } } /// Selects LDO3 voltage. /// `voltage`: four bit voltage: 1.8 - 3.3V, 100 mV per LSB. /// /// # Panics /// Panics if supplied voltage value is greater than 2^4 due to failed assertion. pub fn ldo3_with_voltage(voltage: u8) -> Self { assert!(voltage <= 0b1111); // Only 4-bit wide Self { kind: LdoKind::LDO3, voltage, } } /// Selects LDO4 voltage. /// `voltage`: seven bit voltage: 0.7 - 3.5V, 25 mV per LSB. /// /// # Panics /// Panics if supplied voltage value is greater than 2^7 due to failed assertion. pub fn ldo4_with_voltage(voltage: u8) -> Self { assert!(voltage <= 0b111_1111); // Only 7-bit wide Self { kind: LdoKind::LDO4, voltage, } } }