Hi Jassi,
There is one request for one GCE h/w buffer which contains a list of
registers operation.
I will resubmit a version and please review again.
Thanks,
Houlong
On Thu, 2018-01-18 at 16:01 +0800, Jassi Brar wrote:
On Mon, Jan 8, 2018 at 2:08 PM, houlong wei [off-list ref] wrote:
quoted
Hi Jassi,
Sorry for reply so late.
According to previous discussion, there are two methods to move
dma_map_single() outside of spin_lock.
(1) put in mtk-cmdq-helper.c, as described by HS on 2017-02-09.
> I think a trade-off solution is to put in mtk-cmdq-helper.c.
> Although it is a mailbox client, it is not a CMDQ client.
> We can include mailbox_controller.h in mtk-cmdq-helper.c (instead of
mtk-cmdq.h), and then map dma at cmdq_pkt_flush_async before
mbox_send_message.
> pkt->pa_base = dma_map_single(client->chan->mbox->dev, pkt->va_base,
> pkt->cmd_buf_size, DMA_TO_DEVICE);
(2) schedule a tasklet in send_data().
After internal discussion with HS and other experts, now we prefer
method (1).
How do you think about it?
I don't exactly see how you mean but please remember send_data()
callback is supposed to be atomic ... it is protected by
spin_lock_irqsave/restore in drivers/mailbox/mailbox.c:msg_submit()
BTW, how many requests max can be queued in the GCE h/w buffer?
And since it's been over a year now, could you please resubmit after
checking for checkpatch with the --strict option?
Thanks.