Exemple #1
0
static uint32_t dsu_readIR(urj_chain_t *chain)
{
  urj_tap_capture_ir(chain);
  wir = urj_tap_register_fill(wir, 1);
  urj_tap_shift_register(chain, wir, dsurir, URJ_CHAIN_EXITMODE_IDLE);
  return urj_tap_register_get_value(dsurir);
}
Exemple #2
0
int
urj_tap_chain_shift_instructions_mode (urj_chain_t *chain,
                                       int capture_output, int capture,
                                       int chain_exit)
{
    int i;
    urj_parts_t *ps;

    if (!chain || !chain->parts)
    {
        urj_error_set (URJ_ERROR_NO_CHAIN, "no chain or no part");
        return URJ_STATUS_FAIL;
    }

    ps = chain->parts;

    for (i = 0; i < ps->len; i++)
    {
        if (ps->parts[i]->active_instruction == NULL)
        {
            urj_error_set (URJ_ERROR_NO_ACTIVE_INSTRUCTION,
                           _("Part %d without active instruction"), i);
            return URJ_STATUS_FAIL;
        }
    }

    if (capture)
        urj_tap_capture_ir (chain);

    /* new implementation: split into defer + retrieve part
       shift the data register of each part in the chain one by one */

    for (i = 0; i < ps->len; i++)
    {
        urj_tap_defer_shift_register (chain,
                                      ps->parts[i]->active_instruction->value,
                                      capture_output ? ps->parts[i]->active_instruction->out
                                      : NULL,
                                      (i + 1) == ps->len ? chain_exit : URJ_CHAIN_EXITMODE_SHIFT);
    }

    if (capture_output)
    {
        for (i = 0; i < ps->len; i++)
        {
            urj_tap_shift_register_output (chain,
                                           ps->parts[i]->active_instruction->value,
                                           ps->parts[i]->active_instruction->out,
                                           (i + 1) == ps->len ? chain_exit
                                           : URJ_CHAIN_EXITMODE_SHIFT);
        }
    }
    else
    {
        /* give the cable driver a chance to flush if it's considered useful */
        urj_tap_cable_flush (chain->cable, URJ_TAP_CABLE_TO_OUTPUT);
    }

    return URJ_STATUS_OK;
}
Exemple #3
0
static void dsu_writeIR(urj_chain_t *chain, int size, unsigned int val)
{
  urj_tap_register_t *rwr = urj_tap_register_alloc(size);
  urj_tap_register_set_value(rwr, val); 
  urj_tap_capture_ir(chain); 
  urj_tap_shift_register(chain, rwr, NULL, URJ_CHAIN_EXITMODE_IDLE); 
  urj_tap_register_free(rwr);

  /* urj_tap_capture_ir(chain); */
  /* urj_tap_register_set_value(wir, val); */
  /* urj_tap_shift_register(chain, wir, NULL, URJ_CHAIN_EXITMODE_IDLE); */
}