Thread (28 messages) flat view 28 messages, 5 authors, 2015-02-25

[PATCH v2 4/4] clk: dt: Introduce always-on clock domain documentation

From: Rob Herring <hidden>
Date: 2015-02-18 16:54:43
Also in: linux-devicetree, lkml

On Wed, Feb 18, 2015 at 10:15 AM, Lee Jones [off-list ref] wrote:
quoted hunk ↗ jump to hunk
Signed-off-by: Lee Jones <redacted>
---
 .../devicetree/bindings/clock/clk-domain.txt       | 35 ++++++++++++++++++++++
 1 file changed, 35 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/clock/clk-domain.txt
diff --git a/Documentation/devicetree/bindings/clock/clk-domain.txt b/Documentation/devicetree/bindings/clock/clk-domain.txt
new file mode 100644
index 0000000..b86772f5
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/clk-domain.txt
@@ -0,0 +1,35 @@
+Always-on Clock Domain
+
+Some hardware is contains bunches of clocks which must never be
+turned off.  If drivers a) fail to obtain a reference to any of
+these or b) give up a previously obtained reference during suspend,
+the common clk framework will attempt to disable them and the
+hardware can fail irrecoverably.  Usually, the only way to recover
+from these failures is to restart.
How is (b) not a bug?

While I think we need something here, I worry that this will be abused
to be a list of clocks you have not gotten around to managing. We
cannot be changing the DT every time the kernel starts managing a
clock. I think this should operate more as always on until claimed.
But then you get into drivers having to be aware that the clock
started enabled.

Also, I feel like we are using DT to work around kernel policy (of
turning off clocks). If the policy was to leave on clocks, then we
would be trying to put a list of clocks to disable in DT.

Rob
+
+To avoid either of these two scenarios from catastrophically
+disabling an otherwise perfectly healthy running system, we have
+implemented a clock domain where clocks are consumed and references
+are taken, thus preventing them from being shut down by the
+framework.
+
+We use the generic clock bindings found in:
+  Documentation/devicetree/bindings/clock/clock-bindings.txt
+
+Required properties:
+- compatible : Must be "always-on-clk-domain"
+
+Example:
+
+clk-domain {
+       compatible = "always-on-clk-domain";
+       clocks = <&clk_s_c0_flexgen CLK_EXT2F_A9>,
+                <&clk_s_c0_flexgen CLK_COMPO_DVP>,
+                <&clk_s_c0_flexgen CLK_MMC_1>,
+                <&clk_s_c0_flexgen CLK_ICN_SBC>,
+                <&clk_s_c0_flexgen CLK_ICN_LMI>,
+                <&clk_s_c0_flexgen CLK_ICN_CPU>,
+                <&clk_s_c0_flexgen CLK_TX_ICN_DMU>,
+                <&clk_s_a0_flexgen CLK_IC_LMI0>,
+                <&clk_m_a9>;
+};
--
1.9.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help