* [PATCH v2 01/11] dts: versatile: add missing irq controller properties
2014-05-29 22:40 [PATCH v2 00/11] ARM: Versatile irq and clock DT support Rob Herring
@ 2014-05-29 22:40 ` Rob Herring
2014-05-29 22:40 ` [PATCH v2 02/11] irqchip: versatile-fpga: Add IRQCHIP_DECLARE support Rob Herring
` (10 subsequent siblings)
11 siblings, 0 replies; 27+ messages in thread
From: Rob Herring @ 2014-05-29 22:40 UTC (permalink / raw)
To: linux-arm-kernel
From: Rob Herring <robh@kernel.org>
Add valid-mask and clear-mask properties to the versatile dts so the
platform code doing the same thing can be removed.
Signed-off-by: Rob Herring <robh@kernel.org>
Acked-by: Arnd Bergmann <arnd@arndb.de>
---
v2:
- Drop the passthru-mask property
arch/arm/boot/dts/versatile-ab.dts | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/arm/boot/dts/versatile-ab.dts b/arch/arm/boot/dts/versatile-ab.dts
index e01e5a0..5dc3be7 100644
--- a/arch/arm/boot/dts/versatile-ab.dts
+++ b/arch/arm/boot/dts/versatile-ab.dts
@@ -59,6 +59,8 @@
interrupt-controller;
#interrupt-cells = <1>;
reg = <0x10140000 0x1000>;
+ clear-mask = <0xffffffff>;
+ valid-mask = <0xffffffff>;
};
sic: intc at 10003000 {
@@ -68,6 +70,8 @@
reg = <0x10003000 0x1000>;
interrupt-parent = <&vic>;
interrupts = <31>; /* Cascaded to vic */
+ clear-mask = <0xffffffff>;
+ valid-mask = <0xffc203f8>;
};
dma at 10130000 {
--
1.9.1
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v2 02/11] irqchip: versatile-fpga: Add IRQCHIP_DECLARE support
2014-05-29 22:40 [PATCH v2 00/11] ARM: Versatile irq and clock DT support Rob Herring
2014-05-29 22:40 ` [PATCH v2 01/11] dts: versatile: add missing irq controller properties Rob Herring
@ 2014-05-29 22:40 ` Rob Herring
2014-05-30 9:43 ` Linus Walleij
2014-05-29 22:40 ` [PATCH v2 03/11] irqchip: versatile-fpga: add support for arm, versatile-sic Rob Herring
` (9 subsequent siblings)
11 siblings, 1 reply; 27+ messages in thread
From: Rob Herring @ 2014-05-29 22:40 UTC (permalink / raw)
To: linux-arm-kernel
From: Rob Herring <robh@kernel.org>
Add support for initialization using IRQCHIP_DECLARE. This also requires
that the controller initialization set the handle_irq function pointer
itself when it is a primary controller.
Signed-off-by: Rob Herring <robh@kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Jason Cooper <jason@lakedaemon.net>
---
v2:
- New patch
drivers/irqchip/irq-versatile-fpga.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/irqchip/irq-versatile-fpga.c b/drivers/irqchip/irq-versatile-fpga.c
index 3ae2bb8..8e0bb56 100644
--- a/drivers/irqchip/irq-versatile-fpga.c
+++ b/drivers/irqchip/irq-versatile-fpga.c
@@ -14,6 +14,8 @@
#include <asm/exception.h>
#include <asm/mach/irq.h>
+#include "irqchip.h"
+
#define IRQ_STATUS 0x00
#define IRQ_RAW_STATUS 0x04
#define IRQ_ENABLE_SET 0x08
@@ -201,8 +203,10 @@ int __init fpga_irq_of_init(struct device_node *node,
/* Some chips are cascaded from a parent IRQ */
parent_irq = irq_of_parse_and_map(node, 0);
- if (!parent_irq)
+ if (!parent_irq) {
+ set_handle_irq(fpga_handle_irq);
parent_irq = -1;
+ }
fpga_irq_init(base, node->name, 0, parent_irq, valid_mask, node);
@@ -211,4 +215,5 @@ int __init fpga_irq_of_init(struct device_node *node,
return 0;
}
+IRQCHIP_DECLARE(arm_fpga, "arm,versatile-fpga-irq", fpga_irq_of_init);
#endif
--
1.9.1
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v2 02/11] irqchip: versatile-fpga: Add IRQCHIP_DECLARE support
2014-05-29 22:40 ` [PATCH v2 02/11] irqchip: versatile-fpga: Add IRQCHIP_DECLARE support Rob Herring
@ 2014-05-30 9:43 ` Linus Walleij
0 siblings, 0 replies; 27+ messages in thread
From: Linus Walleij @ 2014-05-30 9:43 UTC (permalink / raw)
To: linux-arm-kernel
On Fri, May 30, 2014 at 12:40 AM, Rob Herring <robherring2@gmail.com> wrote:
> From: Rob Herring <robh@kernel.org>
>
> Add support for initialization using IRQCHIP_DECLARE. This also requires
> that the controller initialization set the handle_irq function pointer
> itself when it is a primary controller.
>
> Signed-off-by: Rob Herring <robh@kernel.org>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Jason Cooper <jason@lakedaemon.net>
> ---
> v2:
> - New patch
I just assume you know what you're doing ;-)
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH v2 03/11] irqchip: versatile-fpga: add support for arm, versatile-sic
2014-05-29 22:40 [PATCH v2 00/11] ARM: Versatile irq and clock DT support Rob Herring
2014-05-29 22:40 ` [PATCH v2 01/11] dts: versatile: add missing irq controller properties Rob Herring
2014-05-29 22:40 ` [PATCH v2 02/11] irqchip: versatile-fpga: Add IRQCHIP_DECLARE support Rob Herring
@ 2014-05-29 22:40 ` Rob Herring
2014-05-30 9:46 ` Linus Walleij
2014-05-29 22:40 ` [PATCH v2 04/11] ARM: integrator: convert to use irqchip_init Rob Herring
` (8 subsequent siblings)
11 siblings, 1 reply; 27+ messages in thread
From: Rob Herring @ 2014-05-29 22:40 UTC (permalink / raw)
To: linux-arm-kernel
From: Rob Herring <robh@kernel.org>
The secondary controller on ARM Versatile AB and PB is similar to
other ARM platforms, but has a pass-thru register to connect some
interrupts directly to interrupt inputs on the primary interrupt
controller. The PIC_ENABLES register needs to be configured for
proper operation when the matching node is arm,versatile-sic. Add the
the necessary IRQCHIP_DECLARE as well.
Signed-off-by: Rob Herring <robh@kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Arnd Bergmann <arnd@arndb.de>
---
v2:
- Rework to use the compatible string for pass-thru register setup.
drivers/irqchip/irq-versatile-fpga.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/irqchip/irq-versatile-fpga.c b/drivers/irqchip/irq-versatile-fpga.c
index 8e0bb56..90bf131 100644
--- a/drivers/irqchip/irq-versatile-fpga.c
+++ b/drivers/irqchip/irq-versatile-fpga.c
@@ -28,6 +28,8 @@
#define FIQ_ENABLE_SET 0x28
#define FIQ_ENABLE_CLEAR 0x2C
+#define PIC_ENABLES 0x20 /* set interrupt pass through bits */
+
/**
* struct fpga_irq_data - irq data container for the FPGA IRQ controller
* @base: memory offset in virtual memory
@@ -213,7 +215,15 @@ int __init fpga_irq_of_init(struct device_node *node,
writel(clear_mask, base + IRQ_ENABLE_CLEAR);
writel(clear_mask, base + FIQ_ENABLE_CLEAR);
+ /*
+ * On Versatile AB/PB, some secondary interrupts have a direct
+ * pass-thru to the primary controller which need to be enabled.
+ */
+ if (of_device_is_compatible(node, "arm,versatile-sic"))
+ writel(0xffd00000, base + PIC_ENABLES);
+
return 0;
}
IRQCHIP_DECLARE(arm_fpga, "arm,versatile-fpga-irq", fpga_irq_of_init);
+IRQCHIP_DECLARE(arm_fpga_sic, "arm,versatile-sic", fpga_irq_of_init);
#endif
--
1.9.1
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v2 03/11] irqchip: versatile-fpga: add support for arm, versatile-sic
2014-05-29 22:40 ` [PATCH v2 03/11] irqchip: versatile-fpga: add support for arm, versatile-sic Rob Herring
@ 2014-05-30 9:46 ` Linus Walleij
0 siblings, 0 replies; 27+ messages in thread
From: Linus Walleij @ 2014-05-30 9:46 UTC (permalink / raw)
To: linux-arm-kernel
On Fri, May 30, 2014 at 12:40 AM, Rob Herring <robherring2@gmail.com> wrote:
> From: Rob Herring <robh@kernel.org>
>
> The secondary controller on ARM Versatile AB and PB is similar to
> other ARM platforms, but has a pass-thru register to connect some
> interrupts directly to interrupt inputs on the primary interrupt
> controller. The PIC_ENABLES register needs to be configured for
> proper operation when the matching node is arm,versatile-sic. Add the
> the necessary IRQCHIP_DECLARE as well.
>
> Signed-off-by: Rob Herring <robh@kernel.org>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Jason Cooper <jason@lakedaemon.net>
> Cc: Arnd Bergmann <arnd@arndb.de>
> ---
> v2:
> - Rework to use the compatible string for pass-thru register setup.
Nice!
> + /*
> + * On Versatile AB/PB, some secondary interrupts have a direct
> + * pass-thru to the primary controller which need to be enabled.
> + */
> + if (of_device_is_compatible(node, "arm,versatile-sic"))
> + writel(0xffd00000, base + PIC_ENABLES);
Maybe mention that we pass thru IRQs 20 and 22 thru 31 and
why exactly these IRQs?
Anyway:
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH v2 04/11] ARM: integrator: convert to use irqchip_init
2014-05-29 22:40 [PATCH v2 00/11] ARM: Versatile irq and clock DT support Rob Herring
` (2 preceding siblings ...)
2014-05-29 22:40 ` [PATCH v2 03/11] irqchip: versatile-fpga: add support for arm, versatile-sic Rob Herring
@ 2014-05-29 22:40 ` Rob Herring
2014-05-30 9:47 ` Linus Walleij
2014-05-29 22:40 ` [PATCH v2 05/11] ARM: versatile: remove init_irq hook for DT boot Rob Herring
` (7 subsequent siblings)
11 siblings, 1 reply; 27+ messages in thread
From: Rob Herring @ 2014-05-29 22:40 UTC (permalink / raw)
To: linux-arm-kernel
From: Rob Herring <robh@kernel.org>
Now that versatile-fpga irqchip has IRQCHIP_DECLARE support, the interrupt
related initialization can be removed.
Signed-off-by: Rob Herring <robh@kernel.org>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Linus Walleij <linus.walleij@linaro.org>
---
v2:
- New patch
arch/arm/mach-integrator/integrator_ap.c | 10 ++--------
arch/arm/mach-integrator/integrator_cp.c | 10 ++--------
2 files changed, 4 insertions(+), 16 deletions(-)
diff --git a/arch/arm/mach-integrator/integrator_ap.c b/arch/arm/mach-integrator/integrator_ap.c
index dd0cc67..645da16 100644
--- a/arch/arm/mach-integrator/integrator_ap.c
+++ b/arch/arm/mach-integrator/integrator_ap.c
@@ -31,7 +31,7 @@
#include <linux/clockchips.h>
#include <linux/interrupt.h>
#include <linux/io.h>
-#include <linux/irqchip/versatile-fpga.h>
+#include <linux/irqchip.h>
#include <linux/mtd/physmap.h>
#include <linux/clk.h>
#include <linux/platform_data/clk-integrator.h>
@@ -439,15 +439,10 @@ static void __init ap_of_timer_init(void)
integrator_clockevent_init(rate, base, irq);
}
-static const struct of_device_id fpga_irq_of_match[] __initconst = {
- { .compatible = "arm,versatile-fpga-irq", .data = fpga_irq_of_init, },
- { /* Sentinel */ }
-};
-
static void __init ap_init_irq_of(void)
{
cm_init();
- of_irq_init(fpga_irq_of_match);
+ irqchip_init();
}
/* For the Device Tree, add in the UART callbacks as AUXDATA */
@@ -570,7 +565,6 @@ DT_MACHINE_START(INTEGRATOR_AP_DT, "ARM Integrator/AP (Device Tree)")
.map_io = ap_map_io,
.init_early = ap_init_early,
.init_irq = ap_init_irq_of,
- .handle_irq = fpga_handle_irq,
.init_time = ap_of_timer_init,
.init_machine = ap_init_of,
.restart = integrator_restart,
diff --git a/arch/arm/mach-integrator/integrator_cp.c b/arch/arm/mach-integrator/integrator_cp.c
index a938242..7ade590 100644
--- a/arch/arm/mach-integrator/integrator_cp.c
+++ b/arch/arm/mach-integrator/integrator_cp.c
@@ -20,7 +20,7 @@
#include <linux/amba/clcd.h>
#include <linux/amba/mmci.h>
#include <linux/io.h>
-#include <linux/irqchip/versatile-fpga.h>
+#include <linux/irqchip.h>
#include <linux/gfp.h>
#include <linux/mtd/physmap.h>
#include <linux/of_irq.h>
@@ -235,15 +235,10 @@ static void __init intcp_init_early(void)
sched_clock_register(intcp_read_sched_clock, 32, 24000000);
}
-static const struct of_device_id fpga_irq_of_match[] __initconst = {
- { .compatible = "arm,versatile-fpga-irq", .data = fpga_irq_of_init, },
- { /* Sentinel */ }
-};
-
static void __init intcp_init_irq_of(void)
{
cm_init();
- of_irq_init(fpga_irq_of_match);
+ irqchip_init();
}
/*
@@ -340,7 +335,6 @@ DT_MACHINE_START(INTEGRATOR_CP_DT, "ARM Integrator/CP (Device Tree)")
.map_io = intcp_map_io,
.init_early = intcp_init_early,
.init_irq = intcp_init_irq_of,
- .handle_irq = fpga_handle_irq,
.init_machine = intcp_init_of,
.restart = integrator_restart,
.dt_compat = intcp_dt_board_compat,
--
1.9.1
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v2 05/11] ARM: versatile: remove init_irq hook for DT boot
2014-05-29 22:40 [PATCH v2 00/11] ARM: Versatile irq and clock DT support Rob Herring
` (3 preceding siblings ...)
2014-05-29 22:40 ` [PATCH v2 04/11] ARM: integrator: convert to use irqchip_init Rob Herring
@ 2014-05-29 22:40 ` Rob Herring
2014-05-30 9:48 ` Linus Walleij
2014-05-29 22:40 ` [PATCH v2 06/11] dts: versatile: add pl180 compatible strings Rob Herring
` (6 subsequent siblings)
11 siblings, 1 reply; 27+ messages in thread
From: Rob Herring @ 2014-05-29 22:40 UTC (permalink / raw)
To: linux-arm-kernel
From: Rob Herring <robh@kernel.org>
Now that versatile's irqchips are initialized from DT, the init_irq hook
can be removed.
Signed-off-by: Rob Herring <robh@kernel.org>
Acked-by: Arnd Bergmann <arnd@arndb.de>
---
v2:
- no change
arch/arm/mach-versatile/versatile_dt.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/arch/arm/mach-versatile/versatile_dt.c b/arch/arm/mach-versatile/versatile_dt.c
index 3621b00..9f9bc61 100644
--- a/arch/arm/mach-versatile/versatile_dt.c
+++ b/arch/arm/mach-versatile/versatile_dt.c
@@ -44,7 +44,6 @@ static const char *versatile_dt_match[] __initconst = {
DT_MACHINE_START(VERSATILE_PB, "ARM-Versatile (Device Tree Support)")
.map_io = versatile_map_io,
.init_early = versatile_init_early,
- .init_irq = versatile_init_irq,
.init_machine = versatile_dt_init,
.dt_compat = versatile_dt_match,
.restart = versatile_restart,
--
1.9.1
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v2 06/11] dts: versatile: add pl180 compatible strings
2014-05-29 22:40 [PATCH v2 00/11] ARM: Versatile irq and clock DT support Rob Herring
` (4 preceding siblings ...)
2014-05-29 22:40 ` [PATCH v2 05/11] ARM: versatile: remove init_irq hook for DT boot Rob Herring
@ 2014-05-29 22:40 ` Rob Herring
2014-05-29 22:40 ` [PATCH v2 07/11] dt/bindings: arm-boards: add binding for Versatile core module Rob Herring
` (5 subsequent siblings)
11 siblings, 0 replies; 27+ messages in thread
From: Rob Herring @ 2014-05-29 22:40 UTC (permalink / raw)
To: linux-arm-kernel
From: Rob Herring <robh@kernel.org>
While not needed for probing, add the "arm,pl180" compatible string for
completeness.
Signed-off-by: Rob Herring <robh@kernel.org>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
---
v2:
- no change
arch/arm/boot/dts/versatile-ab.dts | 2 +-
arch/arm/boot/dts/versatile-pb.dts | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm/boot/dts/versatile-ab.dts b/arch/arm/boot/dts/versatile-ab.dts
index 5dc3be7..85c7b2b 100644
--- a/arch/arm/boot/dts/versatile-ab.dts
+++ b/arch/arm/boot/dts/versatile-ab.dts
@@ -187,7 +187,7 @@
interrupts = <24>;
};
mmc at 5000 {
- compatible = "arm,primecell";
+ compatible = "arm,pl180", "arm,primecell";
reg = < 0x5000 0x1000>;
interrupts-extended = <&vic 22 &sic 2>;
};
diff --git a/arch/arm/boot/dts/versatile-pb.dts b/arch/arm/boot/dts/versatile-pb.dts
index 65f6577..a428541 100644
--- a/arch/arm/boot/dts/versatile-pb.dts
+++ b/arch/arm/boot/dts/versatile-pb.dts
@@ -39,7 +39,7 @@
interrupts = <5>;
};
mmc at b000 {
- compatible = "arm,primecell";
+ compatible = "arm,pl180", "arm,primecell";
reg = <0xb000 0x1000>;
interrupts-extended = <&vic 23 &sic 2>;
};
--
1.9.1
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v2 07/11] dt/bindings: arm-boards: add binding for Versatile core module
2014-05-29 22:40 [PATCH v2 00/11] ARM: Versatile irq and clock DT support Rob Herring
` (5 preceding siblings ...)
2014-05-29 22:40 ` [PATCH v2 06/11] dts: versatile: add pl180 compatible strings Rob Herring
@ 2014-05-29 22:40 ` Rob Herring
2014-05-30 9:49 ` Linus Walleij
2014-05-29 22:40 ` [PATCH v2 08/11] dt/bindings: add compatible string for versatile osc clock Rob Herring
` (4 subsequent siblings)
11 siblings, 1 reply; 27+ messages in thread
From: Rob Herring @ 2014-05-29 22:40 UTC (permalink / raw)
To: linux-arm-kernel
From: Rob Herring <robh@kernel.org>
Add binding for the core module found on ARM versatile AB and PB boards.
Signed-off-by: Rob Herring <robh@kernel.org>
Cc: Pawel Moll <pawel.moll@arm.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Ian Campbell <ijc+devicetree@hellion.org.uk>
Cc: Kumar Gala <galak@codeaurora.org>
Acked-by: Arnd Bergmann <arnd@arndb.de>
---
v2:
- no change
Documentation/devicetree/bindings/arm/arm-boards | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/Documentation/devicetree/bindings/arm/arm-boards b/Documentation/devicetree/bindings/arm/arm-boards
index 3509707..c554ed3 100644
--- a/Documentation/devicetree/bindings/arm/arm-boards
+++ b/Documentation/devicetree/bindings/arm/arm-boards
@@ -86,3 +86,9 @@ Interrupt controllers:
compatible = "arm,versatile-sic";
interrupt-controller;
#interrupt-cells = <1>;
+
+Required nodes:
+
+- core-module: the root node to the Versatile platforms must have
+ a core-module with regs and the compatible strings
+ "arm,core-module-versatile", "syscon"
--
1.9.1
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v2 07/11] dt/bindings: arm-boards: add binding for Versatile core module
2014-05-29 22:40 ` [PATCH v2 07/11] dt/bindings: arm-boards: add binding for Versatile core module Rob Herring
@ 2014-05-30 9:49 ` Linus Walleij
0 siblings, 0 replies; 27+ messages in thread
From: Linus Walleij @ 2014-05-30 9:49 UTC (permalink / raw)
To: linux-arm-kernel
On Fri, May 30, 2014 at 12:40 AM, Rob Herring <robherring2@gmail.com> wrote:
> From: Rob Herring <robh@kernel.org>
>
> Add binding for the core module found on ARM versatile AB and PB boards.
>
> Signed-off-by: Rob Herring <robh@kernel.org>
> Cc: Pawel Moll <pawel.moll@arm.com>
> Cc: Mark Rutland <mark.rutland@arm.com>
> Cc: Ian Campbell <ijc+devicetree@hellion.org.uk>
> Cc: Kumar Gala <galak@codeaurora.org>
> Acked-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Makes me wonder if I should abstract out the Integrator core
modules too. Oh well, put on my TODO...
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH v2 08/11] dt/bindings: add compatible string for versatile osc clock
2014-05-29 22:40 [PATCH v2 00/11] ARM: Versatile irq and clock DT support Rob Herring
` (6 preceding siblings ...)
2014-05-29 22:40 ` [PATCH v2 07/11] dt/bindings: arm-boards: add binding for Versatile core module Rob Herring
@ 2014-05-29 22:40 ` Rob Herring
2014-05-29 22:40 ` [PATCH v2 09/11] ARM: timer-sp: allow getting timer1 clock from DT to fallback to legacy clock Rob Herring
` (3 subsequent siblings)
11 siblings, 0 replies; 27+ messages in thread
From: Rob Herring @ 2014-05-29 22:40 UTC (permalink / raw)
To: linux-arm-kernel
From: Rob Herring <robh@kernel.org>
Signed-off-by: Rob Herring <robh@kernel.org>
Cc: Pawel Moll <pawel.moll@arm.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Ian Campbell <ijc+devicetree@hellion.org.uk>
Cc: Kumar Gala <galak@codeaurora.org>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
---
v2:
- no change
Documentation/devicetree/bindings/clock/arm-integrator.txt | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Documentation/devicetree/bindings/clock/arm-integrator.txt b/Documentation/devicetree/bindings/clock/arm-integrator.txt
index 652914b..ecc6952 100644
--- a/Documentation/devicetree/bindings/clock/arm-integrator.txt
+++ b/Documentation/devicetree/bindings/clock/arm-integrator.txt
@@ -1,4 +1,4 @@
-Clock bindings for ARM Integrator Core Module clocks
+Clock bindings for ARM Integrator and Versatile Core Module clocks
Auxilary Oscillator Clock
@@ -12,7 +12,7 @@ parent node.
Required properties:
-- compatible: must be "arm,integrator-cm-auxosc"
+- compatible: must be "arm,integrator-cm-auxosc" or "arm,versatile-cm-auxosc"
- #clock-cells: must be <0>
Optional properties:
--
1.9.1
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v2 09/11] ARM: timer-sp: allow getting timer1 clock from DT to fallback to legacy clock
2014-05-29 22:40 [PATCH v2 00/11] ARM: Versatile irq and clock DT support Rob Herring
` (7 preceding siblings ...)
2014-05-29 22:40 ` [PATCH v2 08/11] dt/bindings: add compatible string for versatile osc clock Rob Herring
@ 2014-05-29 22:40 ` Rob Herring
2014-05-29 22:40 ` [PATCH v2 10/11] dts: versatile: add clock tree Rob Herring
` (2 subsequent siblings)
11 siblings, 0 replies; 27+ messages in thread
From: Rob Herring @ 2014-05-29 22:40 UTC (permalink / raw)
To: linux-arm-kernel
From: Rob Herring <robh@kernel.org>
The sp804 clocks may be specified in DT, but the kernel may still be using
legacy clocks. This is handled if a single clock for sp804 is present,
but not when 3 clocks are present.
This prevents Versatile platforms from breaking when the DT has clocks
added.
Signed-off-by: Rob Herring <robh@kernel.org>
Cc: Russell King <linux@arm.linux.org.uk>
---
v2:
- New patch necessary to handle DT with 3 clocks in sp804 node and still
use the legacy non-DT clocks.
arch/arm/common/timer-sp.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm/common/timer-sp.c b/arch/arm/common/timer-sp.c
index fd6bff0..1921132 100644
--- a/arch/arm/common/timer-sp.c
+++ b/arch/arm/common/timer-sp.c
@@ -233,13 +233,13 @@ static void __init sp804_of_init(struct device_node *np)
if (IS_ERR(clk1))
clk1 = NULL;
- /* Get the 2nd clock if the timer has 2 timer clocks */
+ /* Get the 2nd clock if the timer has 3 timer clocks */
if (of_count_phandle_with_args(np, "clocks", "#clock-cells") == 3) {
clk2 = of_clk_get(np, 1);
if (IS_ERR(clk2)) {
pr_err("sp804: %s clock not found: %d\n", np->name,
(int)PTR_ERR(clk2));
- goto err;
+ clk2 = NULL;
}
} else
clk2 = clk1;
--
1.9.1
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v2 10/11] dts: versatile: add clock tree
2014-05-29 22:40 [PATCH v2 00/11] ARM: Versatile irq and clock DT support Rob Herring
` (8 preceding siblings ...)
2014-05-29 22:40 ` [PATCH v2 09/11] ARM: timer-sp: allow getting timer1 clock from DT to fallback to legacy clock Rob Herring
@ 2014-05-29 22:40 ` Rob Herring
2014-05-30 9:52 ` Linus Walleij
2014-05-29 22:40 ` [PATCH v2 11/11] clk: versatile: add versatile OSC support Rob Herring
2014-05-30 9:41 ` [PATCH v2 00/11] ARM: Versatile irq and clock DT support Linus Walleij
11 siblings, 1 reply; 27+ messages in thread
From: Rob Herring @ 2014-05-29 22:40 UTC (permalink / raw)
To: linux-arm-kernel
From: Rob Herring <robh@kernel.org>
The versatile dts is missing any clock data. Add the clocks.
It is not clear from the documentation where pclk comes from, so for
now it is a dummy clock which is sufficient for things to work.
Signed-off-by: Rob Herring <robh@kernel.org>
Acked-by: Arnd Bergmann <arnd@arndb.de>
---
v2:
- Move and Rename crystal node.
- Define pclk as 24MHz based on Linus W's input
- fix timer to be 3 clocks and fix names
- Fix sspclk clock name
arch/arm/boot/dts/versatile-ab.dts | 75 ++++++++++++++++++++++++++++++++++++++
arch/arm/boot/dts/versatile-pb.dts | 10 +++++
2 files changed, 85 insertions(+)
diff --git a/arch/arm/boot/dts/versatile-ab.dts b/arch/arm/boot/dts/versatile-ab.dts
index 85c7b2b..36c771a 100644
--- a/arch/arm/boot/dts/versatile-ab.dts
+++ b/arch/arm/boot/dts/versatile-ab.dts
@@ -19,6 +19,41 @@
reg = <0x0 0x08000000>;
};
+ xtal24mhz: xtal24mhz at 24M {
+ #clock-cells = <0>;
+ compatible = "fixed-clock";
+ clock-frequency = <24000000>;
+ };
+
+ core-module at 10000000 {
+ compatible = "arm,core-module-versatile", "syscon";
+ reg = <0x10000000 0x200>;
+
+ /* OSC1 on AB, OSC4 on PB */
+ osc1: cm_aux_osc at 24M {
+ #clock-cells = <0>;
+ compatible = "arm,versatile-cm-auxosc";
+ clocks = <&xtal24mhz>;
+ };
+
+ /* The timer clock is the 24 MHz oscillator divided to 1MHz */
+ timclk: timclk at 1M {
+ #clock-cells = <0>;
+ compatible = "fixed-factor-clock";
+ clock-div = <24>;
+ clock-mult = <1>;
+ clocks = <&xtal24mhz>;
+ };
+
+ pclk: pclk at 24M {
+ #clock-cells = <0>;
+ compatible = "fixed-factor-clock";
+ clock-div = <1>;
+ clock-mult = <1>;
+ clocks = <&xtal24mhz>;
+ };
+ };
+
flash at 34000000 {
compatible = "arm,versatile-flash";
reg = <0x34000000 0x4000000>;
@@ -78,63 +113,85 @@
compatible = "arm,pl081", "arm,primecell";
reg = <0x10130000 0x1000>;
interrupts = <17>;
+ clocks = <&pclk>;
+ clock-names = "apb_pclk";
};
uart0: uart at 101f1000 {
compatible = "arm,pl011", "arm,primecell";
reg = <0x101f1000 0x1000>;
interrupts = <12>;
+ clocks = <&xtal24mhz>, <&pclk>;
+ clock-names = "uartclk", "apb_pclk";
};
uart1: uart at 101f2000 {
compatible = "arm,pl011", "arm,primecell";
reg = <0x101f2000 0x1000>;
interrupts = <13>;
+ clocks = <&xtal24mhz>, <&pclk>;
+ clock-names = "uartclk", "apb_pclk";
};
uart2: uart at 101f3000 {
compatible = "arm,pl011", "arm,primecell";
reg = <0x101f3000 0x1000>;
interrupts = <14>;
+ clocks = <&xtal24mhz>, <&pclk>;
+ clock-names = "uartclk", "apb_pclk";
};
smc at 10100000 {
compatible = "arm,primecell";
reg = <0x10100000 0x1000>;
+ clocks = <&pclk>;
+ clock-names = "apb_pclk";
};
mpmc at 10110000 {
compatible = "arm,primecell";
reg = <0x10110000 0x1000>;
+ clocks = <&pclk>;
+ clock-names = "apb_pclk";
};
display at 10120000 {
compatible = "arm,pl110", "arm,primecell";
reg = <0x10120000 0x1000>;
interrupts = <16>;
+ clocks = <&osc1>, <&pclk>;
+ clock-names = "clcd", "apb_pclk";
};
sctl at 101e0000 {
compatible = "arm,primecell";
reg = <0x101e0000 0x1000>;
+ clocks = <&pclk>;
+ clock-names = "apb_pclk";
};
watchdog at 101e1000 {
compatible = "arm,primecell";
reg = <0x101e1000 0x1000>;
interrupts = <0>;
+ clocks = <&pclk>;
+ clock-names = "apb_pclk";
};
timer at 101e2000 {
compatible = "arm,sp804", "arm,primecell";
reg = <0x101e2000 0x1000>;
interrupts = <4>;
+ clocks = <&timclk>, <&timclk>, <&pclk>;
+ clock-names = "timer0", "timer1", "apb_pclk";
};
timer at 101e3000 {
compatible = "arm,sp804", "arm,primecell";
reg = <0x101e3000 0x1000>;
interrupts = <5>;
+ clocks = <&timclk>, <&timclk>, <&pclk>;
+ clock-names = "timer0", "timer1", "apb_pclk";
};
gpio0: gpio at 101e4000 {
@@ -145,6 +202,8 @@
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
+ clocks = <&pclk>;
+ clock-names = "apb_pclk";
};
gpio1: gpio at 101e5000 {
@@ -155,24 +214,32 @@
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
+ clocks = <&pclk>;
+ clock-names = "apb_pclk";
};
rtc at 101e8000 {
compatible = "arm,pl030", "arm,primecell";
reg = <0x101e8000 0x1000>;
interrupts = <10>;
+ clocks = <&pclk>;
+ clock-names = "apb_pclk";
};
sci at 101f0000 {
compatible = "arm,primecell";
reg = <0x101f0000 0x1000>;
interrupts = <15>;
+ clocks = <&pclk>;
+ clock-names = "apb_pclk";
};
ssp at 101f4000 {
compatible = "arm,pl022", "arm,primecell";
reg = <0x101f4000 0x1000>;
interrupts = <11>;
+ clocks = <&xtal24mhz>, <&pclk>;
+ clock-names = "SSPCLK", "apb_pclk";
};
fpga {
@@ -185,23 +252,31 @@
compatible = "arm,primecell";
reg = <0x4000 0x1000>;
interrupts = <24>;
+ clocks = <&pclk>;
+ clock-names = "apb_pclk";
};
mmc at 5000 {
compatible = "arm,pl180", "arm,primecell";
reg = < 0x5000 0x1000>;
interrupts-extended = <&vic 22 &sic 2>;
+ clocks = <&xtal24mhz>, <&pclk>;
+ clock-names = "mclk", "apb_pclk";
};
kmi at 6000 {
compatible = "arm,pl050", "arm,primecell";
reg = <0x6000 0x1000>;
interrupt-parent = <&sic>;
interrupts = <3>;
+ clocks = <&xtal24mhz>, <&pclk>;
+ clock-names = "KMIREFCLK", "apb_pclk";
};
kmi at 7000 {
compatible = "arm,pl050", "arm,primecell";
reg = <0x7000 0x1000>;
interrupt-parent = <&sic>;
interrupts = <4>;
+ clocks = <&xtal24mhz>, <&pclk>;
+ clock-names = "KMIREFCLK", "apb_pclk";
};
};
};
diff --git a/arch/arm/boot/dts/versatile-pb.dts b/arch/arm/boot/dts/versatile-pb.dts
index a428541..d025048 100644
--- a/arch/arm/boot/dts/versatile-pb.dts
+++ b/arch/arm/boot/dts/versatile-pb.dts
@@ -13,6 +13,8 @@
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
+ clocks = <&pclk>;
+ clock-names = "apb_pclk";
};
gpio3: gpio at 101e7000 {
@@ -23,6 +25,8 @@
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
+ clocks = <&pclk>;
+ clock-names = "apb_pclk";
};
fpga {
@@ -31,17 +35,23 @@
reg = <0x9000 0x1000>;
interrupt-parent = <&sic>;
interrupts = <6>;
+ clocks = <&xtal24mhz>, <&pclk>;
+ clock-names = "uartclk", "apb_pclk";
};
sci at a000 {
compatible = "arm,primecell";
reg = <0xa000 0x1000>;
interrupt-parent = <&sic>;
interrupts = <5>;
+ clocks = <&xtal24mhz>;
+ clock-names = "apb_pclk";
};
mmc at b000 {
compatible = "arm,pl180", "arm,primecell";
reg = <0xb000 0x1000>;
interrupts-extended = <&vic 23 &sic 2>;
+ clocks = <&xtal24mhz>, <&pclk>;
+ clock-names = "mclk", "apb_pclk";
};
};
};
--
1.9.1
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v2 10/11] dts: versatile: add clock tree
2014-05-29 22:40 ` [PATCH v2 10/11] dts: versatile: add clock tree Rob Herring
@ 2014-05-30 9:52 ` Linus Walleij
0 siblings, 0 replies; 27+ messages in thread
From: Linus Walleij @ 2014-05-30 9:52 UTC (permalink / raw)
To: linux-arm-kernel
On Fri, May 30, 2014 at 12:40 AM, Rob Herring <robherring2@gmail.com> wrote:
> From: Rob Herring <robh@kernel.org>
>
> The versatile dts is missing any clock data. Add the clocks.
>
> It is not clear from the documentation where pclk comes from, so for
> now it is a dummy clock which is sufficient for things to work.
>
> Signed-off-by: Rob Herring <robh@kernel.org>
> Acked-by: Arnd Bergmann <arnd@arndb.de>
> ---
> v2:
> - Move and Rename crystal node.
> - Define pclk as 24MHz based on Linus W's input
> - fix timer to be 3 clocks and fix names
> - Fix sspclk clock name
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH v2 11/11] clk: versatile: add versatile OSC support
2014-05-29 22:40 [PATCH v2 00/11] ARM: Versatile irq and clock DT support Rob Herring
` (9 preceding siblings ...)
2014-05-29 22:40 ` [PATCH v2 10/11] dts: versatile: add clock tree Rob Herring
@ 2014-05-29 22:40 ` Rob Herring
2014-05-30 9:55 ` Linus Walleij
2014-05-30 23:03 ` Mike Turquette
2014-05-30 9:41 ` [PATCH v2 00/11] ARM: Versatile irq and clock DT support Linus Walleij
11 siblings, 2 replies; 27+ messages in thread
From: Rob Herring @ 2014-05-29 22:40 UTC (permalink / raw)
To: linux-arm-kernel
From: Rob Herring <robh@kernel.org>
Versatile platforms share the same OSC programming model as Integrator
platforms. Add the necessary parameters and init functions for Versatile.
Renaming the file to clk-versatile.c as versatile is used as the family
name for ARM, Ltd. boards.
Signed-off-by: Rob Herring <robh@kernel.org>
Cc: Mike Turquette <mturquette@linaro.org>
Acked-by: Arnd Bergmann <arnd@arndb.de>
---
v2:
- Rename clk-integrator.c to clk-versatile.c
drivers/clk/versatile/Makefile | 3 +-
.../{clk-integrator.c => clk-versatile.c} | 35 ++++++++++++++++++++--
2 files changed, 34 insertions(+), 4 deletions(-)
rename drivers/clk/versatile/{clk-integrator.c => clk-versatile.c} (66%)
diff --git a/drivers/clk/versatile/Makefile b/drivers/clk/versatile/Makefile
index c16ca78..9ee2b37 100644
--- a/drivers/clk/versatile/Makefile
+++ b/drivers/clk/versatile/Makefile
@@ -1,6 +1,5 @@
# Makefile for Versatile-specific clocks
-obj-$(CONFIG_ICST) += clk-icst.o
-obj-$(CONFIG_ARCH_INTEGRATOR) += clk-integrator.o
+obj-$(CONFIG_ICST) += clk-icst.o clk-versatile.o
obj-$(CONFIG_INTEGRATOR_IMPD1) += clk-impd1.o
obj-$(CONFIG_ARCH_REALVIEW) += clk-realview.o
obj-$(CONFIG_ARCH_VEXPRESS) += clk-vexpress.o clk-sp810.o
diff --git a/drivers/clk/versatile/clk-integrator.c b/drivers/clk/versatile/clk-versatile.c
similarity index 66%
rename from drivers/clk/versatile/clk-integrator.c
rename to drivers/clk/versatile/clk-versatile.c
index 734c4b8..fe52a79 100644
--- a/drivers/clk/versatile/clk-integrator.c
+++ b/drivers/clk/versatile/clk-versatile.c
@@ -17,6 +17,9 @@
#define INTEGRATOR_HDR_LOCK_OFFSET 0x14
+#define VERSATILE_SYS_OSCCLCD_OFFSET 0x1c
+#define VERSATILE_SYS_LOCK_OFFSET 0x20
+
/* Base offset for the core module */
static void __iomem *cm_base;
@@ -37,11 +40,27 @@ static const struct clk_icst_desc __initdata cm_auxosc_desc = {
.lock_offset = INTEGRATOR_HDR_LOCK_OFFSET,
};
-static void __init of_integrator_cm_osc_setup(struct device_node *np)
+static const struct icst_params versatile_auxosc_params = {
+ .vco_max = ICST307_VCO_MAX,
+ .vco_min = ICST307_VCO_MIN,
+ .vd_min = 4 + 8,
+ .vd_max = 511 + 8,
+ .rd_min = 1 + 2,
+ .rd_max = 127 + 2,
+ .s2div = icst307_s2div,
+ .idx2s = icst307_idx2s,
+};
+
+static const struct clk_icst_desc versatile_auxosc_desc __initconst = {
+ .params = &versatile_auxosc_params,
+ .vco_offset = VERSATILE_SYS_OSCCLCD_OFFSET,
+ .lock_offset = VERSATILE_SYS_LOCK_OFFSET,
+};
+static void __init cm_osc_setup(struct device_node *np,
+ const struct clk_icst_desc *desc)
{
struct clk *clk = ERR_PTR(-EINVAL);
const char *clk_name = np->name;
- const struct clk_icst_desc *desc = &cm_auxosc_desc;
const char *parent_name;
if (!cm_base) {
@@ -65,5 +84,17 @@ static void __init of_integrator_cm_osc_setup(struct device_node *np)
if (!IS_ERR(clk))
of_clk_add_provider(np, of_clk_src_simple_get, clk);
}
+
+static void __init of_integrator_cm_osc_setup(struct device_node *np)
+{
+ cm_osc_setup(np, &cm_auxosc_desc);
+}
CLK_OF_DECLARE(integrator_cm_auxosc_clk,
"arm,integrator-cm-auxosc", of_integrator_cm_osc_setup);
+
+static void __init of_versatile_cm_osc_setup(struct device_node *np)
+{
+ cm_osc_setup(np, &versatile_auxosc_desc);
+}
+CLK_OF_DECLARE(versatile_cm_auxosc_clk,
+ "arm,versatile-cm-auxosc", of_versatile_cm_osc_setup);
--
1.9.1
^ permalink raw reply related [flat|nested] 27+ messages in thread
* [PATCH v2 11/11] clk: versatile: add versatile OSC support
2014-05-29 22:40 ` [PATCH v2 11/11] clk: versatile: add versatile OSC support Rob Herring
@ 2014-05-30 9:55 ` Linus Walleij
2014-05-30 23:03 ` Mike Turquette
1 sibling, 0 replies; 27+ messages in thread
From: Linus Walleij @ 2014-05-30 9:55 UTC (permalink / raw)
To: linux-arm-kernel
On Fri, May 30, 2014 at 12:40 AM, Rob Herring <robherring2@gmail.com> wrote:
> From: Rob Herring <robh@kernel.org>
>
> Versatile platforms share the same OSC programming model as Integrator
> platforms. Add the necessary parameters and init functions for Versatile.
>
> Renaming the file to clk-versatile.c as versatile is used as the family
> name for ARM, Ltd. boards.
>
> Signed-off-by: Rob Herring <robh@kernel.org>
> Cc: Mike Turquette <mturquette@linaro.org>
> Acked-by: Arnd Bergmann <arnd@arndb.de>
> ---
> v2:
> - Rename clk-integrator.c to clk-versatile.c
Nice!
> --- a/drivers/clk/versatile/clk-integrator.c
> +++ b/drivers/clk/versatile/clk-versatile.c
I bet you want to augment the comments in the top of the file
header a bit to mention the Versatiles.
With that:
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH v2 11/11] clk: versatile: add versatile OSC support
2014-05-29 22:40 ` [PATCH v2 11/11] clk: versatile: add versatile OSC support Rob Herring
2014-05-30 9:55 ` Linus Walleij
@ 2014-05-30 23:03 ` Mike Turquette
2014-05-31 2:38 ` Rob Herring
1 sibling, 1 reply; 27+ messages in thread
From: Mike Turquette @ 2014-05-30 23:03 UTC (permalink / raw)
To: linux-arm-kernel
Quoting Rob Herring (2014-05-29 15:40:21)
> From: Rob Herring <robh@kernel.org>
>
> Versatile platforms share the same OSC programming model as Integrator
> platforms. Add the necessary parameters and init functions for Versatile.
>
> Renaming the file to clk-versatile.c as versatile is used as the family
> name for ARM, Ltd. boards.
>
> Signed-off-by: Rob Herring <robh@kernel.org>
> Cc: Mike Turquette <mturquette@linaro.org>
> Acked-by: Arnd Bergmann <arnd@arndb.de>
So it's OK to rename the file and add the new stuff in one commit? I
thought there were some guidelines about doing renames separately...
Regards,
Mike
> ---
> v2:
> - Rename clk-integrator.c to clk-versatile.c
>
> drivers/clk/versatile/Makefile | 3 +-
> .../{clk-integrator.c => clk-versatile.c} | 35 ++++++++++++++++++++--
> 2 files changed, 34 insertions(+), 4 deletions(-)
> rename drivers/clk/versatile/{clk-integrator.c => clk-versatile.c} (66%)
>
> diff --git a/drivers/clk/versatile/Makefile b/drivers/clk/versatile/Makefile
> index c16ca78..9ee2b37 100644
> --- a/drivers/clk/versatile/Makefile
> +++ b/drivers/clk/versatile/Makefile
> @@ -1,6 +1,5 @@
> # Makefile for Versatile-specific clocks
> -obj-$(CONFIG_ICST) += clk-icst.o
> -obj-$(CONFIG_ARCH_INTEGRATOR) += clk-integrator.o
> +obj-$(CONFIG_ICST) += clk-icst.o clk-versatile.o
> obj-$(CONFIG_INTEGRATOR_IMPD1) += clk-impd1.o
> obj-$(CONFIG_ARCH_REALVIEW) += clk-realview.o
> obj-$(CONFIG_ARCH_VEXPRESS) += clk-vexpress.o clk-sp810.o
> diff --git a/drivers/clk/versatile/clk-integrator.c b/drivers/clk/versatile/clk-versatile.c
> similarity index 66%
> rename from drivers/clk/versatile/clk-integrator.c
> rename to drivers/clk/versatile/clk-versatile.c
> index 734c4b8..fe52a79 100644
> --- a/drivers/clk/versatile/clk-integrator.c
> +++ b/drivers/clk/versatile/clk-versatile.c
> @@ -17,6 +17,9 @@
>
> #define INTEGRATOR_HDR_LOCK_OFFSET 0x14
>
> +#define VERSATILE_SYS_OSCCLCD_OFFSET 0x1c
> +#define VERSATILE_SYS_LOCK_OFFSET 0x20
> +
> /* Base offset for the core module */
> static void __iomem *cm_base;
>
> @@ -37,11 +40,27 @@ static const struct clk_icst_desc __initdata cm_auxosc_desc = {
> .lock_offset = INTEGRATOR_HDR_LOCK_OFFSET,
> };
>
> -static void __init of_integrator_cm_osc_setup(struct device_node *np)
> +static const struct icst_params versatile_auxosc_params = {
> + .vco_max = ICST307_VCO_MAX,
> + .vco_min = ICST307_VCO_MIN,
> + .vd_min = 4 + 8,
> + .vd_max = 511 + 8,
> + .rd_min = 1 + 2,
> + .rd_max = 127 + 2,
> + .s2div = icst307_s2div,
> + .idx2s = icst307_idx2s,
> +};
> +
> +static const struct clk_icst_desc versatile_auxosc_desc __initconst = {
> + .params = &versatile_auxosc_params,
> + .vco_offset = VERSATILE_SYS_OSCCLCD_OFFSET,
> + .lock_offset = VERSATILE_SYS_LOCK_OFFSET,
> +};
> +static void __init cm_osc_setup(struct device_node *np,
> + const struct clk_icst_desc *desc)
> {
> struct clk *clk = ERR_PTR(-EINVAL);
> const char *clk_name = np->name;
> - const struct clk_icst_desc *desc = &cm_auxosc_desc;
> const char *parent_name;
>
> if (!cm_base) {
> @@ -65,5 +84,17 @@ static void __init of_integrator_cm_osc_setup(struct device_node *np)
> if (!IS_ERR(clk))
> of_clk_add_provider(np, of_clk_src_simple_get, clk);
> }
> +
> +static void __init of_integrator_cm_osc_setup(struct device_node *np)
> +{
> + cm_osc_setup(np, &cm_auxosc_desc);
> +}
> CLK_OF_DECLARE(integrator_cm_auxosc_clk,
> "arm,integrator-cm-auxosc", of_integrator_cm_osc_setup);
> +
> +static void __init of_versatile_cm_osc_setup(struct device_node *np)
> +{
> + cm_osc_setup(np, &versatile_auxosc_desc);
> +}
> +CLK_OF_DECLARE(versatile_cm_auxosc_clk,
> + "arm,versatile-cm-auxosc", of_versatile_cm_osc_setup);
> --
> 1.9.1
>
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH v2 11/11] clk: versatile: add versatile OSC support
2014-05-30 23:03 ` Mike Turquette
@ 2014-05-31 2:38 ` Rob Herring
2014-06-02 21:08 ` Mike Turquette
0 siblings, 1 reply; 27+ messages in thread
From: Rob Herring @ 2014-05-31 2:38 UTC (permalink / raw)
To: linux-arm-kernel
On Fri, May 30, 2014 at 6:03 PM, Mike Turquette <mturquette@linaro.org> wrote:
> Quoting Rob Herring (2014-05-29 15:40:21)
>> From: Rob Herring <robh@kernel.org>
>>
>> Versatile platforms share the same OSC programming model as Integrator
>> platforms. Add the necessary parameters and init functions for Versatile.
>>
>> Renaming the file to clk-versatile.c as versatile is used as the family
>> name for ARM, Ltd. boards.
>>
>> Signed-off-by: Rob Herring <robh@kernel.org>
>> Cc: Mike Turquette <mturquette@linaro.org>
>> Acked-by: Arnd Bergmann <arnd@arndb.de>
>
> So it's OK to rename the file and add the new stuff in one commit? I
> thought there were some guidelines about doing renames separately...
You don't want to move of a chunk of code and change it along the way
because you can't see the real changes, but a file rename does not
affect the diff here (other than the Makefile change).
Rob
>
> Regards,
> Mike
>
>> ---
>> v2:
>> - Rename clk-integrator.c to clk-versatile.c
>>
>> drivers/clk/versatile/Makefile | 3 +-
>> .../{clk-integrator.c => clk-versatile.c} | 35 ++++++++++++++++++++--
>> 2 files changed, 34 insertions(+), 4 deletions(-)
>> rename drivers/clk/versatile/{clk-integrator.c => clk-versatile.c} (66%)
>>
>> diff --git a/drivers/clk/versatile/Makefile b/drivers/clk/versatile/Makefile
>> index c16ca78..9ee2b37 100644
>> --- a/drivers/clk/versatile/Makefile
>> +++ b/drivers/clk/versatile/Makefile
>> @@ -1,6 +1,5 @@
>> # Makefile for Versatile-specific clocks
>> -obj-$(CONFIG_ICST) += clk-icst.o
>> -obj-$(CONFIG_ARCH_INTEGRATOR) += clk-integrator.o
>> +obj-$(CONFIG_ICST) += clk-icst.o clk-versatile.o
>> obj-$(CONFIG_INTEGRATOR_IMPD1) += clk-impd1.o
>> obj-$(CONFIG_ARCH_REALVIEW) += clk-realview.o
>> obj-$(CONFIG_ARCH_VEXPRESS) += clk-vexpress.o clk-sp810.o
>> diff --git a/drivers/clk/versatile/clk-integrator.c b/drivers/clk/versatile/clk-versatile.c
>> similarity index 66%
>> rename from drivers/clk/versatile/clk-integrator.c
>> rename to drivers/clk/versatile/clk-versatile.c
>> index 734c4b8..fe52a79 100644
>> --- a/drivers/clk/versatile/clk-integrator.c
>> +++ b/drivers/clk/versatile/clk-versatile.c
>> @@ -17,6 +17,9 @@
>>
>> #define INTEGRATOR_HDR_LOCK_OFFSET 0x14
>>
>> +#define VERSATILE_SYS_OSCCLCD_OFFSET 0x1c
>> +#define VERSATILE_SYS_LOCK_OFFSET 0x20
>> +
>> /* Base offset for the core module */
>> static void __iomem *cm_base;
>>
>> @@ -37,11 +40,27 @@ static const struct clk_icst_desc __initdata cm_auxosc_desc = {
>> .lock_offset = INTEGRATOR_HDR_LOCK_OFFSET,
>> };
>>
>> -static void __init of_integrator_cm_osc_setup(struct device_node *np)
>> +static const struct icst_params versatile_auxosc_params = {
>> + .vco_max = ICST307_VCO_MAX,
>> + .vco_min = ICST307_VCO_MIN,
>> + .vd_min = 4 + 8,
>> + .vd_max = 511 + 8,
>> + .rd_min = 1 + 2,
>> + .rd_max = 127 + 2,
>> + .s2div = icst307_s2div,
>> + .idx2s = icst307_idx2s,
>> +};
>> +
>> +static const struct clk_icst_desc versatile_auxosc_desc __initconst = {
>> + .params = &versatile_auxosc_params,
>> + .vco_offset = VERSATILE_SYS_OSCCLCD_OFFSET,
>> + .lock_offset = VERSATILE_SYS_LOCK_OFFSET,
>> +};
>> +static void __init cm_osc_setup(struct device_node *np,
>> + const struct clk_icst_desc *desc)
>> {
>> struct clk *clk = ERR_PTR(-EINVAL);
>> const char *clk_name = np->name;
>> - const struct clk_icst_desc *desc = &cm_auxosc_desc;
>> const char *parent_name;
>>
>> if (!cm_base) {
>> @@ -65,5 +84,17 @@ static void __init of_integrator_cm_osc_setup(struct device_node *np)
>> if (!IS_ERR(clk))
>> of_clk_add_provider(np, of_clk_src_simple_get, clk);
>> }
>> +
>> +static void __init of_integrator_cm_osc_setup(struct device_node *np)
>> +{
>> + cm_osc_setup(np, &cm_auxosc_desc);
>> +}
>> CLK_OF_DECLARE(integrator_cm_auxosc_clk,
>> "arm,integrator-cm-auxosc", of_integrator_cm_osc_setup);
>> +
>> +static void __init of_versatile_cm_osc_setup(struct device_node *np)
>> +{
>> + cm_osc_setup(np, &versatile_auxosc_desc);
>> +}
>> +CLK_OF_DECLARE(versatile_cm_auxosc_clk,
>> + "arm,versatile-cm-auxosc", of_versatile_cm_osc_setup);
>> --
>> 1.9.1
>>
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH v2 11/11] clk: versatile: add versatile OSC support
2014-05-31 2:38 ` Rob Herring
@ 2014-06-02 21:08 ` Mike Turquette
0 siblings, 0 replies; 27+ messages in thread
From: Mike Turquette @ 2014-06-02 21:08 UTC (permalink / raw)
To: linux-arm-kernel
Quoting Rob Herring (2014-05-30 19:38:44)
> On Fri, May 30, 2014 at 6:03 PM, Mike Turquette <mturquette@linaro.org> wrote:
> > Quoting Rob Herring (2014-05-29 15:40:21)
> >> From: Rob Herring <robh@kernel.org>
> >>
> >> Versatile platforms share the same OSC programming model as Integrator
> >> platforms. Add the necessary parameters and init functions for Versatile.
> >>
> >> Renaming the file to clk-versatile.c as versatile is used as the family
> >> name for ARM, Ltd. boards.
> >>
> >> Signed-off-by: Rob Herring <robh@kernel.org>
> >> Cc: Mike Turquette <mturquette@linaro.org>
> >> Acked-by: Arnd Bergmann <arnd@arndb.de>
> >
> > So it's OK to rename the file and add the new stuff in one commit? I
> > thought there were some guidelines about doing renames separately...
>
> You don't want to move of a chunk of code and change it along the way
> because you can't see the real changes, but a file rename does not
> affect the diff here (other than the Makefile change).
Sounds good. Let me know if you want me to take this into clk-next after
-rc1 drops. Otherwise:
Acked-by: Mike Turquette <mturquette@linaro.org>
Regards,
Mike
>
> Rob
>
> >
> > Regards,
> > Mike
> >
> >> ---
> >> v2:
> >> - Rename clk-integrator.c to clk-versatile.c
> >>
> >> drivers/clk/versatile/Makefile | 3 +-
> >> .../{clk-integrator.c => clk-versatile.c} | 35 ++++++++++++++++++++--
> >> 2 files changed, 34 insertions(+), 4 deletions(-)
> >> rename drivers/clk/versatile/{clk-integrator.c => clk-versatile.c} (66%)
> >>
> >> diff --git a/drivers/clk/versatile/Makefile b/drivers/clk/versatile/Makefile
> >> index c16ca78..9ee2b37 100644
> >> --- a/drivers/clk/versatile/Makefile
> >> +++ b/drivers/clk/versatile/Makefile
> >> @@ -1,6 +1,5 @@
> >> # Makefile for Versatile-specific clocks
> >> -obj-$(CONFIG_ICST) += clk-icst.o
> >> -obj-$(CONFIG_ARCH_INTEGRATOR) += clk-integrator.o
> >> +obj-$(CONFIG_ICST) += clk-icst.o clk-versatile.o
> >> obj-$(CONFIG_INTEGRATOR_IMPD1) += clk-impd1.o
> >> obj-$(CONFIG_ARCH_REALVIEW) += clk-realview.o
> >> obj-$(CONFIG_ARCH_VEXPRESS) += clk-vexpress.o clk-sp810.o
> >> diff --git a/drivers/clk/versatile/clk-integrator.c b/drivers/clk/versatile/clk-versatile.c
> >> similarity index 66%
> >> rename from drivers/clk/versatile/clk-integrator.c
> >> rename to drivers/clk/versatile/clk-versatile.c
> >> index 734c4b8..fe52a79 100644
> >> --- a/drivers/clk/versatile/clk-integrator.c
> >> +++ b/drivers/clk/versatile/clk-versatile.c
> >> @@ -17,6 +17,9 @@
> >>
> >> #define INTEGRATOR_HDR_LOCK_OFFSET 0x14
> >>
> >> +#define VERSATILE_SYS_OSCCLCD_OFFSET 0x1c
> >> +#define VERSATILE_SYS_LOCK_OFFSET 0x20
> >> +
> >> /* Base offset for the core module */
> >> static void __iomem *cm_base;
> >>
> >> @@ -37,11 +40,27 @@ static const struct clk_icst_desc __initdata cm_auxosc_desc = {
> >> .lock_offset = INTEGRATOR_HDR_LOCK_OFFSET,
> >> };
> >>
> >> -static void __init of_integrator_cm_osc_setup(struct device_node *np)
> >> +static const struct icst_params versatile_auxosc_params = {
> >> + .vco_max = ICST307_VCO_MAX,
> >> + .vco_min = ICST307_VCO_MIN,
> >> + .vd_min = 4 + 8,
> >> + .vd_max = 511 + 8,
> >> + .rd_min = 1 + 2,
> >> + .rd_max = 127 + 2,
> >> + .s2div = icst307_s2div,
> >> + .idx2s = icst307_idx2s,
> >> +};
> >> +
> >> +static const struct clk_icst_desc versatile_auxosc_desc __initconst = {
> >> + .params = &versatile_auxosc_params,
> >> + .vco_offset = VERSATILE_SYS_OSCCLCD_OFFSET,
> >> + .lock_offset = VERSATILE_SYS_LOCK_OFFSET,
> >> +};
> >> +static void __init cm_osc_setup(struct device_node *np,
> >> + const struct clk_icst_desc *desc)
> >> {
> >> struct clk *clk = ERR_PTR(-EINVAL);
> >> const char *clk_name = np->name;
> >> - const struct clk_icst_desc *desc = &cm_auxosc_desc;
> >> const char *parent_name;
> >>
> >> if (!cm_base) {
> >> @@ -65,5 +84,17 @@ static void __init of_integrator_cm_osc_setup(struct device_node *np)
> >> if (!IS_ERR(clk))
> >> of_clk_add_provider(np, of_clk_src_simple_get, clk);
> >> }
> >> +
> >> +static void __init of_integrator_cm_osc_setup(struct device_node *np)
> >> +{
> >> + cm_osc_setup(np, &cm_auxosc_desc);
> >> +}
> >> CLK_OF_DECLARE(integrator_cm_auxosc_clk,
> >> "arm,integrator-cm-auxosc", of_integrator_cm_osc_setup);
> >> +
> >> +static void __init of_versatile_cm_osc_setup(struct device_node *np)
> >> +{
> >> + cm_osc_setup(np, &versatile_auxosc_desc);
> >> +}
> >> +CLK_OF_DECLARE(versatile_cm_auxosc_clk,
> >> + "arm,versatile-cm-auxosc", of_versatile_cm_osc_setup);
> >> --
> >> 1.9.1
> >>
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH v2 00/11] ARM: Versatile irq and clock DT support
2014-05-29 22:40 [PATCH v2 00/11] ARM: Versatile irq and clock DT support Rob Herring
` (10 preceding siblings ...)
2014-05-29 22:40 ` [PATCH v2 11/11] clk: versatile: add versatile OSC support Rob Herring
@ 2014-05-30 9:41 ` Linus Walleij
2014-05-30 12:17 ` Rob Herring
2014-06-21 2:10 ` Jason Cooper
11 siblings, 2 replies; 27+ messages in thread
From: Linus Walleij @ 2014-05-30 9:41 UTC (permalink / raw)
To: linux-arm-kernel
On Fri, May 30, 2014 at 12:40 AM, Rob Herring <robherring2@gmail.com> wrote:
> Linus, This could use testing again on Versatile.
OK I should probably test on Versatile *and* the Integrators since
these are also affected. Do you have a branch I can pull?
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH v2 00/11] ARM: Versatile irq and clock DT support
2014-05-30 9:41 ` [PATCH v2 00/11] ARM: Versatile irq and clock DT support Linus Walleij
@ 2014-05-30 12:17 ` Rob Herring
2014-06-21 2:10 ` Jason Cooper
1 sibling, 0 replies; 27+ messages in thread
From: Rob Herring @ 2014-05-30 12:17 UTC (permalink / raw)
To: linux-arm-kernel
On Fri, May 30, 2014 at 4:41 AM, Linus Walleij <linus.walleij@linaro.org> wrote:
> On Fri, May 30, 2014 at 12:40 AM, Rob Herring <robherring2@gmail.com> wrote:
>
>> Linus, This could use testing again on Versatile.
>
> OK I should probably test on Versatile *and* the Integrators since
> these are also affected. Do you have a branch I can pull?
git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git versatile-v2
Rob
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH v2 00/11] ARM: Versatile irq and clock DT support
2014-05-30 9:41 ` [PATCH v2 00/11] ARM: Versatile irq and clock DT support Linus Walleij
2014-05-30 12:17 ` Rob Herring
@ 2014-06-21 2:10 ` Jason Cooper
2014-06-23 11:08 ` Linus Walleij
1 sibling, 1 reply; 27+ messages in thread
From: Jason Cooper @ 2014-06-21 2:10 UTC (permalink / raw)
To: linux-arm-kernel
Linus,
On Fri, May 30, 2014 at 11:41:51AM +0200, Linus Walleij wrote:
> On Fri, May 30, 2014 at 12:40 AM, Rob Herring <robherring2@gmail.com> wrote:
>
> > Linus, This could use testing again on Versatile.
>
> OK I should probably test on Versatile *and* the Integrators since
> these are also affected. Do you have a branch I can pull?
Did you get a chance to test this series?
thx,
Jason.
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH v2 00/11] ARM: Versatile irq and clock DT support
2014-06-21 2:10 ` Jason Cooper
@ 2014-06-23 11:08 ` Linus Walleij
2014-06-26 12:52 ` Linus Walleij
0 siblings, 1 reply; 27+ messages in thread
From: Linus Walleij @ 2014-06-23 11:08 UTC (permalink / raw)
To: linux-arm-kernel
On Sat, Jun 21, 2014 at 4:10 AM, Jason Cooper <jason@lakedaemon.net> wrote:
> On Fri, May 30, 2014 at 11:41:51AM +0200, Linus Walleij wrote:
>> On Fri, May 30, 2014 at 12:40 AM, Rob Herring <robherring2@gmail.com> wrote:
>>
>> > Linus, This could use testing again on Versatile.
>>
>> OK I should probably test on Versatile *and* the Integrators since
>> these are also affected. Do you have a branch I can pull?
>
> Did you get a chance to test this series?
Sadly not yet :-(
I'm snowed under by regressions FTM.
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 27+ messages in thread
* [PATCH v2 00/11] ARM: Versatile irq and clock DT support
2014-06-23 11:08 ` Linus Walleij
@ 2014-06-26 12:52 ` Linus Walleij
0 siblings, 0 replies; 27+ messages in thread
From: Linus Walleij @ 2014-06-26 12:52 UTC (permalink / raw)
To: linux-arm-kernel
On Mon, Jun 23, 2014 at 1:08 PM, Linus Walleij <linus.walleij@linaro.org> wrote:
> On Sat, Jun 21, 2014 at 4:10 AM, Jason Cooper <jason@lakedaemon.net> wrote:
>> On Fri, May 30, 2014 at 11:41:51AM +0200, Linus Walleij wrote:
>>> On Fri, May 30, 2014 at 12:40 AM, Rob Herring <robherring2@gmail.com> wrote:
>>>
>>> > Linus, This could use testing again on Versatile.
>>>
>>> OK I should probably test on Versatile *and* the Integrators since
>>> these are also affected. Do you have a branch I can pull?
>>
>> Did you get a chance to test this series?
>
> Sadly not yet :-(
>
> I'm snowed under by regressions FTM.
Tested now and it works like a charm on Versatile/AB.
Also sent a Tested-by tag to Rob's pull request.
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 27+ messages in thread