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
59 #include <acpi/pcc.h>
63 #define MBOX_IRQ_NAME "pcc-mbox"
76 * get_pcc_channel - Given a PCC subspace idx, get
78 * @id: PCC subspace index.
92 * PCC can be used with perf critical drivers such as CPPC
94 * use it to read/write to PCC registers such as doorbell register
97 * write from perf critical registers such as PCC doorbell register
152 * pcc_map_interrupt - Map a PCC subspace GSI to a linux IRQ number
176 * pcc_mbox_irq - PCC mailbox interrupt handler
218 * pcc_mbox_request_channel - PCC clients call this function to
219 * request a pointer to their PCC subspace, from which they
223 * @subspace_id: The PCC Subspace index as parsed in the PCC client
224 * ACPI package. This is used to lookup the array of PCC
225 * subspaces as parsed by the PCC Mailbox controller.
238 * Each PCC Subspace is a Mailbox Channel. in pcc_mbox_request_channel()
239 * The PCC Clients get their PCC Subspace ID in pcc_mbox_request_channel()
241 * This returns a pointer to the PCC subspace in pcc_mbox_request_channel()
269 dev_err(dev, "failed to register PCC interrupt %d\n", in pcc_mbox_request_channel()
314 * here only to ring the channel doorbell. The PCC client
316 * order to maintain atomicity over PCC channel once
320 * only for debug after PCC transaction completes.
367 * parse_pcc_subspaces -- Count PCC subspaces defined
371 * Return: If we find a PCC subspace entry of a valid type, return 0.
374 * This gets called for each entry in the PCC table.
388 * pcc_parse_subspace_irq - Parse the PCC IRQ and PCC ACK register
389 * There should be one entry per PCC client.
390 * @id: PCC subspace index.
395 * This gets called for each entry in the PCC table.
403 pr_err("PCC GSI %d not registered\n", in pcc_parse_subspace_irq()
416 pr_err("Failed to ioremap PCC ACK register\n"); in pcc_parse_subspace_irq()
457 pr_warn("Error parsing PCC subspaces from PCCT\n"); in acpi_pcc_probe()
459 pr_warn("Invalid PCCT: %d PCC subspaces\n", count); in acpi_pcc_probe()
468 pr_err("Could not allocate space for PCC mbox channels\n"); in acpi_pcc_probe()
491 /* Point to the first PCC subspace entry */ in acpi_pcc_probe()
529 pr_info("Detected %d PCC Subspaces\n", pcc_mbox_ctrl.num_chans); in acpi_pcc_probe()
565 pr_info("Registering PCC driver as Mailbox controller\n"); in pcc_mbox_probe()
569 pr_err("Err registering PCC as Mailbox controller: %d\n", ret); in pcc_mbox_probe()
592 /* Check if PCC support is available. */ in pcc_init()
596 pr_debug("ACPI PCC probe failed.\n"); in pcc_init()
604 pr_debug("Err creating PCC platform bundle\n"); in pcc_init()
612 * Make PCC init postcore so that users of this mailbox