[PATCH v2 3/3] mailbox: mediatek: Add mtk-apu-mailbox driver
Jassi Brar
jassisinghbrar at gmail.com
Thu Jan 2 20:30:28 PST 2025
On Sun, Dec 29, 2024 at 9:46 PM Karl.Li <karl.li at mediatek.com> wrote:
....
> +
> +static irqreturn_t mtk_apu_mailbox_irq(int irq, void *data)
> +{
> + struct mbox_chan *chan = data;
> + struct mtk_apu_mailbox *apu_mbox = get_mtk_apu_mailbox(chan->mbox);
> + struct mbox_chan *link = &apu_mbox->mbox.chans[0];
> + u8 data_cnt = fls(readl(apu_mbox->regs + MTK_APU_MBOX_OUTBOX_IRQ));
> +
> + memcpy_fromio(apu_mbox->msgs.data, apu_mbox->regs + MTK_APU_MBOX_OUTBOX,
> + sizeof(*apu_mbox->msgs.data) * data_cnt);
> +
> + mbox_chan_received_data(link, apu_mbox->msgs.data);
> +
> + return IRQ_WAKE_THREAD;
> +}
> +
You don't seem to do anything that 'ack' the irq line. So if you merge
this into mtk_apu_mailbox_irq_thread() and do
devm_request_threaded_irq(dev, irq, NULL,
mtk_apu_mailbox_irq_thread, IRQF_ONESHOT, ...);
you can avoid adding a new api and keep your client code simple.
mbox_chan_received_data() is strictly between the client and
controller driver. If it is not called from an atomic context, feel
free to do memcpy() from it.
Cheers!
Jassi
More information about the Linux-mediatek
mailing list