You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by GitBox <gi...@apache.org> on 2021/03/05 15:36:24 UTC

[GitHub] [incubator-nuttx] yunkya2 opened a new pull request #2986: arm/rp2040: Add SPI driver support

yunkya2 opened a new pull request #2986:
URL: https://github.com/apache/incubator-nuttx/pull/2986


   ## Summary
   Add SPI driver for Raspberry Pi Pico.
   (DMA transfer is not supported yet.)
   
   ## Impact
   rp2040 only
   
   ## Testing
   New config `raspberrypi-pico:spisd` is added to test SD card access with SPI.
   Read/Write access OK.


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] acassis commented on a change in pull request #2986: arm/rp2040: Add SPI driver support

Posted by GitBox <gi...@apache.org>.
acassis commented on a change in pull request #2986:
URL: https://github.com/apache/incubator-nuttx/pull/2986#discussion_r588541697



##########
File path: arch/arm/src/rp2040/rp2040_spi.h
##########
@@ -0,0 +1,224 @@
+/****************************************************************************
+ * arch/arm/src/rp2040/rp2040_spi.h
+ *
+ * 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.
+ *
+ ****************************************************************************/
+
+#ifndef __ARCH_ARM_SRC_RP2040_RP2040_SPI_H
+#define __ARCH_ARM_SRC_RP2040_RP2040_SPI_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+#include <nuttx/spi/spi.h>
+#include "hardware/rp2040_spi.h"
+#ifdef CONFIG_RP2040_DMAC
+#include "rp2040_dmac.h"
+#endif
+
+#if defined(CONFIG_RP2040_SPI0) || defined(CONFIG_RP2040_SPI1)
+
+/****************************************************************************
+ * Pre-processor Definitions
+ ****************************************************************************/
+
+/* This header file defines interfaces to common SPI logic.
+ * To use this common SPI logic on your board:
+ *
+ * 1. Provide logic in rp2040_boardinitialize() to configure SPI chip select
+ *    pins.
+ * 2. Provide rp2040_spi0/1select() and rp2040_spi0/1status() functions in
+ *    your board-specific logic.  These functions will perform chip selection
+ *    and status operations using GPIOs in the way your board is configured.
+ * 3. If CONFIG_SPI_CMDDATA is defined in the NuttX configuration, provide
+ *    rp2040_spi0/1cmddata() functions in your board-specific logic.  These
+ *    functions will perform cmd/data selection operations using GPIOs in the
+ *    way your board is configured.
+ * 4. Your low level board initialization logic should call
+ *    rp2040_spibus_initialize.
+ * 5. The handle returned by rp2040_spibus_initialize() may then be used to
+ *    bind the SPI driver to higher level logic
+ *    (e.g., calling  mmcsd_spislotinitialize(), for example, will bind the
+ *    SPI driver to the SPI MMC/SD driver).
+ */
+
+#define RP2040_SPI_DMAC_CHTYPE_TX (0)
+#define RP2040_SPI_DMAC_CHTYPE_RX (1)
+
+/****************************************************************************
+ * Public Types
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Data
+ ****************************************************************************/
+
+#ifndef __ASSEMBLY__
+
+#undef EXTERN
+#if defined(__cplusplus)
+#define EXTERN extern "C"
+extern "C"
+{
+#else
+#define EXTERN extern
+#endif
+
+/****************************************************************************
+ * Public Functions Prototypes
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: rp2040_spibus_initialize
+ *
+ * Description:
+ *   Initialize the selected SPI port
+ *
+ * Input Parameter:
+ *   port - Port number
+ *
+ * Returned Value:
+ *   Valid SPI device structure reference on success; a NULL on failure
+ *
+ ****************************************************************************/
+
+FAR struct spi_dev_s *rp2040_spibus_initialize(int port);
+
+/****************************************************************************
+ * Name: rp2040_spi_dmaconfig
+ *
+ * Description:
+ *   Enable DMA configuration.
+ *
+ * Input Parameter:
+ *   port   - Port number
+ *   chtype - Channel type(TX or RX)
+ *   handle - DMA channel handle
+ *   conf   - DMA configuration
+ *
+ * Returned Value:
+ *   None
+ *
+ ****************************************************************************/
+
+#ifdef CONFIG_RP2040_DMAC
+void rp2040_spi_dmaconfig(int port, int chtype, DMA_HANDLE handle,
+                         FAR dma_config_t *conf);
+#endif
+
+/****************************************************************************
+ * Name:  rp2040_spiXselect, rp2040_spiXstatus, and rp2040_spiXcmddata
+ *
+ * Description:
+ *   These functions must be provided in your board-specific logic.
+ *   The rp2040_spi0/1select functions will perform chip selection and the
+ *   rp2040_spi0/1status will perform status operations using GPIOs in
+ *   the way your board is configured.
+ *
+ *   If CONFIG_SPI_CMDDATA is defined in the NuttX configuration, then
+ *   rp2040_spi0/1cmddata must also be provided.
+ *   This functions performs cmd/data selection operations using GPIOs in
+ *   the way your board is configured.
+ *
+ ****************************************************************************/
+
+#ifdef CONFIG_RP2040_SPI0
+void  rp2040_spi0select(FAR struct spi_dev_s *dev,
+                       uint32_t devid,
+                       bool selected);
+uint8_t rp2040_spi0status(FAR struct spi_dev_s *dev,
+                         uint32_t devid);
+#ifdef CONFIG_SPI_CMDDATA
+int rp2040_spi0cmddata(FAR struct spi_dev_s *dev,
+                      uint32_t devid,
+                      bool cmd);

Review comment:
       uint32_t and bool should start aligned below the FAR

##########
File path: arch/arm/src/rp2040/rp2040_spi.h
##########
@@ -0,0 +1,224 @@
+/****************************************************************************
+ * arch/arm/src/rp2040/rp2040_spi.h
+ *
+ * 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.
+ *
+ ****************************************************************************/
+
+#ifndef __ARCH_ARM_SRC_RP2040_RP2040_SPI_H
+#define __ARCH_ARM_SRC_RP2040_RP2040_SPI_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+#include <nuttx/spi/spi.h>
+#include "hardware/rp2040_spi.h"
+#ifdef CONFIG_RP2040_DMAC
+#include "rp2040_dmac.h"
+#endif
+
+#if defined(CONFIG_RP2040_SPI0) || defined(CONFIG_RP2040_SPI1)
+
+/****************************************************************************
+ * Pre-processor Definitions
+ ****************************************************************************/
+
+/* This header file defines interfaces to common SPI logic.
+ * To use this common SPI logic on your board:
+ *
+ * 1. Provide logic in rp2040_boardinitialize() to configure SPI chip select
+ *    pins.
+ * 2. Provide rp2040_spi0/1select() and rp2040_spi0/1status() functions in
+ *    your board-specific logic.  These functions will perform chip selection
+ *    and status operations using GPIOs in the way your board is configured.
+ * 3. If CONFIG_SPI_CMDDATA is defined in the NuttX configuration, provide
+ *    rp2040_spi0/1cmddata() functions in your board-specific logic.  These
+ *    functions will perform cmd/data selection operations using GPIOs in the
+ *    way your board is configured.
+ * 4. Your low level board initialization logic should call
+ *    rp2040_spibus_initialize.
+ * 5. The handle returned by rp2040_spibus_initialize() may then be used to
+ *    bind the SPI driver to higher level logic
+ *    (e.g., calling  mmcsd_spislotinitialize(), for example, will bind the
+ *    SPI driver to the SPI MMC/SD driver).
+ */
+
+#define RP2040_SPI_DMAC_CHTYPE_TX (0)
+#define RP2040_SPI_DMAC_CHTYPE_RX (1)
+
+/****************************************************************************
+ * Public Types
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Data
+ ****************************************************************************/
+
+#ifndef __ASSEMBLY__
+
+#undef EXTERN
+#if defined(__cplusplus)
+#define EXTERN extern "C"
+extern "C"
+{
+#else
+#define EXTERN extern
+#endif
+
+/****************************************************************************
+ * Public Functions Prototypes
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: rp2040_spibus_initialize
+ *
+ * Description:
+ *   Initialize the selected SPI port
+ *
+ * Input Parameter:
+ *   port - Port number
+ *
+ * Returned Value:
+ *   Valid SPI device structure reference on success; a NULL on failure
+ *
+ ****************************************************************************/
+
+FAR struct spi_dev_s *rp2040_spibus_initialize(int port);
+
+/****************************************************************************
+ * Name: rp2040_spi_dmaconfig
+ *
+ * Description:
+ *   Enable DMA configuration.
+ *
+ * Input Parameter:
+ *   port   - Port number
+ *   chtype - Channel type(TX or RX)
+ *   handle - DMA channel handle
+ *   conf   - DMA configuration
+ *
+ * Returned Value:
+ *   None
+ *
+ ****************************************************************************/
+
+#ifdef CONFIG_RP2040_DMAC
+void rp2040_spi_dmaconfig(int port, int chtype, DMA_HANDLE handle,
+                         FAR dma_config_t *conf);
+#endif
+
+/****************************************************************************
+ * Name:  rp2040_spiXselect, rp2040_spiXstatus, and rp2040_spiXcmddata
+ *
+ * Description:
+ *   These functions must be provided in your board-specific logic.
+ *   The rp2040_spi0/1select functions will perform chip selection and the
+ *   rp2040_spi0/1status will perform status operations using GPIOs in
+ *   the way your board is configured.
+ *
+ *   If CONFIG_SPI_CMDDATA is defined in the NuttX configuration, then
+ *   rp2040_spi0/1cmddata must also be provided.
+ *   This functions performs cmd/data selection operations using GPIOs in
+ *   the way your board is configured.
+ *
+ ****************************************************************************/
+
+#ifdef CONFIG_RP2040_SPI0
+void  rp2040_spi0select(FAR struct spi_dev_s *dev,
+                       uint32_t devid,
+                       bool selected);
+uint8_t rp2040_spi0status(FAR struct spi_dev_s *dev,
+                         uint32_t devid);
+#ifdef CONFIG_SPI_CMDDATA
+int rp2040_spi0cmddata(FAR struct spi_dev_s *dev,
+                      uint32_t devid,
+                      bool cmd);
+#endif
+#endif
+
+#ifdef CONFIG_RP2040_SPI1
+void  rp2040_spi1select(FAR struct spi_dev_s *dev,
+                       uint32_t devid,
+                       bool selected);
+uint8_t rp2040_spi1status(FAR struct spi_dev_s *dev,
+                         uint32_t devid);
+#ifdef CONFIG_SPI_CMDDATA
+int rp2040_spi1cmddata(FAR struct spi_dev_s *dev,
+                      uint32_t devid,
+                      bool cmd);

Review comment:
       uint32_t and bool should start aligned below the FAR

##########
File path: arch/arm/src/rp2040/rp2040_spi.h
##########
@@ -0,0 +1,224 @@
+/****************************************************************************
+ * arch/arm/src/rp2040/rp2040_spi.h
+ *
+ * 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.
+ *
+ ****************************************************************************/
+
+#ifndef __ARCH_ARM_SRC_RP2040_RP2040_SPI_H
+#define __ARCH_ARM_SRC_RP2040_RP2040_SPI_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+#include <nuttx/spi/spi.h>
+#include "hardware/rp2040_spi.h"
+#ifdef CONFIG_RP2040_DMAC
+#include "rp2040_dmac.h"
+#endif
+
+#if defined(CONFIG_RP2040_SPI0) || defined(CONFIG_RP2040_SPI1)
+
+/****************************************************************************
+ * Pre-processor Definitions
+ ****************************************************************************/
+
+/* This header file defines interfaces to common SPI logic.
+ * To use this common SPI logic on your board:
+ *
+ * 1. Provide logic in rp2040_boardinitialize() to configure SPI chip select
+ *    pins.
+ * 2. Provide rp2040_spi0/1select() and rp2040_spi0/1status() functions in
+ *    your board-specific logic.  These functions will perform chip selection
+ *    and status operations using GPIOs in the way your board is configured.
+ * 3. If CONFIG_SPI_CMDDATA is defined in the NuttX configuration, provide
+ *    rp2040_spi0/1cmddata() functions in your board-specific logic.  These
+ *    functions will perform cmd/data selection operations using GPIOs in the
+ *    way your board is configured.
+ * 4. Your low level board initialization logic should call
+ *    rp2040_spibus_initialize.
+ * 5. The handle returned by rp2040_spibus_initialize() may then be used to
+ *    bind the SPI driver to higher level logic
+ *    (e.g., calling  mmcsd_spislotinitialize(), for example, will bind the
+ *    SPI driver to the SPI MMC/SD driver).
+ */
+
+#define RP2040_SPI_DMAC_CHTYPE_TX (0)
+#define RP2040_SPI_DMAC_CHTYPE_RX (1)
+
+/****************************************************************************
+ * Public Types
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Data
+ ****************************************************************************/
+
+#ifndef __ASSEMBLY__
+
+#undef EXTERN
+#if defined(__cplusplus)
+#define EXTERN extern "C"
+extern "C"
+{
+#else
+#define EXTERN extern
+#endif
+
+/****************************************************************************
+ * Public Functions Prototypes
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: rp2040_spibus_initialize
+ *
+ * Description:
+ *   Initialize the selected SPI port
+ *
+ * Input Parameter:
+ *   port - Port number
+ *
+ * Returned Value:
+ *   Valid SPI device structure reference on success; a NULL on failure
+ *
+ ****************************************************************************/
+
+FAR struct spi_dev_s *rp2040_spibus_initialize(int port);
+
+/****************************************************************************
+ * Name: rp2040_spi_dmaconfig
+ *
+ * Description:
+ *   Enable DMA configuration.
+ *
+ * Input Parameter:
+ *   port   - Port number
+ *   chtype - Channel type(TX or RX)
+ *   handle - DMA channel handle
+ *   conf   - DMA configuration
+ *
+ * Returned Value:
+ *   None
+ *
+ ****************************************************************************/
+
+#ifdef CONFIG_RP2040_DMAC
+void rp2040_spi_dmaconfig(int port, int chtype, DMA_HANDLE handle,
+                         FAR dma_config_t *conf);
+#endif
+
+/****************************************************************************
+ * Name:  rp2040_spiXselect, rp2040_spiXstatus, and rp2040_spiXcmddata
+ *
+ * Description:
+ *   These functions must be provided in your board-specific logic.
+ *   The rp2040_spi0/1select functions will perform chip selection and the
+ *   rp2040_spi0/1status will perform status operations using GPIOs in
+ *   the way your board is configured.
+ *
+ *   If CONFIG_SPI_CMDDATA is defined in the NuttX configuration, then
+ *   rp2040_spi0/1cmddata must also be provided.
+ *   This functions performs cmd/data selection operations using GPIOs in
+ *   the way your board is configured.
+ *
+ ****************************************************************************/
+
+#ifdef CONFIG_RP2040_SPI0
+void  rp2040_spi0select(FAR struct spi_dev_s *dev,
+                       uint32_t devid,
+                       bool selected);

Review comment:
       uint32_t and bool should start aligned below the FAR




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] acassis commented on a change in pull request #2986: arm/rp2040: Add SPI driver support

Posted by GitBox <gi...@apache.org>.
acassis commented on a change in pull request #2986:
URL: https://github.com/apache/incubator-nuttx/pull/2986#discussion_r588534325



##########
File path: arch/arm/src/rp2040/rp2040_gpio.h
##########
@@ -50,12 +66,44 @@ extern "C"
 #define EXTERN extern
 #endif
 
+/****************************************************************************
+ * Inline Functions
+ ****************************************************************************/
+
+static inline void rp2040_gpio_put(uint32_t gpio, int set)
+{
+  uint32_t value = 1 << gpio;
+
+  if (set)

Review comment:
       you missed
   {
   }
   It is required, like in the MISRA C

##########
File path: arch/arm/src/rp2040/rp2040_gpio.h
##########
@@ -50,12 +66,44 @@ extern "C"
 #define EXTERN extern
 #endif
 
+/****************************************************************************
+ * Inline Functions
+ ****************************************************************************/
+
+static inline void rp2040_gpio_put(uint32_t gpio, int set)
+{
+  uint32_t value = 1 << gpio;
+
+  if (set)
+    putreg32(value, RP2040_SIO_GPIO_OUT_SET);
+  else
+    putreg32(value, RP2040_SIO_GPIO_OUT_CLR);
+}
+
+static inline bool rp2040_gpio_get(uint32_t gpio)
+{
+  uint32_t value = 1 << gpio;
+
+  return (getreg32(RP2040_SIO_GPIO_IN) & value) != 0;
+}
+
+static inline void rp2040_gpio_setdir(uint32_t gpio, int out)
+{
+  uint32_t value = 1 << gpio;
+
+  if (out)
+    putreg32(value, RP2040_SIO_GPIO_OE_SET);
+  else
+    putreg32(value, RP2040_SIO_GPIO_OE_CLR);
+}

Review comment:
       Ditto




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] masayuki2009 commented on a change in pull request #2986: arm/rp2040: Add SPI driver support

Posted by GitBox <gi...@apache.org>.
masayuki2009 commented on a change in pull request #2986:
URL: https://github.com/apache/incubator-nuttx/pull/2986#discussion_r589163552



##########
File path: boards/arm/rp2040/common/src/rp2040_spisd.c
##########
@@ -0,0 +1,134 @@
+/****************************************************************************
+ * boards/arm/rp2040/common/src/rp2040_spisd.c
+ *
+ * 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 <debug.h>
+#include <nuttx/mmcsd.h>
+#include <nuttx/board.h>
+#include <nuttx/fs/fs.h>
+
+#include "rp2040_spi.h"
+#include "rp2040_gpio.h"
+
+/****************************************************************************
+ * Pre-processor Definitions
+ ****************************************************************************/
+
+/* Configuration ************************************************************/
+
+#ifndef CONFIG_RP2040_SPISD_SLOT_NO
+#  define CONFIG_RP2040_SPISD_SLOT_NO 0
+#endif
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: board_spisd_initialize
+ *
+ * Description:
+ *   Initialize the SPI-based SD card.
+ *
+ ****************************************************************************/
+
+int board_spisd_initialize(int minor, int bus)
+{
+  int ret;
+  FAR struct spi_dev_s *spi;
+
+  /* Initialize spi deivce */
+
+  spi = rp2040_spibus_initialize(bus);
+  if (!spi)
+    {
+      ferr("ERROR: Failed to initialize spi%d.\n", bus);
+      return -ENODEV;
+    }
+
+  /* Pull up RX */
+
+#ifdef CONFIG_RP2040_SPI0
+  if (bus == 0)
+    {
+      rp2040_gpio_set_pulls(CONFIG_RP2040_SPI0_GPIO, true, false);
+    }
+#endif
+
+#ifdef CONFIG_RP2040_SPI1
+  if (bus == 1)
+    {
+      rp2040_gpio_set_pulls(CONFIG_RP2040_SPI1_GPIO, true, false);
+    }
+#endif
+
+  /* Get the SPI driver instance for the SD chip select */
+
+  finfo("Initializing SPI for the MMC/SD slot\n");
+
+  ret = mmcsd_spislotinitialize(minor, CONFIG_RP2040_SPISD_SLOT_NO, spi);
+  if (ret < 0)
+    {
+      ferr("ERROR: Failed to bind SPI device to MMC/SD slot %d: %d\n",
+           CONFIG_RP2040_SPISD_SLOT_NO, ret);
+      return ret;
+    }
+
+  /* Mount filesystem */
+
+  ret = nx_mount("/dev/mmcsd0", "/mnt/sd0", "vfat", 0, NULL);
+  if (ret < 0)
+    {
+      _err("ERROR: Failed to mount the SDCARD. %d\n", ret);
+    }
+
+  return OK;
+}
+
+/****************************************************************************
+ * Name: board_spisd_status
+ *
+ * Description:
+ *   Get the status whether SD Card is present or not.
+ *   This function is called only from cxd56_spi.c.

Review comment:
       cxd56_spi.c -> rp2040_spi.c ?
   




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [incubator-nuttx] masayuki2009 merged pull request #2986: arm/rp2040: Add SPI driver support

Posted by GitBox <gi...@apache.org>.
masayuki2009 merged pull request #2986:
URL: https://github.com/apache/incubator-nuttx/pull/2986


   


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org