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 */

Reply via email to