Lines Matching defs:dao

135 static int dao_rsc_reinit(struct dao *dao, const struct dao_desc *desc);
137 static int dao_spdif_get_spos(struct dao *dao, unsigned int *spos)
139 dao->hw->dao_get_spos(dao->ctrl_blk, spos);
143 static int dao_spdif_set_spos(struct dao *dao, unsigned int spos)
145 dao->hw->dao_set_spos(dao->ctrl_blk, spos);
149 static int dao_commit_write(struct dao *dao)
151 dao->hw->dao_commit_write(dao->hw,
152 daio_device_index(dao->daio.type, dao->hw), dao->ctrl_blk);
156 static int dao_set_left_input(struct dao *dao, struct rsc *input)
159 struct daio *daio = &dao->daio;
166 dao->ops->clear_left_input(dao);
173 dao->mgr->imap_add(dao->mgr, entry);
174 dao->imappers[i] = entry;
185 static int dao_set_right_input(struct dao *dao, struct rsc *input)
188 struct daio *daio = &dao->daio;
195 dao->ops->clear_right_input(dao);
202 dao->mgr->imap_add(dao->mgr, entry);
203 dao->imappers[daio->rscl.msr + i] = entry;
214 static int dao_clear_left_input(struct dao *dao)
217 struct daio *daio = &dao->daio;
220 if (!dao->imappers[0])
223 entry = dao->imappers[0];
224 dao->mgr->imap_delete(dao->mgr, entry);
227 entry = dao->imappers[i];
228 dao->mgr->imap_delete(dao->mgr, entry);
229 dao->imappers[i] = NULL;
232 kfree(dao->imappers[0]);
233 dao->imappers[0] = NULL;
238 static int dao_clear_right_input(struct dao *dao)
241 struct daio *daio = &dao->daio;
244 if (!dao->imappers[daio->rscl.msr])
247 entry = dao->imappers[daio->rscl.msr];
248 dao->mgr->imap_delete(dao->mgr, entry);
251 entry = dao->imappers[daio->rscl.msr + i];
252 dao->mgr->imap_delete(dao->mgr, entry);
253 dao->imappers[daio->rscl.msr + i] = NULL;
256 kfree(dao->imappers[daio->rscl.msr]);
257 dao->imappers[daio->rscl.msr] = NULL;
385 static int dao_rsc_init(struct dao *dao,
393 err = daio_rsc_init(&dao->daio, desc, mgr->mgr.hw);
397 dao->imappers = kzalloc(array3_size(sizeof(void *), desc->msr, 2),
399 if (!dao->imappers) {
403 dao->ops = &dao_ops;
404 dao->mgr = mgr;
405 dao->hw = hw;
406 err = hw->dao_get_ctrl_blk(&dao->ctrl_blk);
411 daio_device_index(dao->daio.type, hw));
416 daio_device_index(dao->daio.type, hw), conf);
418 daio_device_index(dao->daio.type, hw));
424 kfree(dao->imappers);
425 dao->imappers = NULL;
427 daio_rsc_uninit(&dao->daio);
431 static int dao_rsc_uninit(struct dao *dao)
433 if (dao->imappers) {
434 if (dao->imappers[0])
435 dao_clear_left_input(dao);
437 if (dao->imappers[dao->daio.rscl.msr])
438 dao_clear_right_input(dao);
440 kfree(dao->imappers);
441 dao->imappers = NULL;
443 dao->hw->dao_put_ctrl_blk(dao->ctrl_blk);
444 dao->hw = dao->ctrl_blk = NULL;
445 daio_rsc_uninit(&dao->daio);
450 static int dao_rsc_reinit(struct dao *dao, const struct dao_desc *desc)
452 struct daio_mgr *mgr = dao->mgr;
455 dsc.type = dao->daio.type;
458 dao_rsc_uninit(dao);
459 return dao_rsc_init(dao, &dsc, mgr);
545 struct dao *dao = kzalloc(sizeof(*dao), GFP_KERNEL);
546 if (!dao)
549 err = dao_rsc_init(dao, desc, mgr);
551 kfree(dao);
555 *rdaio = &dao->daio;
594 dao_rsc_uninit(container_of(daio, struct dao, daio));
595 kfree(container_of(daio, struct dao, daio));