The TZ1090 PDC (PowerDown Controller) has a couple of clock components
in order to generate its main 32.768KHz clock which the peripherals in
the low power domain run off, especially while the SoC is otherwise
powered down.

Create a clock binding for the provider of these clocks, and a header
file in <dt-bindings/clock/> for enumerating the provided clocks.

It essentially has just two clock inputs (xtal1 and xtal3), and two
clock outputs, of which only "32khz" is likely to be used.

Signed-off-by: James Hogan <james.ho...@imgtec.com>
Cc: Mike Turquette <mturque...@linaro.org>
Cc: Rob Herring <robh...@kernel.org>
Cc: Pawel Moll <pawel.m...@arm.com>
Cc: Mark Rutland <mark.rutl...@arm.com>
Cc: Ian Campbell <ijc+devicet...@hellion.org.uk>
Cc: Kumar Gala <ga...@codeaurora.org>
Cc: linux-metag@vger.kernel.org
Cc: devicet...@vger.kernel.org
---
Changes since v1 (patch 11):
- Change the binding to conceptually represent all clocks provided by
  the PDC in TZ1090 rather than the same generic arrangement of clocks
  as the PDC in TZ1090, since the driver will use the common TZ1090
  specific clock provider helpers to provide specific clocks.
- Change compatible string from "img,tz1090-pdc-clock" to
  "img,tz1090-pdc-clocks" to match the intended purpose.
- Add header in <dt-bindings/clock/> to enumerate the provided clocks.
- Add clock-names as required property as used by common TZ1090 clock
  provider code.
- Mention standard clock-indices and clock-output-names optional
  properties for when the clocks may be used by other clock providers
  and should match the names used in the driver.
---
 .../bindings/clock/img,tz1090-pdc-clocks.txt       | 59 ++++++++++++++++++++++
 include/dt-bindings/clock/tz1090-pdc.h             | 18 +++++++
 2 files changed, 77 insertions(+)
 create mode 100644 
Documentation/devicetree/bindings/clock/img,tz1090-pdc-clocks.txt
 create mode 100644 include/dt-bindings/clock/tz1090-pdc.h

diff --git a/Documentation/devicetree/bindings/clock/img,tz1090-pdc-clocks.txt 
b/Documentation/devicetree/bindings/clock/img,tz1090-pdc-clocks.txt
new file mode 100644
index 0000000..2f3b4c9
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/img,tz1090-pdc-clocks.txt
@@ -0,0 +1,59 @@
+Binding for TZ1090 PDC clocks.
+
+This binding uses the common clock binding[1]. It represents the clocks
+required to generate the 32KHz PDC clock used by the devices in the low power
+domain:
+
+          ___________
+xtal1 ___| xtal1_div |____________________________
+         |___________|  |    ________   xtal1_div
+                        `--o| rtc_sw \____________
+xtal3 ----------------------|________/  32khz
+
+xtal1_div = xtal1 / (reg[26:16] + 1)
+xtal3 = reg[30] ? xtal3 : xtal1_div
+
+
+[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
+
+Required properties:
+- compatible         : Shall be "img,tz1090-pdc-clocks".
+- #clock-cells       : From common clock binding; shall be set to 1.
+- reg                : Base address for registers controlling PDC clocks.
+- clocks             : Clock specifiers for each input clock.
+- clock-names        : Labels for each input clock specified in clocks.
+                       Can contain the following entries:
+                       "xtal1" : XTAL1 oscillator.
+                       "xtal3" : XTAL3 32KHz oscillator.
+
+Optional properties:
+- clock-indices      : From common clock binding. Allows clock-output-names to
+                       be sparse.
+- clock-output-names : From common clock binding. May be used to name specific
+                       output clocks so that other clock providers can find
+                       the clocks by name before the provider has been
+                       instantiated. Can contain:
+                       "32khz"     : 32khz PDC clock.
+
+Clock Specifier Definition:
+- <1st-cell>: Output clock number. Use constants from
+              <dt-bindings/clock/tz1090-pdc.h>.
+
+Examples:
+       pdc_clks: pdc_clks {
+               compatible = "img,tz1090-pdc-clocks";
+               #clock-cells = <1>;
+               reg = <0x02006500 0x4>; /* SOC_GPIO_CONTROL0 */
+               clocks = <&xtal1>,
+                        <&xtal3>;
+               clock-names = "xtal1",
+                             "xtal3";
+       };
+
+       ir {
+               ...
+               clocks = <&pdc_clks CLK_PDC_32KHZ>,
+                        <&top_clks CLK_TOP_PDC>;
+               clock-names = "core", "sys";
+               ...
+       };
diff --git a/include/dt-bindings/clock/tz1090-pdc.h 
b/include/dt-bindings/clock/tz1090-pdc.h
new file mode 100644
index 0000000..fa9a11c
--- /dev/null
+++ b/include/dt-bindings/clock/tz1090-pdc.h
@@ -0,0 +1,18 @@
+/*
+ * Copyright (C) 2013-2014 Imagination Technologies Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#ifndef _DT_BINDINGS_CLK_TZ1090_PDC_H
+#define _DT_BINDINGS_CLK_TZ1090_PDC_H
+
+/* Powerdown Controller clocks */
+#define CLK_PDC_XTAL1_DIV      0
+#define CLK_PDC_32KHZ          1
+
+#define CLK_PDC_MAX            2
+
+#endif
-- 
2.0.4

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

Reply via email to