pub trait PeripheralManagement<C>where
    C: ClockInterface,{
    type RegisterType;

    // Required methods
    fn get_registers(&self) -> &Self::RegisterType;
    fn get_clock(&self) -> &C;
    fn before_peripheral_access(&self, _: &C, _: &Self::RegisterType);
    fn after_peripheral_access(&self, _: &C, _: &Self::RegisterType);
Expand description

A structure encapsulating a peripheral should implement this trait.

Required Associated Types§

Required Methods§


fn get_registers(&self) -> &Self::RegisterType

How to get a reference to the physical hardware registers (the MMIO struct).


fn get_clock(&self) -> &C

Which clock feeds this peripheral.

For peripherals with no clock, use &::kernel::platform::chip::NO_CLOCK_CONTROL.


fn before_peripheral_access(&self, _: &C, _: &Self::RegisterType)

Called before peripheral access.

Responsible for ensure the periphal can be safely accessed, e.g. that its clock is powered on.


fn after_peripheral_access(&self, _: &C, _: &Self::RegisterType)

Called after periphal access.

Currently used primarily for power management to check whether the peripheral can be powered off.