Merge branch 'for-next/ffa' into for-next/core
* for-next/ffa: firmware: arm_ffa: Move comment before the field it is documenting firmware: arm_ffa: Move constants to header file
This commit is contained in:
commit
5def4a9791
|
@ -36,81 +36,6 @@
|
|||
#include "common.h"
|
||||
|
||||
#define FFA_DRIVER_VERSION FFA_VERSION_1_0
|
||||
|
||||
#define FFA_SMC(calling_convention, func_num) \
|
||||
ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL, (calling_convention), \
|
||||
ARM_SMCCC_OWNER_STANDARD, (func_num))
|
||||
|
||||
#define FFA_SMC_32(func_num) FFA_SMC(ARM_SMCCC_SMC_32, (func_num))
|
||||
#define FFA_SMC_64(func_num) FFA_SMC(ARM_SMCCC_SMC_64, (func_num))
|
||||
|
||||
#define FFA_ERROR FFA_SMC_32(0x60)
|
||||
#define FFA_SUCCESS FFA_SMC_32(0x61)
|
||||
#define FFA_INTERRUPT FFA_SMC_32(0x62)
|
||||
#define FFA_VERSION FFA_SMC_32(0x63)
|
||||
#define FFA_FEATURES FFA_SMC_32(0x64)
|
||||
#define FFA_RX_RELEASE FFA_SMC_32(0x65)
|
||||
#define FFA_RXTX_MAP FFA_SMC_32(0x66)
|
||||
#define FFA_FN64_RXTX_MAP FFA_SMC_64(0x66)
|
||||
#define FFA_RXTX_UNMAP FFA_SMC_32(0x67)
|
||||
#define FFA_PARTITION_INFO_GET FFA_SMC_32(0x68)
|
||||
#define FFA_ID_GET FFA_SMC_32(0x69)
|
||||
#define FFA_MSG_POLL FFA_SMC_32(0x6A)
|
||||
#define FFA_MSG_WAIT FFA_SMC_32(0x6B)
|
||||
#define FFA_YIELD FFA_SMC_32(0x6C)
|
||||
#define FFA_RUN FFA_SMC_32(0x6D)
|
||||
#define FFA_MSG_SEND FFA_SMC_32(0x6E)
|
||||
#define FFA_MSG_SEND_DIRECT_REQ FFA_SMC_32(0x6F)
|
||||
#define FFA_FN64_MSG_SEND_DIRECT_REQ FFA_SMC_64(0x6F)
|
||||
#define FFA_MSG_SEND_DIRECT_RESP FFA_SMC_32(0x70)
|
||||
#define FFA_FN64_MSG_SEND_DIRECT_RESP FFA_SMC_64(0x70)
|
||||
#define FFA_MEM_DONATE FFA_SMC_32(0x71)
|
||||
#define FFA_FN64_MEM_DONATE FFA_SMC_64(0x71)
|
||||
#define FFA_MEM_LEND FFA_SMC_32(0x72)
|
||||
#define FFA_FN64_MEM_LEND FFA_SMC_64(0x72)
|
||||
#define FFA_MEM_SHARE FFA_SMC_32(0x73)
|
||||
#define FFA_FN64_MEM_SHARE FFA_SMC_64(0x73)
|
||||
#define FFA_MEM_RETRIEVE_REQ FFA_SMC_32(0x74)
|
||||
#define FFA_FN64_MEM_RETRIEVE_REQ FFA_SMC_64(0x74)
|
||||
#define FFA_MEM_RETRIEVE_RESP FFA_SMC_32(0x75)
|
||||
#define FFA_MEM_RELINQUISH FFA_SMC_32(0x76)
|
||||
#define FFA_MEM_RECLAIM FFA_SMC_32(0x77)
|
||||
#define FFA_MEM_OP_PAUSE FFA_SMC_32(0x78)
|
||||
#define FFA_MEM_OP_RESUME FFA_SMC_32(0x79)
|
||||
#define FFA_MEM_FRAG_RX FFA_SMC_32(0x7A)
|
||||
#define FFA_MEM_FRAG_TX FFA_SMC_32(0x7B)
|
||||
#define FFA_NORMAL_WORLD_RESUME FFA_SMC_32(0x7C)
|
||||
|
||||
/*
|
||||
* For some calls it is necessary to use SMC64 to pass or return 64-bit values.
|
||||
* For such calls FFA_FN_NATIVE(name) will choose the appropriate
|
||||
* (native-width) function ID.
|
||||
*/
|
||||
#ifdef CONFIG_64BIT
|
||||
#define FFA_FN_NATIVE(name) FFA_FN64_##name
|
||||
#else
|
||||
#define FFA_FN_NATIVE(name) FFA_##name
|
||||
#endif
|
||||
|
||||
/* FFA error codes. */
|
||||
#define FFA_RET_SUCCESS (0)
|
||||
#define FFA_RET_NOT_SUPPORTED (-1)
|
||||
#define FFA_RET_INVALID_PARAMETERS (-2)
|
||||
#define FFA_RET_NO_MEMORY (-3)
|
||||
#define FFA_RET_BUSY (-4)
|
||||
#define FFA_RET_INTERRUPTED (-5)
|
||||
#define FFA_RET_DENIED (-6)
|
||||
#define FFA_RET_RETRY (-7)
|
||||
#define FFA_RET_ABORTED (-8)
|
||||
|
||||
#define MAJOR_VERSION_MASK GENMASK(30, 16)
|
||||
#define MINOR_VERSION_MASK GENMASK(15, 0)
|
||||
#define MAJOR_VERSION(x) ((u16)(FIELD_GET(MAJOR_VERSION_MASK, (x))))
|
||||
#define MINOR_VERSION(x) ((u16)(FIELD_GET(MINOR_VERSION_MASK, (x))))
|
||||
#define PACK_VERSION_INFO(major, minor) \
|
||||
(FIELD_PREP(MAJOR_VERSION_MASK, (major)) | \
|
||||
FIELD_PREP(MINOR_VERSION_MASK, (minor)))
|
||||
#define FFA_VERSION_1_0 PACK_VERSION_INFO(1, 0)
|
||||
#define FFA_MIN_VERSION FFA_VERSION_1_0
|
||||
|
||||
#define SENDER_ID_MASK GENMASK(31, 16)
|
||||
|
@ -120,12 +45,6 @@
|
|||
#define PACK_TARGET_INFO(s, r) \
|
||||
(FIELD_PREP(SENDER_ID_MASK, (s)) | FIELD_PREP(RECEIVER_ID_MASK, (r)))
|
||||
|
||||
/*
|
||||
* FF-A specification mentions explicitly about '4K pages'. This should
|
||||
* not be confused with the kernel PAGE_SIZE, which is the translation
|
||||
* granule kernel is configured and may be one among 4K, 16K and 64K.
|
||||
*/
|
||||
#define FFA_PAGE_SIZE SZ_4K
|
||||
/*
|
||||
* Keeping RX TX buffer size as 4K for now
|
||||
* 64K may be preferred to keep it min a page in 64K PAGE_SIZE config
|
||||
|
@ -178,9 +97,9 @@ static struct ffa_drv_info *drv_info;
|
|||
*/
|
||||
static u32 ffa_compatible_version_find(u32 version)
|
||||
{
|
||||
u16 major = MAJOR_VERSION(version), minor = MINOR_VERSION(version);
|
||||
u16 drv_major = MAJOR_VERSION(FFA_DRIVER_VERSION);
|
||||
u16 drv_minor = MINOR_VERSION(FFA_DRIVER_VERSION);
|
||||
u16 major = FFA_MAJOR_VERSION(version), minor = FFA_MINOR_VERSION(version);
|
||||
u16 drv_major = FFA_MAJOR_VERSION(FFA_DRIVER_VERSION);
|
||||
u16 drv_minor = FFA_MINOR_VERSION(FFA_DRIVER_VERSION);
|
||||
|
||||
if ((major < drv_major) || (major == drv_major && minor <= drv_minor))
|
||||
return version;
|
||||
|
@ -204,16 +123,16 @@ static int ffa_version_check(u32 *version)
|
|||
|
||||
if (ver.a0 < FFA_MIN_VERSION) {
|
||||
pr_err("Incompatible v%d.%d! Earliest supported v%d.%d\n",
|
||||
MAJOR_VERSION(ver.a0), MINOR_VERSION(ver.a0),
|
||||
MAJOR_VERSION(FFA_MIN_VERSION),
|
||||
MINOR_VERSION(FFA_MIN_VERSION));
|
||||
FFA_MAJOR_VERSION(ver.a0), FFA_MINOR_VERSION(ver.a0),
|
||||
FFA_MAJOR_VERSION(FFA_MIN_VERSION),
|
||||
FFA_MINOR_VERSION(FFA_MIN_VERSION));
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
pr_info("Driver version %d.%d\n", MAJOR_VERSION(FFA_DRIVER_VERSION),
|
||||
MINOR_VERSION(FFA_DRIVER_VERSION));
|
||||
pr_info("Firmware version %d.%d found\n", MAJOR_VERSION(ver.a0),
|
||||
MINOR_VERSION(ver.a0));
|
||||
pr_info("Driver version %d.%d\n", FFA_MAJOR_VERSION(FFA_DRIVER_VERSION),
|
||||
FFA_MINOR_VERSION(FFA_DRIVER_VERSION));
|
||||
pr_info("Firmware version %d.%d found\n", FFA_MAJOR_VERSION(ver.a0),
|
||||
FFA_MINOR_VERSION(ver.a0));
|
||||
*version = ffa_compatible_version_find(ver.a0);
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -11,6 +11,89 @@
|
|||
#include <linux/types.h>
|
||||
#include <linux/uuid.h>
|
||||
|
||||
#define FFA_SMC(calling_convention, func_num) \
|
||||
ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL, (calling_convention), \
|
||||
ARM_SMCCC_OWNER_STANDARD, (func_num))
|
||||
|
||||
#define FFA_SMC_32(func_num) FFA_SMC(ARM_SMCCC_SMC_32, (func_num))
|
||||
#define FFA_SMC_64(func_num) FFA_SMC(ARM_SMCCC_SMC_64, (func_num))
|
||||
|
||||
#define FFA_ERROR FFA_SMC_32(0x60)
|
||||
#define FFA_SUCCESS FFA_SMC_32(0x61)
|
||||
#define FFA_INTERRUPT FFA_SMC_32(0x62)
|
||||
#define FFA_VERSION FFA_SMC_32(0x63)
|
||||
#define FFA_FEATURES FFA_SMC_32(0x64)
|
||||
#define FFA_RX_RELEASE FFA_SMC_32(0x65)
|
||||
#define FFA_RXTX_MAP FFA_SMC_32(0x66)
|
||||
#define FFA_FN64_RXTX_MAP FFA_SMC_64(0x66)
|
||||
#define FFA_RXTX_UNMAP FFA_SMC_32(0x67)
|
||||
#define FFA_PARTITION_INFO_GET FFA_SMC_32(0x68)
|
||||
#define FFA_ID_GET FFA_SMC_32(0x69)
|
||||
#define FFA_MSG_POLL FFA_SMC_32(0x6A)
|
||||
#define FFA_MSG_WAIT FFA_SMC_32(0x6B)
|
||||
#define FFA_YIELD FFA_SMC_32(0x6C)
|
||||
#define FFA_RUN FFA_SMC_32(0x6D)
|
||||
#define FFA_MSG_SEND FFA_SMC_32(0x6E)
|
||||
#define FFA_MSG_SEND_DIRECT_REQ FFA_SMC_32(0x6F)
|
||||
#define FFA_FN64_MSG_SEND_DIRECT_REQ FFA_SMC_64(0x6F)
|
||||
#define FFA_MSG_SEND_DIRECT_RESP FFA_SMC_32(0x70)
|
||||
#define FFA_FN64_MSG_SEND_DIRECT_RESP FFA_SMC_64(0x70)
|
||||
#define FFA_MEM_DONATE FFA_SMC_32(0x71)
|
||||
#define FFA_FN64_MEM_DONATE FFA_SMC_64(0x71)
|
||||
#define FFA_MEM_LEND FFA_SMC_32(0x72)
|
||||
#define FFA_FN64_MEM_LEND FFA_SMC_64(0x72)
|
||||
#define FFA_MEM_SHARE FFA_SMC_32(0x73)
|
||||
#define FFA_FN64_MEM_SHARE FFA_SMC_64(0x73)
|
||||
#define FFA_MEM_RETRIEVE_REQ FFA_SMC_32(0x74)
|
||||
#define FFA_FN64_MEM_RETRIEVE_REQ FFA_SMC_64(0x74)
|
||||
#define FFA_MEM_RETRIEVE_RESP FFA_SMC_32(0x75)
|
||||
#define FFA_MEM_RELINQUISH FFA_SMC_32(0x76)
|
||||
#define FFA_MEM_RECLAIM FFA_SMC_32(0x77)
|
||||
#define FFA_MEM_OP_PAUSE FFA_SMC_32(0x78)
|
||||
#define FFA_MEM_OP_RESUME FFA_SMC_32(0x79)
|
||||
#define FFA_MEM_FRAG_RX FFA_SMC_32(0x7A)
|
||||
#define FFA_MEM_FRAG_TX FFA_SMC_32(0x7B)
|
||||
#define FFA_NORMAL_WORLD_RESUME FFA_SMC_32(0x7C)
|
||||
|
||||
/*
|
||||
* For some calls it is necessary to use SMC64 to pass or return 64-bit values.
|
||||
* For such calls FFA_FN_NATIVE(name) will choose the appropriate
|
||||
* (native-width) function ID.
|
||||
*/
|
||||
#ifdef CONFIG_64BIT
|
||||
#define FFA_FN_NATIVE(name) FFA_FN64_##name
|
||||
#else
|
||||
#define FFA_FN_NATIVE(name) FFA_##name
|
||||
#endif
|
||||
|
||||
/* FFA error codes. */
|
||||
#define FFA_RET_SUCCESS (0)
|
||||
#define FFA_RET_NOT_SUPPORTED (-1)
|
||||
#define FFA_RET_INVALID_PARAMETERS (-2)
|
||||
#define FFA_RET_NO_MEMORY (-3)
|
||||
#define FFA_RET_BUSY (-4)
|
||||
#define FFA_RET_INTERRUPTED (-5)
|
||||
#define FFA_RET_DENIED (-6)
|
||||
#define FFA_RET_RETRY (-7)
|
||||
#define FFA_RET_ABORTED (-8)
|
||||
|
||||
/* FFA version encoding */
|
||||
#define FFA_MAJOR_VERSION_MASK GENMASK(30, 16)
|
||||
#define FFA_MINOR_VERSION_MASK GENMASK(15, 0)
|
||||
#define FFA_MAJOR_VERSION(x) ((u16)(FIELD_GET(FFA_MAJOR_VERSION_MASK, (x))))
|
||||
#define FFA_MINOR_VERSION(x) ((u16)(FIELD_GET(FFA_MINOR_VERSION_MASK, (x))))
|
||||
#define FFA_PACK_VERSION_INFO(major, minor) \
|
||||
(FIELD_PREP(FFA_MAJOR_VERSION_MASK, (major)) | \
|
||||
FIELD_PREP(FFA_MINOR_VERSION_MASK, (minor)))
|
||||
#define FFA_VERSION_1_0 FFA_PACK_VERSION_INFO(1, 0)
|
||||
|
||||
/**
|
||||
* FF-A specification mentions explicitly about '4K pages'. This should
|
||||
* not be confused with the kernel PAGE_SIZE, which is the translation
|
||||
* granule kernel is configured and may be one among 4K, 16K and 64K.
|
||||
*/
|
||||
#define FFA_PAGE_SIZE SZ_4K
|
||||
|
||||
/* FFA Bus/Device/Driver related */
|
||||
struct ffa_device {
|
||||
int vm_id;
|
||||
|
@ -161,11 +244,11 @@ struct ffa_mem_region_attributes {
|
|||
*/
|
||||
#define FFA_MEM_RETRIEVE_SELF_BORROWER BIT(0)
|
||||
u8 flag;
|
||||
u32 composite_off;
|
||||
/*
|
||||
* Offset in bytes from the start of the outer `ffa_memory_region` to
|
||||
* an `struct ffa_mem_region_addr_range`.
|
||||
*/
|
||||
u32 composite_off;
|
||||
u64 reserved;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue