ars_state
if (test_bit(ARS_FAILED, &nfit_spa->ars_state))
set_bit(ARS_REQ_SHORT, &nfit_spa->ars_state);
set_bit(ARS_REQ_LONG, &nfit_spa->ars_state);
set_bit(ARS_FAILED, &nfit_spa->ars_state);
clear_bit(ARS_REQ_SHORT, &nfit_spa->ars_state);
set_bit(ARS_FAILED, &nfit_spa->ars_state);
if (test_bit(ARS_FAILED, &nfit_spa->ars_state))
if (test_bit(ARS_FAILED, &nfit_spa->ars_state))
if (test_bit(ARS_REQ_SHORT, &nfit_spa->ars_state))
else if (test_bit(ARS_REQ_LONG, &nfit_spa->ars_state))
clear_bit(req_type, &nfit_spa->ars_state);
set_bit(ARS_FAILED, &nfit_spa->ars_state);
set_bit(ARS_FAILED, &nfit_spa->ars_state);
clear_bit(ARS_FAILED, &nfit_spa->ars_state);
if (!test_bit(ARS_FAILED, &nfit_spa->ars_state))
if (test_bit(ARS_FAILED, &nfit_spa->ars_state))
if (test_and_set_bit(req_type, &nfit_spa->ars_state))
unsigned long ars_state;
struct ars_state *ars_state = &t->ars_state;
rc = nfit_test_cmd_ars_start(t, ars_state, buf,
rc = nfit_test_cmd_ars_status(ars_state, buf, buf_len,
static int ars_state_init(struct device *dev, struct ars_state *ars_state)
ars_state->ars_status = devm_kzalloc(dev,
if (!ars_state->ars_status)
spin_lock_init(&ars_state->lock);
return ars_state_init(&t->pdev.dev, &t->ars_state);
return ars_state_init(&t->pdev.dev, &t->ars_state);
} ars_state;
post_ars_status(&t->ars_state, &t->badrange, t->spa_set_dma[0],
post_ars_status(&t->ars_state, &t->badrange, t->spa_set_dma[0],
static void post_ars_status(struct ars_state *ars_state,
ars_state->deadline = jiffies + 1*HZ;
ars_status = ars_state->ars_status;
struct ars_state *ars_state,
spin_lock(&ars_state->lock);
if (time_before(jiffies, ars_state->deadline)) {
post_ars_status(ars_state, &t->badrange, ars_start->address,
spin_unlock(&ars_state->lock);
static int nfit_test_cmd_ars_status(struct ars_state *ars_state,
if (buf_len < ars_state->ars_status->out_length)
spin_lock(&ars_state->lock);
if (time_before(jiffies, ars_state->deadline)) {
memcpy(ars_status, ars_state->ars_status,
ars_state->ars_status->out_length);
spin_unlock(&ars_state->lock);