Lines Matching refs:output

186 static void stm_output_claim(struct stm_device *stm, struct stm_output *output)  in stm_output_claim()  argument
188 struct stp_master *master = stm_master(stm, output->master); in stm_output_claim()
191 lockdep_assert_held(&output->lock); in stm_output_claim()
193 if (WARN_ON_ONCE(master->nr_free < output->nr_chans)) in stm_output_claim()
196 bitmap_allocate_region(&master->chan_map[0], output->channel, in stm_output_claim()
197 ilog2(output->nr_chans)); in stm_output_claim()
199 master->nr_free -= output->nr_chans; in stm_output_claim()
203 stm_output_disclaim(struct stm_device *stm, struct stm_output *output) in stm_output_disclaim() argument
205 struct stp_master *master = stm_master(stm, output->master); in stm_output_disclaim()
208 lockdep_assert_held(&output->lock); in stm_output_disclaim()
210 bitmap_release_region(&master->chan_map[0], output->channel, in stm_output_disclaim()
211 ilog2(output->nr_chans)); in stm_output_disclaim()
213 master->nr_free += output->nr_chans; in stm_output_disclaim()
214 output->nr_chans = 0; in stm_output_disclaim()
283 struct stm_output *output) in stm_output_assign() argument
302 spin_lock(&output->lock); in stm_output_assign()
304 if (WARN_ON_ONCE(output->nr_chans)) in stm_output_assign()
311 output->master = midx; in stm_output_assign()
312 output->channel = cidx; in stm_output_assign()
313 output->nr_chans = width; in stm_output_assign()
321 ret = stm->pdrv->output_open(priv, output); in stm_output_assign()
326 stm_output_claim(stm, output); in stm_output_assign()
332 output->nr_chans = 0; in stm_output_assign()
334 spin_unlock(&output->lock); in stm_output_assign()
340 static void stm_output_free(struct stm_device *stm, struct stm_output *output) in stm_output_free() argument
343 spin_lock(&output->lock); in stm_output_free()
344 if (output->nr_chans) in stm_output_free()
345 stm_output_disclaim(stm, output); in stm_output_free()
347 stm->pdrv->output_close(output); in stm_output_free()
348 spin_unlock(&output->lock); in stm_output_free()
352 static void stm_output_init(struct stm_output *output) in stm_output_init() argument
354 spin_lock_init(&output->lock); in stm_output_init()
501 stm_output_init(&stmf->output); in stm_char_open()
526 stm->data->unlink(stm->data, stmf->output.master, in stm_char_release()
527 stmf->output.channel); in stm_char_release()
529 stm_output_free(stm, &stmf->output); in stm_char_release()
542 stm_assign_first_policy(struct stm_device *stm, struct stm_output *output, in stm_assign_first_policy() argument
560 err = stm_output_assign(stm, width, pn, output); in stm_assign_first_policy()
602 stm_write(struct stm_device *stm, struct stm_output *output, in stm_write() argument
611 err = stm->pdrv->write(stm->data, output, chan, buf, count); in stm_write()
633 if (!stmf->output.nr_chans) { in stm_char_write()
639 err = stm_assign_first_policy(stmf->stm, &stmf->output, ids, 1); in stm_char_write()
660 count = stm_write(stm, &stmf->output, 0, kbuf, count); in stm_char_write()
705 if (stmf->output.nr_chans * stm->data->sw_mmiosz != size) in stm_char_mmap()
708 phys = stm->data->mmio_addr(stm->data, stmf->output.master, in stm_char_mmap()
709 stmf->output.channel, in stm_char_mmap()
710 stmf->output.nr_chans); in stm_char_mmap()
733 if (stmf->output.nr_chans) in stm_char_policy_set_ioctl()
765 ret = stm_assign_first_policy(stmf->stm, &stmf->output, ids, in stm_char_policy_set_ioctl()
771 ret = stm->data->link(stm->data, stmf->output.master, in stm_char_policy_set_ioctl()
772 stmf->output.channel); in stm_char_policy_set_ioctl()
775 stm_output_free(stmf->stm, &stmf->output); in stm_char_policy_set_ioctl()
787 .master = stmf->output.master, in stm_char_policy_get_ioctl()
788 .channel = stmf->output.channel, in stm_char_policy_get_ioctl()
789 .width = stmf->output.nr_chans, in stm_char_policy_get_ioctl()
822 stmf->output.master, in stm_char_ioctl()
823 stmf->output.channel, in stm_char_ioctl()
824 stmf->output.nr_chans, in stm_char_ioctl()
1012 err = stm_assign_first_policy(stm, &src->output, ids, in stm_source_link_add()
1021 err = stm->data->link(stm->data, src->output.master, in stm_source_link_add()
1022 src->output.channel); in stm_source_link_add()
1034 stm_output_free(stm, &src->output); in stm_source_link_add()
1084 stm_output_free(link, &src->output); in __stm_source_link_drop()
1105 stm->data->unlink(stm->data, src->output.master, in __stm_source_link_drop()
1106 src->output.channel); in __stm_source_link_drop()
1253 stm_output_init(&src->output); in stm_source_register_device()
1292 if (!src->output.nr_chans) in stm_source_write()
1295 if (chan >= src->output.nr_chans) in stm_source_write()
1302 count = stm_write(stm, &src->output, chan, buf, count); in stm_source_write()