Lines Matching full:pcc
6 * PCC (Platform Communication Channel) is defined in the ACPI 5.0+
11 * shared memory regions as defined in the PCC table entries. The PCC
12 * specification supports a Doorbell mechanism for the PCC clients
14 * is also specified in each PCC table entry.
18 * PCC Reads:
22 * * Client issues mbox_send_message() which rings the PCC doorbell
23 * for its PCC channel.
28 * PCC Writes:
33 * * Client issues mbox_send_message() which rings the PCC doorbell
34 * for its PCC channel.
42 * For more details about PCC, please see the ACPI specification from
45 * This file implements PCC as a Mailbox controller and allows for PCC
60 #include <acpi/pcc.h>
64 #define MBOX_IRQ_NAME "pcc-mbox"
67 * struct pcc_chan_reg - PCC register bundle
84 * struct pcc_chan_info - PCC channel specific information
86 * @chan: PCC channel information with Shared Memory Region info
87 * @db: PCC register bundle for the doorbell register
88 * @plat_irq_ack: PCC register bundle for the platform interrupt acknowledge
90 * @cmd_complete: PCC register bundle for the command complete check register
91 * @cmd_update: PCC register bundle for the command complete update register
92 * @error: PCC register bundle for the error status register
94 * @type: PCC subspace type
123 * PCC can be used with perf critical drivers such as CPPC
125 * use it to read/write to PCC registers such as doorbell register
128 * write from perf critical registers such as PCC doorbell register
214 * pcc_map_interrupt - Map a PCC subspace GSI to a linux IRQ number
262 * If this is PCC slave subspace channel, and the command complete in pcc_mbox_cmd_complete_check()
289 * The PCC slave subspace channel needs to set the command complete bit in check_and_ack()
293 * The PCC master subspace channel clears chan_in_use to free channel. in check_and_ack()
302 * pcc_mbox_irq - PCC mailbox interrupt handler
345 * pcc_mbox_request_channel - PCC clients call this function to
346 * request a pointer to their PCC subspace, from which they
350 * @subspace_id: The PCC Subspace index as parsed in the PCC client
351 * ACPI package. This is used to lookup the array of PCC
352 * subspaces as parsed by the PCC Mailbox controller.
354 * Return: Pointer to the PCC Mailbox Channel if successful or ERR_PTR.
384 * @pchan: Pointer to the PCC mailbox channel as returned by
423 * here only to ring the channel doorbell. The PCC client
425 * order to maintain atomicity over PCC channel once
429 * only for debug after PCC transaction completes.
468 dev_err(chan->mbox->dev, "failed to register PCC interrupt %d\n", in pcc_startup()
497 * parse_pcc_subspace - Count PCC subspaces defined
501 * Return: If we find a PCC subspace entry of a valid type, return 0.
504 * This gets called for each entry in the PCC table.
531 pr_err("Failed to ioremap PCC %s register\n", name); in pcc_chan_reg_init()
543 * pcc_parse_subspace_irq - Parse the PCC IRQ and PCC ACK register
545 * @pchan: Pointer to the PCC channel info structure.
550 * There should be one entry per PCC channel. This gets called for each
551 * entry in the PCC table. This uses PCCY Type1 structure for all applicable
568 pr_err("PCC GSI %d not registered\n", in pcc_parse_subspace_irq()
596 pr_err("PCC subspace has level IRQ with no ACK register\n"); in pcc_parse_subspace_irq()
604 * pcc_parse_subspace_db_reg - Parse the PCC doorbell register
606 * @pchan: Pointer to the PCC channel info structure.
662 * pcc_parse_subspace_shmem - Parse the PCC Shared Memory Region information
664 * @pchan: Pointer to the PCC channel info structure.
721 pr_warn("Error parsing PCC subspaces from PCCT\n"); in acpi_pcc_probe()
723 pr_warn("Invalid PCCT: %d PCC subspaces\n", count); in acpi_pcc_probe()
782 /* Point to the first PCC subspace entry */ in pcc_mbox_probe()
821 pr_info("Detected %d PCC Subspaces\n", pcc_mbox_ctrl->num_chans); in pcc_mbox_probe()
827 pr_info("Registering PCC driver as Mailbox controller\n"); in pcc_mbox_probe()
830 pr_err("Err registering PCC as Mailbox controller: %d\n", rc); in pcc_mbox_probe()
853 /* Check if PCC support is available. */ in pcc_init()
857 pr_debug("ACPI PCC probe failed.\n"); in pcc_init()
865 pr_debug("Err creating PCC platform bundle\n"); in pcc_init()
874 * Make PCC init postcore so that users of this mailbox