<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ccid-firmware/+/16292">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;">cuart cleanup<br><br>Change-Id: I15ea4d68263b62fca3da76795969358a07e7f1a6<br>---<br>M sysmoOCTSIM/cuart_driver_asf4_usart_async.c<br>1 file changed, 15 insertions(+), 15 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/sysmoOCTSIM/cuart_driver_asf4_usart_async.c b/sysmoOCTSIM/cuart_driver_asf4_usart_async.c</span><br><span>index f12ed73..c7d29eb 100644</span><br><span>--- a/sysmoOCTSIM/cuart_driver_asf4_usart_async.c</span><br><span>+++ b/sysmoOCTSIM/cuart_driver_asf4_usart_async.c</span><br><span>@@ -161,8 +161,10 @@</span><br><span>  *  @param[in] baudrate baud rate in bps to set</span><br><span>  *  @return if the baud rate has been set, else a parameter is out of range</span><br><span>  */</span><br><span style="color: hsl(0, 100%, 40%);">-static bool slot_set_baudrate(uint8_t slotnr, uint32_t baudrate)</span><br><span style="color: hsl(120, 100%, 40%);">+static bool slot_set_baudrate(struct card_uart *cuart, uint32_t baudrate)</span><br><span> {</span><br><span style="color: hsl(120, 100%, 40%);">+        uint8_t slotnr = cuart->u.asf4.slot_nr;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>         ASSERT(slotnr < ARRAY_SIZE(SIM_peripheral_descriptors));</span><br><span> </span><br><span>      // calculate the error corresponding to the clock sources</span><br><span>@@ -206,6 +208,8 @@</span><br><span> </span><br><span>  // update cached values</span><br><span>      cuart->u.asf4.current_baudrate = baudrate;</span><br><span style="color: hsl(120, 100%, 40%);">+ cuart->u.asf4.extrawait_after_rx = 1./baudrate * 1000 * 1000;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>   printf("(%u) switching SERCOM clock to GCLK%u (freq = %lu kHz) and baud rate to %lu bps (baud = %u)\r\n", slotnr, (best + 1) * 2, (uint32_t)(round(sercom_glck_freqs[best] / 1000)), baudrate, bauds[best]);</span><br><span>       while (!usart_async_is_tx_empty(slot)); // wait for transmission to complete (WARNING no timeout)</span><br><span>    usart_async_disable(slot); // disable SERCOM peripheral</span><br><span>@@ -226,8 +230,10 @@</span><br><span>  *  @param[in] d baud rate adjustment factor D</span><br><span>  *  @return if the baud rate has been set, else a parameter is out of range</span><br><span>  */</span><br><span style="color: hsl(0, 100%, 40%);">-static bool slot_set_isorate(uint8_t slotnr, enum ncn8025_sim_clkdiv clkdiv, uint16_t f, uint8_t d)</span><br><span style="color: hsl(120, 100%, 40%);">+static bool slot_set_isorate(struct card_uart *cuart, enum ncn8025_sim_clkdiv clkdiv, uint16_t f, uint8_t d)</span><br><span> {</span><br><span style="color: hsl(120, 100%, 40%);">+  uint8_t slotnr = cuart->u.asf4.slot_nr;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>         // input checks</span><br><span>      ASSERT(slotnr < ARRAY_SIZE(SIM_peripheral_descriptors));</span><br><span>  if (clkdiv != SIM_CLKDIV_1 && clkdiv != SIM_CLKDIV_2 && clkdiv != SIM_CLKDIV_4 && clkdiv != SIM_CLKDIV_8) {</span><br><span>@@ -267,7 +273,7 @@</span><br><span> </span><br><span>        // set baud rate</span><br><span>     uint32_t baudrate = (freq * d) / f; // calculate actual baud rate</span><br><span style="color: hsl(0, 100%, 40%);">-       return slot_set_baudrate(slotnr, baudrate); // set baud rate</span><br><span style="color: hsl(120, 100%, 40%);">+  return slot_set_baudrate(cuart, baudrate); // set baud rate</span><br><span> }</span><br><span> </span><br><span> /***********************************************************************</span><br><span>@@ -292,16 +298,13 @@</span><br><span>     cuart->u.asf4.usa_pd = usa_pd;</span><br><span>    cuart->u.asf4.slot_nr = slot_nr;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- /* in us, 20Mhz with default ncn8025 divider 8, F=372, D=1*/</span><br><span style="color: hsl(0, 100%, 40%);">-    cuart->u.asf4.extrawait_after_rx = 1./(20./8/372);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>        usart_async_register_callback(usa_pd, USART_ASYNC_RXC_CB, SIM_rx_cb[slot_nr]);</span><br><span>       usart_async_register_callback(usa_pd, USART_ASYNC_TXC_CB, SIM_tx_cb[slot_nr]);</span><br><span>       usart_async_register_callback(usa_pd, USART_ASYNC_ERROR_CB, _SIM_error_cb);</span><br><span>  usart_async_enable(usa_pd);</span><br><span> </span><br><span>      // set USART baud rate to match the interface (f = 2.5 MHz) and card default settings (Fd = 372, Dd = 1)</span><br><span style="color: hsl(0, 100%, 40%);">-        slot_set_isorate(cuart->u.asf4.slot_nr, SIM_CLKDIV_8, ISO7816_3_DEFAULT_FD, ISO7816_3_DEFAULT_DD);</span><br><span style="color: hsl(120, 100%, 40%);">+ slot_set_isorate(cuart, SIM_CLKDIV_8, ISO7816_3_DEFAULT_FD, ISO7816_3_DEFAULT_DD);</span><br><span> </span><br><span>         return 0;</span><br><span> }</span><br><span>@@ -352,6 +355,7 @@</span><br><span> </span><br><span>   switch (ctl) {</span><br><span>       case CUART_CTL_NO_RXTX:</span><br><span style="color: hsl(120, 100%, 40%);">+               /* no op */</span><br><span>          break;</span><br><span>       case CUART_CTL_RX:</span><br><span>           if (arg){</span><br><span>@@ -367,12 +371,8 @@</span><br><span>             usart_async_flush_rx_buffer(cuart->u.asf4.usa_pd);</span><br><span>                break;</span><br><span>       case CUART_CTL_POWER:</span><br><span style="color: hsl(0, 100%, 40%);">-           /* in us, 20Mhz with default ncn8025 divider 8, F=372, D=1*/</span><br><span style="color: hsl(0, 100%, 40%);">-            cuart->u.asf4.extrawait_after_rx = 1./(20./8/372);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-           // set USART baud rate to match the interface (f = 2.5 MHz) and card default settings (Fd = 372, Dd = 1)</span><br><span style="color: hsl(0, 100%, 40%);">-                if(arg)</span><br><span style="color: hsl(0, 100%, 40%);">-                 slot_set_isorate(cuart->u.asf4.slot_nr, SIM_CLKDIV_8, ISO7816_3_DEFAULT_FD, ISO7816_3_DEFAULT_DD);</span><br><span style="color: hsl(120, 100%, 40%);">+         /* reset everything */</span><br><span style="color: hsl(120, 100%, 40%);">+                slot_set_isorate(cuart, SIM_CLKDIV_8, ISO7816_3_DEFAULT_FD, ISO7816_3_DEFAULT_DD);</span><br><span> </span><br><span>               ncn8025_get(cuart->u.asf4.slot_nr, &settings);</span><br><span>                settings.cmdvcc = arg ? true : false;</span><br><span>@@ -405,8 +405,8 @@</span><br><span>          ncn8025_get(cuart->u.asf4.slot_nr, &settings);</span><br><span>                uint8_t divider = ncn8025_div_val[settings.clkdiv];</span><br><span>          uint32_t baudrate = (20e6/divider)/arg;</span><br><span style="color: hsl(0, 100%, 40%);">-         cuart->u.asf4.extrawait_after_rx = 1./baudrate * 1000 * 1000;</span><br><span style="color: hsl(0, 100%, 40%);">-                slot_set_baudrate(cuart->u.asf4.slot_nr, baudrate);</span><br><span style="color: hsl(120, 100%, 40%);">+                slot_set_baudrate(cuart, baudrate);</span><br><span style="color: hsl(120, 100%, 40%);">+           break;</span><br><span>       case CUART_CTL_GET_BAUDRATE:</span><br><span>                 return cuart->u.asf4.current_baudrate;</span><br><span>            break;</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ccid-firmware/+/16292">change 16292</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/osmo-ccid-firmware/+/16292"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-ccid-firmware </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I15ea4d68263b62fca3da76795969358a07e7f1a6 </div>
<div style="display:none"> Gerrit-Change-Number: 16292 </div>
<div style="display:none"> Gerrit-PatchSet: 4 </div>
<div style="display:none"> Gerrit-Owner: Hoernchen <ewild@sysmocom.de> </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>