From 85d62cbdf68219a526aa4ee68c325adda8b8d67e Mon Sep 17 00:00:00 2001
From: Giovanni Di Sirio <gdisirio@gmail.com>
Date: Sun, 30 Sep 2018 17:01:52 +0000
Subject: Added WSPI-related code, updated halconf.h files.

git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@12311 110e8d01-0319-4d1e-a829-52ad28d1bb01
---
 os/hal/templates/hal_wspi_lld.h | 145 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 145 insertions(+)
 create mode 100644 os/hal/templates/hal_wspi_lld.h

(limited to 'os/hal/templates/hal_wspi_lld.h')

diff --git a/os/hal/templates/hal_wspi_lld.h b/os/hal/templates/hal_wspi_lld.h
new file mode 100644
index 000000000..9b3a1550d
--- /dev/null
+++ b/os/hal/templates/hal_wspi_lld.h
@@ -0,0 +1,145 @@
+/*
+    ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio
+
+    Licensed 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.
+*/
+
+/**
+ * @file    hal_wspi_lld.h
+ * @brief   PLATFORM WSPI subsystem low level driver header.
+ *
+ * @addtogroup WSPI
+ * @{
+ */
+
+#ifndef HAL_WSPI_LLD_H
+#define HAL_WSPI_LLD_H
+
+#if (HAL_USE_WSPI == TRUE) || defined(__DOXYGEN__)
+
+/*===========================================================================*/
+/* Driver constants.                                                         */
+/*===========================================================================*/
+
+/**
+ * @name    WSPI capabilities
+ * @{
+ */
+#define WSPI_SUPPORTS_MEMMAP                TRUE
+/** @} */
+
+/*===========================================================================*/
+/* Driver pre-compile time settings.                                         */
+/*===========================================================================*/
+
+/**
+ * @name    Configuration options
+ * @{
+ */
+/**
+ * @brief   WSPID1 driver enable switch.
+ * @details If set to @p TRUE the support for WSPID1 is included.
+ * @note    The default is @p FALSE.
+ */
+#if !defined(PLATFORM_WSPI_USE_WSPI1) || defined(__DOXYGEN__)
+#define PLATFORM_WSPI_USE_WSPI1             FALSE
+#endif
+/** @} */
+
+/*===========================================================================*/
+/* Derived constants and error checks.                                       */
+/*===========================================================================*/
+
+/*===========================================================================*/
+/* Driver data structures and types.                                         */
+/*===========================================================================*/
+
+/**
+ * @brief   Driver configuration structure.
+ */
+struct hal_wspi_config {
+  /**
+   * @brief   Operation complete callback or @p NULL.
+   */
+  wspicallback_t             end_cb;
+  /* End of the mandatory fields.*/
+};
+
+/**
+ * @brief   Structure representing an WSPI driver.
+ */
+struct hal_wspi_driver {
+  /**
+   * @brief   Driver state.
+   */
+  wspistate_t               state;
+  /**
+   * @brief   Current configuration data.
+   */
+  const WSPIConfig          *config;
+#if (WSPI_USE_WAIT == TRUE) || defined(__DOXYGEN__)
+  /**
+   * @brief   Waiting thread.
+   */
+  thread_reference_t        thread;
+#endif /* WSPI_USE_WAIT */
+#if (WSPI_USE_MUTUAL_EXCLUSION == TRUE) || defined(__DOXYGEN__)
+  /**
+   * @brief   Mutex protecting the peripheral.
+   */
+  mutex_t                   mutex;
+#endif /* WSPI_USE_MUTUAL_EXCLUSION */
+#if defined(WSPI_DRIVER_EXT_FIELDS)
+  WSPI_DRIVER_EXT_FIELDS
+#endif
+  /* End of the mandatory fields.*/
+};
+
+/*===========================================================================*/
+/* Driver macros.                                                            */
+/*===========================================================================*/
+
+/*===========================================================================*/
+/* External declarations.                                                    */
+/*===========================================================================*/
+
+#if (PLATFORM_WSPI_USE_WSPI1 == TRUE) && !defined(__DOXYGEN__)
+extern WSPIDriver WSPID1;
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+  void wspi_lld_init(void);
+  void wspi_lld_start(WSPIDriver *wspip);
+  void wspi_lld_stop(WSPIDriver *wspip);
+  void wspi_lld_command(WSPIDriver *wspip, const wspi_command_t *cmdp);
+  void wspi_lld_send(WSPIDriver *wspip, const wspi_command_t *cmdp,
+                     size_t n, const uint8_t *txbuf);
+  void wspi_lld_receive(WSPIDriver *wspip, const wspi_command_t *cmdp,
+                        size_t n, uint8_t *rxbuf);
+#if WSPI_SUPPORTS_MEMMAP == TRUE
+  void wspi_lld_map_flash(WSPIDriver *wspip,
+                          const wspi_command_t *cmdp,
+                          uint8_t **addrp);
+  void wspi_lld_unmap_flash(WSPIDriver *wspip);
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* HAL_USE_WSPI */
+
+#endif /* HAL_WSPI_LLD_H */
+
+/** @} */
-- 
cgit v1.2.3