daio
struct dao, daio);
struct dao, daio);
struct dao *dao = container_of(atc->daios[type], struct dao, daio);
struct dao *dao = container_of(atc->daios[type], struct dao, daio);
dao = container_of(atc->daios[SPDIFOO], struct dao, daio);
struct daio *daio = NULL;
daio = atc->daios[i];
if (!daio)
if (daio->output) {
dao = container_of(daio, struct dao, daio);
daio_mgr->put_daio(daio_mgr, daio);
(struct daio **)&atc->daios[i]);
rscs[0] = &dai->daio.rscl;
rscs[1] = &dai->daio.rscr;
dao = container_of(atc->daios[j], struct dao, daio);
dai = container_of(atc->daios[LINEIM], struct dai, daio);
dai = container_of(atc->daios[MIC], struct dai, daio);
dai = container_of(atc->daios[SPDIFIO], struct dai, daio);
struct dao *dao = container_of(atc->daios[SPDIFOO], struct dao, daio);
dao = container_of(atc->daios[SPDIFOO], struct dao, daio);
int idx = daio_device_index(dao->daio.type, dao->hw);
struct daio *daio = &dao->daio;
entry = kzalloc_objs(*entry, daio->rscl.msr);
daio->rscl.ops->master(&daio->rscl);
for (i = 0; i < daio->rscl.msr; i++, entry++) {
entry->user = entry->addr = daio->rscl.ops->index(&daio->rscl);
daio->rscl.ops->next_conj(&daio->rscl);
daio->rscl.ops->master(&daio->rscl);
struct daio *daio = &dao->daio;
entry = kzalloc_objs(*entry, daio->rscr.msr);
daio->rscr.ops->master(&daio->rscr);
for (i = 0; i < daio->rscr.msr; i++, entry++) {
entry->user = entry->addr = daio->rscr.ops->index(&daio->rscr);
dao->imappers[daio->rscl.msr + i] = entry;
daio->rscr.ops->next_conj(&daio->rscr);
daio->rscr.ops->master(&daio->rscr);
return dao_clear_input(dao, 0, dao->daio.rscl.msr);
return dao_clear_input(dao, dao->daio.rscl.msr,
dao->daio.rscl.msr + dao->daio.rscr.msr);
int idx = daio_device_index(dai->daio.type, dai->hw);
static int daio_rsc_init(struct daio *daio,
err = rsc_init(&daio->rscl, idx_l, DAIO, desc->msr, hw);
err = rsc_init(&daio->rscr, idx_r, DAIO, desc->msr, hw);
daio->rscl.ops = daio->rscr.ops = &daio_out_rsc_ops;
daio->rscl.ops = daio->rscr.ops = &daio_in_rsc_ops_20k1;
daio->rscl.ops = daio->rscr.ops = &daio_in_rsc_ops_20k2;
daio->type = desc->type;
daio->output = desc->output;
rsc_uninit(&daio->rscl);
static int daio_rsc_uninit(struct daio *daio)
rsc_uninit(&daio->rscl);
rsc_uninit(&daio->rscr);
err = daio_rsc_init(&dao->daio, desc, mgr->mgr.hw);
idx = daio_device_index(dao->daio.type, hw);
daio_rsc_uninit(&dao->daio);
if (dao->imappers[dao->daio.rscl.msr])
daio_rsc_uninit(&dao->daio);
dsc.type = dao->daio.type;
dsc.output = dao->daio.output;
err = daio_rsc_init(&dai->daio, desc, mgr->mgr.hw);
idx = daio_device_index(dai->daio.type, dai->hw);
daio_rsc_uninit(&dai->daio);
daio_rsc_uninit(&dai->daio);
struct daio **rdaio)
*rdaio = &dao->daio;
*rdaio = &dai->daio;
static int put_daio_rsc(struct daio_mgr *mgr, struct daio *daio)
mgr->daio_disable(mgr, daio);
daio_mgr_put_rsc(&mgr->mgr, daio->type);
if (daio->output) {
dao_rsc_uninit(container_of(daio, struct dao, daio));
kfree(container_of(daio, struct dao, daio));
dai_rsc_uninit(container_of(daio, struct dai, daio));
kfree(container_of(daio, struct dai, daio));
static int daio_mgr_enb_daio(struct daio_mgr *mgr, struct daio *daio)
int idx = daio_device_index(daio->type, hw);
if (daio->output)
static int daio_mgr_dsb_daio(struct daio_mgr *mgr, struct daio *daio)
int idx = daio_device_index(daio->type, hw);
if (daio->output)
const struct daio_desc *desc, struct daio **rdaio);
int (*put_daio)(struct daio_mgr *mgr, struct daio *daio);
int (*daio_enable)(struct daio_mgr *mgr, struct daio *daio);
int (*daio_disable)(struct daio_mgr *mgr, struct daio *daio);
struct daio daio;
struct daio daio;