clk: bcm21664: add common clock support
Subsystems (4)
v2 cover clk: bcm21664: add common clock support
This is series has two parts. The first two patches are changes to the existing Broadcom Kona family clock code to prepare for the addition of support for another SoC, bcm21664.
The remaining three define the binding and code for bcm21664, and replace the use of "fake" clocks in the device tree with the real ones. This ends up being a fairly straightforward definition of the clocks on this SoC; the rest of the clock code is shared with other SoCs that use the Kona style clock system.
This series depends on the following patch, which has been taken into the clk-fixes tree:
clk: bcm281xx: don't use unnamed structs or unions
https://lkml.org/lkml/2014/4/7/322
In addition, it depends on the version 4 of the following series, just (re)posted for review:
clk: bcm281xx: updates
https://lkml.org/lkml/2014/4/8/485
The patches in this series--based on the current linus/master branch plus the patches mentioned above--are available here:
http://git.linaro.org/git/landing-teams/working/broadcom/kernel.git Branch review/bcm21664-clock-v2
Alex Elder (5):
clk: bcm281xx: move compatible string definitions
ARM: dts: revise kona clock binding document
ARM: dts: define clock binding for bcm21664
clk: bcm21664: use common clock framework
ARM: dts: use real clocks for bcm21664
.../devicetree/bindings/clock/bcm-kona-clock.txt | 116 ++++++--- arch/arm/boot/dts/bcm21664.dtsi | 190 +++++++++----- drivers/clk/bcm/Kconfig | 2 +- drivers/clk/bcm/Makefile | 1 + drivers/clk/bcm/clk-bcm21664.c | 290 +++++++++++++++++++++ drivers/clk/bcm/clk-bcm281xx.c | 12 - include/dt-bindings/clock/bcm21664.h | 62 +++++ include/dt-bindings/clock/bcm281xx.h | 12 + 8 files changed, 565 insertions(+), 120 deletions(-) create mode 100644 drivers/clk/bcm/clk-bcm21664.c create mode 100644 include/dt-bindings/clock/bcm21664.h
Signature · 1 line
1.9.1
PATCH RESEND v2 1/5 clk: bcm281xx: move compatible string definitions
The Broadcom 281xx clock code uses a #define for the compatible string for it's clock control units (CCUs). Rather than defining those in the C source file, define them in the header file that's shared by both the code and the device tree source file (along with all the clock ids).
--- drivers/clk/bcm/clk-bcm281xx.c | 12 ------------ include/dt-bindings/clock/bcm281xx.h | 12 ++++++++++++ 2 files changed, 12 insertions(+), 12 deletions(-)
drivers/clk/bcm/clk-bcm281xx.c +0 -12
@@ -18,18 +18,6 @@#define BCM281XX_CCU_COMMON (_name, _ucase_name) \ KONA_CCU_COMMON(BCM281XX, _name, _ucase_name) -/* -* These are the bcm281xx CCU device tree "compatible" strings. -* We're stuck with using "bcm11351" in the string because wild -* cards aren't allowed, and that name was the first one defined -* in this family of devices. -*/ -#define BCM281XX_DT_ROOT_CCU_COMPAT "brcm,bcm11351-root-ccu" -#define BCM281XX_DT_AON_CCU_COMPAT "brcm,bcm11351-aon-ccu" -#define BCM281XX_DT_HUB_CCU_COMPAT "brcm,bcm11351-hub-ccu" -#define BCM281XX_DT_MASTER_CCU_COMPAT "brcm,bcm11351-master-ccu" -#define BCM281XX_DT_SLAVE_CCU_COMPAT "brcm,bcm11351-slave-ccu" -/* Root CCU */ static struct peri_clk_data frac_1m_data = {
include/dt-bindings/clock/bcm281xx.h +12 -0
@@ -20,6 +20,18 @@* the clock control units (CCUs) on Broadcom BCM281XX family SoCs. */ +/* +* These are the bcm281xx CCU device tree "compatible" strings. +* We're stuck with using "bcm11351" in the string because wild +* cards aren't allowed, and that name was the first one defined +* in this family of devices. +*/ +#define BCM281XX_DT_ROOT_CCU_COMPAT "brcm,bcm11351-root-ccu" +#define BCM281XX_DT_AON_CCU_COMPAT "brcm,bcm11351-aon-ccu" +#define BCM281XX_DT_HUB_CCU_COMPAT "brcm,bcm11351-hub-ccu" +#define BCM281XX_DT_MASTER_CCU_COMPAT "brcm,bcm11351-master-ccu" +#define BCM281XX_DT_SLAVE_CCU_COMPAT "brcm,bcm11351-slave-ccu" +/* root CCU clock ids */ #define BCM281XX_ROOT_CCU_FRAC_1M 0
Signature · 1 line
1.9.1
PATCH RESEND v2 2/5 ARM: dts: revise kona clock binding document
In reply to Alex ElderThe next patch defines a binding for a new Broadcom SoC that uses Kona style CCUs for its clocks. Update the generic Kona clock binding document so it's more natural to accomodate the definitions of additional SoC families.
Specifically:
- Define the compatible string values generically, referring to specific per-model values later in the document.
- Put the device tree example immediately after the required properties listing, before the tables of SoC-specific values.
- Clearly identify the start of the section defining specific values related to the BCM281XX family
- Add a list of the specific BCM281XX family compatible strings.
- Reword the description of the table slightly.
--- .../devicetree/bindings/clock/bcm-kona-clock.txt | 87 ++++++++++++---------- 1 file changed, 47 insertions(+), 40 deletions(-)
Documentation/devicetree/bindings/clock/bcm-kona-clock.txt +47 -40
@@ -10,12 +10,12 @@ This binding uses the common clock binding: Required properties: - compatible - Shall have one of the following values: - - "brcm,bcm11351-root-ccu" - - "brcm,bcm11351-aon-ccu" - - "brcm,bcm11351-hub-ccu" - - "brcm,bcm11351-master-ccu" - - "brcm,bcm11351-slave-ccu" + Shall have a value of the form "brcm,<model>-<which>-ccu", + where <model> is a Broadcom SoC model number and <which> is + the name of a defined CCU. For example: + "brcm,bcm11351-root-ccu" + The compatible strings used for each supported SoC family + are defined below. - reg Shall define the base and range of the address space containing clock control registers
@@ -26,12 +26,48 @@ Required properties: Shall be an ordered list of strings defining the names of the clocks provided by the CCU. +Device tree example: -BCM281XX family SoCs use Kona CCUs. The following table defines -the set of CCUs and clock specifiers for BCM281XX clocks. When -a clock consumer references a clocks, its symbolic specifier -(rather than its numeric index value) should be used. These -specifiers are defined in "include/dt-bindings/clock/bcm281xx.h". + slave_ccu: slave_ccu { + compatible = "brcm,bcm11351-slave-ccu"; + reg = <0x3e011000 0x0f00>; + #clock-cells = <1>; + clock-output-names = "uartb", + "uartb2", + "uartb3", + "uartb4"; + }; + + ref_crystal_clk: ref_crystal { + #clock-cells = <0>; + compatible = "fixed-clock"; + clock-frequency = <26000000>; + }; + + uart at 3e002000 { + compatible = "brcm,bcm11351-dw-apb-uart", "snps,dw-apb-uart"; + status = "disabled"; + reg = <0x3e002000 0x1000>; + clocks = <&slave_ccu BCM281XX_SLAVE_CCU_UARTB3>; + interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>; + reg-shift = <2>; + reg-io-width = <4>; + }; + +BCM281XX family +--------------- +CCU compatible string values for SoCs in the BCM281XX family are: + "brcm,bcm11351-root-ccu" + "brcm,bcm11351-aon-ccu" + "brcm,bcm11351-hub-ccu" + "brcm,bcm11351-master-ccu" + "brcm,bcm11351-slave-ccu" + +The following table defines the set of CCUs and clock specifiers for +BCM281XX family clocks. When a clock consumer references a clocks, +its symbolic specifier (rather than its numeric index value) should +be used. These specifiers are defined in: + "include/dt-bindings/clock/bcm281xx.h" CCU Clock Type Index Specifier --- ----- ---- ----- ---------
@@ -62,32 +98,3 @@ specifiers are defined in "include/dt-bindings/clock/bcm281xx.h". slave bsc2 peri 7 BCM281XX_SLAVE_CCU_BSC2 slave bsc3 peri 8 BCM281XX_SLAVE_CCU_BSC3 slave pwm peri 9 BCM281XX_SLAVE_CCU_PWM - - -Device tree example: - - slave_ccu: slave_ccu { - compatible = "brcm,bcm11351-slave-ccu"; - reg = <0x3e011000 0x0f00>; - #clock-cells = <1>; - clock-output-names = "uartb", - "uartb2", - "uartb3", - "uartb4"; - }; - - ref_crystal_clk: ref_crystal { - #clock-cells = <0>; - compatible = "fixed-clock"; - clock-frequency = <26000000>; - }; - - uart at 3e002000 { - compatible = "brcm,bcm11351-dw-apb-uart", "snps,dw-apb-uart"; - status = "disabled"; - reg = <0x3e002000 0x1000>; - clocks = <&slave_ccu BCM281XX_SLAVE_CCU_UARTB3>; - interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>; - reg-shift = <2>; - reg-io-width = <4>; - };
Signature · 1 line
1.9.1
PATCH RESEND v2 3/5 ARM: dts: define clock binding for bcm21664
In reply to Alex ElderDocument the device tree binding for Broadcom BCM28164 clock control units and clocks. This SoC uses Kona CCUs, similar to the BCM281XX SoC family.
--- .../devicetree/bindings/clock/bcm-kona-clock.txt | 39 ++++++++++++++++++++++ 1 file changed, 39 insertions(+)
Documentation/devicetree/bindings/clock/bcm-kona-clock.txt +39 -0
@@ -98,3 +98,42 @@ be used. These specifiers are defined in: slave bsc2 peri 7 BCM281XX_SLAVE_CCU_BSC2 slave bsc3 peri 8 BCM281XX_SLAVE_CCU_BSC3 slave pwm peri 9 BCM281XX_SLAVE_CCU_PWM + + +BCM21664 family +--------------- +CCU compatible string values for SoCs in the BCM21664 family are: + "brcm,bcm21664-root-ccu" + "brcm,bcm21664-aon-ccu" + "brcm,bcm21664-master-ccu" + "brcm,bcm21664-slave-ccu" + +The following table defines the set of CCUs and clock specifiers for +BCM21664 family clocks. When a clock consumer references a clocks, +its symbolic specifier (rather than its numeric index value) should +be used. These specifiers are defined in: + "include/dt-bindings/clock/bcm21664.h" + + CCU Clock Type Index Specifier + --- ----- ---- ----- --------- + root frac_1m peri 0 BCM21664_ROOT_CCU_FRAC_1M + + aon hub_timer peri 0 BCM21664_AON_CCU_HUB_TIMER + + master sdio1 peri 0 BCM21664_MASTER_CCU_SDIO1 + master sdio2 peri 1 BCM21664_MASTER_CCU_SDIO2 + master sdio3 peri 2 BCM21664_MASTER_CCU_SDIO3 + master sdio4 peri 3 BCM21664_MASTER_CCU_SDIO4 + master sdio1_sleep peri 4 BCM21664_MASTER_CCU_SDIO1_SLEEP + master sdio2_sleep peri 5 BCM21664_MASTER_CCU_SDIO2_SLEEP + master sdio3_sleep peri 6 BCM21664_MASTER_CCU_SDIO3_SLEEP + master sdio4_sleep peri 7 BCM21664_MASTER_CCU_SDIO4_SLEEP + + slave uartb peri 0 BCM21664_SLAVE_CCU_UARTB + slave uartb2 peri 1 BCM21664_SLAVE_CCU_UARTB2 + slave uartb3 peri 2 BCM21664_SLAVE_CCU_UARTB3 + slave uartb4 peri 3 BCM21664_SLAVE_CCU_UARTB4 + slave bsc1 peri 4 BCM21664_SLAVE_CCU_BSC1 + slave bsc2 peri 5 BCM21664_SLAVE_CCU_BSC2 + slave bsc3 peri 6 BCM21664_SLAVE_CCU_BSC3 + slave bsc4 peri 7 BCM21664_SLAVE_CCU_BSC4
Signature · 1 line
1.9.1
PATCH RESEND v2 4/5 clk: bcm21664: use common clock framework
In reply to Alex ElderDefine the set of CCUs and provided clocks sufficient to satisfy the needs of all the existing clock references for BCM21664. Replace the "fake" fixed-rate clocks used previously with "real" ones.
Note that only the minimal set of these clocks and CCUs is defined here. More clock definitions will need to be added as required by the addition of additional drivers.
--- drivers/clk/bcm/Kconfig | 2 +- drivers/clk/bcm/Makefile | 1 + drivers/clk/bcm/clk-bcm21664.c | 290 +++++++++++++++++++++++++++++++++++ include/dt-bindings/clock/bcm21664.h | 62 ++++++++ 4 files changed, 354 insertions(+), 1 deletion(-) create mode 100644 drivers/clk/bcm/clk-bcm21664.c create mode 100644 include/dt-bindings/clock/bcm21664.h
drivers/clk/bcm/Kconfig +1 -1
@@ -6,4 +6,4 @@ config CLK_BCM_KONA help Enable common clock framework support for Broadcom SoCs using "Kona" style clock control units, including those - in the BCM281xx family. + in the BCM281xx and BCM21664 families.
drivers/clk/bcm/Makefile +1 -0
@@ -1,3 +1,4 @@ obj-$(CONFIG_CLK_BCM_KONA) += clk-kona.o obj-$(CONFIG_CLK_BCM_KONA) += clk-kona-setup.o obj-$(CONFIG_CLK_BCM_KONA) += clk-bcm281xx.o +obj-$(CONFIG_CLK_BCM_KONA) += clk-bcm21664.o
drivers/clk/bcm/clk-bcm21664.c new file +290 -0
290 lines not on this page · raw message
include/dt-bindings/clock/bcm21664.h new file +62 -0
62 lines not on this page · raw message
Signature · 1 line
1.9.1
PATCH RESEND v2 5/5 ARM: dts: use real clocks for bcm21664
In reply to Alex ElderReplace the "fake" fixed-rate clocks used previously for the bcm21664 family with "real" ones.
--- arch/arm/boot/dts/bcm21664.dtsi | 190 +++++++++++++++++++++++++--------------- 1 file changed, 118 insertions(+), 72 deletions(-)
arch/arm/boot/dts/bcm21664.dtsi +118 -72
@@ -14,6 +14,8 @@ #include <dt-bindings/interrupt-controller/arm-gic.h> #include <dt-bindings/interrupt-controller/irq.h> +#include "dt-bindings/clock/bcm21664.h" + #include "skeleton.dtsi" / {
@@ -43,7 +45,7 @@ compatible = "brcm,bcm21664-dw-apb-uart", "snps,dw-apb-uart"; status = "disabled"; reg = <0x3e000000 0x118>; - clocks = <&uartb_clk>; + clocks = <&slave_ccu BCM21664_SLAVE_CCU_UARTB>; interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>; reg-shift = <2>; reg-io-width = <4>;
@@ -53,7 +55,7 @@ compatible = "brcm,bcm21664-dw-apb-uart", "snps,dw-apb-uart"; status = "disabled"; reg = <0x3e001000 0x118>; - clocks = <&uartb2_clk>; + clocks = <&slave_ccu BCM21664_SLAVE_CCU_UARTB2>; interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>; reg-shift = <2>; reg-io-width = <4>;
@@ -63,7 +65,7 @@ compatible = "brcm,bcm21664-dw-apb-uart", "snps,dw-apb-uart"; status = "disabled"; reg = <0x3e002000 0x118>; - clocks = <&uartb3_clk>; + clocks = <&slave_ccu BCM21664_SLAVE_CCU_UARTB3>; interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>; reg-shift = <2>; reg-io-width = <4>;
@@ -85,7 +87,7 @@ compatible = "brcm,kona-timer"; reg = <0x35006000 0x1c>; interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&hub_timer_clk>; + clocks = <&aon_ccu BCM21664_AON_CCU_HUB_TIMER>; }; gpio: gpio at 35003000 {
@@ -106,7 +108,7 @@ compatible = "brcm,kona-sdhci"; reg = <0x3f180000 0x801c>; interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&sdio1_clk>; + clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO1>; status = "disabled"; };
@@ -114,7 +116,7 @@ compatible = "brcm,kona-sdhci"; reg = <0x3f190000 0x801c>; interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&sdio2_clk>; + clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO2>; status = "disabled"; };
@@ -122,7 +124,7 @@ compatible = "brcm,kona-sdhci"; reg = <0x3f1a0000 0x801c>; interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&sdio3_clk>; + clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO3>; status = "disabled"; };
@@ -130,7 +132,7 @@ compatible = "brcm,kona-sdhci"; reg = <0x3f1b0000 0x801c>; interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&sdio4_clk>; + clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO4>; status = "disabled"; };
@@ -140,7 +142,7 @@ interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>; #address-cells = <1>; #size-cells = <0>; - clocks = <&bsc1_clk>; + clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC1>; status = "disabled"; };
@@ -150,7 +152,7 @@ interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>; #address-cells = <1>; #size-cells = <0>; - clocks = <&bsc2_clk>; + clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC2>; status = "disabled"; };
@@ -160,7 +162,7 @@ interrupts = <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>; #address-cells = <1>; #size-cells = <0>; - clocks = <&bsc3_clk>; + clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC3>; status = "disabled"; };
@@ -170,105 +172,149 @@ interrupts = <GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH>; #address-cells = <1>; #size-cells = <0>; - clocks = <&bsc4_clk>; + clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC4>; status = "disabled"; }; clocks { - bsc1_clk: bsc1 { - compatible = "fixed-clock"; - clock-frequency = <13000000>; - #clock-cells = <0>; - }; + #address-cells = <1>; + #size-cells = <1>; + ranges; - bsc2_clk: bsc2 { - compatible = "fixed-clock"; - clock-frequency = <13000000>; + /* + * Fixed clocks are defined before CCUs whose + * clocks may depend on them. + */ + + ref_32k_clk: ref_32k { #clock-cells = <0>; + compatible = "fixed-clock"; + clock-frequency = <32768>; }; - bsc3_clk: bsc3 { - compatible = "fixed-clock"; - clock-frequency = <13000000>; + bbl_32k_clk: bbl_32k { #clock-cells = <0>; + compatible = "fixed-clock"; + clock-frequency = <32768>; }; - bsc4_clk: bsc4 { + ref_13m_clk: ref_13m { + #clock-cells = <0>; compatible = "fixed-clock"; clock-frequency = <13000000>; - #clock-cells = <0>; }; - pmu_bsc_clk: pmu_bsc { + var_13m_clk: var_13m { + #clock-cells = <0>; compatible = "fixed-clock"; clock-frequency = <13000000>; - #clock-cells = <0>; }; - hub_timer_clk: hub_timer { - compatible = "fixed-clock"; - clock-frequency = <32768>; + dft_19_5m_clk: dft_19_5m { #clock-cells = <0>; + compatible = "fixed-clock"; + clock-frequency = <19500000>; }; - pwm_clk: pwm { + ref_crystal_clk: ref_crystal { + #clock-cells = <0>; compatible = "fixed-clock"; clock-frequency = <26000000>; - #clock-cells = <0>; }; - sdio1_clk: sdio1 { - compatible = "fixed-clock"; - clock-frequency = <48000000>; + ref_52m_clk: ref_52m { #clock-cells = <0>; - }; - - sdio2_clk: sdio2 { compatible = "fixed-clock"; - clock-frequency = <48000000>; - #clock-cells = <0>; + clock-frequency = <52000000>; }; - sdio3_clk: sdio3 { - compatible = "fixed-clock"; - clock-frequency = <48000000>; + var_52m_clk: var_52m { #clock-cells = <0>; - }; - - sdio4_clk: sdio4 { - compatible = "fixed-clock"; - clock-frequency = <48000000>; - #clock-cells = <0>; - }; - - tmon_1m_clk: tmon_1m { compatible = "fixed-clock"; - clock-frequency = <1000000>; - #clock-cells = <0>; - }; - - uartb_clk: uartb { - compatible = "fixed-clock"; - clock-frequency = <13000000>; - #clock-cells = <0>; - }; - - uartb2_clk: uartb2 { - compatible = "fixed-clock"; - clock-frequency = <13000000>; - #clock-cells = <0>; - }; - - uartb3_clk: uartb3 { - compatible = "fixed-clock"; - clock-frequency = <13000000>; - #clock-cells = <0>; + clock-frequency = <52000000>; }; usb_otg_ahb_clk: usb_otg_ahb { + #clock-cells = <0>; compatible = "fixed-clock"; clock-frequency = <52000000>; + }; + + ref_96m_clk: ref_96m { #clock-cells = <0>; + compatible = "fixed-clock"; + clock-frequency = <96000000>; + }; + + var_96m_clk: var_96m { + #clock-cells = <0>; + compatible = "fixed-clock"; + clock-frequency = <96000000>; + }; + + ref_104m_clk: ref_104m { + #clock-cells = <0>; + compatible = "fixed-clock"; + clock-frequency = <104000000>; + }; + + var_104m_clk: var_104m { + #clock-cells = <0>; + compatible = "fixed-clock"; + clock-frequency = <104000000>; + }; + + ref_156m_clk: ref_156m { + #clock-cells = <0>; + compatible = "fixed-clock"; + clock-frequency = <156000000>; + }; + + var_156m_clk: var_156m { + #clock-cells = <0>; + compatible = "fixed-clock"; + clock-frequency = <156000000>; + }; + + root_ccu: root_ccu { + compatible = BCM21664_DT_ROOT_CCU_COMPAT; + reg = <0x35001000 0x0f00>; + #clock-cells = <1>; + clock-output-names = "frac_1m"; + }; + + aon_ccu: aon_ccu { + compatible = BCM21664_DT_AON_CCU_COMPAT; + reg = <0x35002000 0x0f00>; + #clock-cells = <1>; + clock-output-names = "hub_timer"; + }; + + master_ccu: master_ccu { + compatible = BCM21664_DT_MASTER_CCU_COMPAT; + reg = <0x3f001000 0x0f00>; + #clock-cells = <1>; + clock-output-names = "sdio1", + "sdio2", + "sdio3", + "sdio4", + "sdio1_sleep", + "sdio2_sleep", + "sdio3_sleep", + "sdio4_sleep"; + }; + + slave_ccu: slave_ccu { + compatible = BCM21664_DT_SLAVE_CCU_COMPAT; + reg = <0x3e011000 0x0f00>; + #clock-cells = <1>; + clock-output-names = "uartb", + "uartb2", + "uartb3", + "bsc1", + "bsc2", + "bsc3", + "bsc4"; }; };
Signature · 1 line
1.9.1
Re: [PATCH v2 RESEND 5/5] ARM: dts: use real clocks for bcm21664
Quoted 5 lines · Alex Elder
Replace the "fake" fixed-rate clocks used previously for the bcm21664 family with "real" ones.
Signed-off-by Alex Elder <[email protected]>
Quoted 330 lines
--- arch/arm/boot/dts/bcm21664.dtsi | 190 +++++++++++++++++++++++++--------------- 1 file changed, 118 insertions(+), 72 deletions(-)arch/arm/boot/dts/bcm21664.dtsi +118
-72@@ -14,6 +14,8 @@ #include <dt-bindings/interrupt-controller/arm-gic.h> #include <dt-bindings/interrupt-controller/irq.h> +#include "dt-bindings/clock/bcm21664.h" + #include "skeleton.dtsi" / {@@ -43,7 +45,7 @@ compatible = "brcm,bcm21664-dw-apb-uart", "snps,dw-apb-uart"; status = "disabled"; reg = <0x3e000000 0x118>; - clocks = <&uartb_clk>; + clocks = <&slave_ccu BCM21664_SLAVE_CCU_UARTB>; interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>; reg-shift = <2>; reg-io-width = <4>;@@ -53,7 +55,7 @@ compatible = "brcm,bcm21664-dw-apb-uart", "snps,dw-apb-uart"; status = "disabled"; reg = <0x3e001000 0x118>; - clocks = <&uartb2_clk>; + clocks = <&slave_ccu BCM21664_SLAVE_CCU_UARTB2>; interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>; reg-shift = <2>; reg-io-width = <4>;@@ -63,7 +65,7 @@ compatible = "brcm,bcm21664-dw-apb-uart", "snps,dw-apb-uart"; status = "disabled"; reg = <0x3e002000 0x118>; - clocks = <&uartb3_clk>; + clocks = <&slave_ccu BCM21664_SLAVE_CCU_UARTB3>; interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>; reg-shift = <2>; reg-io-width = <4>;@@ -85,7 +87,7 @@ compatible = "brcm,kona-timer"; reg = <0x35006000 0x1c>; interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&hub_timer_clk>; + clocks = <&aon_ccu BCM21664_AON_CCU_HUB_TIMER>; }; gpio: gpio at 35003000 {@@ -106,7 +108,7 @@ compatible = "brcm,kona-sdhci"; reg = <0x3f180000 0x801c>; interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&sdio1_clk>; + clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO1>; status = "disabled"; };@@ -114,7 +116,7 @@ compatible = "brcm,kona-sdhci"; reg = <0x3f190000 0x801c>; interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&sdio2_clk>; + clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO2>; status = "disabled"; };@@ -122,7 +124,7 @@ compatible = "brcm,kona-sdhci"; reg = <0x3f1a0000 0x801c>; interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&sdio3_clk>; + clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO3>; status = "disabled"; };@@ -130,7 +132,7 @@ compatible = "brcm,kona-sdhci"; reg = <0x3f1b0000 0x801c>; interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&sdio4_clk>; + clocks = <&master_ccu BCM21664_MASTER_CCU_SDIO4>; status = "disabled"; };@@ -140,7 +142,7 @@ interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>; #address-cells = <1>; #size-cells = <0>; - clocks = <&bsc1_clk>; + clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC1>; status = "disabled"; };@@ -150,7 +152,7 @@ interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>; #address-cells = <1>; #size-cells = <0>; - clocks = <&bsc2_clk>; + clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC2>; status = "disabled"; };@@ -160,7 +162,7 @@ interrupts = <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>; #address-cells = <1>; #size-cells = <0>; - clocks = <&bsc3_clk>; + clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC3>; status = "disabled"; };@@ -170,105 +172,149 @@ interrupts = <GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH>; #address-cells = <1>; #size-cells = <0>; - clocks = <&bsc4_clk>; + clocks = <&slave_ccu BCM21664_SLAVE_CCU_BSC4>; status = "disabled"; }; clocks { - bsc1_clk: bsc1 { - compatible = "fixed-clock"; - clock-frequency = <13000000>; - #clock-cells = <0>; - }; + #address-cells = <1>; + #size-cells = <1>; + ranges; - bsc2_clk: bsc2 { - compatible = "fixed-clock"; - clock-frequency = <13000000>; + /* + * Fixed clocks are defined before CCUs whose + * clocks may depend on them. + */ + + ref_32k_clk: ref_32k { #clock-cells = <0>; + compatible = "fixed-clock"; + clock-frequency = <32768>; }; - bsc3_clk: bsc3 { - compatible = "fixed-clock"; - clock-frequency = <13000000>; + bbl_32k_clk: bbl_32k { #clock-cells = <0>; + compatible = "fixed-clock"; + clock-frequency = <32768>; }; - bsc4_clk: bsc4 { + ref_13m_clk: ref_13m { + #clock-cells = <0>; compatible = "fixed-clock"; clock-frequency = <13000000>; - #clock-cells = <0>; }; - pmu_bsc_clk: pmu_bsc { + var_13m_clk: var_13m { + #clock-cells = <0>; compatible = "fixed-clock"; clock-frequency = <13000000>; - #clock-cells = <0>; }; - hub_timer_clk: hub_timer { - compatible = "fixed-clock"; - clock-frequency = <32768>; + dft_19_5m_clk: dft_19_5m { #clock-cells = <0>; + compatible = "fixed-clock"; + clock-frequency = <19500000>; }; - pwm_clk: pwm { + ref_crystal_clk: ref_crystal { + #clock-cells = <0>; compatible = "fixed-clock"; clock-frequency = <26000000>; - #clock-cells = <0>; }; - sdio1_clk: sdio1 { - compatible = "fixed-clock"; - clock-frequency = <48000000>; + ref_52m_clk: ref_52m { #clock-cells = <0>; - }; - - sdio2_clk: sdio2 { compatible = "fixed-clock"; - clock-frequency = <48000000>; - #clock-cells = <0>; + clock-frequency = <52000000>; }; - sdio3_clk: sdio3 { - compatible = "fixed-clock"; - clock-frequency = <48000000>; + var_52m_clk: var_52m { #clock-cells = <0>; - }; - - sdio4_clk: sdio4 { - compatible = "fixed-clock"; - clock-frequency = <48000000>; - #clock-cells = <0>; - }; - - tmon_1m_clk: tmon_1m { compatible = "fixed-clock"; - clock-frequency = <1000000>; - #clock-cells = <0>; - }; - - uartb_clk: uartb { - compatible = "fixed-clock"; - clock-frequency = <13000000>; - #clock-cells = <0>; - }; - - uartb2_clk: uartb2 { - compatible = "fixed-clock"; - clock-frequency = <13000000>; - #clock-cells = <0>; - }; - - uartb3_clk: uartb3 { - compatible = "fixed-clock"; - clock-frequency = <13000000>; - #clock-cells = <0>; + clock-frequency = <52000000>; }; usb_otg_ahb_clk: usb_otg_ahb { + #clock-cells = <0>; compatible = "fixed-clock"; clock-frequency = <52000000>; + }; + + ref_96m_clk: ref_96m { #clock-cells = <0>; + compatible = "fixed-clock"; + clock-frequency = <96000000>; + }; + + var_96m_clk: var_96m { + #clock-cells = <0>; + compatible = "fixed-clock"; + clock-frequency = <96000000>; + }; + + ref_104m_clk: ref_104m { + #clock-cells = <0>; + compatible = "fixed-clock"; + clock-frequency = <104000000>; + }; + + var_104m_clk: var_104m { + #clock-cells = <0>; + compatible = "fixed-clock"; + clock-frequency = <104000000>; + }; + + ref_156m_clk: ref_156m { + #clock-cells = <0>; + compatible = "fixed-clock"; + clock-frequency = <156000000>; + }; + + var_156m_clk: var_156m { + #clock-cells = <0>; + compatible = "fixed-clock"; + clock-frequency = <156000000>; + }; + + root_ccu: root_ccu { + compatible = BCM21664_DT_ROOT_CCU_COMPAT; + reg = <0x35001000 0x0f00>; + #clock-cells = <1>; + clock-output-names = "frac_1m"; + }; + + aon_ccu: aon_ccu { + compatible = BCM21664_DT_AON_CCU_COMPAT; + reg = <0x35002000 0x0f00>; + #clock-cells = <1>; + clock-output-names = "hub_timer"; + }; + + master_ccu: master_ccu { + compatible = BCM21664_DT_MASTER_CCU_COMPAT; + reg = <0x3f001000 0x0f00>; + #clock-cells = <1>; + clock-output-names = "sdio1", + "sdio2", + "sdio3", + "sdio4", + "sdio1_sleep", + "sdio2_sleep", + "sdio3_sleep", + "sdio4_sleep"; + }; + + slave_ccu: slave_ccu { + compatible = BCM21664_DT_SLAVE_CCU_COMPAT; + reg = <0x3e011000 0x0f00>; + #clock-cells = <1>; + clock-output-names = "uartb", + "uartb2", + "uartb3", + "bsc1", + "bsc2", + "bsc3", + "bsc4"; }; };Signature · 1 line
1.9.1
Quoting Alex Elder (2014-04-21 14:26:22)
Quoted 9 lines
This is series has two parts. The first two patches are changes to the existing Broadcom Kona family clock code to prepare for the addition of support for another SoC, bcm21664.
The remaining three define the binding and code for bcm21664, and replace the use of "fake" clocks in the device tree with the real ones. This ends up being a fairly straightforward definition of the clocks on this SoC; the rest of the clock code is shared with other SoCs that use the Kona style clock system.
Hi Alex,
I'm happy to take only the clk patches or I can take the DT stuff as well if it gets some Acks. Let me know how you want it handled.
Regards,
Mike
Quoted 37 lines
This series depends on the following patch, which has been taken into the clk-fixes tree:
clk: bcm281xx: don't use unnamed structs or unions
https://lkml.org/lkml/2014/4/7/322In addition, it depends on the version 4 of the following series, just (re)posted for review:
clk: bcm281xx: updates
https://lkml.org/lkml/2014/4/8/485The patches in this series--based on the current linus/master branch plus the patches mentioned above--are available here:
http://git.linaro.org/git/landing-teams/working/broadcom/kernel.git Branch review/bcm21664-clock-v2Alex Elder (5):
clk: bcm281xx: move compatible string definitions
ARM: dts: revise kona clock binding document
ARM: dts: define clock binding for bcm21664
clk: bcm21664: use common clock framework
ARM: dts: use real clocks for bcm21664.../devicetree/bindings/clock/bcm-kona-clock.txt | 116 ++++++--- arch/arm/boot/dts/bcm21664.dtsi | 190 +++++++++----- drivers/clk/bcm/Kconfig | 2 +- drivers/clk/bcm/Makefile | 1 + drivers/clk/bcm/clk-bcm21664.c | 290 +++++++++++++++++++++ drivers/clk/bcm/clk-bcm281xx.c | 12 - include/dt-bindings/clock/bcm21664.h | 62 +++++ include/dt-bindings/clock/bcm281xx.h | 12 + 8 files changed, 565 insertions(+), 120 deletions(-) create mode 100644 drivers/clk/bcm/clk-bcm21664.c create mode 100644 include/dt-bindings/clock/bcm21664.hSignature · 1 line
1.9.1
Quoted 11 lines · Mike Turquette
Quoting Alex Elder (2014-04-21 14:26:22)
Quoted 9 lines
This is series has two parts. The first two patches are changes to the existing Broadcom Kona family clock code to prepare for the addition of support for another SoC, bcm21664.
The remaining three define the binding and code for bcm21664, and replace the use of "fake" clocks in the device tree with the real ones. This ends up being a fairly straightforward definition of the clocks on this SoC; the rest of the clock code is shared with other SoCs that use the Kona style clock system.
Quoted 4 lines
Hi Alex,
I'm happy to take only the clk patches or I can take the DT stuff as well if it gets some Acks. Let me know how you want it handled.
If all you need is an ack from Matt or Christian I'm sure they'll provide it. I don't care much but if you'll take it all I can just consider it done, so that would be my slight preference. The DT stuff has been out there for way past the requisite few weeks...
Thanks Mike.
-Alex
Quoted 40 lines
Regards,
MikeQuoted 37 lines
This series depends on the following patch, which has been taken into the clk-fixes tree:
clk: bcm281xx: don't use unnamed structs or unions
https://lkml.org/lkml/2014/4/7/322In addition, it depends on the version 4 of the following series, just (re)posted for review:
clk: bcm281xx: updates
https://lkml.org/lkml/2014/4/8/485The patches in this series--based on the current linus/master branch plus the patches mentioned above--are available here:
http://git.linaro.org/git/landing-teams/working/broadcom/kernel.git Branch review/bcm21664-clock-v2Alex Elder (5):
clk: bcm281xx: move compatible string definitions
ARM: dts: revise kona clock binding document
ARM: dts: define clock binding for bcm21664
clk: bcm21664: use common clock framework
ARM: dts: use real clocks for bcm21664.../devicetree/bindings/clock/bcm-kona-clock.txt | 116 ++++++--- arch/arm/boot/dts/bcm21664.dtsi | 190 +++++++++----- drivers/clk/bcm/Kconfig | 2 +- drivers/clk/bcm/Makefile | 1 + drivers/clk/bcm/clk-bcm21664.c | 290 +++++++++++++++++++++ drivers/clk/bcm/clk-bcm281xx.c | 12 - include/dt-bindings/clock/bcm21664.h | 62 +++++ include/dt-bindings/clock/bcm281xx.h | 12 + 8 files changed, 565 insertions(+), 120 deletions(-) create mode 100644 drivers/clk/bcm/clk-bcm21664.c create mode 100644 include/dt-bindings/clock/bcm21664.hSignature · 1 line
1.9.1
Quoted 11 lines · Mike Turquette
Quoting Alex Elder (2014-04-21 14:26:22)
Quoted 9 lines
This is series has two parts. The first two patches are changes to the existing Broadcom Kona family clock code to prepare for the addition of support for another SoC, bcm21664.
The remaining three define the binding and code for bcm21664, and replace the use of "fake" clocks in the device tree with the real ones. This ends up being a fairly straightforward definition of the clocks on this SoC; the rest of the clock code is shared with other SoCs that use the Kona style clock system.
Quoted 4 lines
Hi Alex,
I'm happy to take only the clk patches or I can take the DT stuff as well if it gets some Acks. Let me know how you want it handled.
Hi Mike,
Since there's a strict ordering requirement in this series (due to shared use of a DT include by the driver and dts) I'd like it if you could take the entire series through your tree to keep these together. I've acked the dts patch.
Thanks,
Matt
Quoted 36 lines
Quoted 36 lines
This series depends on the following patch, which has been taken into the clk-fixes tree:
clk: bcm281xx: don't use unnamed structs or unions
https://lkml.org/lkml/2014/4/7/322In addition, it depends on the version 4 of the following series, just (re)posted for review:
clk: bcm281xx: updates
https://lkml.org/lkml/2014/4/8/485The patches in this series--based on the current linus/master branch plus the patches mentioned above--are available here:
http://git.linaro.org/git/landing-teams/working/broadcom/kernel.git Branch review/bcm21664-clock-v2Alex Elder (5):
clk: bcm281xx: move compatible string definitions
ARM: dts: revise kona clock binding document
ARM: dts: define clock binding for bcm21664
clk: bcm21664: use common clock framework
ARM: dts: use real clocks for bcm21664.../devicetree/bindings/clock/bcm-kona-clock.txt | 116 ++++++--- arch/arm/boot/dts/bcm21664.dtsi | 190 +++++++++----- drivers/clk/bcm/Kconfig | 2 +- drivers/clk/bcm/Makefile | 1 + drivers/clk/bcm/clk-bcm21664.c | 290 +++++++++++++++++++++ drivers/clk/bcm/clk-bcm281xx.c | 12 - include/dt-bindings/clock/bcm21664.h | 62 +++++ include/dt-bindings/clock/bcm281xx.h | 12 + 8 files changed, 565 insertions(+), 120 deletions(-) create mode 100644 drivers/clk/bcm/clk-bcm21664.c create mode 100644 include/dt-bindings/clock/bcm21664.hSignature · 1 line
1.9.1
v2 cover clk: bcm21664: add common clock support
Quoting Matt Porter (2014-04-25 20:02:12)
Quoted 17 lines · Mike Turquette
Quoted 11 lines
Quoting Alex Elder (2014-04-21 14:26:22)
Quoted 9 lines
This is series has two parts. The first two patches are changes to the existing Broadcom Kona family clock code to prepare for the addition of support for another SoC, bcm21664.
The remaining three define the binding and code for bcm21664, and replace the use of "fake" clocks in the device tree with the real ones. This ends up being a fairly straightforward definition of the clocks on this SoC; the rest of the clock code is shared with other SoCs that use the Kona style clock system.
Quoted 4 lines
Hi Alex,
I'm happy to take only the clk patches or I can take the DT stuff as well if it gets some Acks. Let me know how you want it handled.
Quoted 6 lines
Hi Mike,
Since there's a strict ordering requirement in this series (due to shared use of a DT include by the driver and dts) I'd like it if you could take the entire series through your tree to keep these together. I've acked the dts patch.
No problem. Taken into clk-next with your Ack added to patch #5.
Regards,
Mike
Quoted 40 lines
Thanks,
MattQuoted 36 lines
Quoted 36 lines
This series depends on the following patch, which has been taken into the clk-fixes tree:
clk: bcm281xx: don't use unnamed structs or unions
https://lkml.org/lkml/2014/4/7/322In addition, it depends on the version 4 of the following series, just (re)posted for review:
clk: bcm281xx: updates
https://lkml.org/lkml/2014/4/8/485The patches in this series--based on the current linus/master branch plus the patches mentioned above--are available here:
http://git.linaro.org/git/landing-teams/working/broadcom/kernel.git Branch review/bcm21664-clock-v2Alex Elder (5):
clk: bcm281xx: move compatible string definitions
ARM: dts: revise kona clock binding document
ARM: dts: define clock binding for bcm21664
clk: bcm21664: use common clock framework
ARM: dts: use real clocks for bcm21664.../devicetree/bindings/clock/bcm-kona-clock.txt | 116 ++++++--- arch/arm/boot/dts/bcm21664.dtsi | 190 +++++++++----- drivers/clk/bcm/Kconfig | 2 +- drivers/clk/bcm/Makefile | 1 + drivers/clk/bcm/clk-bcm21664.c | 290 +++++++++++++++++++++ drivers/clk/bcm/clk-bcm281xx.c | 12 - include/dt-bindings/clock/bcm21664.h | 62 +++++ include/dt-bindings/clock/bcm281xx.h | 12 + 8 files changed, 565 insertions(+), 120 deletions(-) create mode 100644 drivers/clk/bcm/clk-bcm21664.c create mode 100644 include/dt-bindings/clock/bcm21664.hSignature · 1 line
1.9.1