<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/simtrace2/+/24533">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">firmware: octsimtest: Make slot mux configurable via USB<br><br>Change-Id: I4cdb250d2e1dbc5b8b0169f8b7c21e288b492e1d<br>---<br>M firmware/libboard/octsimtest/include/board.h<br>M firmware/libboard/octsimtest/include/mux.h<br>M firmware/libboard/octsimtest/source/mux.c<br>M firmware/libcommon/include/simtrace_prot.h<br>M firmware/libcommon/source/card_emu.c<br>5 files changed, 36 insertions(+), 2 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/firmware/libboard/octsimtest/include/board.h b/firmware/libboard/octsimtest/include/board.h</span><br><span>index 171b2c1..ad21a1f 100644</span><br><span>--- a/firmware/libboard/octsimtest/include/board.h</span><br><span>+++ b/firmware/libboard/octsimtest/include/board.h</span><br><span>@@ -109,6 +109,8 @@</span><br><span> #define VCC_UV_THRESH_1V8      (1500000*47)/(47+30)</span><br><span> #define VCC_UV_THRESH_3V        (2500000*47)/(47+30)</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#define HAVE_SLOT_MUX</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /** Supported modes */</span><br><span> /* SIMtrace board supports sniffer mode */</span><br><span> //#define HAVE_SNIFFER</span><br><span>diff --git a/firmware/libboard/octsimtest/include/mux.h b/firmware/libboard/octsimtest/include/mux.h</span><br><span>index ba7ae9f..3181478 100644</span><br><span>--- a/firmware/libboard/octsimtest/include/mux.h</span><br><span>+++ b/firmware/libboard/octsimtest/include/mux.h</span><br><span>@@ -1,7 +1,8 @@</span><br><span> #pragma once</span><br><span> </span><br><span> void mux_init(void);</span><br><span style="color: hsl(0, 100%, 40%);">-void mux_set_slot(uint8_t s);</span><br><span style="color: hsl(120, 100%, 40%);">+int mux_set_slot(uint8_t s);</span><br><span style="color: hsl(120, 100%, 40%);">+int mux_get_slot(void);</span><br><span> void mux_set_freq(uint8_t s);</span><br><span> </span><br><span> /* this reflects the wiring between U5 and U4 */</span><br><span>diff --git a/firmware/libboard/octsimtest/source/mux.c b/firmware/libboard/octsimtest/source/mux.c</span><br><span>index 8d9f625..54c6cb6 100644</span><br><span>--- a/firmware/libboard/octsimtest/source/mux.c</span><br><span>+++ b/firmware/libboard/octsimtest/source/mux.c</span><br><span>@@ -20,6 +20,7 @@</span><br><span> #include "board.h"</span><br><span> #include "mux.h"</span><br><span> #include <stdbool.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <errno.h></span><br><span> </span><br><span> /* 3-bit S0..S2 signal for slot selection */</span><br><span> static const Pin pin_in_sel[3] = {</span><br><span>@@ -38,6 +39,8 @@</span><br><span> /* low-active output enable for all muxes */</span><br><span> static const Pin pin_oe = { PIO_PA19, PIOA, ID_PIOA, PIO_OUTPUT_1, PIO_DEFAULT };</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+static uint8_t g_mux_slot = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* initialize the external 1:8 multiplexers */</span><br><span> void mux_init(void)</span><br><span> {</span><br><span>@@ -49,10 +52,13 @@</span><br><span> }</span><br><span> </span><br><span> /* set the slot selection mux */</span><br><span style="color: hsl(0, 100%, 40%);">-void mux_set_slot(uint8_t s)</span><br><span style="color: hsl(120, 100%, 40%);">+int mux_set_slot(uint8_t s)</span><br><span> {</span><br><span>       printf("%s(%u)\r\n", __func__, s);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+      if (s > 7)</span><br><span style="color: hsl(120, 100%, 40%);">+         return -EINVAL;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>    /* !OE = H: disconnect input and output of muxes */</span><br><span>  PIO_Set(&pin_oe);</span><br><span> </span><br><span>@@ -71,6 +77,14 @@</span><br><span> </span><br><span>   /* !OE = L: (re-)enable the output of muxes */</span><br><span>       PIO_Clear(&pin_oe);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     g_mux_slot = s;</span><br><span style="color: hsl(120, 100%, 40%);">+       return s;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+int mux_get_slot(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+     return g_mux_slot;</span><br><span> }</span><br><span> </span><br><span> /* set the frequency divider mux */</span><br><span>diff --git a/firmware/libcommon/include/simtrace_prot.h b/firmware/libcommon/include/simtrace_prot.h</span><br><span>index e550616..5eb4f59 100644</span><br><span>--- a/firmware/libcommon/include/simtrace_prot.h</span><br><span>+++ b/firmware/libcommon/include/simtrace_prot.h</span><br><span>@@ -269,6 +269,8 @@</span><br><span> struct cardemu_usb_msg_config {</span><br><span>     /* bit-mask of CEMU_FEAT_F flags */</span><br><span>  uint32_t features;</span><br><span style="color: hsl(120, 100%, 40%);">+    /* the selected slot number (if an external mux is present) */</span><br><span style="color: hsl(120, 100%, 40%);">+        uint8_t slot_mux_nr;</span><br><span> } __attribute__ ((packed));</span><br><span> </span><br><span> /***********************************************************************</span><br><span>diff --git a/firmware/libcommon/source/card_emu.c b/firmware/libcommon/source/card_emu.c</span><br><span>index bcd5fd6..4b84039 100644</span><br><span>--- a/firmware/libcommon/source/card_emu.c</span><br><span>+++ b/firmware/libcommon/source/card_emu.c</span><br><span>@@ -33,6 +33,9 @@</span><br><span> #include <osmocom/core/linuxlist.h></span><br><span> #include <osmocom/core/msgb.h></span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#ifdef HAVE_SLOT_MUX</span><br><span style="color: hsl(120, 100%, 40%);">+#include "mux.h"</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span> </span><br><span> #define NUM_SLOTS                2</span><br><span> </span><br><span>@@ -1079,6 +1082,12 @@</span><br><span> </span><br><span>   cfg = (struct cardemu_usb_msg_config *) msgb_put(msg, sizeof(*cfg));</span><br><span>         cfg->features = ch->features;</span><br><span style="color: hsl(120, 100%, 40%);">+#ifdef HAVE_SLOT_MUX</span><br><span style="color: hsl(120, 100%, 40%);">+     cfg->slot_mux_nr = mux_get_slot();</span><br><span style="color: hsl(120, 100%, 40%);">+#else</span><br><span style="color: hsl(120, 100%, 40%);">+  cfg->slot_mux_nr = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> </span><br><span>       usb_buf_upd_len_and_submit(msg);</span><br><span> }</span><br><span>@@ -1241,6 +1250,12 @@</span><br><span>       if (scfg_len >= sizeof(uint32_t))</span><br><span>                 ch->features = (scfg->features & SUPPORTED_FEATURES);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#ifdef HAVE_SLOT_MUX</span><br><span style="color: hsl(120, 100%, 40%);">+     if (scfg_len >= sizeof(uint32_t)+sizeof(uint8_t)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                mux_set_slot(scfg->slot_mux_nr);</span><br><span style="color: hsl(120, 100%, 40%);">+   }</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  /* send back a report of our current configuration */</span><br><span>        card_emu_report_config(ch);</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/simtrace2/+/24533">change 24533</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/simtrace2/+/24533"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: simtrace2 </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I4cdb250d2e1dbc5b8b0169f8b7c21e288b492e1d </div>
<div style="display:none"> Gerrit-Change-Number: 24533 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>