mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 01:04:41 +01:00
rust: dma: allow drivers to tune max segment size
Make dma_set_max_seg_size() available to Rust so drivers can perform standard DMA setup steps. Signed-off-by: Beata Michalska <beata.michalska@arm.com> Acked-by: Robin Murphy <robvin.murphy@arm.com> Reviewed-by: Alice Ryhl <aliceryhl@google.com> Link: https://patch.msgid.link/20260128135320.689046-1-beata.michalska@arm.com Signed-off-by: Danilo Krummrich <dakr@kernel.org>
This commit is contained in:
parent
7c60d964fb
commit
c71257394b
2 changed files with 23 additions and 0 deletions
|
|
@ -43,3 +43,9 @@ size_t rust_helper_dma_max_mapping_size(struct device *dev)
|
|||
{
|
||||
return dma_max_mapping_size(dev);
|
||||
}
|
||||
|
||||
__rust_helper void rust_helper_dma_set_max_seg_size(struct device *dev,
|
||||
unsigned int size)
|
||||
{
|
||||
dma_set_max_seg_size(dev, size);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -85,6 +85,23 @@ pub trait Device: AsRef<device::Device<Core>> {
|
|||
bindings::dma_set_mask_and_coherent(self.as_ref().as_raw(), mask.value())
|
||||
})
|
||||
}
|
||||
|
||||
/// Set the maximum size of a single DMA segment the device may request.
|
||||
///
|
||||
/// This method is usually called once from `probe()` as soon as the device capabilities are
|
||||
/// known.
|
||||
///
|
||||
/// # Safety
|
||||
///
|
||||
/// This method must not be called concurrently with any DMA allocation or mapping primitives,
|
||||
/// such as [`CoherentAllocation::alloc_attrs`].
|
||||
unsafe fn dma_set_max_seg_size(&self, size: u32) {
|
||||
// SAFETY:
|
||||
// - By the type invariant of `device::Device`, `self.as_ref().as_raw()` is valid.
|
||||
// - The safety requirement of this function guarantees that there are no concurrent calls
|
||||
// to DMA allocation and mapping primitives using this parameter.
|
||||
unsafe { bindings::dma_set_max_seg_size(self.as_ref().as_raw(), size) }
|
||||
}
|
||||
}
|
||||
|
||||
/// A DMA mask that holds a bitmask with the lowest `n` bits set.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue