]> git.itanic.dy.fi Git - linux-stable/commitdiff
firmware: arm_ffa: Update the FF-A command list with v1.1 additions
authorSudeep Holla <sudeep.holla@arm.com>
Thu, 5 Oct 2023 14:44:54 +0000 (15:44 +0100)
committerSudeep Holla <sudeep.holla@arm.com>
Fri, 6 Oct 2023 14:33:12 +0000 (15:33 +0100)
Arm Firmware Framework for A-profile(FFA) v1.1 introduces notifications
and indirect messaging based upon notifications support and extends some
of the memory interfaces.

Let us add all the newly supported FF-A function IDs in the spec.
Also update to the error values and associated handling.

Link: https://lore.kernel.org/r/20231005-ffa_v1-1_notif-v4-1-cddd3237809c@arm.com
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
drivers/firmware/arm_ffa/driver.c
include/linux/arm_ffa.h

index 7cd6b1564e8018d29c4393cc28fbce3be70d7937..a64512388ea5aeec4193587bbc08fe3dafb8fc13 100644 (file)
@@ -64,6 +64,7 @@ static const int ffa_linux_errmap[] = {
        -EACCES,        /* FFA_RET_DENIED */
        -EAGAIN,        /* FFA_RET_RETRY */
        -ECANCELED,     /* FFA_RET_ABORTED */
+       -ENODATA,       /* FFA_RET_NO_DATA */
 };
 
 static inline int ffa_to_linux_errno(int errno)
index cc060da51becf416d735780ab0df8973cdf6aea5..2ea1717a08251422e3bf8b1caa5fa3c109d5e509 100644 (file)
@@ -20,6 +20,7 @@
 
 #define FFA_ERROR                      FFA_SMC_32(0x60)
 #define FFA_SUCCESS                    FFA_SMC_32(0x61)
+#define FFA_FN64_SUCCESS               FFA_SMC_64(0x61)
 #define FFA_INTERRUPT                  FFA_SMC_32(0x62)
 #define FFA_VERSION                    FFA_SMC_32(0x63)
 #define FFA_FEATURES                   FFA_SMC_32(0x64)
 #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)
+#define FFA_NOTIFICATION_BITMAP_CREATE FFA_SMC_32(0x7D)
+#define FFA_NOTIFICATION_BITMAP_DESTROY FFA_SMC_32(0x7E)
+#define FFA_NOTIFICATION_BIND          FFA_SMC_32(0x7F)
+#define FFA_NOTIFICATION_UNBIND                FFA_SMC_32(0x80)
+#define FFA_NOTIFICATION_SET           FFA_SMC_32(0x81)
+#define FFA_NOTIFICATION_GET           FFA_SMC_32(0x82)
+#define FFA_NOTIFICATION_INFO_GET      FFA_SMC_32(0x83)
+#define FFA_FN64_NOTIFICATION_INFO_GET FFA_SMC_64(0x83)
+#define FFA_RX_ACQUIRE                 FFA_SMC_32(0x84)
+#define FFA_SPM_ID_GET                 FFA_SMC_32(0x85)
+#define FFA_MSG_SEND2                  FFA_SMC_32(0x86)
+#define FFA_SECONDARY_EP_REGISTER      FFA_SMC_32(0x87)
+#define FFA_FN64_SECONDARY_EP_REGISTER FFA_SMC_64(0x87)
+#define FFA_MEM_PERM_GET               FFA_SMC_32(0x88)
+#define FFA_FN64_MEM_PERM_GET          FFA_SMC_64(0x88)
+#define FFA_MEM_PERM_SET               FFA_SMC_32(0x89)
+#define FFA_FN64_MEM_PERM_SET          FFA_SMC_64(0x89)
 
 /*
  * For some calls it is necessary to use SMC64 to pass or return 64-bit values.
@@ -76,6 +94,7 @@
 #define FFA_RET_DENIED             (-6)
 #define FFA_RET_RETRY              (-7)
 #define FFA_RET_ABORTED            (-8)
+#define FFA_RET_NO_DATA            (-9)
 
 /* FFA version encoding */
 #define FFA_MAJOR_VERSION_MASK GENMASK(30, 16)
        (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)
+#define FFA_VERSION_1_1                FFA_PACK_VERSION_INFO(1, 1)
 
 /**
  * FF-A specification mentions explicitly about '4K pages'. This should