You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by gu...@apache.org on 2022/01/05 14:23:32 UTC
[incubator-nuttx] branch master updated: drivers/mmcsd: Add RPMB ioctl
This is an automated email from the ASF dual-hosted git repository.
gustavonihei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git
The following commit(s) were added to refs/heads/master by this push:
new fb92621 drivers/mmcsd: Add RPMB ioctl
fb92621 is described below
commit fb9262196252ad8f08156148981500d42923c9d7
Author: Xiang Xiao <xi...@xiaomi.com>
AuthorDate: Mon Sep 6 21:15:19 2021 +0800
drivers/mmcsd: Add RPMB ioctl
Signed-off-by: Xiang Xiao <xi...@xiaomi.com>
---
include/nuttx/fs/ioctl.h | 6 ++++++
include/nuttx/mmcsd.h | 44 ++++++++++++++++++++++++++++++++++++++++++--
2 files changed, 48 insertions(+), 2 deletions(-)
diff --git a/include/nuttx/fs/ioctl.h b/include/nuttx/fs/ioctl.h
index 74a529b..fc37683 100644
--- a/include/nuttx/fs/ioctl.h
+++ b/include/nuttx/fs/ioctl.h
@@ -88,6 +88,7 @@
#define _EFUSEBASE (0x3000) /* Efuse device ioctl commands */
#define _MTRIOBASE (0x3100) /* Motor device ioctl commands */
#define _MATHIOBASE (0x3200) /* MATH device ioctl commands */
+#define _MMCSDIOBASE (0x3300) /* MMCSD device ioctl commands */
#define _WLIOCBASE (0x8b00) /* Wireless modules ioctl network commands */
/* boardctl() commands share the same number space */
@@ -555,6 +556,11 @@
#define _MATHIOCVALID(c) (_IOC_TYPE(c) == _MATHIOBASE)
#define _MATHIOC(nr) _IOC(_MATHIOBASE, nr)
+/* MMCSD drivers ************************************************************/
+
+#define _MMCSDIOCVALID(c) (_IOC_TYPE(c) == _MMCSDIOBASE)
+#define _MMCSDIOC(nr) _IOC(_MMCSDIOBASE, nr)
+
/* Wireless driver network ioctl definitions ********************************/
/* (see nuttx/include/wireless/wireless.h */
diff --git a/include/nuttx/mmcsd.h b/include/nuttx/mmcsd.h
index 8868f10..6ee185e 100644
--- a/include/nuttx/mmcsd.h
+++ b/include/nuttx/mmcsd.h
@@ -27,6 +27,47 @@
#include <nuttx/config.h>
+#include <stdint.h>
+#include <nuttx/fs/ioctl.h>
+
+/****************************************************************************
+ * Pre-processor Definitions
+ ****************************************************************************/
+
+/* mmcsd ioctl */
+
+#define MMC_RPMB_TRANSFER _MMCSDIOC(0x0000)
+
+/* rpmb request */
+
+#define MMC_RPMB_WRITE_KEY 0x01
+#define MMC_RPMB_READ_CNT 0x02
+#define MMC_RPMB_WRITE 0x03
+#define MMC_RPMB_READ 0x04
+
+/****************************************************************************
+ * Public Types
+ ****************************************************************************/
+
+struct mmc_rpmb_frame_s
+{
+ 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;
+};
+
+struct mmc_rpmb_transfer_s
+{
+ unsigned int num_of_frames;
+ struct mmc_rpmb_frame_s frames[0];
+};
+
/****************************************************************************
* Public Functions Definitions
****************************************************************************/
@@ -76,8 +117,7 @@ int mmcsd_slotinitialize(int minor, FAR struct sdio_dev_s *dev);
****************************************************************************/
struct spi_dev_s; /* See nuttx/spi/spi.h */
-int mmcsd_spislotinitialize(int minor,
- int slotno,
+int mmcsd_spislotinitialize(int minor, int slotno,
FAR struct spi_dev_s *spi);
#undef EXTERN