chipset_device/isa_dma.rs
1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4//! ISA DMA controller capability exposed by chipset devices.
5
6pub use vmcore::isa_dma_channel::IsaDmaBuffer as IsaDmaTransferBuffer;
7pub use vmcore::isa_dma_channel::IsaDmaDirection as IsaDmaTransferDirection;
8
9/// Optional capability implemented by chipset devices that expose an ISA DMA
10/// controller programming interface.
11pub trait IsaDmaController {
12 /// Check the value of the DMA channel's configured transfer size.
13 fn check_transfer_size(&mut self, channel_number: usize) -> u16;
14
15 /// Request access to an ISA DMA channel buffer.
16 ///
17 /// Returns `None` when the channel is not configured for this transfer.
18 fn request(
19 &mut self,
20 channel_number: usize,
21 direction: IsaDmaTransferDirection,
22 ) -> Option<IsaDmaTransferBuffer>;
23
24 /// Signal that DMA transfer on the given channel has completed.
25 fn complete(&mut self, channel_number: usize);
26}