Lines Matching refs:fsm

38 	struct sir_fsm *fsm = &dev->fsm;  in sirdev_tx_complete_fsm()  local
43 next_state = fsm->substate; /* default: stay in current substate */ in sirdev_tx_complete_fsm()
46 switch(fsm->substate) { in sirdev_tx_complete_fsm()
88 fsm->substate = next_state; in sirdev_tx_complete_fsm()
106 struct sir_dev *dev = container_of(work, struct sir_dev, fsm.work.work); in sirdev_config_fsm()
107 struct sir_fsm *fsm = &dev->fsm; in sirdev_config_fsm() local
116 __func__, fsm->state, fsm->substate); in sirdev_config_fsm()
118 next_state = fsm->state; in sirdev_config_fsm()
121 switch(fsm->state) { in sirdev_config_fsm()
127 fsm->result = -EINVAL; in sirdev_config_fsm()
134 ret = sirdev_get_dongle(dev, fsm->param); in sirdev_config_fsm()
136 fsm->result = ret; in sirdev_config_fsm()
148 fsm->substate = SIRDEV_STATE_DONGLE_RESET; in sirdev_config_fsm()
151 fsm->param = 9600; in sirdev_config_fsm()
158 fsm->result = -EINVAL; in sirdev_config_fsm()
165 fsm->result = ret; in sirdev_config_fsm()
174 (fsm->param&0x02) ? TRUE : FALSE, in sirdev_config_fsm()
175 (fsm->param&0x01) ? TRUE : FALSE); in sirdev_config_fsm()
180 fsm->substate = SIRDEV_STATE_WAIT_XMIT; in sirdev_config_fsm()
187 fsm->result = ret; in sirdev_config_fsm()
195 fsm->substate = SIRDEV_STATE_DONGLE_RESET; in sirdev_config_fsm()
199 dev->speed = fsm->param; in sirdev_config_fsm()
208 fsm->result = ret; in sirdev_config_fsm()
219 fsm->substate = SIRDEV_STATE_DONGLE_SPEED; in sirdev_config_fsm()
226 ret = dev->dongle_drv->set_speed(dev, fsm->param); in sirdev_config_fsm()
228 fsm->result = ret; in sirdev_config_fsm()
255 fsm->result = -EINVAL; in sirdev_config_fsm()
260 __func__, fsm->result); in sirdev_config_fsm()
272 up(&fsm->sem); in sirdev_config_fsm()
275 fsm->state = next_state; in sirdev_config_fsm()
278 queue_delayed_work(irda_sir_wq, &fsm->work, msecs_to_jiffies(delay)); in sirdev_config_fsm()
288 struct sir_fsm *fsm = &dev->fsm; in sirdev_schedule_request() local
293 if (down_trylock(&fsm->sem)) { in sirdev_schedule_request()
298 down(&fsm->sem); in sirdev_schedule_request()
301 if (fsm->state == SIRDEV_STATE_DEAD) { in sirdev_schedule_request()
304 up(&fsm->sem); in sirdev_schedule_request()
311 fsm->state = initial_state; in sirdev_schedule_request()
312 fsm->param = param; in sirdev_schedule_request()
313 fsm->result = 0; in sirdev_schedule_request()
315 INIT_DELAYED_WORK(&fsm->work, sirdev_config_fsm); in sirdev_schedule_request()
316 queue_delayed_work(irda_sir_wq, &fsm->work, 0); in sirdev_schedule_request()
353 down(&dev->fsm.sem); /* block until config change completed */ in sirdev_set_dongle()
354 err = dev->fsm.result; in sirdev_set_dongle()
355 up(&dev->fsm.sem); in sirdev_set_dongle()
844 down(&dev->fsm.sem); /* block on pending config completion */ in sirdev_close()
865 up(&dev->fsm.sem); in sirdev_close()
913 sema_init(&dev->fsm.sem, 1); in sirdev_get_instance()
954 down(&dev->fsm.sem); in sirdev_put_instance()
955 dev->fsm.state = SIRDEV_STATE_DEAD; /* mark staled */ in sirdev_put_instance()
958 up(&dev->fsm.sem); in sirdev_put_instance()