any-uart 0.2.12

Init early console from device tree, mostly for Arm
Documentation
use crate::{Console, ErrorKind, IrqEvent, UartData};

pub struct AuxMini {}

impl Console for AuxMini {
    fn put(uart: UartData, byte: u8) -> Result<(), ErrorKind> {
        unsafe {
            let data = uart.reg::<u32>(0);
            data.write_volatile(byte as _);
            Ok(())
        }
    }

    fn get(uart: UartData) -> Result<u8, ErrorKind> {
        unsafe {
            let data = uart.reg::<u32>(0);

            Ok(data.read_volatile() as _)
        }
    }

    fn set_irq_enable(_uart: UartData, _enable: bool) {}

    fn get_irq_enable(_uart: UartData) -> bool {
        todo!()
    }

    fn clean_irq_event(_uart: UartData, _event: IrqEvent) {}

    fn can_put(uart: UartData) -> bool {
        const TXFF: u32 = 1 << 5;
        let state = uart.reg_u8(0x24) as *const u32;
        unsafe { state.read_volatile() & TXFF == 0 }
    }

    fn can_get(uart: UartData) -> bool {
        const RX_READY: u32 = 1 << 0;
        let state = uart.reg_u8(0x24) as *const u32;
        unsafe { state.read_volatile() & RX_READY != 0 }
    }

    fn get_irq_event(_uart: UartData) -> IrqEvent {
        todo!()
    }

    fn open(_uart: UartData) {}
}