blob: 4cb2a4a164538ef54e442431428de23aaf24d3fc [file] [log] [blame]
Broadcom AVS CPUfreq driver
===========================
This driver provides voltage and frequency scaling on Broadcom SoCs using
the AVS firmware with DVFS support. The AVS firmware is running on its own
co-processor. The driver supports both uniprocessor (UP) and symmetric
multiprocessor (SMP) systems which share clock and voltage across all CPUs.
Actual voltage and frequency scaling is done solely by the AVS firmware.
This driver does not change frequency or voltage itself. It provides a
standard CPUfreq interface to the rest of the kernel and to userland. It
interfaces with the AVS firmware to effect the requested changes and to
report back the current system status in a way that is expected by existing
tools.
This driver requires two DT nodes. One node (brcm,avs-cpu-data-mem)
references the mailbox register used to communicate with the AVS CPU. The
second node (brcm,avs-cpu-l2-intr) is required to trigger an interrupt on
the AVS CPU. The interrupt tells the AVS CPU that it needs to process a
command sent to it by this driver. Interrupting the AVS CPU is mandatory for
commands to be processed.
Node brcm,avs-cpu-data-mem
--------------------------
Required properties:
- compatible: Sould be one of: brcm,avs-cpu-data-mem, brcm,bcm7271-avs-cpu-data-mem
or brcm,bcm7268-avs-cpu-data-mem
- reg: Specifies base physical address and size of the registers.
Optional properties:
- interrupts: The interrupt that the AVS CPU will use to interrupt the host
when a command completed.
- interrupt-parent: The interrupt controller the above interrupt is routed
through.
- interrupt-names: The name of the interrupt used to interupt the host.
Either none of the interrupt properties may be defined or all three must be
present. Without the interrupt properties, the driver will operate in
polling mode.
Node brcm,avs-cpu-l2-intr
-------------------------
Required properties:
- compatible: Sould be one of: brcm,avs-cpu-l2-intr, brcm,bcm7271-avs-cpu-l2-intr
or brcm,bcm7268-avs-cpu-l2-intr
- reg: Specifies base physical address and size of the registers.
Optional properties:
- None
Example
=======
avs-cpu-data-mem@f04c4000 {
compatible = "brcm,bcm7271-avs-cpu-data-mem",
"brcm,avs-cpu-data-mem";
reg = <0xf04c4000 0x60>;
interrupts = <0x1a>;
interrupt-parent = <&avs_host_l2_intc>;
interrupt-names = "sw_intr";
};
avs-cpu-l2-intr@f04d1100 {
compatible = "brcm,bcm7271-avs-cpu-l2-intr",
"brcm,avs-cpu-l2-intr";
reg = <0xf04d1100 0x10>;
};