Add an MMIO device to a SMMU object, or remove it
Synopsis:
#include <smmu.h>
int smmu_device_add_mmio(struct smmu_object *const sop,
_Uint64t const phys,
unsigned const len);
Arguments:
- sop
- Pointer to the SMMU object to which the device will be attached, or
NULL to remove the device from any SMMU objects owned by
the current client.
- phys
- The physical address of the device to be attached to or removed from a SMMU
object.
- len
- The number of bytes for device registers.
Library:
libsmmu.a
Description:
The smmu_device_add_mmio() function is a convenience function. It
calls smmu_device_add_generic() to add a Memory-Mapped
I/O (MMIO) device to a SMMU object.
To remove an MMIO device from SMMU objects, call this function with the
sop argument set to NULL.
Returns:
- -1
- Failure: errno is set.
- EBUSY
- Failure when attempting to add to a SMMU object a DMA device that is owned
by another smmuman client.
- ENOENT
Failure: when attempting to:
- add a device – the smmuman service doesn't
know which IOMMU/SMMU unit controls the device being added
- remove a device – the smmuman client making
the call doesn't own the SMMU object to which the device is
attached
- 0
- Success
- +1
- Success, but the client must call smmu_mapping_add() to reissue
the memory mappings for this object (see Preferred sequence for adding memory mappings and devices for more
information about why memory mappings may need to be reissued).