func: static void handle_ti(ESPState *s)
  
  {
  
      uint32_t dmalen, minlen;
  
  
  
      if (s->dma && !s->dma_enabled) {
  
          s->dma_cb = handle_ti;
  
          return;
  
      }
  
  
  
      dmalen = s->rregs[ESP_TCLO];
  
      dmalen |= s->rregs[ESP_TCMID] << 8;
  
      dmalen |= s->rregs[ESP_TCHI] << 16;
  
      if (dmalen==0) {
  
        dmalen=0x10000;
  
      }
  
      s->dma_counter = dmalen;
  
  
  
      if (s->do_cmd)
  
          minlen = (dmalen < 32) ? dmalen : 32;
  
      else if (s->ti_size < 0)
  
          minlen = (dmalen < -s->ti_size) ? dmalen : -s->ti_size;
  
      else
  
          minlen = (dmalen < s->ti_size) ? dmalen : s->ti_size;
  
      trace_esp_handle_ti(minlen);
  
      if (s->dma) {
  
          s->dma_left = minlen;
  
          s->rregs[ESP_RSTAT] &= ~STAT_TC;
  
          esp_do_dma(s);
  
      }
  
      if (s->do_cmd) {
  
          trace_esp_handle_ti_cmd(s->cmdlen);
  
          s->ti_size = 0;
  
          s->cmdlen = 0;
  
          s->do_cmd = 0;
  
          do_cmd(s, s->cmdbuf);
  
      }
  
  }
  