This is an automated email from the ASF dual-hosted git repository.

acassis pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit ffa2209b4a91c46e33c2e0c25628ce487fff6cd2
Author: wangjianyu3 <[email protected]>
AuthorDate: Wed Nov 27 18:34:53 2024 +0800

    boards/xtensa/esp32s3: Add USB MSC support for esp32s3
    
    Test
    
      # Device:/dev/ram10 <----> Host:/dev/sde
    
      # Device (NuttX)
        nsh> mkrd -m 10 -s 512 640
        nsh> msconn
        nsh> ls -l /dev/ram10
         brw-rw-rw-      327680 /dev/ram10
    
      # Host (e.g /dev/sde)
        $ sudo mkfs.ext4 /dev/sdx
        $ sudo mount /dev/sdx /workspace/mnt
    
      #   Part of `df -h`
        /dev/sdx        292K   24K  248K   9% /workspace/mnt
    
      #   dmesg (/dev/sdd, /dev/sde)
        [1116587.199896] usb 1-10: new full-speed USB device number 122 using 
xhci_hcd
        [1116587.369226] usb 1-10: New USB device found, idVendor=584e, 
idProduct=5342, bcdDevice= 3.99
        [1116587.369231] usb 1-10: New USB device strings: Mfr=1, Product=2, 
SerialNumber=3
        [1116587.369232] usb 1-10: Product: Mass Storage
        [1116587.369233] usb 1-10: Manufacturer: NuttX
        [1116587.369234] usb 1-10: SerialNumber: 0101
        [1116587.385275] usb-storage 1-10:1.0: USB Mass Storage device detected
        [1116587.385526] scsi host5: usb-storage 1-10:1.0
        [1116588.423335] scsi 5:0:0:0: Direct-Access     NuttX    Mass Storage  
   0101 PQ: 0 ANSI: 2
        [1116588.423746] scsi 5:0:0:1: Direct-Access     NuttX    Mass Storage  
   0101 PQ: 0 ANSI: 2
        [1116588.424001] sd 5:0:0:0: Attached scsi generic sg3 type 0
        [1116588.424181] sd 5:0:0:1: Attached scsi generic sg4 type 0
        [1116588.424305] sd 5:0:0:0: [sdd] Unsupported sector size 256.
        [1116588.425336] sd 5:0:0:1: [sde] 640 512-byte logical blocks: (328 
kB/320 KiB)
        [1116588.638620] sd 5:0:0:1: [sde] Write Protect is off
        [1116588.638624] sd 5:0:0:1: [sde] Mode Sense: 0f 00 00 00
        [1116588.858793] sd 5:0:0:0: [sdd] 0 512-byte logical blocks: (0 B/0 B)
        [1116588.858797] sd 5:0:0:0: [sdd] 256-byte physical blocks
        [1116589.078698] sd 5:0:0:0: [sdd] Write Protect is off
        [1116589.078702] sd 5:0:0:0: [sdd] Mode Sense: 0f 00 00 00
        [1116589.298629] sd 5:0:0:0: [sdd] Write cache: enabled, read cache: 
enabled, doesn't support DPO or FUA
        [1116589.298903] sd 5:0:0:0: [sdd] Attached SCSI disk
        [1116589.518626] sd 5:0:0:1: [sde] Write cache: enabled, read cache: 
enabled, doesn't support DPO or FUA
        [1116589.972872] sd 5:0:0:1: [sde] Attached SCSI disk
        [1116644.299819] EXT4-fs (sde): mounted filesystem 
d4e18b90-b0c3-4a0f-8969-2493a41c5e02 r/w without journal. Quota mode: none.
    
    Copy from boards/arm/rp2040/common/src/rp2040_usbmsc.c
    
    Signed-off-by: wangjianyu3 <[email protected]>
---
 boards/xtensa/esp32s3/common/src/Make.defs        |  4 ++
 boards/xtensa/esp32s3/common/src/esp32s3_usbmsc.c | 62 +++++++++++++++++++++++
 2 files changed, 66 insertions(+)

diff --git a/boards/xtensa/esp32s3/common/src/Make.defs 
b/boards/xtensa/esp32s3/common/src/Make.defs
index 5f0fe48919..a59e473e49 100644
--- a/boards/xtensa/esp32s3/common/src/Make.defs
+++ b/boards/xtensa/esp32s3/common/src/Make.defs
@@ -86,6 +86,10 @@ ifeq ($(CONFIG_ESP32S3_SDMMC),y)
   CSRCS += esp32s3_board_sdmmc.c
 endif
 
+ifeq ($(CONFIG_USBMSC),y)
+  CSRCS += esp32s3_usbmsc.c
+endif
+
 DEPPATH += --dep-path src
 VPATH += :src
 CFLAGS += 
${INCDIR_PREFIX}$(TOPDIR)$(DELIM)arch$(DELIM)$(CONFIG_ARCH)$(DELIM)src$(DELIM)board$(DELIM)src
diff --git a/boards/xtensa/esp32s3/common/src/esp32s3_usbmsc.c 
b/boards/xtensa/esp32s3/common/src/esp32s3_usbmsc.c
new file mode 100644
index 0000000000..a008e9216d
--- /dev/null
+++ b/boards/xtensa/esp32s3/common/src/esp32s3_usbmsc.c
@@ -0,0 +1,62 @@
+/****************************************************************************
+ * boards/xtensa/esp32s3/common/src/esp32s3_usbmsc.c
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <stdio.h>
+#include <syslog.h>
+#include <errno.h>
+
+#include <nuttx/board.h>
+
+/****************************************************************************
+ * Pre-processor Definitions
+ ****************************************************************************/
+
+/* Configuration ************************************************************/
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: board_usbmsc_initialize
+ *
+ * Description:
+ *   Perform architecture specific initialization as needed to establish
+ *   the mass storage device that will be exported by the USB MSC device.
+ *
+ ****************************************************************************/
+
+int board_usbmsc_initialize(int port)
+{
+  /* If system/usbmsc is built as an NSH command, then SD slot should
+   * already have been initialized in board_app_initialize()
+   * In this case, there is nothing further to be done here.
+   */
+
+  return OK;
+}

Reply via email to