Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

Broadcom iProc Family Clocks

This binding uses the common clock binding:
    Documentation/devicetree/bindings/clock/clock-bindings.txt

The iProc clock controller manages clocks that are common to the iProc family.
An SoC from the iProc family may have several PPLs, e.g., ARMPLL, GENPLL,
LCPLL0, MIPIPLL, and etc., all derived from an onboard crystal. Each PLL
comprises of several leaf clocks

Required properties for a PLL and its leaf clocks:

- compatible:
    Should have a value of the form "brcm,<soc>-<pll>". For example, GENPLL on
Cygnus has a compatible string of "brcm,cygnus-genpll"

- #clock-cells:
    Have a value of <1> since there are more than 1 leaf clock of a given PLL

- reg:
    Define the base and range of the I/O address space that contain the iProc
clock control registers required for the PLL

- clocks:
    The input parent clock phandle for the PLL. For most iProc PLLs, this is an
onboard crystal with a fixed rate

- clock-output-names:
    An ordered list of strings defining the names of the clocks

Example:

	osc: oscillator {
		#clock-cells = <0>;
		compatible = "fixed-clock";
		clock-frequency = <25000000>;
	};

	genpll: genpll {
		#clock-cells = <1>;
		compatible = "brcm,cygnus-genpll";
		reg = <0x0301d000 0x2c>, <0x0301c020 0x4>;
		clocks = <&osc>;
		clock-output-names = "genpll", "axi21", "250mhz", "ihost_sys",
				     "enet_sw", "audio_125", "can";
	};

Required properties for ASIU clocks:

ASIU clocks are a special case. These clocks are derived directly from the
reference clock of the onboard crystal

- compatible:
    Should have a value of the form "brcm,<soc>-asiu-clk". For example, ASIU
clocks for Cygnus have a compatible string of "brcm,cygnus-asiu-clk"

- #clock-cells:
    Have a value of <1> since there are more than 1 ASIU clocks

- reg:
    Define the base and range of the I/O address space that contain the iProc
clock control registers required for ASIU clocks

- clocks:
    The input parent clock phandle for the ASIU clock, i.e., the onboard
crystal

- clock-output-names:
    An ordered list of strings defining the names of the ASIU clocks

Example:

	osc: oscillator {
		#clock-cells = <0>;
		compatible = "fixed-clock";
		clock-frequency = <25000000>;
	};

	asiu_clks: asiu_clks {
		#clock-cells = <1>;
		compatible = "brcm,cygnus-asiu-clk";
		reg = <0x0301d048 0xc>, <0x180aa024 0x4>;
		clocks = <&osc>;
		clock-output-names = "keypad", "adc/touch", "pwm";
	};

Cygnus
------
PLL and leaf clock compatible strings for Cygnus are:
    "brcm,cygnus-armpll"
    "brcm,cygnus-genpll"
    "brcm,cygnus-lcpll0"
    "brcm,cygnus-mipipll"
    "brcm,cygnus-asiu-clk"
    "brcm,cygnus-audiopll"

The following table defines the set of PLL/clock index and ID for Cygnus.
These clock IDs are defined in:
    "include/dt-bindings/clock/bcm-cygnus.h"

    Clock      Source (Parent)  Index   ID
    ---        -----            -----   ---------
    crystal    N/A              N/A     N/A

    armpll     crystal          N/A     N/A

    keypad     crystal (ASIU)   0       BCM_CYGNUS_ASIU_KEYPAD_CLK
    adc/tsc    crystal (ASIU)   1       BCM_CYGNUS_ASIU_ADC_CLK
    pwm        crystal (ASIU)   2       BCM_CYGNUS_ASIU_PWM_CLK

    genpll     crystal          0       BCM_CYGNUS_GENPLL
    axi21      genpll           1       BCM_CYGNUS_GENPLL_AXI21_CLK
    250mhz     genpll           2       BCM_CYGNUS_GENPLL_250MHZ_CLK
    ihost_sys  genpll           3       BCM_CYGNUS_GENPLL_IHOST_SYS_CLK
    enet_sw    genpll           4       BCM_CYGNUS_GENPLL_ENET_SW_CLK
    audio_125  genpll           5       BCM_CYGNUS_GENPLL_AUDIO_125_CLK
    can        genpll           6       BCM_CYGNUS_GENPLL_CAN_CLK

    lcpll0     crystal          0       BCM_CYGNUS_LCPLL0
    pcie_phy   lcpll0           1       BCM_CYGNUS_LCPLL0_PCIE_PHY_REF_CLK
    ddr_phy    lcpll0           2       BCM_CYGNUS_LCPLL0_DDR_PHY_CLK
    sdio       lcpll0           3       BCM_CYGNUS_LCPLL0_SDIO_CLK
    usb_phy    lcpll0           4       BCM_CYGNUS_LCPLL0_USB_PHY_REF_CLK
    smart_card lcpll0           5       BCM_CYGNUS_LCPLL0_SMART_CARD_CLK
    ch5_unused lcpll0           6       BCM_CYGNUS_LCPLL0_CH5_UNUSED

    mipipll    crystal          0       BCM_CYGNUS_MIPIPLL
    ch0_unused mipipll          1       BCM_CYGNUS_MIPIPLL_CH0_UNUSED
    ch1_lcd    mipipll          2       BCM_CYGNUS_MIPIPLL_CH1_LCD
    ch2_v3d    mipipll          3       BCM_CYGNUS_MIPIPLL_CH2_V3D
    ch3_unused mipipll          4       BCM_CYGNUS_MIPIPLL_CH3_UNUSED
    ch4_unused mipipll          5       BCM_CYGNUS_MIPIPLL_CH4_UNUSED
    ch5_unused mipipll          6       BCM_CYGNUS_MIPIPLL_CH5_UNUSED

    audiopll   crystal          0       BCM_CYGNUS_AUDIOPLL
    ch0_audio  audiopll         1       BCM_CYGNUS_AUDIOPLL_CH0
    ch1_audio  audiopll         2       BCM_CYGNUS_AUDIOPLL_CH1
    ch2_audio  audiopll         3       BCM_CYGNUS_AUDIOPLL_CH2

Northstar and Northstar Plus
------
PLL and leaf clock compatible strings for Northstar and Northstar Plus are:
 "brcm,nsp-armpll"
 "brcm,nsp-genpll"
 "brcm,nsp-lcpll0"

The following table defines the set of PLL/clock index and ID for Northstar and
Northstar Plus.  These clock IDs are defined in:
    "include/dt-bindings/clock/bcm-nsp.h"

    Clock	Source		Index	ID
    ---		-----		-----	---------
    crystal	N/A		N/A	N/A

    armpll	crystal		N/A	N/A

    genpll	crystal		0	BCM_NSP_GENPLL
    phy		genpll		1	BCM_NSP_GENPLL_PHY_CLK
    ethernetclk	genpll		2	BCM_NSP_GENPLL_ENET_SW_CLK
    usbclk	genpll		3	BCM_NSP_GENPLL_USB_PHY_REF_CLK
    iprocfast	genpll		4	BCM_NSP_GENPLL_IPROCFAST_CLK
    sata1	genpll		5	BCM_NSP_GENPLL_SATA1_CLK
    sata2	genpll		6	BCM_NSP_GENPLL_SATA2_CLK

    lcpll0	crystal		0	BCM_NSP_LCPLL0
    pcie_phy	lcpll0		1	BCM_NSP_LCPLL0_PCIE_PHY_REF_CLK
    sdio	lcpll0		2	BCM_NSP_LCPLL0_SDIO_CLK
    ddr_phy	lcpll0		3	BCM_NSP_LCPLL0_DDR_PHY_CLK

Northstar 2
-----------
PLL and leaf clock compatible strings for Northstar 2 are:
    "brcm,ns2-genpll-scr"
    "brcm,ns2-genpll-sw"
    "brcm,ns2-lcpll-ddr"
    "brcm,ns2-lcpll-ports"

The following table defines the set of PLL/clock index and ID for Northstar 2.
These clock IDs are defined in:
    "include/dt-bindings/clock/bcm-ns2.h"

    Clock	Source		Index	ID
    ---		-----		-----	---------
    crystal	N/A		N/A	N/A

    genpll_scr	crystal		0	BCM_NS2_GENPLL_SCR
    scr		genpll_scr	1	BCM_NS2_GENPLL_SCR_SCR_CLK
    fs		genpll_scr	2	BCM_NS2_GENPLL_SCR_FS_CLK
    audio_ref	genpll_scr	3	BCM_NS2_GENPLL_SCR_AUDIO_CLK
    ch3_unused	genpll_scr	4	BCM_NS2_GENPLL_SCR_CH3_UNUSED
    ch4_unused	genpll_scr	5	BCM_NS2_GENPLL_SCR_CH4_UNUSED
    ch5_unused	genpll_scr	6	BCM_NS2_GENPLL_SCR_CH5_UNUSED

    genpll_sw	crystal		0	BCM_NS2_GENPLL_SW
    rpe		genpll_sw	1	BCM_NS2_GENPLL_SW_RPE_CLK
    250		genpll_sw	2	BCM_NS2_GENPLL_SW_250_CLK
    nic		genpll_sw	3	BCM_NS2_GENPLL_SW_NIC_CLK
    chimp	genpll_sw	4	BCM_NS2_GENPLL_SW_CHIMP_CLK
    port	genpll_sw	5	BCM_NS2_GENPLL_SW_PORT_CLK
    sdio	genpll_sw	6	BCM_NS2_GENPLL_SW_SDIO_CLK

    lcpll_ddr	crystal		0	BCM_NS2_LCPLL_DDR
    pcie_sata_usb lcpll_ddr	1	BCM_NS2_LCPLL_DDR_PCIE_SATA_USB_CLK
    ddr		lcpll_ddr	2	BCM_NS2_LCPLL_DDR_DDR_CLK
    ch2_unused	lcpll_ddr	3	BCM_NS2_LCPLL_DDR_CH2_UNUSED
    ch3_unused	lcpll_ddr	4	BCM_NS2_LCPLL_DDR_CH3_UNUSED
    ch4_unused	lcpll_ddr	5	BCM_NS2_LCPLL_DDR_CH4_UNUSED
    ch5_unused	lcpll_ddr	6	BCM_NS2_LCPLL_DDR_CH5_UNUSED

    lcpll_ports	crystal		0	BCM_NS2_LCPLL_PORTS
    wan		lcpll_ports	1	BCM_NS2_LCPLL_PORTS_WAN_CLK
    rgmii	lcpll_ports	2	BCM_NS2_LCPLL_PORTS_RGMII_CLK
    ch2_unused	lcpll_ports	3	BCM_NS2_LCPLL_PORTS_CH2_UNUSED
    ch3_unused	lcpll_ports	4	BCM_NS2_LCPLL_PORTS_CH3_UNUSED
    ch4_unused	lcpll_ports	5	BCM_NS2_LCPLL_PORTS_CH4_UNUSED
    ch5_unused	lcpll_ports	6	BCM_NS2_LCPLL_PORTS_CH5_UNUSED

BCM63138
--------
PLL and leaf clock compatible strings for BCM63138 are:
    "brcm,bcm63138-armpll"