<p>laforge has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmocom-bb/+/20886">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">osmocon: More decoding of tpu_debug (on compal/rffe_dualband)<br><br>Let's give a more human-readable decode of the TPU instructions,<br>naming the TSPACT pin names as well as the device_id/strobe.<br><br>Change-Id: Iac1ac74ac3e41cff9d3d347a167b43af58cc6e59<br>---<br>M src/host/osmocon/tpu_debug.c<br>1 file changed, 61 insertions(+), 1 deletion(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/86/20886/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/host/osmocon/tpu_debug.c b/src/host/osmocon/tpu_debug.c</span><br><span>index c9dac90..9160b01 100644</span><br><span>--- a/src/host/osmocon/tpu_debug.c</span><br><span>+++ b/src/host/osmocon/tpu_debug.c</span><br><span>@@ -57,6 +57,60 @@</span><br><span> </span><br><span> static uint8_t tpu_reg_cache[0x1f];</span><br><span> static uint16_t tpu_qbit;</span><br><span style="color: hsl(120, 100%, 40%);">+static uint16_t tspact_cache;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static const char *tspact_name(unsigned int n)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+        static char buf[32];</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        /* FIXME: This is rffe_dualband.c specific */</span><br><span style="color: hsl(120, 100%, 40%);">+ switch (n) {</span><br><span style="color: hsl(120, 100%, 40%);">+  case 0:</span><br><span style="color: hsl(120, 100%, 40%);">+               return "RITA_RESET";</span><br><span style="color: hsl(120, 100%, 40%);">+        case 1:</span><br><span style="color: hsl(120, 100%, 40%);">+               return "PA_ENABLE";</span><br><span style="color: hsl(120, 100%, 40%);">+ case 6:</span><br><span style="color: hsl(120, 100%, 40%);">+               return "TRENA";</span><br><span style="color: hsl(120, 100%, 40%);">+     case 8:</span><br><span style="color: hsl(120, 100%, 40%);">+               return "GSM_TXEN";</span><br><span style="color: hsl(120, 100%, 40%);">+  default:</span><br><span style="color: hsl(120, 100%, 40%);">+              snprintf(buf, sizeof(buf), "TSPACT%u", n);</span><br><span style="color: hsl(120, 100%, 40%);">+          return buf;</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%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static const char *tps_strobe_name(unsigned int n)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ static char buf[32];</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        switch (n) {</span><br><span style="color: hsl(120, 100%, 40%);">+  case 0:</span><br><span style="color: hsl(120, 100%, 40%);">+               return "TWL3025";</span><br><span style="color: hsl(120, 100%, 40%);">+   case 2:</span><br><span style="color: hsl(120, 100%, 40%);">+               return "TRF6151";</span><br><span style="color: hsl(120, 100%, 40%);">+   default:</span><br><span style="color: hsl(120, 100%, 40%);">+              snprintf(buf, sizeof(buf), "STROBE%u", n);</span><br><span style="color: hsl(120, 100%, 40%);">+          return buf;</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%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static void handle_tspact(uint16_t mask, uint16_t bits)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+    uint16_t newval = (tspact_cache & mask) | bits;</span><br><span style="color: hsl(120, 100%, 40%);">+   unsigned int i;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     if (newval == tspact_cache)</span><br><span style="color: hsl(120, 100%, 40%);">+           return;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     for (i = 0; i < 16; i++) {</span><br><span style="color: hsl(120, 100%, 40%);">+         uint16_t shifted = (1 << i);</span><br><span style="color: hsl(120, 100%, 40%);">+            if ((tspact_cache & shifted) != (newval & shifted)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                 printf("%s:%d->%d ", tspact_name(i),</span><br><span style="color: hsl(120, 100%, 40%);">+                             tspact_cache & shifted ? 1 : 0, newval & shifted ? 1 : 0);</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%);">+     tspact_cache = newval;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span> </span><br><span> static void tpu_show_instr(uint16_t tpu)</span><br><span> {</span><br><span>@@ -93,7 +147,7 @@</span><br><span>          switch (addr) {</span><br><span>              case 0:</span><br><span>                      bitlen = (data & 0x1f) + 1;</span><br><span style="color: hsl(0, 100%, 40%);">-                 printf("DEV_IDX=%u, BITLEN=%u ", data >> 5, bitlen);</span><br><span style="color: hsl(120, 100%, 40%);">+                  printf("DEV_IDX=%s, BITLEN=%u ", tps_strobe_name(data >> 5), bitlen);</span><br><span>                        if (bitlen <= 8) {</span><br><span>                                tsp_data = tpu_reg_cache[4];</span><br><span>                                 printf(" TSP_DATA=0x%02x ", tsp_data);</span><br><span>@@ -120,6 +174,12 @@</span><br><span>                      if (data & 0x02)</span><br><span>                                 printf("WRITE ");</span><br><span>                  break;</span><br><span style="color: hsl(120, 100%, 40%);">+                case 6:</span><br><span style="color: hsl(120, 100%, 40%);">+                       handle_tspact(0xff00, data);</span><br><span style="color: hsl(120, 100%, 40%);">+                  break;</span><br><span style="color: hsl(120, 100%, 40%);">+                case 7:</span><br><span style="color: hsl(120, 100%, 40%);">+                       handle_tspact(0x00ff, data << 8);</span><br><span style="color: hsl(120, 100%, 40%);">+                       break;</span><br><span>               }</span><br><span>    }</span><br><span>    printf("\n");</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmocom-bb/+/20886">change 20886</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/osmocom-bb/+/20886"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmocom-bb </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Iac1ac74ac3e41cff9d3d347a167b43af58cc6e59 </div>
<div style="display:none"> Gerrit-Change-Number: 20886 </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-MessageType: newchange </div>