45 #include <linux/types.h>
68 #define USERMODE_ADDR PAGE_OFFSET
70 #define MAILBOX_IRQ INT_MAIL_MPU_IRQ
77 static int search_free_channel(
struct chnl_mgr *chnl_mgr_obj,
88 u32 dw_dsp_addr,
u32 dw_arg)
99 bool sched_dpc =
false;
102 is_eos = (byte_size == 0);
105 if (!host_buf || !pchnl)
115 dw_state = pchnl->
state;
132 host_sys_buf = host_buf;
137 if (host_sys_buf ==
NULL)
158 omap_mbox_disable_irq(dev_ctxt->
mbox,
IRQ_RX);
195 chnl_packet_obj->
arg = dw_arg;
373 chnl_mgr_obj->
dev_obj = hdev_obj;
387 *channel_mgr = chnl_mgr_obj;
400 struct chnl_mgr *chnl_mgr_obj = hchnl_mgr;
462 timeout, &chnl_ioc_obj);
489 if (channel_info !=
NULL) {
525 bool dequeue_ioc =
true;
532 if (!chan_ioc || !pchnl) {
554 stat_sync = sync_wait_on_event(pchnl->
sync_event, timeout);
555 if (stat_sync == -
ETIME) {
559 }
else if (stat_sync == -
EPERM) {
573 omap_mbox_disable_irq(dev_ctxt->
mbox,
IRQ_RX);
590 ioc.
arg = chnl_packet_obj->
arg;
627 if (!host_sys_buf || !ioc.
buf) {
661 if (!mgr_info || !hchnl_mgr)
670 mgr_info->
type = chnl_mgr_obj->
type;
714 struct chnl_mgr *chnl_mgr_obj = hchnl_mgr;
734 status = search_free_channel(chnl_mgr_obj, &ch_id);
766 sync_init_event(sync_event);
829 status = ntfy_register(chnl_obj->
ntfy_obj, hnotification,
830 event_mask, notify_type);
832 status = ntfy_unregister(chnl_obj->
ntfy_obj, hnotification);
854 INIT_LIST_HEAD(list);
857 for (i = 0; i < chirps; i++) {
866 free_chirp_list(list);
878 static void free_chirp_list(
struct list_head *chirp_list)
892 static int search_free_channel(
struct chnl_mgr *chnl_mgr_obj,