All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/3] clk: Broadcom BCM63138 support
@ 2015-10-27 23:56 ` Florian Fainelli
  0 siblings, 0 replies; 6+ messages in thread
From: Florian Fainelli @ 2015-10-27 23:56 UTC (permalink / raw)
  To: linux-clk-u79uwXL29TY76Z2rM5mHXA
  Cc: bcm-kernel-feedback-list-dY08KVG/lbpWk0Htik3J/w,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	jonmason-dY08KVG/lbpWk0Htik3J/w, sboyd-sgV2jX0FEOL9JmXXK+q4OQ,
	mturquette-rdvid1DuHRBWk0Htik3J/w, linux-lFZ/pmaqli7XmaaqVzeoHQ,
	sbranden-dY08KVG/lbpWk0Htik3J/w, rjui-dY08KVG/lbpWk0Htik3J/w,
	Florian Fainelli

Hi all,

This patch series adds support for the Broadcom BCM63138 DSL SoCs
clocking framework.

Since the HW is identical to the one found in Broadcom iProc SoCs, but the
integration is different (obviously), there is still a new compatible string
introduced just in case we happen to find issues in the future.

This applies on top of clk/next as of
679c51cffc3b316bd89ecc91ef92603dd6d4fc68 ("clk: Add stubs for of_clk_*() APIs when CONFIG_OF=n")

Since there is an obvious dependency between patch 2 and 3, we can either
merge this through the Clock tree or via a future arm-soc pull requests
for Broadcom SoCs.

Florian Fainelli (3):
  clk: iproc: Extend binding to cover BCM63138
  clk: bcm: Add BCM63138 clock support
  ARM: dts: BCM63xx: Add ARMPLL device tree nodes

 .../bindings/clock/brcm,iproc-clocks.txt           |  5 +++
 arch/arm/boot/dts/bcm63138.dtsi                    | 39 ++++++++++++++++------
 drivers/clk/bcm/Kconfig                            | 10 ++++++
 drivers/clk/bcm/Makefile                           |  1 +
 drivers/clk/bcm/clk-bcm63xx.c                      | 22 ++++++++++++
 5 files changed, 67 insertions(+), 10 deletions(-)
 create mode 100644 drivers/clk/bcm/clk-bcm63xx.c

-- 
2.1.0

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v3 0/3] clk: Broadcom BCM63138 support
@ 2015-10-27 23:56 ` Florian Fainelli
  0 siblings, 0 replies; 6+ messages in thread
From: Florian Fainelli @ 2015-10-27 23:56 UTC (permalink / raw)
  To: linux-clk
  Cc: bcm-kernel-feedback-list, devicetree, jonmason, sboyd,
	mturquette, linux, sbranden, rjui, Florian Fainelli

Hi all,

This patch series adds support for the Broadcom BCM63138 DSL SoCs
clocking framework.

Since the HW is identical to the one found in Broadcom iProc SoCs, but the
integration is different (obviously), there is still a new compatible string
introduced just in case we happen to find issues in the future.

This applies on top of clk/next as of
679c51cffc3b316bd89ecc91ef92603dd6d4fc68 ("clk: Add stubs for of_clk_*() APIs when CONFIG_OF=n")

Since there is an obvious dependency between patch 2 and 3, we can either
merge this through the Clock tree or via a future arm-soc pull requests
for Broadcom SoCs.

Florian Fainelli (3):
  clk: iproc: Extend binding to cover BCM63138
  clk: bcm: Add BCM63138 clock support
  ARM: dts: BCM63xx: Add ARMPLL device tree nodes

 .../bindings/clock/brcm,iproc-clocks.txt           |  5 +++
 arch/arm/boot/dts/bcm63138.dtsi                    | 39 ++++++++++++++++------
 drivers/clk/bcm/Kconfig                            | 10 ++++++
 drivers/clk/bcm/Makefile                           |  1 +
 drivers/clk/bcm/clk-bcm63xx.c                      | 22 ++++++++++++
 5 files changed, 67 insertions(+), 10 deletions(-)
 create mode 100644 drivers/clk/bcm/clk-bcm63xx.c

-- 
2.1.0

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v3 1/3] clk: iproc: Extend binding to cover BCM63138
  2015-10-27 23:56 ` Florian Fainelli
  (?)
@ 2015-10-27 23:56 ` Florian Fainelli
  -1 siblings, 0 replies; 6+ messages in thread
From: Florian Fainelli @ 2015-10-27 23:56 UTC (permalink / raw)
  To: linux-clk
  Cc: bcm-kernel-feedback-list, devicetree, jonmason, sboyd,
	mturquette, linux, sbranden, rjui, Florian Fainelli

Broadcom BCM63138 DSL SoCs have the same ARMPLL clocking infrastructure
as the Cygnus and iProc chips, add a dedicated compatible string and
document that the ARMPLL node is a valid node for this chip.

Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
Changes in v3:

- added Rob's Acked-by tag

No changes in v2

 Documentation/devicetree/bindings/clock/brcm,iproc-clocks.txt | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/Documentation/devicetree/bindings/clock/brcm,iproc-clocks.txt b/Documentation/devicetree/bindings/clock/brcm,iproc-clocks.txt
index ede65a55e21b..0b35e71b39e8 100644
--- a/Documentation/devicetree/bindings/clock/brcm,iproc-clocks.txt
+++ b/Documentation/devicetree/bindings/clock/brcm,iproc-clocks.txt
@@ -208,3 +208,8 @@ These clock IDs are defined in:
     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"
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v3 2/3] clk: bcm: Add BCM63138 clock support
  2015-10-27 23:56 ` Florian Fainelli
  (?)
  (?)
@ 2015-10-27 23:56 ` Florian Fainelli
  -1 siblings, 0 replies; 6+ messages in thread
From: Florian Fainelli @ 2015-10-27 23:56 UTC (permalink / raw)
  To: linux-clk
  Cc: bcm-kernel-feedback-list, devicetree, jonmason, sboyd,
	mturquette, linux, sbranden, rjui, Florian Fainelli

BCM63138 has a simple clocking domain which is primarily the ARMPLL
clocking complex, from which the ARM (CPU), APB and AXI clocks would be
derived from.

Since the ARMPLL controller is entirely compatible with the iProc ARM
PLL, we just initialize it without additional parameters.

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
Changes in v3:

- made default depend on ARCH_BCM_63XX per Stephen Boyd's comment

Changes in v2:
- added COMPILE_TEST per Scott Branden's comment

 drivers/clk/bcm/Kconfig       | 10 ++++++++++
 drivers/clk/bcm/Makefile      |  1 +
 drivers/clk/bcm/clk-bcm63xx.c | 22 ++++++++++++++++++++++
 3 files changed, 33 insertions(+)
 create mode 100644 drivers/clk/bcm/clk-bcm63xx.c

diff --git a/drivers/clk/bcm/Kconfig b/drivers/clk/bcm/Kconfig
index 85260fb96b36..f2878459199a 100644
--- a/drivers/clk/bcm/Kconfig
+++ b/drivers/clk/bcm/Kconfig
@@ -1,3 +1,13 @@
+config CLK_BCM_63XX
+	bool "Broadcom BCM63xx clock support"
+	depends on ARCH_BCM_63XX || COMPILE_TEST
+	depends on COMMON_CLK
+	select COMMON_CLK_IPROC
+	default ARCH_BCM_63XX
+	help
+	  Enable common clock framework support for Broadcom BCM63xx DSL SoCs
+	  based on the ARM architecture
+
 config CLK_BCM_KONA
 	bool "Broadcom Kona CCU clock support"
 	depends on ARCH_BCM_MOBILE || COMPILE_TEST
diff --git a/drivers/clk/bcm/Makefile b/drivers/clk/bcm/Makefile
index 3fc95060d875..247c26750d8b 100644
--- a/drivers/clk/bcm/Makefile
+++ b/drivers/clk/bcm/Makefile
@@ -1,3 +1,4 @@
+obj-$(CONFIG_CLK_BCM_63XX)	+= clk-bcm63xx.o
 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
diff --git a/drivers/clk/bcm/clk-bcm63xx.c b/drivers/clk/bcm/clk-bcm63xx.c
new file mode 100644
index 000000000000..fbc17ae5ff2b
--- /dev/null
+++ b/drivers/clk/bcm/clk-bcm63xx.c
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2015 Broadcom Corporation
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation version 2.
+ *
+ * This program is distributed "as is" WITHOUT ANY WARRANTY of any
+ * kind, whether express or implied; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+#include <linux/init.h>
+#include <linux/clk-provider.h>
+#include <linux/of.h>
+#include "clk-iproc.h"
+
+static void __init bcm63138_armpll_init(struct device_node *node)
+{
+	iproc_armpll_setup(node);
+}
+CLK_OF_DECLARE(bcm63138_armpll, "brcm,bcm63138-armpll", bcm63138_armpll_init);
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v3 3/3] ARM: dts: BCM63xx: Add ARMPLL device tree nodes
  2015-10-27 23:56 ` Florian Fainelli
                   ` (2 preceding siblings ...)
  (?)
@ 2015-10-27 23:56 ` Florian Fainelli
  2015-10-28 23:40   ` Florian Fainelli
  -1 siblings, 1 reply; 6+ messages in thread
From: Florian Fainelli @ 2015-10-27 23:56 UTC (permalink / raw)
  To: linux-clk
  Cc: bcm-kernel-feedback-list, devicetree, jonmason, sboyd,
	mturquette, linux, sbranden, rjui, Florian Fainelli

Add the ARM PLL controller which comes standard with the Cortex-A9 found
on the BCM63138 SoCs. This is the same controller as the one found in
the Broadcom iProc architecture, however, we have a separate compatible
string to indicate the integration difference.

While at it, properly rename references to the 50Mhz clock which is in
fact a crystal/oscillator and updates references to it.

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
No changes in v2 or v3

 arch/arm/boot/dts/bcm63138.dtsi | 39 +++++++++++++++++++++++++++++----------
 1 file changed, 29 insertions(+), 10 deletions(-)

diff --git a/arch/arm/boot/dts/bcm63138.dtsi b/arch/arm/boot/dts/bcm63138.dtsi
index 34cd64051250..c146325eebdb 100644
--- a/arch/arm/boot/dts/bcm63138.dtsi
+++ b/arch/arm/boot/dts/bcm63138.dtsi
@@ -43,17 +43,29 @@
 		#address-cells = <1>;
 		#size-cells = <0>;
 
-		arm_timer_clk: arm_timer_clk {
+		osc: oscillator {
 			#clock-cells = <0>;
 			compatible = "fixed-clock";
-			clock-frequency = <500000000>;
+			clock-frequency = <50000000>;
+			clock-output-names = "periph";
 		};
 
-		periph_clk: periph_clk {
+		/* peripheral clock for system timer */
+		axi_clk: axi_clk {
 			#clock-cells = <0>;
-			compatible = "fixed-clock";
-			clock-frequency = <50000000>;
-			clock-output-names = "periph";
+			compatible = "fixed-factor-clock";
+			clocks = <&armpll>;
+			clock-div = <2>;
+			clock-mult = <1>;
+		};
+
+		/* APB bus clock */
+		apb_clk: apb_clk {
+			#clock-cells = <0>;
+			compatible = "fixed-factor-clock";
+			clocks = <&armpll>;
+			clock-div = <4>;
+			clock-mult = <1>;
 		};
 	};
 
@@ -93,14 +105,14 @@
 			compatible = "arm,cortex-a9-global-timer";
 			reg = <0x1e200 0x20>;
 			interrupts = <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&arm_timer_clk>;
+			clocks = <&axi_clk>;
 		};
 
 		local_timer: local-timer@1e600 {
 			compatible = "arm,cortex-a9-twd-timer";
 			reg = <0x1e600 0x20>;
 			interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&arm_timer_clk>;
+			clocks = <&axi_clk>;
 		};
 
 		twd_watchdog: watchdog@1e620 {
@@ -109,6 +121,13 @@
 			interrupts = <GIC_PPI 14 IRQ_TYPE_LEVEL_HIGH>;
 		};
 
+		armpll: armpll {
+			#clock-cells = <0>;
+			compatible = "brcm,bcm63138-armpll";
+			clocks = <&osc>;
+			reg = <0x20000 0xf00>;
+		};
+
 		pmb0: reset-controller@4800c0 {
 			compatible = "brcm,bcm63138-pmb";
 			reg = <0x4800c0 0x10>;
@@ -138,7 +157,7 @@
 			compatible = "brcm,bcm6345-uart";
 			reg = <0x600 0x1b>;
 			interrupts = <GIC_SPI 32 0>;
-			clocks = <&periph_clk>;
+			clocks = <&osc>;
 			clock-names = "periph";
 			status = "disabled";
 		};
@@ -147,7 +166,7 @@
 			compatible = "brcm,bcm6345-uart";
 			reg = <0x620 0x1b>;
 			interrupts = <GIC_SPI 33 0>;
-			clocks = <&periph_clk>;
+			clocks = <&osc>;
 			clock-names = "periph";
 			status = "disabled";
 		};
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v3 3/3] ARM: dts: BCM63xx: Add ARMPLL device tree nodes
  2015-10-27 23:56 ` [PATCH v3 3/3] ARM: dts: BCM63xx: Add ARMPLL device tree nodes Florian Fainelli
@ 2015-10-28 23:40   ` Florian Fainelli
  0 siblings, 0 replies; 6+ messages in thread
From: Florian Fainelli @ 2015-10-28 23:40 UTC (permalink / raw)
  To: Florian Fainelli, linux-clk
  Cc: bcm-kernel-feedback-list, devicetree, jonmason, sboyd,
	mturquette, linux, sbranden, rjui

On 27/10/15 16:56, Florian Fainelli wrote:
> Add the ARM PLL controller which comes standard with the Cortex-A9 found
> on the BCM63138 SoCs. This is the same controller as the one found in
> the Broadcom iProc architecture, however, we have a separate compatible
> string to indicate the integration difference.
> 
> While at it, properly rename references to the 50Mhz clock which is in
> fact a crystal/oscillator and updates references to it.

The periph_clk is actually the correct one, and is different from the
oscillator, I will resubmit these patches shortly to better match the
chip clocking.

> 
> Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
> ---
> No changes in v2 or v3
> 
>  arch/arm/boot/dts/bcm63138.dtsi | 39 +++++++++++++++++++++++++++++----------
>  1 file changed, 29 insertions(+), 10 deletions(-)
> 
> diff --git a/arch/arm/boot/dts/bcm63138.dtsi b/arch/arm/boot/dts/bcm63138.dtsi
> index 34cd64051250..c146325eebdb 100644
> --- a/arch/arm/boot/dts/bcm63138.dtsi
> +++ b/arch/arm/boot/dts/bcm63138.dtsi
> @@ -43,17 +43,29 @@
>  		#address-cells = <1>;
>  		#size-cells = <0>;
>  
> -		arm_timer_clk: arm_timer_clk {
> +		osc: oscillator {
>  			#clock-cells = <0>;
>  			compatible = "fixed-clock";
> -			clock-frequency = <500000000>;
> +			clock-frequency = <50000000>;
> +			clock-output-names = "periph";
>  		};
>  
> -		periph_clk: periph_clk {
> +		/* peripheral clock for system timer */
> +		axi_clk: axi_clk {
>  			#clock-cells = <0>;
> -			compatible = "fixed-clock";
> -			clock-frequency = <50000000>;
> -			clock-output-names = "periph";
> +			compatible = "fixed-factor-clock";
> +			clocks = <&armpll>;
> +			clock-div = <2>;
> +			clock-mult = <1>;
> +		};
> +
> +		/* APB bus clock */
> +		apb_clk: apb_clk {
> +			#clock-cells = <0>;
> +			compatible = "fixed-factor-clock";
> +			clocks = <&armpll>;
> +			clock-div = <4>;
> +			clock-mult = <1>;
>  		};
>  	};
>  
> @@ -93,14 +105,14 @@
>  			compatible = "arm,cortex-a9-global-timer";
>  			reg = <0x1e200 0x20>;
>  			interrupts = <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH>;
> -			clocks = <&arm_timer_clk>;
> +			clocks = <&axi_clk>;
>  		};
>  
>  		local_timer: local-timer@1e600 {
>  			compatible = "arm,cortex-a9-twd-timer";
>  			reg = <0x1e600 0x20>;
>  			interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>;
> -			clocks = <&arm_timer_clk>;
> +			clocks = <&axi_clk>;
>  		};
>  
>  		twd_watchdog: watchdog@1e620 {
> @@ -109,6 +121,13 @@
>  			interrupts = <GIC_PPI 14 IRQ_TYPE_LEVEL_HIGH>;
>  		};
>  
> +		armpll: armpll {
> +			#clock-cells = <0>;
> +			compatible = "brcm,bcm63138-armpll";
> +			clocks = <&osc>;
> +			reg = <0x20000 0xf00>;
> +		};
> +
>  		pmb0: reset-controller@4800c0 {
>  			compatible = "brcm,bcm63138-pmb";
>  			reg = <0x4800c0 0x10>;
> @@ -138,7 +157,7 @@
>  			compatible = "brcm,bcm6345-uart";
>  			reg = <0x600 0x1b>;
>  			interrupts = <GIC_SPI 32 0>;
> -			clocks = <&periph_clk>;
> +			clocks = <&osc>;
>  			clock-names = "periph";
>  			status = "disabled";
>  		};
> @@ -147,7 +166,7 @@
>  			compatible = "brcm,bcm6345-uart";
>  			reg = <0x620 0x1b>;
>  			interrupts = <GIC_SPI 33 0>;
> -			clocks = <&periph_clk>;
> +			clocks = <&osc>;
>  			clock-names = "periph";
>  			status = "disabled";
>  		};
> 


-- 
Florian

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2015-10-28 23:40 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-10-27 23:56 [PATCH v3 0/3] clk: Broadcom BCM63138 support Florian Fainelli
2015-10-27 23:56 ` Florian Fainelli
2015-10-27 23:56 ` [PATCH v3 1/3] clk: iproc: Extend binding to cover BCM63138 Florian Fainelli
2015-10-27 23:56 ` [PATCH v3 2/3] clk: bcm: Add BCM63138 clock support Florian Fainelli
2015-10-27 23:56 ` [PATCH v3 3/3] ARM: dts: BCM63xx: Add ARMPLL device tree nodes Florian Fainelli
2015-10-28 23:40   ` Florian Fainelli

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.