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
//! mvendorid register use core::num::NonZeroUsize; /// mvendorid register #[derive(Clone, Copy, Debug)] pub struct Mvendorid { bits: NonZeroUsize, } impl Mvendorid { /// Returns the contents of the register as raw bits pub fn bits(&self) -> usize { self.bits.get() } /// Returns the JEDEC manufacturer ID pub fn jedec_manufacturer(&self) -> usize { self.bits() >> 7 } } read_csr!(0xF11, __read_mvendorid); /// Reads the CSR #[inline] pub fn read() -> Option<Mvendorid> { let r = unsafe { _read() }; // When mvendorid is hardwired to zero it means that the mvendorid // csr isn't implemented. NonZeroUsize::new(r).map(|bits| Mvendorid { bits }) }