Lines Matching refs:pkt

71 	struct cmdq_pkt *pkt;  in cmdq_pkt_create()  local
75 pkt = kzalloc(sizeof(*pkt), GFP_KERNEL); in cmdq_pkt_create()
76 if (!pkt) in cmdq_pkt_create()
78 pkt->va_base = kzalloc(size, GFP_KERNEL); in cmdq_pkt_create()
79 if (!pkt->va_base) { in cmdq_pkt_create()
80 kfree(pkt); in cmdq_pkt_create()
83 pkt->buf_size = size; in cmdq_pkt_create()
84 pkt->cl = (void *)client; in cmdq_pkt_create()
87 dma_addr = dma_map_single(dev, pkt->va_base, pkt->buf_size, in cmdq_pkt_create()
91 kfree(pkt->va_base); in cmdq_pkt_create()
92 kfree(pkt); in cmdq_pkt_create()
96 pkt->pa_base = dma_addr; in cmdq_pkt_create()
98 return pkt; in cmdq_pkt_create()
102 void cmdq_pkt_destroy(struct cmdq_pkt *pkt) in cmdq_pkt_destroy() argument
104 struct cmdq_client *client = (struct cmdq_client *)pkt->cl; in cmdq_pkt_destroy()
106 dma_unmap_single(client->chan->mbox->dev, pkt->pa_base, pkt->buf_size, in cmdq_pkt_destroy()
108 kfree(pkt->va_base); in cmdq_pkt_destroy()
109 kfree(pkt); in cmdq_pkt_destroy()
113 static int cmdq_pkt_append_command(struct cmdq_pkt *pkt, enum cmdq_code code, in cmdq_pkt_append_command() argument
118 if (unlikely(pkt->cmd_buf_size + CMDQ_INST_SIZE > pkt->buf_size)) { in cmdq_pkt_append_command()
127 pkt->cmd_buf_size += CMDQ_INST_SIZE; in cmdq_pkt_append_command()
129 __func__, (u32)pkt->buf_size); in cmdq_pkt_append_command()
132 cmd_ptr = pkt->va_base + pkt->cmd_buf_size; in cmdq_pkt_append_command()
134 pkt->cmd_buf_size += CMDQ_INST_SIZE; in cmdq_pkt_append_command()
139 int cmdq_pkt_write(struct cmdq_pkt *pkt, u8 subsys, u16 offset, u32 value) in cmdq_pkt_write() argument
144 return cmdq_pkt_append_command(pkt, CMDQ_CODE_WRITE, arg_a, value); in cmdq_pkt_write()
148 int cmdq_pkt_write_mask(struct cmdq_pkt *pkt, u8 subsys, in cmdq_pkt_write_mask() argument
155 err = cmdq_pkt_append_command(pkt, CMDQ_CODE_MASK, 0, ~mask); in cmdq_pkt_write_mask()
158 err |= cmdq_pkt_write(pkt, value, subsys, offset_mask); in cmdq_pkt_write_mask()
164 int cmdq_pkt_wfe(struct cmdq_pkt *pkt, u16 event) in cmdq_pkt_wfe() argument
180 return cmdq_pkt_append_command(pkt, CMDQ_CODE_WFE, event, arg_b); in cmdq_pkt_wfe()
184 int cmdq_pkt_clear_event(struct cmdq_pkt *pkt, u16 event) in cmdq_pkt_clear_event() argument
189 return cmdq_pkt_append_command(pkt, CMDQ_CODE_WFE, event, in cmdq_pkt_clear_event()
194 static int cmdq_pkt_finalize(struct cmdq_pkt *pkt) in cmdq_pkt_finalize() argument
199 err = cmdq_pkt_append_command(pkt, CMDQ_CODE_EOC, 0, CMDQ_EOC_IRQ_EN); in cmdq_pkt_finalize()
202 err |= cmdq_pkt_append_command(pkt, CMDQ_CODE_JUMP, 0, CMDQ_JUMP_PASS); in cmdq_pkt_finalize()
209 struct cmdq_pkt *pkt = (struct cmdq_pkt *)data.data; in cmdq_pkt_flush_async_cb() local
210 struct cmdq_task_cb *cb = &pkt->cb; in cmdq_pkt_flush_async_cb()
211 struct cmdq_client *client = (struct cmdq_client *)pkt->cl; in cmdq_pkt_flush_async_cb()
225 dma_sync_single_for_cpu(client->chan->mbox->dev, pkt->pa_base, in cmdq_pkt_flush_async_cb()
226 pkt->cmd_buf_size, DMA_TO_DEVICE); in cmdq_pkt_flush_async_cb()
233 int cmdq_pkt_flush_async(struct cmdq_pkt *pkt, cmdq_async_flush_cb cb, in cmdq_pkt_flush_async() argument
238 struct cmdq_client *client = (struct cmdq_client *)pkt->cl; in cmdq_pkt_flush_async()
240 err = cmdq_pkt_finalize(pkt); in cmdq_pkt_flush_async()
244 pkt->cb.cb = cb; in cmdq_pkt_flush_async()
245 pkt->cb.data = data; in cmdq_pkt_flush_async()
246 pkt->async_cb.cb = cmdq_pkt_flush_async_cb; in cmdq_pkt_flush_async()
247 pkt->async_cb.data = pkt; in cmdq_pkt_flush_async()
249 dma_sync_single_for_device(client->chan->mbox->dev, pkt->pa_base, in cmdq_pkt_flush_async()
250 pkt->cmd_buf_size, DMA_TO_DEVICE); in cmdq_pkt_flush_async()
260 mbox_send_message(client->chan, pkt); in cmdq_pkt_flush_async()
285 int cmdq_pkt_flush(struct cmdq_pkt *pkt) in cmdq_pkt_flush() argument
291 err = cmdq_pkt_flush_async(pkt, cmdq_pkt_flush_cb, &cmplt); in cmdq_pkt_flush()