Commit 508da386 authored by Anup Patel's avatar Anup Patel Committed by Paul Walmsley
Browse files

RISC-V: Add defines for the SBI message proxy extension



Add defines for the new SBI message proxy extension which is part
of the SBI v3.0 specification.

Reviewed-by: default avatarAtish Patra <atishp@rivosinc.com>
Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Co-developed-by: default avatarRahul Pathak <rpathak@ventanamicro.com>
Signed-off-by: default avatarRahul Pathak <rpathak@ventanamicro.com>
Signed-off-by: default avatarAnup Patel <apatel@ventanamicro.com>
Link: https://lore.kernel.org/r/20250818040920.272664-4-apatel@ventanamicro.com


Signed-off-by: default avatarPaul Walmsley <pjw@kernel.org>
parent 581b4da1
Loading
Loading
Loading
Loading
+62 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ enum sbi_ext_id {
	SBI_EXT_STA = 0x535441,
	SBI_EXT_NACL = 0x4E41434C,
	SBI_EXT_FWFT = 0x46574654,
	SBI_EXT_MPXY = 0x4D505859,

	/* Experimentals extensions must lie within this range */
	SBI_EXT_EXPERIMENTAL_START = 0x08000000,
@@ -430,6 +431,67 @@ enum sbi_fwft_feature_t {

#define SBI_FWFT_SET_FLAG_LOCK			BIT(0)

enum sbi_ext_mpxy_fid {
	SBI_EXT_MPXY_GET_SHMEM_SIZE,
	SBI_EXT_MPXY_SET_SHMEM,
	SBI_EXT_MPXY_GET_CHANNEL_IDS,
	SBI_EXT_MPXY_READ_ATTRS,
	SBI_EXT_MPXY_WRITE_ATTRS,
	SBI_EXT_MPXY_SEND_MSG_WITH_RESP,
	SBI_EXT_MPXY_SEND_MSG_WITHOUT_RESP,
	SBI_EXT_MPXY_GET_NOTIFICATION_EVENTS,
};

enum sbi_mpxy_attribute_id {
	/* Standard channel attributes managed by MPXY framework */
	SBI_MPXY_ATTR_MSG_PROT_ID		= 0x00000000,
	SBI_MPXY_ATTR_MSG_PROT_VER		= 0x00000001,
	SBI_MPXY_ATTR_MSG_MAX_LEN		= 0x00000002,
	SBI_MPXY_ATTR_MSG_SEND_TIMEOUT		= 0x00000003,
	SBI_MPXY_ATTR_MSG_COMPLETION_TIMEOUT	= 0x00000004,
	SBI_MPXY_ATTR_CHANNEL_CAPABILITY	= 0x00000005,
	SBI_MPXY_ATTR_SSE_EVENT_ID		= 0x00000006,
	SBI_MPXY_ATTR_MSI_CONTROL		= 0x00000007,
	SBI_MPXY_ATTR_MSI_ADDR_LO		= 0x00000008,
	SBI_MPXY_ATTR_MSI_ADDR_HI		= 0x00000009,
	SBI_MPXY_ATTR_MSI_DATA			= 0x0000000A,
	SBI_MPXY_ATTR_EVENTS_STATE_CONTROL	= 0x0000000B,
	SBI_MPXY_ATTR_STD_ATTR_MAX_IDX,
	/*
	 * Message protocol specific attributes, managed by
	 * the message protocol specification.
	 */
	SBI_MPXY_ATTR_MSGPROTO_ATTR_START	= 0x80000000,
	SBI_MPXY_ATTR_MSGPROTO_ATTR_END		= 0xffffffff
};

/* Possible values of MSG_PROT_ID attribute as-per SBI v3.0 (or higher) */
enum sbi_mpxy_msgproto_id {
	SBI_MPXY_MSGPROTO_RPMI_ID = 0x0,
};

/* RPMI message protocol specific MPXY attributes */
enum sbi_mpxy_rpmi_attribute_id {
	SBI_MPXY_RPMI_ATTR_SERVICEGROUP_ID = SBI_MPXY_ATTR_MSGPROTO_ATTR_START,
	SBI_MPXY_RPMI_ATTR_SERVICEGROUP_VERSION,
	SBI_MPXY_RPMI_ATTR_IMPL_ID,
	SBI_MPXY_RPMI_ATTR_IMPL_VERSION,
	SBI_MPXY_RPMI_ATTR_MAX_ID
};

/* Encoding of MSG_PROT_VER attribute */
#define SBI_MPXY_MSG_PROT_VER_MAJOR(__ver)	upper_16_bits(__ver)
#define SBI_MPXY_MSG_PROT_VER_MINOR(__ver)	lower_16_bits(__ver)
#define SBI_MPXY_MSG_PROT_MKVER(__maj, __min)	(((u32)(__maj) << 16) | (u16)(__min))

/* Capabilities available through CHANNEL_CAPABILITY attribute */
#define SBI_MPXY_CHAN_CAP_MSI			BIT(0)
#define SBI_MPXY_CHAN_CAP_SSE			BIT(1)
#define SBI_MPXY_CHAN_CAP_EVENTS_STATE		BIT(2)
#define SBI_MPXY_CHAN_CAP_SEND_WITH_RESP	BIT(3)
#define SBI_MPXY_CHAN_CAP_SEND_WITHOUT_RESP	BIT(4)
#define SBI_MPXY_CHAN_CAP_GET_NOTIFICATIONS	BIT(5)

/* SBI spec version fields */
#define SBI_SPEC_VERSION_DEFAULT	0x1
#define SBI_SPEC_VERSION_MAJOR_SHIFT	24