This is an automated email from the ASF dual-hosted git repository. xiaoxiang781216 pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit db6861aef63ab1a557ea52796b586eb88a386aa6 Author: Bowen Wang <[email protected]> AuthorDate: Sat Oct 24 19:52:14 2026 +0800 drivers/virtio-rpmb: move the protocol definitions to a header Move the RPMB request/response types, results, configuration layout and frame layout to include/nuttx/virtio/virtio-rpmb.h, and declare both packed like the specification, so a device-side implementation can share them. Signed-off-by: anpeiyun <[email protected]> --- drivers/virtio/virtio-rpmb.c | 1 + drivers/virtio/virtio-rpmb.h | 69 ------------------------- {drivers => include/nuttx}/virtio/virtio-rpmb.h | 52 +++++-------------- 3 files changed, 14 insertions(+), 108 deletions(-) diff --git a/drivers/virtio/virtio-rpmb.c b/drivers/virtio/virtio-rpmb.c index 9ca8d5fb45b..64407aa7c65 100644 --- a/drivers/virtio/virtio-rpmb.c +++ b/drivers/virtio/virtio-rpmb.c @@ -35,6 +35,7 @@ #include <nuttx/spinlock.h> #include <nuttx/mmcsd.h> #include <nuttx/virtio/virtio.h> +#include <nuttx/virtio/virtio-rpmb.h> #include "virtio-rpmb.h" diff --git a/drivers/virtio/virtio-rpmb.h b/drivers/virtio/virtio-rpmb.h index 8cefc58555b..070db2b035d 100644 --- a/drivers/virtio/virtio-rpmb.h +++ b/drivers/virtio/virtio-rpmb.h @@ -28,7 +28,6 @@ ****************************************************************************/ #include <nuttx/config.h> -#include <stdint.h> #ifdef CONFIG_DRIVERS_VIRTIO_RPMB @@ -48,74 +47,6 @@ extern "C" #define EXTERN extern #endif -/**************************************************************************** - * Pre-processor Definitions - ****************************************************************************/ - -/* RPMB Request Types */ - -#define VIRTIO_RPMB_REQ_PROGRAM_KEY 0x0001 -#define VIRTIO_RPMB_REQ_GET_WRITE_COUNTER 0x0002 -#define VIRTIO_RPMB_REQ_DATA_WRITE 0x0003 -#define VIRTIO_RPMB_REQ_DATA_READ 0x0004 -#define VIRTIO_RPMB_REQ_RESULT_READ 0x0005 - -/* RPMB Response Types */ - -#define VIRTIO_RPMB_RESP_PROGRAM_KEY 0x0100 -#define VIRTIO_RPMB_RESP_GET_COUNTER 0x0200 -#define VIRTIO_RPMB_RESP_DATA_WRITE 0x0300 -#define VIRTIO_RPMB_RESP_DATA_READ 0x0400 - -/* RPMB Operation Results - * VIRTIO_RPMB_RES_OK : Operation successful - * VIRTIO_RPMB_RES_GENERAL_FAILURE : General failure - * VIRTIO_RPMB_RES_AUTH_FAILURE : Mac doesn't match or calculation - * failure - * VIRTIO_RPMB_RES_COUNT_FAILURE : Counter doesn't match or counter - * increment failure - * VIRTIO_RPMB_RES_ADDR_FAILURE : Address out of range or wrong - * address alignment - * VIRTIO_RPMB_RES_WRITE_FAILURE : Data, counter, or result write failure - * VIRTIO_RPMB_RES_READ_FAILURE : Data, counter, or result read failure - * VIRTIO_RPMB_RES_NO_AUTH_KEY : Authentication key not yet programmed - * VIRTIO_RPMB_RES_WRITE_COUNTER_EXPIRED: Counter expired - */ - -#define VIRTIO_RPMB_RES_OK 0x0000 -#define VIRTIO_RPMB_RES_GENERAL_FAILURE 0x0001 -#define VIRTIO_RPMB_RES_AUTH_FAILURE 0x0002 -#define VIRTIO_RPMB_RES_COUNT_FAILURE 0x0003 -#define VIRTIO_RPMB_RES_ADDR_FAILURE 0x0004 -#define VIRTIO_RPMB_RES_WRITE_FAILURE 0x0005 -#define VIRTIO_RPMB_RES_READ_FAILURE 0x0006 -#define VIRTIO_RPMB_RES_NO_AUTH_KEY 0x0007 -#define VIRTIO_RPMB_RES_WRITE_COUNTER_EXPIRED 0x0080 - -/**************************************************************************** - * Public Types - ****************************************************************************/ - -struct virtio_rpmb_config_s -{ - uint8_t capacity; - uint8_t max_wr_cnt; - uint8_t max_rd_cnt; -}; - -struct virtio_rpmb_frame -{ - uint8_t stuff[196]; - uint8_t key_mac[32]; - uint8_t data[256]; - uint8_t nonce[16]; - uint32_t write_counter; - uint16_t addr; - uint16_t block_count; - uint16_t result; - uint16_t req_resp; -}; - /**************************************************************************** * Public Function Prototypes ****************************************************************************/ diff --git a/drivers/virtio/virtio-rpmb.h b/include/nuttx/virtio/virtio-rpmb.h similarity index 77% copy from drivers/virtio/virtio-rpmb.h copy to include/nuttx/virtio/virtio-rpmb.h index 8cefc58555b..4b2f416a1dc 100644 --- a/drivers/virtio/virtio-rpmb.h +++ b/include/nuttx/virtio/virtio-rpmb.h @@ -1,5 +1,5 @@ /**************************************************************************** - * drivers/virtio/virtio-rpmb.h + * include/nuttx/virtio/virtio-rpmb.h * * SPDX-License-Identifier: Apache-2.0 * @@ -20,33 +20,16 @@ * ****************************************************************************/ -#ifndef __DRIVERS_VIRTIO_VIRTIO_RPMB_H -#define __DRIVERS_VIRTIO_VIRTIO_RPMB_H +#ifndef __INCLUDE_NUTTX_VIRTIO_VIRTIO_RPMB_H +#define __INCLUDE_NUTTX_VIRTIO_VIRTIO_RPMB_H /**************************************************************************** * Included Files ****************************************************************************/ -#include <nuttx/config.h> #include <stdint.h> -#ifdef CONFIG_DRIVERS_VIRTIO_RPMB - -/**************************************************************************** - * Pre-processor Definitions - ****************************************************************************/ - -/**************************************************************************** - * Public Data - ****************************************************************************/ - -#ifdef __cplusplus -#define EXTERN extern "C" -extern "C" -{ -#else -#define EXTERN extern -#endif +#include <nuttx/compiler.h> /**************************************************************************** * Pre-processor Definitions @@ -96,14 +79,18 @@ extern "C" * Public Types ****************************************************************************/ -struct virtio_rpmb_config_s +/* Device configuration layout (virtio spec 5.12.4) */ + +begin_packed_struct struct virtio_rpmb_config_s { uint8_t capacity; uint8_t max_wr_cnt; uint8_t max_rd_cnt; -}; +} end_packed_struct; + +/* RPMB frame (virtio spec 5.12.6.1, 512 bytes) */ -struct virtio_rpmb_frame +begin_packed_struct struct virtio_rpmb_frame { uint8_t stuff[196]; uint8_t key_mac[32]; @@ -114,19 +101,6 @@ struct virtio_rpmb_frame uint16_t block_count; uint16_t result; uint16_t req_resp; -}; - -/**************************************************************************** - * Public Function Prototypes - ****************************************************************************/ - -int virtio_register_rpmb_driver(void); - -#undef EXTERN -#ifdef __cplusplus -} -#endif - -#endif /* CONFIG_DRIVERS_VIRTIO_RPMB */ +} end_packed_struct; -#endif /* __DRIVERS_VIRTIO_VIRTIO_RPMB_H */ +#endif /* __INCLUDE_NUTTX_VIRTIO_VIRTIO_RPMB_H */
