use crate::lib_bitfield;
use crate::register::ext_csd::{ExtCsd, ExtCsdIndex};
lib_bitfield! {
CommandQueueSupport: u8,
mask: 0x1,
default: 0,
{
cmdq_support: 0;
}
}
impl ExtCsd {
pub const fn cmdq_support(&self) -> CommandQueueSupport {
CommandQueueSupport::from_inner(self.0[ExtCsdIndex::CmdqSupport.into_inner()])
}
pub(crate) fn set_cmdq_support(&mut self, val: CommandQueueSupport) {
self.0[ExtCsdIndex::CmdqSupport.into_inner()] = val.into_inner();
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_cmdq_support() {
let mut ext_csd = ExtCsd::new();
assert_eq!(ext_csd.cmdq_support(), CommandQueueSupport::new());
(0..u8::MAX)
.map(CommandQueueSupport::from_inner)
.for_each(|support| {
ext_csd.set_cmdq_support(support);
assert_eq!(ext_csd.cmdq_support(), support);
assert_eq!(support.cmdq_support(), (support.into_inner() & 0x1) != 0);
});
}
}