Skip to main content

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}