You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2023/07/23 11:56:48 UTC

[nuttx] 03/07: arch/nrf91: fix modem initialization

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

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

commit b3c5e05add9d0bf76a6e4021de971b6fa3c2c89d
Author: raiden00pl <ra...@railab.me>
AuthorDate: Sat Jul 22 14:17:16 2023 +0200

    arch/nrf91: fix modem initialization
---
 arch/arm/src/nrf91/nrf91_modem.c | 59 +++++++++++++++++++++++++++++-----------
 arch/arm/src/nrf91/nrf91_modem.h |  8 +++++-
 2 files changed, 50 insertions(+), 17 deletions(-)

diff --git a/arch/arm/src/nrf91/nrf91_modem.c b/arch/arm/src/nrf91/nrf91_modem.c
index 19a5dd5a52..90ebe45d81 100644
--- a/arch/arm/src/nrf91/nrf91_modem.c
+++ b/arch/arm/src/nrf91/nrf91_modem.c
@@ -47,6 +47,47 @@
 #  error NRF91 modem requires using LFXO as the LFCLK source
 #endif
 
+/****************************************************************************
+ * Private Function Prototypes
+ ****************************************************************************/
+
+static void nrf91_modem_fault_handler(struct nrf_modem_fault_info *info);
+
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+/* Modem library parameters - must be allocated in data segment */
+
+static const struct nrf_modem_init_params g_init_params =
+{
+  .shmem =
+  {
+    .ctrl =
+    {
+      .base = NRF91_SHMEM_CTRL_BASE,
+      .size = NRF91_SHMEM_CTRL_SIZE
+    },
+    .tx =
+    {
+      .base = NRF91_SHMEM_TX_BASE,
+      .size = NRF91_SHMEM_TX_SIZE
+    },
+    .rx =
+    {
+      .base = NRF91_SHMEM_RX_BASE,
+      .size = NRF91_SHMEM_RX_SIZE
+    },
+    .trace =
+    {
+      .base = NRF91_SHMEM_TRACE_BASE,
+      .size = NRF91_SHMEM_TRACE_SIZE
+    }
+  },
+  .ipc_irq_prio  = NVIC_SYSH_PRIORITY_DEFAULT,
+  .fault_handler = nrf91_modem_fault_handler
+};
+
 /****************************************************************************
  * Private Functions
  ****************************************************************************/
@@ -71,25 +112,11 @@ static void nrf91_modem_fault_handler(struct nrf_modem_fault_info *info)
 
 int nrf91_modem_initialize(void)
 {
-  struct nrf_modem_init_params init_params;
-  int                          ret = OK;
-
-  /* Modem parameters */
-
-  init_params.shmem.ctrl.base  = NRF91_SHMEM_CTRL_BASE;
-  init_params.shmem.ctrl.size  = NRF91_SHMEM_CTRL_SIZE;
-  init_params.shmem.tx.base    = NRF91_SHMEM_TX_BASE;
-  init_params.shmem.tx.size    = NRF91_SHMEM_TX_SIZE;
-  init_params.shmem.rx.base    = NRF91_SHMEM_RX_BASE;
-  init_params.shmem.rx.size    = NRF91_SHMEM_RX_SIZE;
-  init_params.shmem.trace.base = NRF91_SHMEM_TRACE_BASE;
-  init_params.shmem.trace.size = NRF91_SHMEM_TRACE_SIZE;
-  init_params.ipc_irq_prio     = NVIC_SYSH_PRIORITY_DEFAULT;
-  init_params.fault_handler    = nrf91_modem_fault_handler;
+  int ret = OK;
 
   /* Initialize modem */
 
-  ret = nrf_modem_init(&init_params);
+  ret = nrf_modem_init(&g_init_params);
   if (ret < 0)
     {
       nerr("nrf_modem_init failed %d\n", ret);
diff --git a/arch/arm/src/nrf91/nrf91_modem.h b/arch/arm/src/nrf91/nrf91_modem.h
index 9dca967bbe..a4dfeda08d 100644
--- a/arch/arm/src/nrf91/nrf91_modem.h
+++ b/arch/arm/src/nrf91/nrf91_modem.h
@@ -24,6 +24,8 @@
 
 #include <nuttx/config.h>
 
+#include <nuttx/mm/mm.h>
+
 /****************************************************************************
  * Pre-processor Definitions
  ****************************************************************************/
@@ -32,12 +34,16 @@
 
 #define NRF91_SHMEM_CTRL_SIZE  (0x4e8)
 
+/* REVISIT: heap overhead */
+
+#define HEAP_OVERHEAD          (400)
+
 /* Shared memory configuration */
 
 #define NRF91_SHMEM_START_ADDR (CONFIG_RAM_START)
 #define NRF91_SHMEM_CTRL_BASE  (NRF91_SHMEM_START_ADDR)
 #define NRF91_SHMEM_TX_BASE    (NRF91_SHMEM_CTRL_BASE+NRF91_SHMEM_CTRL_SIZE)
-#define NRF91_SHMEM_TX_SIZE    (CONFIG_NRF91_MODEM_SHMEM_TX_SIZE)
+#define NRF91_SHMEM_TX_SIZE    (CONFIG_NRF91_MODEM_SHMEM_TX_SIZE-HEAP_OVERHEAD)
 #define NRF91_SHMEM_RX_BASE    (NRF91_SHMEM_TX_BASE+NRF91_SHMEM_TX_SIZE)
 #define NRF91_SHMEM_RX_SIZE    (CONFIG_NRF91_MODEM_SHMEM_RX_SIZE)
 #define NRF91_SHMEM_TRACE_BASE (NRF91_SHMEM_RX_BASE+NRF91_SHMEM_RX_SIZE)