if (self->speed_task && self->speed_task != task) {
IRDA_DEBUG(0, "%s(), busy!\n", __FUNCTION__);
if (self->speed_task && self->speed_task != task) {
IRDA_DEBUG(0, "%s(), busy!\n", __FUNCTION__);
irda_task_next_state(task, IRDA_TASK_CHILD_WAIT);
/* give 1 second to finish */
irda_task_next_state(task, IRDA_TASK_CHILD_WAIT);
/* give 1 second to finish */
irda_task_next_state(task, IRDA_TASK_WAIT1);
/* Wait at least 10 ms */
irda_task_next_state(task, IRDA_TASK_WAIT1);
/* Wait at least 10 ms */
irda_task_next_state(task, IRDA_TASK_WAIT2);
/* Wait at least 10 ms */
irda_task_next_state(task, IRDA_TASK_WAIT2);
/* Wait at least 10 ms */
if (self->reset_task && self->reset_task != task) {
IRDA_DEBUG(0, "%s(), busy!\n", __FUNCTION__);
if (self->reset_task && self->reset_task != task) {
IRDA_DEBUG(0, "%s(), busy!\n", __FUNCTION__);
/* Clear DTR and Set RTS */
self->set_dtr_rts(self->dev, FALSE, TRUE);
irda_task_next_state(task, IRDA_TASK_WAIT1);
/* Clear DTR and Set RTS */
self->set_dtr_rts(self->dev, FALSE, TRUE);
irda_task_next_state(task, IRDA_TASK_WAIT1);
break;
case IRDA_TASK_WAIT1:
/* Set DTR and RTS */
self->set_dtr_rts(self->dev, TRUE, TRUE);
irda_task_next_state(task, IRDA_TASK_WAIT2);
break;
case IRDA_TASK_WAIT1:
/* Set DTR and RTS */
self->set_dtr_rts(self->dev, TRUE, TRUE);
irda_task_next_state(task, IRDA_TASK_WAIT2);