Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

mailbox: pcc: Set txdone_irq/txdone_poll based on PCCT flags

The PCC controller currently enables txdone via IRQ if the PCCT exposes
platform capability to generate command completion interrupt, but it
leaves txdone_poll unchanged. Make the behaviour explicit:

- If ACPI_PCCT_DOORBELL is present, use txdone_irq and disable polling.
- Otherwise, disable txdone_irq and fall back to txdone_poll.

Configure the PCC mailbox to use interrupt-based completion for PCC types
that signal completion via IRQ using TXDONE_BY_IRQ, and fall back to
polling for others using TXDONE_BY_POLL.

This ensures the PCC driver uses the appropriate completion mechanism
according to the PCCT table definition and makes the completion mode
unambiguous avoiding mixed signalling when the platform lacks a doorbell
flag set.

Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Tested-by: Adam Young <admiyo@os.amperecomputing.com>
Signed-off-by: Jassi Brar <jassisinghbrar@gmail.com>

authored by

Sudeep Holla and committed by
Jassi Brar
3349f800 a5695ded

+6 -1
+6 -1
drivers/mailbox/pcc.c
··· 791 791 (unsigned long) pcct_tbl + sizeof(struct acpi_table_pcct)); 792 792 793 793 acpi_pcct_tbl = (struct acpi_table_pcct *) pcct_tbl; 794 - if (acpi_pcct_tbl->flags & ACPI_PCCT_DOORBELL) 794 + if (acpi_pcct_tbl->flags & ACPI_PCCT_DOORBELL) { 795 795 pcc_mbox_ctrl->txdone_irq = true; 796 + pcc_mbox_ctrl->txdone_poll = false; 797 + } else { 798 + pcc_mbox_ctrl->txdone_irq = false; 799 + pcc_mbox_ctrl->txdone_poll = true; 800 + } 796 801 797 802 for (i = 0; i < count; i++) { 798 803 struct pcc_chan_info *pchan = chan_info + i;