Lines Matching refs:dao

139 static int dao_rsc_reinit(struct dao *dao, const struct dao_desc *desc);
141 static int dao_spdif_get_spos(struct dao *dao, unsigned int *spos) in dao_spdif_get_spos() argument
143 dao->hw->dao_get_spos(dao->ctrl_blk, spos); in dao_spdif_get_spos()
147 static int dao_spdif_set_spos(struct dao *dao, unsigned int spos) in dao_spdif_set_spos() argument
149 dao->hw->dao_set_spos(dao->ctrl_blk, spos); in dao_spdif_set_spos()
153 static int dao_commit_write(struct dao *dao) in dao_commit_write() argument
155 dao->hw->dao_commit_write(dao->hw, in dao_commit_write()
156 daio_device_index(dao->daio.type, dao->hw), dao->ctrl_blk); in dao_commit_write()
160 static int dao_set_left_input(struct dao *dao, struct rsc *input) in dao_set_left_input() argument
163 struct daio *daio = &dao->daio; in dao_set_left_input()
170 dao->ops->clear_left_input(dao); in dao_set_left_input()
177 dao->mgr->imap_add(dao->mgr, entry); in dao_set_left_input()
178 dao->imappers[i] = entry; in dao_set_left_input()
189 static int dao_set_right_input(struct dao *dao, struct rsc *input) in dao_set_right_input() argument
192 struct daio *daio = &dao->daio; in dao_set_right_input()
199 dao->ops->clear_right_input(dao); in dao_set_right_input()
206 dao->mgr->imap_add(dao->mgr, entry); in dao_set_right_input()
207 dao->imappers[daio->rscl.msr + i] = entry; in dao_set_right_input()
218 static int dao_clear_left_input(struct dao *dao) in dao_clear_left_input() argument
221 struct daio *daio = &dao->daio; in dao_clear_left_input()
224 if (!dao->imappers[0]) in dao_clear_left_input()
227 entry = dao->imappers[0]; in dao_clear_left_input()
228 dao->mgr->imap_delete(dao->mgr, entry); in dao_clear_left_input()
231 entry = dao->imappers[i]; in dao_clear_left_input()
232 dao->mgr->imap_delete(dao->mgr, entry); in dao_clear_left_input()
233 dao->imappers[i] = NULL; in dao_clear_left_input()
236 kfree(dao->imappers[0]); in dao_clear_left_input()
237 dao->imappers[0] = NULL; in dao_clear_left_input()
242 static int dao_clear_right_input(struct dao *dao) in dao_clear_right_input() argument
245 struct daio *daio = &dao->daio; in dao_clear_right_input()
248 if (!dao->imappers[daio->rscl.msr]) in dao_clear_right_input()
251 entry = dao->imappers[daio->rscl.msr]; in dao_clear_right_input()
252 dao->mgr->imap_delete(dao->mgr, entry); in dao_clear_right_input()
255 entry = dao->imappers[daio->rscl.msr + i]; in dao_clear_right_input()
256 dao->mgr->imap_delete(dao->mgr, entry); in dao_clear_right_input()
257 dao->imappers[daio->rscl.msr + i] = NULL; in dao_clear_right_input()
260 kfree(dao->imappers[daio->rscl.msr]); in dao_clear_right_input()
261 dao->imappers[daio->rscl.msr] = NULL; in dao_clear_right_input()
389 static int dao_rsc_init(struct dao *dao, in dao_rsc_init() argument
397 err = daio_rsc_init(&dao->daio, desc, mgr->mgr.hw); in dao_rsc_init()
401 dao->imappers = kzalloc(sizeof(void *)*desc->msr*2, GFP_KERNEL); in dao_rsc_init()
402 if (!dao->imappers) { in dao_rsc_init()
406 dao->ops = &dao_ops; in dao_rsc_init()
407 dao->mgr = mgr; in dao_rsc_init()
408 dao->hw = hw; in dao_rsc_init()
409 err = hw->dao_get_ctrl_blk(&dao->ctrl_blk); in dao_rsc_init()
414 daio_device_index(dao->daio.type, hw)); in dao_rsc_init()
419 daio_device_index(dao->daio.type, hw), conf); in dao_rsc_init()
421 daio_device_index(dao->daio.type, hw)); in dao_rsc_init()
427 kfree(dao->imappers); in dao_rsc_init()
428 dao->imappers = NULL; in dao_rsc_init()
430 daio_rsc_uninit(&dao->daio); in dao_rsc_init()
434 static int dao_rsc_uninit(struct dao *dao) in dao_rsc_uninit() argument
436 if (dao->imappers) { in dao_rsc_uninit()
437 if (dao->imappers[0]) in dao_rsc_uninit()
438 dao_clear_left_input(dao); in dao_rsc_uninit()
440 if (dao->imappers[dao->daio.rscl.msr]) in dao_rsc_uninit()
441 dao_clear_right_input(dao); in dao_rsc_uninit()
443 kfree(dao->imappers); in dao_rsc_uninit()
444 dao->imappers = NULL; in dao_rsc_uninit()
446 dao->hw->dao_put_ctrl_blk(dao->ctrl_blk); in dao_rsc_uninit()
447 dao->hw = dao->ctrl_blk = NULL; in dao_rsc_uninit()
448 daio_rsc_uninit(&dao->daio); in dao_rsc_uninit()
453 static int dao_rsc_reinit(struct dao *dao, const struct dao_desc *desc) in dao_rsc_reinit() argument
455 struct daio_mgr *mgr = dao->mgr; in dao_rsc_reinit()
458 dsc.type = dao->daio.type; in dao_rsc_reinit()
461 dao_rsc_uninit(dao); in dao_rsc_reinit()
462 return dao_rsc_init(dao, &dsc, mgr); in dao_rsc_reinit()
548 struct dao *dao = kzalloc(sizeof(*dao), GFP_KERNEL); in get_daio_rsc() local
549 if (!dao) in get_daio_rsc()
552 err = dao_rsc_init(dao, desc, mgr); in get_daio_rsc()
554 kfree(dao); in get_daio_rsc()
558 *rdaio = &dao->daio; in get_daio_rsc()
597 dao_rsc_uninit(container_of(daio, struct dao, daio)); in put_daio_rsc()
598 kfree(container_of(daio, struct dao, daio)); in put_daio_rsc()