| // SPDX-FileCopyrightText: Copyright 2025 Arm Limited and/or its affiliates <open-source-office@arm.com> |
| // SPDX-License-Identifier: MIT OR Apache-2.0 |
| |
| #![allow(non_camel_case_types)] |
| |
| use crate::ffa_v1_1; |
| use zerocopy_derive::*; |
| |
| /// Table 6.1: Partition information descriptor |
| /// Table 6.2: Partition properties descriptor |
| /// The following changes are introduced by FF-A v1.2 to the partition properties field: |
| /// - bit\[10:9\]: Has the following encoding if Bits\[5:4\] = b’00. Reserved (MBZ) otherwise. |
| /// + bit\[9\] has the following encoding: |
| /// * b’0: Cannot receive Direct requests via the FFA_MSG_SEND_DIRECT_REQ2 ABI. |
| /// * b’1: Can receive Direct requests via the FFA_MSG_SEND_DIRECT_REQ2 ABI. |
| /// + bit\[10\] has the following encoding: |
| /// * b’0: Cannot send Direct requests via the FFA_MSG_SEND_DIRECT_REQ2 ABI. |
| /// * b’1: Can send Direct requests via the FFA_MSG_SEND_DIRECT_REQ2 ABI. |
| /// - bit\[31:11\]: Reserved (MBZ). |
| /// |
| /// This doesn't change the descriptor format so we can just use an alias. |
| #[allow(unused)] |
| pub(crate) type partition_info_descriptor = ffa_v1_1::partition_info_descriptor; |
| |
| /// FF-A Memory Management Protocol Table 1.16: Endpoint memory access descriptor |
| #[derive(Default, FromBytes, IntoBytes, KnownLayout, Immutable)] |
| #[repr(C, packed)] |
| pub(crate) struct endpoint_memory_access_descriptor { |
| /// Offset 0, length 4: Memory access permissions descriptor as specified in Table 10.15 |
| pub(crate) access_perm_desc: ffa_v1_1::memory_access_permission_descriptor, |
| /// Offset 4, length 4: Offset to the composite memory region descriptor to which the endpoint |
| /// access permissions apply. Offset must be calculated from the base address of the data |
| /// structure this descriptor is included in. An offset value of 0 indicates that the endpoint |
| /// access permissions apply to a memory region description identified by the Handle parameter |
| /// specified in the data structure that includes this one. |
| pub(crate) composite_offset: u32, |
| /// Offset 8, length 16: Implementation defined information |
| pub(crate) impdef_info: [u8; 16], |
| /// Offset 24, length 8: Reserved (MBZ) |
| pub(crate) reserved: u64, |
| } |