All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] ARM: at91: Document new TCB bindings
@ 2016-06-27 15:05 ` Alexandre Belloni
  0 siblings, 0 replies; 24+ messages in thread
From: Alexandre Belloni @ 2016-06-27 15:05 UTC (permalink / raw)
  To: Nicolas Ferre
  Cc: Boris Brezillon, Jean-Christophe Plagniol-Villard,
	linux-arm-kernel, linux-kernel, Alexandre Belloni,
	Daniel Lezcano, Thierry Reding, linux-pwm, Rob Herring,
	devicetree

The current binding for the TCB is not flexible enough for some use cases
and prevents proper utilization of all the channels.

Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
Cc: Thierry Reding <thierry.reding@gmail.com>
Cc: linux-pwm@vger.kernel.org
Cc: Rob Herring <robh+dt@kernel.org>
Cc: devicetree@vger.kernel.org
Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
---

Changes in v2:
 - added slow_clk in the examples
 - removed linuxisms

Rob, does that fit what you wanted? I prefer getting your ack on that one before
resending a 48 patches series.


 .../devicetree/bindings/arm/atmel-at91.txt         | 32 -----------
 .../devicetree/bindings/mfd/atmel-tcb.txt          | 62 ++++++++++++++++++++++
 .../devicetree/bindings/pwm/atmel-tcb-pwm.txt      | 12 +++--
 3 files changed, 69 insertions(+), 37 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/mfd/atmel-tcb.txt

diff --git a/Documentation/devicetree/bindings/arm/atmel-at91.txt b/Documentation/devicetree/bindings/arm/atmel-at91.txt
index e1f5ad855f14..3dc758403d03 100644
--- a/Documentation/devicetree/bindings/arm/atmel-at91.txt
+++ b/Documentation/devicetree/bindings/arm/atmel-at91.txt
@@ -60,38 +60,6 @@ System Timer (ST) required properties:
 Its subnodes can be:
 - watchdog: compatible should be "atmel,at91rm9200-wdt"
 
-TC/TCLIB Timer required properties:
-- compatible: Should be "atmel,<chip>-tcb".
-  <chip> can be "at91rm9200" or "at91sam9x5"
-- reg: Should contain registers location and length
-- interrupts: Should contain all interrupts for the TC block
-  Note that you can specify several interrupt cells if the TC
-  block has one interrupt per channel.
-- clock-names: tuple listing input clock names.
-	Required elements: "t0_clk", "slow_clk"
-	Optional elements: "t1_clk", "t2_clk"
-- clocks: phandles to input clocks.
-
-Examples:
-
-One interrupt per TC block:
-	tcb0: timer@fff7c000 {
-		compatible = "atmel,at91rm9200-tcb";
-		reg = <0xfff7c000 0x100>;
-		interrupts = <18 4>;
-		clocks = <&tcb0_clk>;
-		clock-names = "t0_clk";
-	};
-
-One interrupt per TC channel in a TC block:
-	tcb1: timer@fffdc000 {
-		compatible = "atmel,at91rm9200-tcb";
-		reg = <0xfffdc000 0x100>;
-		interrupts = <26 4 27 4 28 4>;
-		clocks = <&tcb1_clk>;
-		clock-names = "t0_clk";
-	};
-
 RSTC Reset Controller required properties:
 - compatible: Should be "atmel,<chip>-rstc".
   <chip> can be "at91sam9260" or "at91sam9g45" or "sama5d3"
diff --git a/Documentation/devicetree/bindings/mfd/atmel-tcb.txt b/Documentation/devicetree/bindings/mfd/atmel-tcb.txt
new file mode 100644
index 000000000000..71c8d83c01a7
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/atmel-tcb.txt
@@ -0,0 +1,62 @@
+* Device tree bindings for Atmel Timer Counter Blocks
+- compatible: Should be "atmel,<chip>-tcb", "simple-mfd", "syscon".
+  <chip> can be "at91rm9200" or "at91sam9x5"
+- reg: Should contain registers location and length
+- #address-cells: has to be 1
+- #size-cells: has to be 0
+- interrupts: Should contain all interrupts for the TC block
+  Note that you can specify several interrupt cells if the TC
+  block has one interrupt per channel.
+- clock-names: tuple listing input clock names.
+	Required elements: "t0_clk", "slow_clk"
+	Optional elements: "t1_clk", "t2_clk"
+- clocks: phandles to input clocks.
+
+The TCB can expose multiple subdevices:
+ * a clocksource and clockevent device
+   - compatible: Should be "atmel,tcb-free-running-timer"
+   - reg: Should contain the TCB channels to be used. If the
+     counter width is 16 bits (at91rm9200-tcb), two consecutive
+     channels are needed. Else, only one channel will be used.
+
+ * a clockevent device
+   - compatible: Should be "atmel,tcb-programmable-timer"
+   - reg: Should contain the TCB channel to be used
+
+ * a PWM chip: see ../pwm/atmel-tcb-pwm.txt
+
+Examples:
+
+One interrupt per TC block:
+	tcb0: timer@fff7c000 {
+		compatible = "atmel,at91rm9200-tcb", "simple-mfd", "syscon";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		reg = <0xfff7c000 0x100>;
+		interrupts = <18 4>;
+		clocks = <&tcb0_clk>, <&clk32k>;
+		clock-names = "t0_clk", "slow_clk";
+
+		timer@0 {
+			compatible = "atmel,tcb-free-running-timer";
+			reg = <0>, <1>;
+		};
+
+		timer@2 {
+			compatible = "atmel,tcb-programmable-timer";
+			reg = <2>;
+		};
+	};
+
+One interrupt per TC channel in a TC block:
+	tcb1: timer@fffdc000 {
+		compatible = "atmel,at91rm9200-tcb", "simple-mfd", "syscon";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		reg = <0xfffdc000 0x100>;
+		interrupts = <26 4>, <27 4>, <28 4>;
+		clocks = <&tcb1_clk>, <&clk32k>;
+		clock-names = "t0_clk", "slow_clk";
+	};
+
+
diff --git a/Documentation/devicetree/bindings/pwm/atmel-tcb-pwm.txt b/Documentation/devicetree/bindings/pwm/atmel-tcb-pwm.txt
index 8031148bcf85..ab8fbd5ba184 100644
--- a/Documentation/devicetree/bindings/pwm/atmel-tcb-pwm.txt
+++ b/Documentation/devicetree/bindings/pwm/atmel-tcb-pwm.txt
@@ -2,15 +2,17 @@ Atmel TCB PWM controller
 
 Required properties:
 - compatible: should be "atmel,tcb-pwm"
+- reg: tcb channel to use. Each channel can export 2 PWMs
 - #pwm-cells: should be 3. See pwm.txt in this directory for a description of
   the cells format. The only third cell flag supported by this binding is
   PWM_POLARITY_INVERTED.
-- tc-block: The Timer Counter block to use as a PWM chip.
 
 Example:
 
-pwm {
-	compatible = "atmel,tcb-pwm";
-	#pwm-cells = <3>;
-	tc-block = <1>;
+tcb0: timer@f800c000 {
+	pwm@0 {
+		compatible = "atmel,tcb-pwm";
+		reg = <0>;
+		#pwm-cells = <3>;
+	};
 };
-- 
2.8.1

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

* [PATCH v2] ARM: at91: Document new TCB bindings
@ 2016-06-27 15:05 ` Alexandre Belloni
  0 siblings, 0 replies; 24+ messages in thread
From: Alexandre Belloni @ 2016-06-27 15:05 UTC (permalink / raw)
  To: linux-arm-kernel

The current binding for the TCB is not flexible enough for some use cases
and prevents proper utilization of all the channels.

Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
Cc: Thierry Reding <thierry.reding@gmail.com>
Cc: linux-pwm at vger.kernel.org
Cc: Rob Herring <robh+dt@kernel.org>
Cc: devicetree at vger.kernel.org
Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
---

Changes in v2:
 - added slow_clk in the examples
 - removed linuxisms

Rob, does that fit what you wanted? I prefer getting your ack on that one before
resending a 48 patches series.


 .../devicetree/bindings/arm/atmel-at91.txt         | 32 -----------
 .../devicetree/bindings/mfd/atmel-tcb.txt          | 62 ++++++++++++++++++++++
 .../devicetree/bindings/pwm/atmel-tcb-pwm.txt      | 12 +++--
 3 files changed, 69 insertions(+), 37 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/mfd/atmel-tcb.txt

diff --git a/Documentation/devicetree/bindings/arm/atmel-at91.txt b/Documentation/devicetree/bindings/arm/atmel-at91.txt
index e1f5ad855f14..3dc758403d03 100644
--- a/Documentation/devicetree/bindings/arm/atmel-at91.txt
+++ b/Documentation/devicetree/bindings/arm/atmel-at91.txt
@@ -60,38 +60,6 @@ System Timer (ST) required properties:
 Its subnodes can be:
 - watchdog: compatible should be "atmel,at91rm9200-wdt"
 
-TC/TCLIB Timer required properties:
-- compatible: Should be "atmel,<chip>-tcb".
-  <chip> can be "at91rm9200" or "at91sam9x5"
-- reg: Should contain registers location and length
-- interrupts: Should contain all interrupts for the TC block
-  Note that you can specify several interrupt cells if the TC
-  block has one interrupt per channel.
-- clock-names: tuple listing input clock names.
-	Required elements: "t0_clk", "slow_clk"
-	Optional elements: "t1_clk", "t2_clk"
-- clocks: phandles to input clocks.
-
-Examples:
-
-One interrupt per TC block:
-	tcb0: timer at fff7c000 {
-		compatible = "atmel,at91rm9200-tcb";
-		reg = <0xfff7c000 0x100>;
-		interrupts = <18 4>;
-		clocks = <&tcb0_clk>;
-		clock-names = "t0_clk";
-	};
-
-One interrupt per TC channel in a TC block:
-	tcb1: timer at fffdc000 {
-		compatible = "atmel,at91rm9200-tcb";
-		reg = <0xfffdc000 0x100>;
-		interrupts = <26 4 27 4 28 4>;
-		clocks = <&tcb1_clk>;
-		clock-names = "t0_clk";
-	};
-
 RSTC Reset Controller required properties:
 - compatible: Should be "atmel,<chip>-rstc".
   <chip> can be "at91sam9260" or "at91sam9g45" or "sama5d3"
diff --git a/Documentation/devicetree/bindings/mfd/atmel-tcb.txt b/Documentation/devicetree/bindings/mfd/atmel-tcb.txt
new file mode 100644
index 000000000000..71c8d83c01a7
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/atmel-tcb.txt
@@ -0,0 +1,62 @@
+* Device tree bindings for Atmel Timer Counter Blocks
+- compatible: Should be "atmel,<chip>-tcb", "simple-mfd", "syscon".
+  <chip> can be "at91rm9200" or "at91sam9x5"
+- reg: Should contain registers location and length
+- #address-cells: has to be 1
+- #size-cells: has to be 0
+- interrupts: Should contain all interrupts for the TC block
+  Note that you can specify several interrupt cells if the TC
+  block has one interrupt per channel.
+- clock-names: tuple listing input clock names.
+	Required elements: "t0_clk", "slow_clk"
+	Optional elements: "t1_clk", "t2_clk"
+- clocks: phandles to input clocks.
+
+The TCB can expose multiple subdevices:
+ * a clocksource and clockevent device
+   - compatible: Should be "atmel,tcb-free-running-timer"
+   - reg: Should contain the TCB channels to be used. If the
+     counter width is 16 bits (at91rm9200-tcb), two consecutive
+     channels are needed. Else, only one channel will be used.
+
+ * a clockevent device
+   - compatible: Should be "atmel,tcb-programmable-timer"
+   - reg: Should contain the TCB channel to be used
+
+ * a PWM chip: see ../pwm/atmel-tcb-pwm.txt
+
+Examples:
+
+One interrupt per TC block:
+	tcb0: timer at fff7c000 {
+		compatible = "atmel,at91rm9200-tcb", "simple-mfd", "syscon";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		reg = <0xfff7c000 0x100>;
+		interrupts = <18 4>;
+		clocks = <&tcb0_clk>, <&clk32k>;
+		clock-names = "t0_clk", "slow_clk";
+
+		timer at 0 {
+			compatible = "atmel,tcb-free-running-timer";
+			reg = <0>, <1>;
+		};
+
+		timer at 2 {
+			compatible = "atmel,tcb-programmable-timer";
+			reg = <2>;
+		};
+	};
+
+One interrupt per TC channel in a TC block:
+	tcb1: timer at fffdc000 {
+		compatible = "atmel,at91rm9200-tcb", "simple-mfd", "syscon";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		reg = <0xfffdc000 0x100>;
+		interrupts = <26 4>, <27 4>, <28 4>;
+		clocks = <&tcb1_clk>, <&clk32k>;
+		clock-names = "t0_clk", "slow_clk";
+	};
+
+
diff --git a/Documentation/devicetree/bindings/pwm/atmel-tcb-pwm.txt b/Documentation/devicetree/bindings/pwm/atmel-tcb-pwm.txt
index 8031148bcf85..ab8fbd5ba184 100644
--- a/Documentation/devicetree/bindings/pwm/atmel-tcb-pwm.txt
+++ b/Documentation/devicetree/bindings/pwm/atmel-tcb-pwm.txt
@@ -2,15 +2,17 @@ Atmel TCB PWM controller
 
 Required properties:
 - compatible: should be "atmel,tcb-pwm"
+- reg: tcb channel to use. Each channel can export 2 PWMs
 - #pwm-cells: should be 3. See pwm.txt in this directory for a description of
   the cells format. The only third cell flag supported by this binding is
   PWM_POLARITY_INVERTED.
-- tc-block: The Timer Counter block to use as a PWM chip.
 
 Example:
 
-pwm {
-	compatible = "atmel,tcb-pwm";
-	#pwm-cells = <3>;
-	tc-block = <1>;
+tcb0: timer at f800c000 {
+	pwm at 0 {
+		compatible = "atmel,tcb-pwm";
+		reg = <0>;
+		#pwm-cells = <3>;
+	};
 };
-- 
2.8.1

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

* Re: [PATCH v2] ARM: at91: Document new TCB bindings
  2016-06-27 15:05 ` Alexandre Belloni
@ 2016-07-01  1:27   ` Rob Herring
  -1 siblings, 0 replies; 24+ messages in thread
From: Rob Herring @ 2016-07-01  1:27 UTC (permalink / raw)
  To: Alexandre Belloni
  Cc: Nicolas Ferre, Boris Brezillon, Jean-Christophe Plagniol-Villard,
	linux-arm-kernel, linux-kernel, Daniel Lezcano, Thierry Reding,
	linux-pwm, devicetree

On Mon, Jun 27, 2016 at 05:05:01PM +0200, Alexandre Belloni wrote:
> The current binding for the TCB is not flexible enough for some use cases
> and prevents proper utilization of all the channels.
> 
> Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
> Cc: Thierry Reding <thierry.reding@gmail.com>
> Cc: linux-pwm@vger.kernel.org
> Cc: Rob Herring <robh+dt@kernel.org>
> Cc: devicetree@vger.kernel.org
> Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
> ---
> 
> Changes in v2:
>  - added slow_clk in the examples
>  - removed linuxisms
> 
> Rob, does that fit what you wanted? I prefer getting your ack on that one before
> resending a 48 patches series.
> 
> 
>  .../devicetree/bindings/arm/atmel-at91.txt         | 32 -----------
>  .../devicetree/bindings/mfd/atmel-tcb.txt          | 62 ++++++++++++++++++++++
>  .../devicetree/bindings/pwm/atmel-tcb-pwm.txt      | 12 +++--
>  3 files changed, 69 insertions(+), 37 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/mfd/atmel-tcb.txt
> 
> diff --git a/Documentation/devicetree/bindings/arm/atmel-at91.txt b/Documentation/devicetree/bindings/arm/atmel-at91.txt
> index e1f5ad855f14..3dc758403d03 100644
> --- a/Documentation/devicetree/bindings/arm/atmel-at91.txt
> +++ b/Documentation/devicetree/bindings/arm/atmel-at91.txt
> @@ -60,38 +60,6 @@ System Timer (ST) required properties:
>  Its subnodes can be:
>  - watchdog: compatible should be "atmel,at91rm9200-wdt"
>  
> -TC/TCLIB Timer required properties:
> -- compatible: Should be "atmel,<chip>-tcb".
> -  <chip> can be "at91rm9200" or "at91sam9x5"
> -- reg: Should contain registers location and length
> -- interrupts: Should contain all interrupts for the TC block
> -  Note that you can specify several interrupt cells if the TC
> -  block has one interrupt per channel.
> -- clock-names: tuple listing input clock names.
> -	Required elements: "t0_clk", "slow_clk"
> -	Optional elements: "t1_clk", "t2_clk"
> -- clocks: phandles to input clocks.
> -
> -Examples:
> -
> -One interrupt per TC block:
> -	tcb0: timer@fff7c000 {
> -		compatible = "atmel,at91rm9200-tcb";
> -		reg = <0xfff7c000 0x100>;
> -		interrupts = <18 4>;
> -		clocks = <&tcb0_clk>;
> -		clock-names = "t0_clk";
> -	};
> -
> -One interrupt per TC channel in a TC block:
> -	tcb1: timer@fffdc000 {
> -		compatible = "atmel,at91rm9200-tcb";
> -		reg = <0xfffdc000 0x100>;
> -		interrupts = <26 4 27 4 28 4>;
> -		clocks = <&tcb1_clk>;
> -		clock-names = "t0_clk";
> -	};
> -
>  RSTC Reset Controller required properties:
>  - compatible: Should be "atmel,<chip>-rstc".
>    <chip> can be "at91sam9260" or "at91sam9g45" or "sama5d3"
> diff --git a/Documentation/devicetree/bindings/mfd/atmel-tcb.txt b/Documentation/devicetree/bindings/mfd/atmel-tcb.txt
> new file mode 100644
> index 000000000000..71c8d83c01a7
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mfd/atmel-tcb.txt
> @@ -0,0 +1,62 @@
> +* Device tree bindings for Atmel Timer Counter Blocks
> +- compatible: Should be "atmel,<chip>-tcb", "simple-mfd", "syscon".
> +  <chip> can be "at91rm9200" or "at91sam9x5"
> +- reg: Should contain registers location and length
> +- #address-cells: has to be 1
> +- #size-cells: has to be 0
> +- interrupts: Should contain all interrupts for the TC block
> +  Note that you can specify several interrupt cells if the TC
> +  block has one interrupt per channel.
> +- clock-names: tuple listing input clock names.
> +	Required elements: "t0_clk", "slow_clk"
> +	Optional elements: "t1_clk", "t2_clk"
> +- clocks: phandles to input clocks.
> +
> +The TCB can expose multiple subdevices:
> + * a clocksource and clockevent device

This still uses Linux terminology.

> +   - compatible: Should be "atmel,tcb-free-running-timer"
> +   - reg: Should contain the TCB channels to be used. If the
> +     counter width is 16 bits (at91rm9200-tcb), two consecutive
> +     channels are needed. Else, only one channel will be used.
> +
> + * a clockevent device
> +   - compatible: Should be "atmel,tcb-programmable-timer"

This still looks like assigning usage in DT. As I'm willing to accept 
that for PWM, either timer channels should be whatever channels are not 
assigned to PWM (i.e. not in DT) or they should just be "timer" and let 
the kernel decide their usage.

Rob

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

* [PATCH v2] ARM: at91: Document new TCB bindings
@ 2016-07-01  1:27   ` Rob Herring
  0 siblings, 0 replies; 24+ messages in thread
From: Rob Herring @ 2016-07-01  1:27 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Jun 27, 2016 at 05:05:01PM +0200, Alexandre Belloni wrote:
> The current binding for the TCB is not flexible enough for some use cases
> and prevents proper utilization of all the channels.
> 
> Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
> Cc: Thierry Reding <thierry.reding@gmail.com>
> Cc: linux-pwm at vger.kernel.org
> Cc: Rob Herring <robh+dt@kernel.org>
> Cc: devicetree at vger.kernel.org
> Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
> ---
> 
> Changes in v2:
>  - added slow_clk in the examples
>  - removed linuxisms
> 
> Rob, does that fit what you wanted? I prefer getting your ack on that one before
> resending a 48 patches series.
> 
> 
>  .../devicetree/bindings/arm/atmel-at91.txt         | 32 -----------
>  .../devicetree/bindings/mfd/atmel-tcb.txt          | 62 ++++++++++++++++++++++
>  .../devicetree/bindings/pwm/atmel-tcb-pwm.txt      | 12 +++--
>  3 files changed, 69 insertions(+), 37 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/mfd/atmel-tcb.txt
> 
> diff --git a/Documentation/devicetree/bindings/arm/atmel-at91.txt b/Documentation/devicetree/bindings/arm/atmel-at91.txt
> index e1f5ad855f14..3dc758403d03 100644
> --- a/Documentation/devicetree/bindings/arm/atmel-at91.txt
> +++ b/Documentation/devicetree/bindings/arm/atmel-at91.txt
> @@ -60,38 +60,6 @@ System Timer (ST) required properties:
>  Its subnodes can be:
>  - watchdog: compatible should be "atmel,at91rm9200-wdt"
>  
> -TC/TCLIB Timer required properties:
> -- compatible: Should be "atmel,<chip>-tcb".
> -  <chip> can be "at91rm9200" or "at91sam9x5"
> -- reg: Should contain registers location and length
> -- interrupts: Should contain all interrupts for the TC block
> -  Note that you can specify several interrupt cells if the TC
> -  block has one interrupt per channel.
> -- clock-names: tuple listing input clock names.
> -	Required elements: "t0_clk", "slow_clk"
> -	Optional elements: "t1_clk", "t2_clk"
> -- clocks: phandles to input clocks.
> -
> -Examples:
> -
> -One interrupt per TC block:
> -	tcb0: timer at fff7c000 {
> -		compatible = "atmel,at91rm9200-tcb";
> -		reg = <0xfff7c000 0x100>;
> -		interrupts = <18 4>;
> -		clocks = <&tcb0_clk>;
> -		clock-names = "t0_clk";
> -	};
> -
> -One interrupt per TC channel in a TC block:
> -	tcb1: timer at fffdc000 {
> -		compatible = "atmel,at91rm9200-tcb";
> -		reg = <0xfffdc000 0x100>;
> -		interrupts = <26 4 27 4 28 4>;
> -		clocks = <&tcb1_clk>;
> -		clock-names = "t0_clk";
> -	};
> -
>  RSTC Reset Controller required properties:
>  - compatible: Should be "atmel,<chip>-rstc".
>    <chip> can be "at91sam9260" or "at91sam9g45" or "sama5d3"
> diff --git a/Documentation/devicetree/bindings/mfd/atmel-tcb.txt b/Documentation/devicetree/bindings/mfd/atmel-tcb.txt
> new file mode 100644
> index 000000000000..71c8d83c01a7
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mfd/atmel-tcb.txt
> @@ -0,0 +1,62 @@
> +* Device tree bindings for Atmel Timer Counter Blocks
> +- compatible: Should be "atmel,<chip>-tcb", "simple-mfd", "syscon".
> +  <chip> can be "at91rm9200" or "at91sam9x5"
> +- reg: Should contain registers location and length
> +- #address-cells: has to be 1
> +- #size-cells: has to be 0
> +- interrupts: Should contain all interrupts for the TC block
> +  Note that you can specify several interrupt cells if the TC
> +  block has one interrupt per channel.
> +- clock-names: tuple listing input clock names.
> +	Required elements: "t0_clk", "slow_clk"
> +	Optional elements: "t1_clk", "t2_clk"
> +- clocks: phandles to input clocks.
> +
> +The TCB can expose multiple subdevices:
> + * a clocksource and clockevent device

This still uses Linux terminology.

> +   - compatible: Should be "atmel,tcb-free-running-timer"
> +   - reg: Should contain the TCB channels to be used. If the
> +     counter width is 16 bits (at91rm9200-tcb), two consecutive
> +     channels are needed. Else, only one channel will be used.
> +
> + * a clockevent device
> +   - compatible: Should be "atmel,tcb-programmable-timer"

This still looks like assigning usage in DT. As I'm willing to accept 
that for PWM, either timer channels should be whatever channels are not 
assigned to PWM (i.e. not in DT) or they should just be "timer" and let 
the kernel decide their usage.

Rob

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

* Re: [PATCH v2] ARM: at91: Document new TCB bindings
  2016-07-01  1:27   ` Rob Herring
@ 2016-07-04 13:10     ` Boris Brezillon
  -1 siblings, 0 replies; 24+ messages in thread
From: Boris Brezillon @ 2016-07-04 13:10 UTC (permalink / raw)
  To: Rob Herring
  Cc: Alexandre Belloni, Nicolas Ferre,
	Jean-Christophe Plagniol-Villard, linux-arm-kernel, linux-kernel,
	Daniel Lezcano, Thierry Reding, linux-pwm, devicetree

On Thu, 30 Jun 2016 20:27:43 -0500
Rob Herring <robh@kernel.org> wrote:

> On Mon, Jun 27, 2016 at 05:05:01PM +0200, Alexandre Belloni wrote:
> > The current binding for the TCB is not flexible enough for some use cases
> > and prevents proper utilization of all the channels.
> > 
> > Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
> > Cc: Thierry Reding <thierry.reding@gmail.com>
> > Cc: linux-pwm@vger.kernel.org
> > Cc: Rob Herring <robh+dt@kernel.org>
> > Cc: devicetree@vger.kernel.org
> > Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
> > ---
> > 
> > Changes in v2:
> >  - added slow_clk in the examples
> >  - removed linuxisms
> > 
> > Rob, does that fit what you wanted? I prefer getting your ack on that one before
> > resending a 48 patches series.
> > 
> > 
> >  .../devicetree/bindings/arm/atmel-at91.txt         | 32 -----------
> >  .../devicetree/bindings/mfd/atmel-tcb.txt          | 62 ++++++++++++++++++++++
> >  .../devicetree/bindings/pwm/atmel-tcb-pwm.txt      | 12 +++--
> >  3 files changed, 69 insertions(+), 37 deletions(-)
> >  create mode 100644 Documentation/devicetree/bindings/mfd/atmel-tcb.txt
> > 
> > diff --git a/Documentation/devicetree/bindings/arm/atmel-at91.txt b/Documentation/devicetree/bindings/arm/atmel-at91.txt
> > index e1f5ad855f14..3dc758403d03 100644
> > --- a/Documentation/devicetree/bindings/arm/atmel-at91.txt
> > +++ b/Documentation/devicetree/bindings/arm/atmel-at91.txt
> > @@ -60,38 +60,6 @@ System Timer (ST) required properties:
> >  Its subnodes can be:
> >  - watchdog: compatible should be "atmel,at91rm9200-wdt"
> >  
> > -TC/TCLIB Timer required properties:
> > -- compatible: Should be "atmel,<chip>-tcb".
> > -  <chip> can be "at91rm9200" or "at91sam9x5"
> > -- reg: Should contain registers location and length
> > -- interrupts: Should contain all interrupts for the TC block
> > -  Note that you can specify several interrupt cells if the TC
> > -  block has one interrupt per channel.
> > -- clock-names: tuple listing input clock names.
> > -	Required elements: "t0_clk", "slow_clk"
> > -	Optional elements: "t1_clk", "t2_clk"
> > -- clocks: phandles to input clocks.
> > -
> > -Examples:
> > -
> > -One interrupt per TC block:
> > -	tcb0: timer@fff7c000 {
> > -		compatible = "atmel,at91rm9200-tcb";
> > -		reg = <0xfff7c000 0x100>;
> > -		interrupts = <18 4>;
> > -		clocks = <&tcb0_clk>;
> > -		clock-names = "t0_clk";
> > -	};
> > -
> > -One interrupt per TC channel in a TC block:
> > -	tcb1: timer@fffdc000 {
> > -		compatible = "atmel,at91rm9200-tcb";
> > -		reg = <0xfffdc000 0x100>;
> > -		interrupts = <26 4 27 4 28 4>;
> > -		clocks = <&tcb1_clk>;
> > -		clock-names = "t0_clk";
> > -	};
> > -
> >  RSTC Reset Controller required properties:
> >  - compatible: Should be "atmel,<chip>-rstc".
> >    <chip> can be "at91sam9260" or "at91sam9g45" or "sama5d3"
> > diff --git a/Documentation/devicetree/bindings/mfd/atmel-tcb.txt b/Documentation/devicetree/bindings/mfd/atmel-tcb.txt
> > new file mode 100644
> > index 000000000000..71c8d83c01a7
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/mfd/atmel-tcb.txt
> > @@ -0,0 +1,62 @@
> > +* Device tree bindings for Atmel Timer Counter Blocks
> > +- compatible: Should be "atmel,<chip>-tcb", "simple-mfd", "syscon".
> > +  <chip> can be "at91rm9200" or "at91sam9x5"
> > +- reg: Should contain registers location and length
> > +- #address-cells: has to be 1
> > +- #size-cells: has to be 0
> > +- interrupts: Should contain all interrupts for the TC block
> > +  Note that you can specify several interrupt cells if the TC
> > +  block has one interrupt per channel.
> > +- clock-names: tuple listing input clock names.
> > +	Required elements: "t0_clk", "slow_clk"
> > +	Optional elements: "t1_clk", "t2_clk"
> > +- clocks: phandles to input clocks.
> > +
> > +The TCB can expose multiple subdevices:
> > + * a clocksource and clockevent device  
> 
> This still uses Linux terminology.
> 
> > +   - compatible: Should be "atmel,tcb-free-running-timer"
> > +   - reg: Should contain the TCB channels to be used. If the
> > +     counter width is 16 bits (at91rm9200-tcb), two consecutive
> > +     channels are needed. Else, only one channel will be used.
> > +
> > + * a clockevent device
> > +   - compatible: Should be "atmel,tcb-programmable-timer"  
> 
> This still looks like assigning usage in DT. As I'm willing to accept 
> that for PWM, either timer channels should be whatever channels are not 
> assigned to PWM (i.e. not in DT) or they should just be "timer" and let 
> the kernel decide their usage.

I just reviewed Alexandre's new binding, and it makes the whole thing
a lot more obscure: on older SoCs, we have to chain 2 channels to
create an acceptable wraparound time (16 bits at 5MHz is generating too
much interrupts to be acceptable).

If we don't assign the mode from the DT, how should we know which
channels should be chained to create the free-running timer? Note that
not all channels can be chained together: they have to be part of the
same timer counter block and have to be consecutive (0+1, 1+2 or 3+0).

Honestly, I don't see the difference between assigning the channel to a
PWM mode and assigning it to a free-running or oneshot timer mode. Why
is it more acceptable?

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

* [PATCH v2] ARM: at91: Document new TCB bindings
@ 2016-07-04 13:10     ` Boris Brezillon
  0 siblings, 0 replies; 24+ messages in thread
From: Boris Brezillon @ 2016-07-04 13:10 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, 30 Jun 2016 20:27:43 -0500
Rob Herring <robh@kernel.org> wrote:

> On Mon, Jun 27, 2016 at 05:05:01PM +0200, Alexandre Belloni wrote:
> > The current binding for the TCB is not flexible enough for some use cases
> > and prevents proper utilization of all the channels.
> > 
> > Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
> > Cc: Thierry Reding <thierry.reding@gmail.com>
> > Cc: linux-pwm at vger.kernel.org
> > Cc: Rob Herring <robh+dt@kernel.org>
> > Cc: devicetree at vger.kernel.org
> > Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
> > ---
> > 
> > Changes in v2:
> >  - added slow_clk in the examples
> >  - removed linuxisms
> > 
> > Rob, does that fit what you wanted? I prefer getting your ack on that one before
> > resending a 48 patches series.
> > 
> > 
> >  .../devicetree/bindings/arm/atmel-at91.txt         | 32 -----------
> >  .../devicetree/bindings/mfd/atmel-tcb.txt          | 62 ++++++++++++++++++++++
> >  .../devicetree/bindings/pwm/atmel-tcb-pwm.txt      | 12 +++--
> >  3 files changed, 69 insertions(+), 37 deletions(-)
> >  create mode 100644 Documentation/devicetree/bindings/mfd/atmel-tcb.txt
> > 
> > diff --git a/Documentation/devicetree/bindings/arm/atmel-at91.txt b/Documentation/devicetree/bindings/arm/atmel-at91.txt
> > index e1f5ad855f14..3dc758403d03 100644
> > --- a/Documentation/devicetree/bindings/arm/atmel-at91.txt
> > +++ b/Documentation/devicetree/bindings/arm/atmel-at91.txt
> > @@ -60,38 +60,6 @@ System Timer (ST) required properties:
> >  Its subnodes can be:
> >  - watchdog: compatible should be "atmel,at91rm9200-wdt"
> >  
> > -TC/TCLIB Timer required properties:
> > -- compatible: Should be "atmel,<chip>-tcb".
> > -  <chip> can be "at91rm9200" or "at91sam9x5"
> > -- reg: Should contain registers location and length
> > -- interrupts: Should contain all interrupts for the TC block
> > -  Note that you can specify several interrupt cells if the TC
> > -  block has one interrupt per channel.
> > -- clock-names: tuple listing input clock names.
> > -	Required elements: "t0_clk", "slow_clk"
> > -	Optional elements: "t1_clk", "t2_clk"
> > -- clocks: phandles to input clocks.
> > -
> > -Examples:
> > -
> > -One interrupt per TC block:
> > -	tcb0: timer at fff7c000 {
> > -		compatible = "atmel,at91rm9200-tcb";
> > -		reg = <0xfff7c000 0x100>;
> > -		interrupts = <18 4>;
> > -		clocks = <&tcb0_clk>;
> > -		clock-names = "t0_clk";
> > -	};
> > -
> > -One interrupt per TC channel in a TC block:
> > -	tcb1: timer at fffdc000 {
> > -		compatible = "atmel,at91rm9200-tcb";
> > -		reg = <0xfffdc000 0x100>;
> > -		interrupts = <26 4 27 4 28 4>;
> > -		clocks = <&tcb1_clk>;
> > -		clock-names = "t0_clk";
> > -	};
> > -
> >  RSTC Reset Controller required properties:
> >  - compatible: Should be "atmel,<chip>-rstc".
> >    <chip> can be "at91sam9260" or "at91sam9g45" or "sama5d3"
> > diff --git a/Documentation/devicetree/bindings/mfd/atmel-tcb.txt b/Documentation/devicetree/bindings/mfd/atmel-tcb.txt
> > new file mode 100644
> > index 000000000000..71c8d83c01a7
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/mfd/atmel-tcb.txt
> > @@ -0,0 +1,62 @@
> > +* Device tree bindings for Atmel Timer Counter Blocks
> > +- compatible: Should be "atmel,<chip>-tcb", "simple-mfd", "syscon".
> > +  <chip> can be "at91rm9200" or "at91sam9x5"
> > +- reg: Should contain registers location and length
> > +- #address-cells: has to be 1
> > +- #size-cells: has to be 0
> > +- interrupts: Should contain all interrupts for the TC block
> > +  Note that you can specify several interrupt cells if the TC
> > +  block has one interrupt per channel.
> > +- clock-names: tuple listing input clock names.
> > +	Required elements: "t0_clk", "slow_clk"
> > +	Optional elements: "t1_clk", "t2_clk"
> > +- clocks: phandles to input clocks.
> > +
> > +The TCB can expose multiple subdevices:
> > + * a clocksource and clockevent device  
> 
> This still uses Linux terminology.
> 
> > +   - compatible: Should be "atmel,tcb-free-running-timer"
> > +   - reg: Should contain the TCB channels to be used. If the
> > +     counter width is 16 bits (at91rm9200-tcb), two consecutive
> > +     channels are needed. Else, only one channel will be used.
> > +
> > + * a clockevent device
> > +   - compatible: Should be "atmel,tcb-programmable-timer"  
> 
> This still looks like assigning usage in DT. As I'm willing to accept 
> that for PWM, either timer channels should be whatever channels are not 
> assigned to PWM (i.e. not in DT) or they should just be "timer" and let 
> the kernel decide their usage.

I just reviewed Alexandre's new binding, and it makes the whole thing
a lot more obscure: on older SoCs, we have to chain 2 channels to
create an acceptable wraparound time (16 bits at 5MHz is generating too
much interrupts to be acceptable).

If we don't assign the mode from the DT, how should we know which
channels should be chained to create the free-running timer? Note that
not all channels can be chained together: they have to be part of the
same timer counter block and have to be consecutive (0+1, 1+2 or 3+0).

Honestly, I don't see the difference between assigning the channel to a
PWM mode and assigning it to a free-running or oneshot timer mode. Why
is it more acceptable?

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

* Re: [PATCH v2] ARM: at91: Document new TCB bindings
  2016-07-04 13:10     ` Boris Brezillon
  (?)
@ 2016-07-05 15:40       ` Rob Herring
  -1 siblings, 0 replies; 24+ messages in thread
From: Rob Herring @ 2016-07-05 15:40 UTC (permalink / raw)
  To: Boris Brezillon
  Cc: Alexandre Belloni, Nicolas Ferre,
	Jean-Christophe Plagniol-Villard, linux-arm-kernel, linux-kernel,
	Daniel Lezcano, Thierry Reding, Linux PWM List, devicetree

On Mon, Jul 4, 2016 at 8:10 AM, Boris Brezillon
<boris.brezillon@free-electrons.com> wrote:
> On Thu, 30 Jun 2016 20:27:43 -0500
> Rob Herring <robh@kernel.org> wrote:
>
>> On Mon, Jun 27, 2016 at 05:05:01PM +0200, Alexandre Belloni wrote:
>> > The current binding for the TCB is not flexible enough for some use cases
>> > and prevents proper utilization of all the channels.
>> >
>> > Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
>> > Cc: Thierry Reding <thierry.reding@gmail.com>
>> > Cc: linux-pwm@vger.kernel.org
>> > Cc: Rob Herring <robh+dt@kernel.org>
>> > Cc: devicetree@vger.kernel.org
>> > Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
>> > ---
>> >
>> > Changes in v2:
>> >  - added slow_clk in the examples
>> >  - removed linuxisms
>> >
>> > Rob, does that fit what you wanted? I prefer getting your ack on that one before
>> > resending a 48 patches series.
>> >
>> >
>> >  .../devicetree/bindings/arm/atmel-at91.txt         | 32 -----------
>> >  .../devicetree/bindings/mfd/atmel-tcb.txt          | 62 ++++++++++++++++++++++
>> >  .../devicetree/bindings/pwm/atmel-tcb-pwm.txt      | 12 +++--
>> >  3 files changed, 69 insertions(+), 37 deletions(-)
>> >  create mode 100644 Documentation/devicetree/bindings/mfd/atmel-tcb.txt
>> >
>> > diff --git a/Documentation/devicetree/bindings/arm/atmel-at91.txt b/Documentation/devicetree/bindings/arm/atmel-at91.txt
>> > index e1f5ad855f14..3dc758403d03 100644
>> > --- a/Documentation/devicetree/bindings/arm/atmel-at91.txt
>> > +++ b/Documentation/devicetree/bindings/arm/atmel-at91.txt
>> > @@ -60,38 +60,6 @@ System Timer (ST) required properties:
>> >  Its subnodes can be:
>> >  - watchdog: compatible should be "atmel,at91rm9200-wdt"
>> >
>> > -TC/TCLIB Timer required properties:
>> > -- compatible: Should be "atmel,<chip>-tcb".
>> > -  <chip> can be "at91rm9200" or "at91sam9x5"
>> > -- reg: Should contain registers location and length
>> > -- interrupts: Should contain all interrupts for the TC block
>> > -  Note that you can specify several interrupt cells if the TC
>> > -  block has one interrupt per channel.
>> > -- clock-names: tuple listing input clock names.
>> > -   Required elements: "t0_clk", "slow_clk"
>> > -   Optional elements: "t1_clk", "t2_clk"
>> > -- clocks: phandles to input clocks.
>> > -
>> > -Examples:
>> > -
>> > -One interrupt per TC block:
>> > -   tcb0: timer@fff7c000 {
>> > -           compatible = "atmel,at91rm9200-tcb";
>> > -           reg = <0xfff7c000 0x100>;
>> > -           interrupts = <18 4>;
>> > -           clocks = <&tcb0_clk>;
>> > -           clock-names = "t0_clk";
>> > -   };
>> > -
>> > -One interrupt per TC channel in a TC block:
>> > -   tcb1: timer@fffdc000 {
>> > -           compatible = "atmel,at91rm9200-tcb";
>> > -           reg = <0xfffdc000 0x100>;
>> > -           interrupts = <26 4 27 4 28 4>;
>> > -           clocks = <&tcb1_clk>;
>> > -           clock-names = "t0_clk";
>> > -   };
>> > -
>> >  RSTC Reset Controller required properties:
>> >  - compatible: Should be "atmel,<chip>-rstc".
>> >    <chip> can be "at91sam9260" or "at91sam9g45" or "sama5d3"
>> > diff --git a/Documentation/devicetree/bindings/mfd/atmel-tcb.txt b/Documentation/devicetree/bindings/mfd/atmel-tcb.txt
>> > new file mode 100644
>> > index 000000000000..71c8d83c01a7
>> > --- /dev/null
>> > +++ b/Documentation/devicetree/bindings/mfd/atmel-tcb.txt
>> > @@ -0,0 +1,62 @@
>> > +* Device tree bindings for Atmel Timer Counter Blocks
>> > +- compatible: Should be "atmel,<chip>-tcb", "simple-mfd", "syscon".
>> > +  <chip> can be "at91rm9200" or "at91sam9x5"
>> > +- reg: Should contain registers location and length
>> > +- #address-cells: has to be 1
>> > +- #size-cells: has to be 0
>> > +- interrupts: Should contain all interrupts for the TC block
>> > +  Note that you can specify several interrupt cells if the TC
>> > +  block has one interrupt per channel.
>> > +- clock-names: tuple listing input clock names.
>> > +   Required elements: "t0_clk", "slow_clk"
>> > +   Optional elements: "t1_clk", "t2_clk"
>> > +- clocks: phandles to input clocks.
>> > +
>> > +The TCB can expose multiple subdevices:
>> > + * a clocksource and clockevent device
>>
>> This still uses Linux terminology.
>>
>> > +   - compatible: Should be "atmel,tcb-free-running-timer"
>> > +   - reg: Should contain the TCB channels to be used. If the
>> > +     counter width is 16 bits (at91rm9200-tcb), two consecutive
>> > +     channels are needed. Else, only one channel will be used.
>> > +
>> > + * a clockevent device
>> > +   - compatible: Should be "atmel,tcb-programmable-timer"
>>
>> This still looks like assigning usage in DT. As I'm willing to accept
>> that for PWM, either timer channels should be whatever channels are not
>> assigned to PWM (i.e. not in DT) or they should just be "timer" and let
>> the kernel decide their usage.
>
> I just reviewed Alexandre's new binding, and it makes the whole thing
> a lot more obscure: on older SoCs, we have to chain 2 channels to
> create an acceptable wraparound time (16 bits at 5MHz is generating too
> much interrupts to be acceptable).
>
> If we don't assign the mode from the DT, how should we know which
> channels should be chained to create the free-running timer? Note that
> not all channels can be chained together: they have to be part of the
> same timer counter block and have to be consecutive (0+1, 1+2 or 3+0).

The driver can have this knowledge if it is just picking 2 consecutive
timers. It should already know it has 16-bit timers based on the
compatible string. If it gets more complicated then the features or
limitations of the channels should be listed so the driver can make a
choice. OMAP is a good example of lots of timers with differing
features.

> Honestly, I don't see the difference between assigning the channel to a
> PWM mode and assigning it to a free-running or oneshot timer mode. Why
> is it more acceptable?

The difference is that pwm's have clients (e.g. a backlight) in DT and
timers do not. We could just make the pwm clients reference the parent
node, but then it is hard to figure out which channels are in use for
pwm. That could also be solved with a simple "pwm-channels" property
listing the channels in use.

Rob

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

* Re: [PATCH v2] ARM: at91: Document new TCB bindings
@ 2016-07-05 15:40       ` Rob Herring
  0 siblings, 0 replies; 24+ messages in thread
From: Rob Herring @ 2016-07-05 15:40 UTC (permalink / raw)
  To: Boris Brezillon
  Cc: Alexandre Belloni, Nicolas Ferre,
	Jean-Christophe Plagniol-Villard,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Daniel Lezcano,
	Thierry Reding, Linux PWM List,
	devicetree-u79uwXL29TY76Z2rM5mHXA

On Mon, Jul 4, 2016 at 8:10 AM, Boris Brezillon
<boris.brezillon-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org> wrote:
> On Thu, 30 Jun 2016 20:27:43 -0500
> Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> wrote:
>
>> On Mon, Jun 27, 2016 at 05:05:01PM +0200, Alexandre Belloni wrote:
>> > The current binding for the TCB is not flexible enough for some use cases
>> > and prevents proper utilization of all the channels.
>> >
>> > Cc: Daniel Lezcano <daniel.lezcano-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
>> > Cc: Thierry Reding <thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>> > Cc: linux-pwm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
>> > Cc: Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
>> > Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
>> > Signed-off-by: Alexandre Belloni <alexandre.belloni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
>> > ---
>> >
>> > Changes in v2:
>> >  - added slow_clk in the examples
>> >  - removed linuxisms
>> >
>> > Rob, does that fit what you wanted? I prefer getting your ack on that one before
>> > resending a 48 patches series.
>> >
>> >
>> >  .../devicetree/bindings/arm/atmel-at91.txt         | 32 -----------
>> >  .../devicetree/bindings/mfd/atmel-tcb.txt          | 62 ++++++++++++++++++++++
>> >  .../devicetree/bindings/pwm/atmel-tcb-pwm.txt      | 12 +++--
>> >  3 files changed, 69 insertions(+), 37 deletions(-)
>> >  create mode 100644 Documentation/devicetree/bindings/mfd/atmel-tcb.txt
>> >
>> > diff --git a/Documentation/devicetree/bindings/arm/atmel-at91.txt b/Documentation/devicetree/bindings/arm/atmel-at91.txt
>> > index e1f5ad855f14..3dc758403d03 100644
>> > --- a/Documentation/devicetree/bindings/arm/atmel-at91.txt
>> > +++ b/Documentation/devicetree/bindings/arm/atmel-at91.txt
>> > @@ -60,38 +60,6 @@ System Timer (ST) required properties:
>> >  Its subnodes can be:
>> >  - watchdog: compatible should be "atmel,at91rm9200-wdt"
>> >
>> > -TC/TCLIB Timer required properties:
>> > -- compatible: Should be "atmel,<chip>-tcb".
>> > -  <chip> can be "at91rm9200" or "at91sam9x5"
>> > -- reg: Should contain registers location and length
>> > -- interrupts: Should contain all interrupts for the TC block
>> > -  Note that you can specify several interrupt cells if the TC
>> > -  block has one interrupt per channel.
>> > -- clock-names: tuple listing input clock names.
>> > -   Required elements: "t0_clk", "slow_clk"
>> > -   Optional elements: "t1_clk", "t2_clk"
>> > -- clocks: phandles to input clocks.
>> > -
>> > -Examples:
>> > -
>> > -One interrupt per TC block:
>> > -   tcb0: timer@fff7c000 {
>> > -           compatible = "atmel,at91rm9200-tcb";
>> > -           reg = <0xfff7c000 0x100>;
>> > -           interrupts = <18 4>;
>> > -           clocks = <&tcb0_clk>;
>> > -           clock-names = "t0_clk";
>> > -   };
>> > -
>> > -One interrupt per TC channel in a TC block:
>> > -   tcb1: timer@fffdc000 {
>> > -           compatible = "atmel,at91rm9200-tcb";
>> > -           reg = <0xfffdc000 0x100>;
>> > -           interrupts = <26 4 27 4 28 4>;
>> > -           clocks = <&tcb1_clk>;
>> > -           clock-names = "t0_clk";
>> > -   };
>> > -
>> >  RSTC Reset Controller required properties:
>> >  - compatible: Should be "atmel,<chip>-rstc".
>> >    <chip> can be "at91sam9260" or "at91sam9g45" or "sama5d3"
>> > diff --git a/Documentation/devicetree/bindings/mfd/atmel-tcb.txt b/Documentation/devicetree/bindings/mfd/atmel-tcb.txt
>> > new file mode 100644
>> > index 000000000000..71c8d83c01a7
>> > --- /dev/null
>> > +++ b/Documentation/devicetree/bindings/mfd/atmel-tcb.txt
>> > @@ -0,0 +1,62 @@
>> > +* Device tree bindings for Atmel Timer Counter Blocks
>> > +- compatible: Should be "atmel,<chip>-tcb", "simple-mfd", "syscon".
>> > +  <chip> can be "at91rm9200" or "at91sam9x5"
>> > +- reg: Should contain registers location and length
>> > +- #address-cells: has to be 1
>> > +- #size-cells: has to be 0
>> > +- interrupts: Should contain all interrupts for the TC block
>> > +  Note that you can specify several interrupt cells if the TC
>> > +  block has one interrupt per channel.
>> > +- clock-names: tuple listing input clock names.
>> > +   Required elements: "t0_clk", "slow_clk"
>> > +   Optional elements: "t1_clk", "t2_clk"
>> > +- clocks: phandles to input clocks.
>> > +
>> > +The TCB can expose multiple subdevices:
>> > + * a clocksource and clockevent device
>>
>> This still uses Linux terminology.
>>
>> > +   - compatible: Should be "atmel,tcb-free-running-timer"
>> > +   - reg: Should contain the TCB channels to be used. If the
>> > +     counter width is 16 bits (at91rm9200-tcb), two consecutive
>> > +     channels are needed. Else, only one channel will be used.
>> > +
>> > + * a clockevent device
>> > +   - compatible: Should be "atmel,tcb-programmable-timer"
>>
>> This still looks like assigning usage in DT. As I'm willing to accept
>> that for PWM, either timer channels should be whatever channels are not
>> assigned to PWM (i.e. not in DT) or they should just be "timer" and let
>> the kernel decide their usage.
>
> I just reviewed Alexandre's new binding, and it makes the whole thing
> a lot more obscure: on older SoCs, we have to chain 2 channels to
> create an acceptable wraparound time (16 bits at 5MHz is generating too
> much interrupts to be acceptable).
>
> If we don't assign the mode from the DT, how should we know which
> channels should be chained to create the free-running timer? Note that
> not all channels can be chained together: they have to be part of the
> same timer counter block and have to be consecutive (0+1, 1+2 or 3+0).

The driver can have this knowledge if it is just picking 2 consecutive
timers. It should already know it has 16-bit timers based on the
compatible string. If it gets more complicated then the features or
limitations of the channels should be listed so the driver can make a
choice. OMAP is a good example of lots of timers with differing
features.

> Honestly, I don't see the difference between assigning the channel to a
> PWM mode and assigning it to a free-running or oneshot timer mode. Why
> is it more acceptable?

The difference is that pwm's have clients (e.g. a backlight) in DT and
timers do not. We could just make the pwm clients reference the parent
node, but then it is hard to figure out which channels are in use for
pwm. That could also be solved with a simple "pwm-channels" property
listing the channels in use.

Rob
--
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] 24+ messages in thread

* [PATCH v2] ARM: at91: Document new TCB bindings
@ 2016-07-05 15:40       ` Rob Herring
  0 siblings, 0 replies; 24+ messages in thread
From: Rob Herring @ 2016-07-05 15:40 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Jul 4, 2016 at 8:10 AM, Boris Brezillon
<boris.brezillon@free-electrons.com> wrote:
> On Thu, 30 Jun 2016 20:27:43 -0500
> Rob Herring <robh@kernel.org> wrote:
>
>> On Mon, Jun 27, 2016 at 05:05:01PM +0200, Alexandre Belloni wrote:
>> > The current binding for the TCB is not flexible enough for some use cases
>> > and prevents proper utilization of all the channels.
>> >
>> > Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
>> > Cc: Thierry Reding <thierry.reding@gmail.com>
>> > Cc: linux-pwm at vger.kernel.org
>> > Cc: Rob Herring <robh+dt@kernel.org>
>> > Cc: devicetree at vger.kernel.org
>> > Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
>> > ---
>> >
>> > Changes in v2:
>> >  - added slow_clk in the examples
>> >  - removed linuxisms
>> >
>> > Rob, does that fit what you wanted? I prefer getting your ack on that one before
>> > resending a 48 patches series.
>> >
>> >
>> >  .../devicetree/bindings/arm/atmel-at91.txt         | 32 -----------
>> >  .../devicetree/bindings/mfd/atmel-tcb.txt          | 62 ++++++++++++++++++++++
>> >  .../devicetree/bindings/pwm/atmel-tcb-pwm.txt      | 12 +++--
>> >  3 files changed, 69 insertions(+), 37 deletions(-)
>> >  create mode 100644 Documentation/devicetree/bindings/mfd/atmel-tcb.txt
>> >
>> > diff --git a/Documentation/devicetree/bindings/arm/atmel-at91.txt b/Documentation/devicetree/bindings/arm/atmel-at91.txt
>> > index e1f5ad855f14..3dc758403d03 100644
>> > --- a/Documentation/devicetree/bindings/arm/atmel-at91.txt
>> > +++ b/Documentation/devicetree/bindings/arm/atmel-at91.txt
>> > @@ -60,38 +60,6 @@ System Timer (ST) required properties:
>> >  Its subnodes can be:
>> >  - watchdog: compatible should be "atmel,at91rm9200-wdt"
>> >
>> > -TC/TCLIB Timer required properties:
>> > -- compatible: Should be "atmel,<chip>-tcb".
>> > -  <chip> can be "at91rm9200" or "at91sam9x5"
>> > -- reg: Should contain registers location and length
>> > -- interrupts: Should contain all interrupts for the TC block
>> > -  Note that you can specify several interrupt cells if the TC
>> > -  block has one interrupt per channel.
>> > -- clock-names: tuple listing input clock names.
>> > -   Required elements: "t0_clk", "slow_clk"
>> > -   Optional elements: "t1_clk", "t2_clk"
>> > -- clocks: phandles to input clocks.
>> > -
>> > -Examples:
>> > -
>> > -One interrupt per TC block:
>> > -   tcb0: timer at fff7c000 {
>> > -           compatible = "atmel,at91rm9200-tcb";
>> > -           reg = <0xfff7c000 0x100>;
>> > -           interrupts = <18 4>;
>> > -           clocks = <&tcb0_clk>;
>> > -           clock-names = "t0_clk";
>> > -   };
>> > -
>> > -One interrupt per TC channel in a TC block:
>> > -   tcb1: timer at fffdc000 {
>> > -           compatible = "atmel,at91rm9200-tcb";
>> > -           reg = <0xfffdc000 0x100>;
>> > -           interrupts = <26 4 27 4 28 4>;
>> > -           clocks = <&tcb1_clk>;
>> > -           clock-names = "t0_clk";
>> > -   };
>> > -
>> >  RSTC Reset Controller required properties:
>> >  - compatible: Should be "atmel,<chip>-rstc".
>> >    <chip> can be "at91sam9260" or "at91sam9g45" or "sama5d3"
>> > diff --git a/Documentation/devicetree/bindings/mfd/atmel-tcb.txt b/Documentation/devicetree/bindings/mfd/atmel-tcb.txt
>> > new file mode 100644
>> > index 000000000000..71c8d83c01a7
>> > --- /dev/null
>> > +++ b/Documentation/devicetree/bindings/mfd/atmel-tcb.txt
>> > @@ -0,0 +1,62 @@
>> > +* Device tree bindings for Atmel Timer Counter Blocks
>> > +- compatible: Should be "atmel,<chip>-tcb", "simple-mfd", "syscon".
>> > +  <chip> can be "at91rm9200" or "at91sam9x5"
>> > +- reg: Should contain registers location and length
>> > +- #address-cells: has to be 1
>> > +- #size-cells: has to be 0
>> > +- interrupts: Should contain all interrupts for the TC block
>> > +  Note that you can specify several interrupt cells if the TC
>> > +  block has one interrupt per channel.
>> > +- clock-names: tuple listing input clock names.
>> > +   Required elements: "t0_clk", "slow_clk"
>> > +   Optional elements: "t1_clk", "t2_clk"
>> > +- clocks: phandles to input clocks.
>> > +
>> > +The TCB can expose multiple subdevices:
>> > + * a clocksource and clockevent device
>>
>> This still uses Linux terminology.
>>
>> > +   - compatible: Should be "atmel,tcb-free-running-timer"
>> > +   - reg: Should contain the TCB channels to be used. If the
>> > +     counter width is 16 bits (at91rm9200-tcb), two consecutive
>> > +     channels are needed. Else, only one channel will be used.
>> > +
>> > + * a clockevent device
>> > +   - compatible: Should be "atmel,tcb-programmable-timer"
>>
>> This still looks like assigning usage in DT. As I'm willing to accept
>> that for PWM, either timer channels should be whatever channels are not
>> assigned to PWM (i.e. not in DT) or they should just be "timer" and let
>> the kernel decide their usage.
>
> I just reviewed Alexandre's new binding, and it makes the whole thing
> a lot more obscure: on older SoCs, we have to chain 2 channels to
> create an acceptable wraparound time (16 bits at 5MHz is generating too
> much interrupts to be acceptable).
>
> If we don't assign the mode from the DT, how should we know which
> channels should be chained to create the free-running timer? Note that
> not all channels can be chained together: they have to be part of the
> same timer counter block and have to be consecutive (0+1, 1+2 or 3+0).

The driver can have this knowledge if it is just picking 2 consecutive
timers. It should already know it has 16-bit timers based on the
compatible string. If it gets more complicated then the features or
limitations of the channels should be listed so the driver can make a
choice. OMAP is a good example of lots of timers with differing
features.

> Honestly, I don't see the difference between assigning the channel to a
> PWM mode and assigning it to a free-running or oneshot timer mode. Why
> is it more acceptable?

The difference is that pwm's have clients (e.g. a backlight) in DT and
timers do not. We could just make the pwm clients reference the parent
node, but then it is hard to figure out which channels are in use for
pwm. That could also be solved with a simple "pwm-channels" property
listing the channels in use.

Rob

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

* Re: [PATCH v2] ARM: at91: Document new TCB bindings
  2016-07-05 15:40       ` Rob Herring
  (?)
@ 2016-07-05 18:33         ` Alexandre Belloni
  -1 siblings, 0 replies; 24+ messages in thread
From: Alexandre Belloni @ 2016-07-05 18:33 UTC (permalink / raw)
  To: Rob Herring
  Cc: Boris Brezillon, Nicolas Ferre, Jean-Christophe Plagniol-Villard,
	linux-arm-kernel, linux-kernel, Daniel Lezcano, Thierry Reding,
	Linux PWM List, devicetree

On 05/07/2016 at 10:40:22 -0500, Rob Herring wrote :
> >> > +   - compatible: Should be "atmel,tcb-free-running-timer"
> >> > +   - reg: Should contain the TCB channels to be used. If the
> >> > +     counter width is 16 bits (at91rm9200-tcb), two consecutive
> >> > +     channels are needed. Else, only one channel will be used.
> >> > +
> >> > + * a clockevent device
> >> > +   - compatible: Should be "atmel,tcb-programmable-timer"
> >>
> >> This still looks like assigning usage in DT. As I'm willing to accept
> >> that for PWM, either timer channels should be whatever channels are not
> >> assigned to PWM (i.e. not in DT) or they should just be "timer" and let
> >> the kernel decide their usage.
> >
> > I just reviewed Alexandre's new binding, and it makes the whole thing
> > a lot more obscure: on older SoCs, we have to chain 2 channels to
> > create an acceptable wraparound time (16 bits at 5MHz is generating too
> > much interrupts to be acceptable).
> >
> > If we don't assign the mode from the DT, how should we know which
> > channels should be chained to create the free-running timer? Note that
> > not all channels can be chained together: they have to be part of the
> > same timer counter block and have to be consecutive (0+1, 1+2 or 3+0).
> 
> The driver can have this knowledge if it is just picking 2 consecutive
> timers. It should already know it has 16-bit timers based on the
> compatible string. If it gets more complicated then the features or
> limitations of the channels should be listed so the driver can make a
> choice. OMAP is a good example of lots of timers with differing
> features.
> 
> > Honestly, I don't see the difference between assigning the channel to a
> > PWM mode and assigning it to a free-running or oneshot timer mode. Why
> > is it more acceptable?
> 
> The difference is that pwm's have clients (e.g. a backlight) in DT and
> timers do not. We could just make the pwm clients reference the parent
> node, but then it is hard to figure out which channels are in use for
> pwm. That could also be solved with a simple "pwm-channels" property
> listing the channels in use.
> 

Well, at some point, we will probably have the ADC referring to channels
used as timers as they can be used to trigger it periodically.

We'll also get frequency measurement that will go in iio, quadrature
decoders, gray counters and event counters that will probably used by
different subsystems and will certainly have to be referred to in DT.

It will definitively feel a bit weird to have all the channels have
their own nodes but not the timers...

-- 
Alexandre Belloni, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

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

* Re: [PATCH v2] ARM: at91: Document new TCB bindings
@ 2016-07-05 18:33         ` Alexandre Belloni
  0 siblings, 0 replies; 24+ messages in thread
From: Alexandre Belloni @ 2016-07-05 18:33 UTC (permalink / raw)
  To: Rob Herring
  Cc: Boris Brezillon, Nicolas Ferre, Jean-Christophe Plagniol-Villard,
	linux-arm-kernel, linux-kernel, Daniel Lezcano, Thierry Reding,
	Linux PWM List, devicetree

On 05/07/2016 at 10:40:22 -0500, Rob Herring wrote :
> >> > +   - compatible: Should be "atmel,tcb-free-running-timer"
> >> > +   - reg: Should contain the TCB channels to be used. If the
> >> > +     counter width is 16 bits (at91rm9200-tcb), two consecutive
> >> > +     channels are needed. Else, only one channel will be used.
> >> > +
> >> > + * a clockevent device
> >> > +   - compatible: Should be "atmel,tcb-programmable-timer"
> >>
> >> This still looks like assigning usage in DT. As I'm willing to accept
> >> that for PWM, either timer channels should be whatever channels are not
> >> assigned to PWM (i.e. not in DT) or they should just be "timer" and let
> >> the kernel decide their usage.
> >
> > I just reviewed Alexandre's new binding, and it makes the whole thing
> > a lot more obscure: on older SoCs, we have to chain 2 channels to
> > create an acceptable wraparound time (16 bits at 5MHz is generating too
> > much interrupts to be acceptable).
> >
> > If we don't assign the mode from the DT, how should we know which
> > channels should be chained to create the free-running timer? Note that
> > not all channels can be chained together: they have to be part of the
> > same timer counter block and have to be consecutive (0+1, 1+2 or 3+0).
> 
> The driver can have this knowledge if it is just picking 2 consecutive
> timers. It should already know it has 16-bit timers based on the
> compatible string. If it gets more complicated then the features or
> limitations of the channels should be listed so the driver can make a
> choice. OMAP is a good example of lots of timers with differing
> features.
> 
> > Honestly, I don't see the difference between assigning the channel to a
> > PWM mode and assigning it to a free-running or oneshot timer mode. Why
> > is it more acceptable?
> 
> The difference is that pwm's have clients (e.g. a backlight) in DT and
> timers do not. We could just make the pwm clients reference the parent
> node, but then it is hard to figure out which channels are in use for
> pwm. That could also be solved with a simple "pwm-channels" property
> listing the channels in use.
> 

Well, at some point, we will probably have the ADC referring to channels
used as timers as they can be used to trigger it periodically.

We'll also get frequency measurement that will go in iio, quadrature
decoders, gray counters and event counters that will probably used by
different subsystems and will certainly have to be referred to in DT.

It will definitively feel a bit weird to have all the channels have
their own nodes but not the timers...

-- 
Alexandre Belloni, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

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

* [PATCH v2] ARM: at91: Document new TCB bindings
@ 2016-07-05 18:33         ` Alexandre Belloni
  0 siblings, 0 replies; 24+ messages in thread
From: Alexandre Belloni @ 2016-07-05 18:33 UTC (permalink / raw)
  To: linux-arm-kernel

On 05/07/2016 at 10:40:22 -0500, Rob Herring wrote :
> >> > +   - compatible: Should be "atmel,tcb-free-running-timer"
> >> > +   - reg: Should contain the TCB channels to be used. If the
> >> > +     counter width is 16 bits (at91rm9200-tcb), two consecutive
> >> > +     channels are needed. Else, only one channel will be used.
> >> > +
> >> > + * a clockevent device
> >> > +   - compatible: Should be "atmel,tcb-programmable-timer"
> >>
> >> This still looks like assigning usage in DT. As I'm willing to accept
> >> that for PWM, either timer channels should be whatever channels are not
> >> assigned to PWM (i.e. not in DT) or they should just be "timer" and let
> >> the kernel decide their usage.
> >
> > I just reviewed Alexandre's new binding, and it makes the whole thing
> > a lot more obscure: on older SoCs, we have to chain 2 channels to
> > create an acceptable wraparound time (16 bits at 5MHz is generating too
> > much interrupts to be acceptable).
> >
> > If we don't assign the mode from the DT, how should we know which
> > channels should be chained to create the free-running timer? Note that
> > not all channels can be chained together: they have to be part of the
> > same timer counter block and have to be consecutive (0+1, 1+2 or 3+0).
> 
> The driver can have this knowledge if it is just picking 2 consecutive
> timers. It should already know it has 16-bit timers based on the
> compatible string. If it gets more complicated then the features or
> limitations of the channels should be listed so the driver can make a
> choice. OMAP is a good example of lots of timers with differing
> features.
> 
> > Honestly, I don't see the difference between assigning the channel to a
> > PWM mode and assigning it to a free-running or oneshot timer mode. Why
> > is it more acceptable?
> 
> The difference is that pwm's have clients (e.g. a backlight) in DT and
> timers do not. We could just make the pwm clients reference the parent
> node, but then it is hard to figure out which channels are in use for
> pwm. That could also be solved with a simple "pwm-channels" property
> listing the channels in use.
> 

Well, at some point, we will probably have the ADC referring to channels
used as timers as they can be used to trigger it periodically.

We'll also get frequency measurement that will go in iio, quadrature
decoders, gray counters and event counters that will probably used by
different subsystems and will certainly have to be referred to in DT.

It will definitively feel a bit weird to have all the channels have
their own nodes but not the timers...

-- 
Alexandre Belloni, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

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

* Re: [PATCH v2] ARM: at91: Document new TCB bindings
  2016-07-05 15:40       ` Rob Herring
  (?)
@ 2017-01-25 15:11         ` Boris Brezillon
  -1 siblings, 0 replies; 24+ messages in thread
From: Boris Brezillon @ 2017-01-25 15:11 UTC (permalink / raw)
  To: Rob Herring
  Cc: Alexandre Belloni, Nicolas Ferre,
	Jean-Christophe Plagniol-Villard, linux-arm-kernel, linux-kernel,
	Daniel Lezcano, Thierry Reding, Linux PWM List, devicetree

Hi Rob,

Sorry to revive this old discussion, but there's still one aspect I'm
not sure about.

On Tue, 5 Jul 2016 10:40:22 -0500
Rob Herring <robh@kernel.org> wrote:

> >> > +   - compatible: Should be "atmel,tcb-free-running-timer"
> >> > +   - reg: Should contain the TCB channels to be used. If the
> >> > +     counter width is 16 bits (at91rm9200-tcb), two consecutive
> >> > +     channels are needed. Else, only one channel will be used.
> >> > +
> >> > + * a clockevent device
> >> > +   - compatible: Should be "atmel,tcb-programmable-timer"  
> >>
> >> This still looks like assigning usage in DT. As I'm willing to accept
> >> that for PWM, either timer channels should be whatever channels are not
> >> assigned to PWM (i.e. not in DT) or they should just be "timer" and let
> >> the kernel decide their usage.  
> >
> > I just reviewed Alexandre's new binding, and it makes the whole thing
> > a lot more obscure: on older SoCs, we have to chain 2 channels to
> > create an acceptable wraparound time (16 bits at 5MHz is generating too
> > much interrupts to be acceptable).
> >
> > If we don't assign the mode from the DT, how should we know which
> > channels should be chained to create the free-running timer? Note that
> > not all channels can be chained together: they have to be part of the
> > same timer counter block and have to be consecutive (0+1, 1+2 or 3+0).  
> 
> The driver can have this knowledge if it is just picking 2 consecutive
> timers. It should already know it has 16-bit timers based on the
> compatible string. If it gets more complicated then the features or
> limitations of the channels should be listed so the driver can make a
> choice. OMAP is a good example of lots of timers with differing
> features.

Yes it's possible to do that, but what about DT overlays then? Say you
have some TCB channels you'd like to reserve because they are connected
to pins that are exposed on your board. Those pins are not connected to
any device yet, but extension boards can be added, and in this case you
might want to expose new PWM devices by dynamically loading DT overlays.

If your clksource/clkevent driver parsed the initial DT and picked X
free channels randomly, it may conflicts with the one requested by the
DT overlay.

What's your solution for this case?

Thanks,

Boris

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

* Re: [PATCH v2] ARM: at91: Document new TCB bindings
@ 2017-01-25 15:11         ` Boris Brezillon
  0 siblings, 0 replies; 24+ messages in thread
From: Boris Brezillon @ 2017-01-25 15:11 UTC (permalink / raw)
  To: Rob Herring
  Cc: Alexandre Belloni, Nicolas Ferre,
	Jean-Christophe Plagniol-Villard, linux-arm-kernel, linux-kernel,
	Daniel Lezcano, Thierry Reding, Linux PWM List, devicetree

Hi Rob,

Sorry to revive this old discussion, but there's still one aspect I'm
not sure about.

On Tue, 5 Jul 2016 10:40:22 -0500
Rob Herring <robh@kernel.org> wrote:

> >> > +   - compatible: Should be "atmel,tcb-free-running-timer"
> >> > +   - reg: Should contain the TCB channels to be used. If the
> >> > +     counter width is 16 bits (at91rm9200-tcb), two consecutive
> >> > +     channels are needed. Else, only one channel will be used.
> >> > +
> >> > + * a clockevent device
> >> > +   - compatible: Should be "atmel,tcb-programmable-timer"  
> >>
> >> This still looks like assigning usage in DT. As I'm willing to accept
> >> that for PWM, either timer channels should be whatever channels are not
> >> assigned to PWM (i.e. not in DT) or they should just be "timer" and let
> >> the kernel decide their usage.  
> >
> > I just reviewed Alexandre's new binding, and it makes the whole thing
> > a lot more obscure: on older SoCs, we have to chain 2 channels to
> > create an acceptable wraparound time (16 bits at 5MHz is generating too
> > much interrupts to be acceptable).
> >
> > If we don't assign the mode from the DT, how should we know which
> > channels should be chained to create the free-running timer? Note that
> > not all channels can be chained together: they have to be part of the
> > same timer counter block and have to be consecutive (0+1, 1+2 or 3+0).  
> 
> The driver can have this knowledge if it is just picking 2 consecutive
> timers. It should already know it has 16-bit timers based on the
> compatible string. If it gets more complicated then the features or
> limitations of the channels should be listed so the driver can make a
> choice. OMAP is a good example of lots of timers with differing
> features.

Yes it's possible to do that, but what about DT overlays then? Say you
have some TCB channels you'd like to reserve because they are connected
to pins that are exposed on your board. Those pins are not connected to
any device yet, but extension boards can be added, and in this case you
might want to expose new PWM devices by dynamically loading DT overlays.

If your clksource/clkevent driver parsed the initial DT and picked X
free channels randomly, it may conflicts with the one requested by the
DT overlay.

What's your solution for this case?

Thanks,

Boris

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

* [PATCH v2] ARM: at91: Document new TCB bindings
@ 2017-01-25 15:11         ` Boris Brezillon
  0 siblings, 0 replies; 24+ messages in thread
From: Boris Brezillon @ 2017-01-25 15:11 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Rob,

Sorry to revive this old discussion, but there's still one aspect I'm
not sure about.

On Tue, 5 Jul 2016 10:40:22 -0500
Rob Herring <robh@kernel.org> wrote:

> >> > +   - compatible: Should be "atmel,tcb-free-running-timer"
> >> > +   - reg: Should contain the TCB channels to be used. If the
> >> > +     counter width is 16 bits (at91rm9200-tcb), two consecutive
> >> > +     channels are needed. Else, only one channel will be used.
> >> > +
> >> > + * a clockevent device
> >> > +   - compatible: Should be "atmel,tcb-programmable-timer"  
> >>
> >> This still looks like assigning usage in DT. As I'm willing to accept
> >> that for PWM, either timer channels should be whatever channels are not
> >> assigned to PWM (i.e. not in DT) or they should just be "timer" and let
> >> the kernel decide their usage.  
> >
> > I just reviewed Alexandre's new binding, and it makes the whole thing
> > a lot more obscure: on older SoCs, we have to chain 2 channels to
> > create an acceptable wraparound time (16 bits at 5MHz is generating too
> > much interrupts to be acceptable).
> >
> > If we don't assign the mode from the DT, how should we know which
> > channels should be chained to create the free-running timer? Note that
> > not all channels can be chained together: they have to be part of the
> > same timer counter block and have to be consecutive (0+1, 1+2 or 3+0).  
> 
> The driver can have this knowledge if it is just picking 2 consecutive
> timers. It should already know it has 16-bit timers based on the
> compatible string. If it gets more complicated then the features or
> limitations of the channels should be listed so the driver can make a
> choice. OMAP is a good example of lots of timers with differing
> features.

Yes it's possible to do that, but what about DT overlays then? Say you
have some TCB channels you'd like to reserve because they are connected
to pins that are exposed on your board. Those pins are not connected to
any device yet, but extension boards can be added, and in this case you
might want to expose new PWM devices by dynamically loading DT overlays.

If your clksource/clkevent driver parsed the initial DT and picked X
free channels randomly, it may conflicts with the one requested by the
DT overlay.

What's your solution for this case?

Thanks,

Boris

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

* Re: [PATCH v2] ARM: at91: Document new TCB bindings
  2017-01-25 15:11         ` Boris Brezillon
  (?)
@ 2017-03-13 15:18           ` Nicolas Ferre
  -1 siblings, 0 replies; 24+ messages in thread
From: Nicolas Ferre @ 2017-03-13 15:18 UTC (permalink / raw)
  To: Boris Brezillon, Rob Herring, Alexandre Belloni
  Cc: Jean-Christophe Plagniol-Villard, linux-arm-kernel, linux-kernel,
	Daniel Lezcano, Thierry Reding, Linux PWM List, devicetree

Le 25/01/2017 à 16:11, Boris Brezillon a écrit :
> Hi Rob,
> 
> Sorry to revive this old discussion, but there's still one aspect I'm
> not sure about.
> 
> On Tue, 5 Jul 2016 10:40:22 -0500
> Rob Herring <robh@kernel.org> wrote:
> 
>>>>> +   - compatible: Should be "atmel,tcb-free-running-timer"
>>>>> +   - reg: Should contain the TCB channels to be used. If the
>>>>> +     counter width is 16 bits (at91rm9200-tcb), two consecutive
>>>>> +     channels are needed. Else, only one channel will be used.
>>>>> +
>>>>> + * a clockevent device
>>>>> +   - compatible: Should be "atmel,tcb-programmable-timer"  
>>>>
>>>> This still looks like assigning usage in DT. As I'm willing to accept
>>>> that for PWM, either timer channels should be whatever channels are not
>>>> assigned to PWM (i.e. not in DT) or they should just be "timer" and let
>>>> the kernel decide their usage.  
>>>
>>> I just reviewed Alexandre's new binding, and it makes the whole thing
>>> a lot more obscure: on older SoCs, we have to chain 2 channels to
>>> create an acceptable wraparound time (16 bits at 5MHz is generating too
>>> much interrupts to be acceptable).
>>>
>>> If we don't assign the mode from the DT, how should we know which
>>> channels should be chained to create the free-running timer? Note that
>>> not all channels can be chained together: they have to be part of the
>>> same timer counter block and have to be consecutive (0+1, 1+2 or 3+0).  
>>
>> The driver can have this knowledge if it is just picking 2 consecutive
>> timers. It should already know it has 16-bit timers based on the
>> compatible string. If it gets more complicated then the features or
>> limitations of the channels should be listed so the driver can make a
>> choice. OMAP is a good example of lots of timers with differing
>> features.
> 
> Yes it's possible to do that, but what about DT overlays then? Say you
> have some TCB channels you'd like to reserve because they are connected
> to pins that are exposed on your board. Those pins are not connected to
> any device yet, but extension boards can be added, and in this case you
> might want to expose new PWM devices by dynamically loading DT overlays.
> 
> If your clksource/clkevent driver parsed the initial DT and picked X
> free channels randomly, it may conflicts with the one requested by the
> DT overlay.
> 
> What's your solution for this case?

It seems that we don't have any progress on this topic for more than 6
months which is a pity as we now experience an issue that would have
been addressed completely by the TC rework [1].

aka "ping"... ;-)

Best regards,

[1]
http://lists.infradead.org/pipermail/linux-arm-kernel/2017-March/492080.html
-- 
Nicolas Ferre

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

* Re: [PATCH v2] ARM: at91: Document new TCB bindings
@ 2017-03-13 15:18           ` Nicolas Ferre
  0 siblings, 0 replies; 24+ messages in thread
From: Nicolas Ferre @ 2017-03-13 15:18 UTC (permalink / raw)
  To: Boris Brezillon, Rob Herring, Alexandre Belloni
  Cc: Jean-Christophe Plagniol-Villard, linux-arm-kernel, linux-kernel,
	Daniel Lezcano, Thierry Reding, Linux PWM List, devicetree

Le 25/01/2017 à 16:11, Boris Brezillon a écrit :
> Hi Rob,
> 
> Sorry to revive this old discussion, but there's still one aspect I'm
> not sure about.
> 
> On Tue, 5 Jul 2016 10:40:22 -0500
> Rob Herring <robh@kernel.org> wrote:
> 
>>>>> +   - compatible: Should be "atmel,tcb-free-running-timer"
>>>>> +   - reg: Should contain the TCB channels to be used. If the
>>>>> +     counter width is 16 bits (at91rm9200-tcb), two consecutive
>>>>> +     channels are needed. Else, only one channel will be used.
>>>>> +
>>>>> + * a clockevent device
>>>>> +   - compatible: Should be "atmel,tcb-programmable-timer"  
>>>>
>>>> This still looks like assigning usage in DT. As I'm willing to accept
>>>> that for PWM, either timer channels should be whatever channels are not
>>>> assigned to PWM (i.e. not in DT) or they should just be "timer" and let
>>>> the kernel decide their usage.  
>>>
>>> I just reviewed Alexandre's new binding, and it makes the whole thing
>>> a lot more obscure: on older SoCs, we have to chain 2 channels to
>>> create an acceptable wraparound time (16 bits at 5MHz is generating too
>>> much interrupts to be acceptable).
>>>
>>> If we don't assign the mode from the DT, how should we know which
>>> channels should be chained to create the free-running timer? Note that
>>> not all channels can be chained together: they have to be part of the
>>> same timer counter block and have to be consecutive (0+1, 1+2 or 3+0).  
>>
>> The driver can have this knowledge if it is just picking 2 consecutive
>> timers. It should already know it has 16-bit timers based on the
>> compatible string. If it gets more complicated then the features or
>> limitations of the channels should be listed so the driver can make a
>> choice. OMAP is a good example of lots of timers with differing
>> features.
> 
> Yes it's possible to do that, but what about DT overlays then? Say you
> have some TCB channels you'd like to reserve because they are connected
> to pins that are exposed on your board. Those pins are not connected to
> any device yet, but extension boards can be added, and in this case you
> might want to expose new PWM devices by dynamically loading DT overlays.
> 
> If your clksource/clkevent driver parsed the initial DT and picked X
> free channels randomly, it may conflicts with the one requested by the
> DT overlay.
> 
> What's your solution for this case?

It seems that we don't have any progress on this topic for more than 6
months which is a pity as we now experience an issue that would have
been addressed completely by the TC rework [1].

aka "ping"... ;-)

Best regards,

[1]
http://lists.infradead.org/pipermail/linux-arm-kernel/2017-March/492080.html
-- 
Nicolas Ferre

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

* [PATCH v2] ARM: at91: Document new TCB bindings
@ 2017-03-13 15:18           ` Nicolas Ferre
  0 siblings, 0 replies; 24+ messages in thread
From: Nicolas Ferre @ 2017-03-13 15:18 UTC (permalink / raw)
  To: linux-arm-kernel

Le 25/01/2017 ? 16:11, Boris Brezillon a ?crit :
> Hi Rob,
> 
> Sorry to revive this old discussion, but there's still one aspect I'm
> not sure about.
> 
> On Tue, 5 Jul 2016 10:40:22 -0500
> Rob Herring <robh@kernel.org> wrote:
> 
>>>>> +   - compatible: Should be "atmel,tcb-free-running-timer"
>>>>> +   - reg: Should contain the TCB channels to be used. If the
>>>>> +     counter width is 16 bits (at91rm9200-tcb), two consecutive
>>>>> +     channels are needed. Else, only one channel will be used.
>>>>> +
>>>>> + * a clockevent device
>>>>> +   - compatible: Should be "atmel,tcb-programmable-timer"  
>>>>
>>>> This still looks like assigning usage in DT. As I'm willing to accept
>>>> that for PWM, either timer channels should be whatever channels are not
>>>> assigned to PWM (i.e. not in DT) or they should just be "timer" and let
>>>> the kernel decide their usage.  
>>>
>>> I just reviewed Alexandre's new binding, and it makes the whole thing
>>> a lot more obscure: on older SoCs, we have to chain 2 channels to
>>> create an acceptable wraparound time (16 bits at 5MHz is generating too
>>> much interrupts to be acceptable).
>>>
>>> If we don't assign the mode from the DT, how should we know which
>>> channels should be chained to create the free-running timer? Note that
>>> not all channels can be chained together: they have to be part of the
>>> same timer counter block and have to be consecutive (0+1, 1+2 or 3+0).  
>>
>> The driver can have this knowledge if it is just picking 2 consecutive
>> timers. It should already know it has 16-bit timers based on the
>> compatible string. If it gets more complicated then the features or
>> limitations of the channels should be listed so the driver can make a
>> choice. OMAP is a good example of lots of timers with differing
>> features.
> 
> Yes it's possible to do that, but what about DT overlays then? Say you
> have some TCB channels you'd like to reserve because they are connected
> to pins that are exposed on your board. Those pins are not connected to
> any device yet, but extension boards can be added, and in this case you
> might want to expose new PWM devices by dynamically loading DT overlays.
> 
> If your clksource/clkevent driver parsed the initial DT and picked X
> free channels randomly, it may conflicts with the one requested by the
> DT overlay.
> 
> What's your solution for this case?

It seems that we don't have any progress on this topic for more than 6
months which is a pity as we now experience an issue that would have
been addressed completely by the TC rework [1].

aka "ping"... ;-)

Best regards,

[1]
http://lists.infradead.org/pipermail/linux-arm-kernel/2017-March/492080.html
-- 
Nicolas Ferre

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

* Re: [PATCH v2] ARM: at91: Document new TCB bindings
@ 2017-04-07 12:15             ` Daniel Lezcano
  0 siblings, 0 replies; 24+ messages in thread
From: Daniel Lezcano @ 2017-04-07 12:15 UTC (permalink / raw)
  To: Nicolas Ferre, Boris Brezillon, Rob Herring, Alexandre Belloni
  Cc: Jean-Christophe Plagniol-Villard, linux-arm-kernel, linux-kernel,
	Thierry Reding, Linux PWM List, devicetree

On 13/03/2017 16:18, Nicolas Ferre wrote:
> Le 25/01/2017 à 16:11, Boris Brezillon a écrit :
>> Hi Rob,
>>
>> Sorry to revive this old discussion, but there's still one aspect I'm
>> not sure about.
>>
>> On Tue, 5 Jul 2016 10:40:22 -0500
>> Rob Herring <robh@kernel.org> wrote:
>>
>>>>>> +   - compatible: Should be "atmel,tcb-free-running-timer"
>>>>>> +   - reg: Should contain the TCB channels to be used. If the
>>>>>> +     counter width is 16 bits (at91rm9200-tcb), two consecutive
>>>>>> +     channels are needed. Else, only one channel will be used.
>>>>>> +
>>>>>> + * a clockevent device
>>>>>> +   - compatible: Should be "atmel,tcb-programmable-timer"  
>>>>>
>>>>> This still looks like assigning usage in DT. As I'm willing to accept
>>>>> that for PWM, either timer channels should be whatever channels are not
>>>>> assigned to PWM (i.e. not in DT) or they should just be "timer" and let
>>>>> the kernel decide their usage.  
>>>>
>>>> I just reviewed Alexandre's new binding, and it makes the whole thing
>>>> a lot more obscure: on older SoCs, we have to chain 2 channels to
>>>> create an acceptable wraparound time (16 bits at 5MHz is generating too
>>>> much interrupts to be acceptable).
>>>>
>>>> If we don't assign the mode from the DT, how should we know which
>>>> channels should be chained to create the free-running timer? Note that
>>>> not all channels can be chained together: they have to be part of the
>>>> same timer counter block and have to be consecutive (0+1, 1+2 or 3+0).  
>>>
>>> The driver can have this knowledge if it is just picking 2 consecutive
>>> timers. It should already know it has 16-bit timers based on the
>>> compatible string. If it gets more complicated then the features or
>>> limitations of the channels should be listed so the driver can make a
>>> choice. OMAP is a good example of lots of timers with differing
>>> features.
>>
>> Yes it's possible to do that, but what about DT overlays then? Say you
>> have some TCB channels you'd like to reserve because they are connected
>> to pins that are exposed on your board. Those pins are not connected to
>> any device yet, but extension boards can be added, and in this case you
>> might want to expose new PWM devices by dynamically loading DT overlays.
>>
>> If your clksource/clkevent driver parsed the initial DT and picked X
>> free channels randomly, it may conflicts with the one requested by the
>> DT overlay.
>>
>> What's your solution for this case?
> 
> It seems that we don't have any progress on this topic for more than 6
> months which is a pity as we now experience an issue that would have
> been addressed completely by the TC rework [1].
> 
> aka "ping"... ;-)


Hi Nicolas, Boris,

is there any news from your side ?

Thanks.

  -- Daniel


-- 
 <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog

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

* Re: [PATCH v2] ARM: at91: Document new TCB bindings
@ 2017-04-07 12:15             ` Daniel Lezcano
  0 siblings, 0 replies; 24+ messages in thread
From: Daniel Lezcano @ 2017-04-07 12:15 UTC (permalink / raw)
  To: Nicolas Ferre, Boris Brezillon, Rob Herring, Alexandre Belloni
  Cc: Jean-Christophe Plagniol-Villard,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Thierry Reding,
	Linux PWM List, devicetree-u79uwXL29TY76Z2rM5mHXA

On 13/03/2017 16:18, Nicolas Ferre wrote:
> Le 25/01/2017 à 16:11, Boris Brezillon a écrit :
>> Hi Rob,
>>
>> Sorry to revive this old discussion, but there's still one aspect I'm
>> not sure about.
>>
>> On Tue, 5 Jul 2016 10:40:22 -0500
>> Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> wrote:
>>
>>>>>> +   - compatible: Should be "atmel,tcb-free-running-timer"
>>>>>> +   - reg: Should contain the TCB channels to be used. If the
>>>>>> +     counter width is 16 bits (at91rm9200-tcb), two consecutive
>>>>>> +     channels are needed. Else, only one channel will be used.
>>>>>> +
>>>>>> + * a clockevent device
>>>>>> +   - compatible: Should be "atmel,tcb-programmable-timer"  
>>>>>
>>>>> This still looks like assigning usage in DT. As I'm willing to accept
>>>>> that for PWM, either timer channels should be whatever channels are not
>>>>> assigned to PWM (i.e. not in DT) or they should just be "timer" and let
>>>>> the kernel decide their usage.  
>>>>
>>>> I just reviewed Alexandre's new binding, and it makes the whole thing
>>>> a lot more obscure: on older SoCs, we have to chain 2 channels to
>>>> create an acceptable wraparound time (16 bits at 5MHz is generating too
>>>> much interrupts to be acceptable).
>>>>
>>>> If we don't assign the mode from the DT, how should we know which
>>>> channels should be chained to create the free-running timer? Note that
>>>> not all channels can be chained together: they have to be part of the
>>>> same timer counter block and have to be consecutive (0+1, 1+2 or 3+0).  
>>>
>>> The driver can have this knowledge if it is just picking 2 consecutive
>>> timers. It should already know it has 16-bit timers based on the
>>> compatible string. If it gets more complicated then the features or
>>> limitations of the channels should be listed so the driver can make a
>>> choice. OMAP is a good example of lots of timers with differing
>>> features.
>>
>> Yes it's possible to do that, but what about DT overlays then? Say you
>> have some TCB channels you'd like to reserve because they are connected
>> to pins that are exposed on your board. Those pins are not connected to
>> any device yet, but extension boards can be added, and in this case you
>> might want to expose new PWM devices by dynamically loading DT overlays.
>>
>> If your clksource/clkevent driver parsed the initial DT and picked X
>> free channels randomly, it may conflicts with the one requested by the
>> DT overlay.
>>
>> What's your solution for this case?
> 
> It seems that we don't have any progress on this topic for more than 6
> months which is a pity as we now experience an issue that would have
> been addressed completely by the TC rework [1].
> 
> aka "ping"... ;-)


Hi Nicolas, Boris,

is there any news from your side ?

Thanks.

  -- Daniel


-- 
 <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog

--
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] 24+ messages in thread

* [PATCH v2] ARM: at91: Document new TCB bindings
@ 2017-04-07 12:15             ` Daniel Lezcano
  0 siblings, 0 replies; 24+ messages in thread
From: Daniel Lezcano @ 2017-04-07 12:15 UTC (permalink / raw)
  To: linux-arm-kernel

On 13/03/2017 16:18, Nicolas Ferre wrote:
> Le 25/01/2017 ? 16:11, Boris Brezillon a ?crit :
>> Hi Rob,
>>
>> Sorry to revive this old discussion, but there's still one aspect I'm
>> not sure about.
>>
>> On Tue, 5 Jul 2016 10:40:22 -0500
>> Rob Herring <robh@kernel.org> wrote:
>>
>>>>>> +   - compatible: Should be "atmel,tcb-free-running-timer"
>>>>>> +   - reg: Should contain the TCB channels to be used. If the
>>>>>> +     counter width is 16 bits (at91rm9200-tcb), two consecutive
>>>>>> +     channels are needed. Else, only one channel will be used.
>>>>>> +
>>>>>> + * a clockevent device
>>>>>> +   - compatible: Should be "atmel,tcb-programmable-timer"  
>>>>>
>>>>> This still looks like assigning usage in DT. As I'm willing to accept
>>>>> that for PWM, either timer channels should be whatever channels are not
>>>>> assigned to PWM (i.e. not in DT) or they should just be "timer" and let
>>>>> the kernel decide their usage.  
>>>>
>>>> I just reviewed Alexandre's new binding, and it makes the whole thing
>>>> a lot more obscure: on older SoCs, we have to chain 2 channels to
>>>> create an acceptable wraparound time (16 bits at 5MHz is generating too
>>>> much interrupts to be acceptable).
>>>>
>>>> If we don't assign the mode from the DT, how should we know which
>>>> channels should be chained to create the free-running timer? Note that
>>>> not all channels can be chained together: they have to be part of the
>>>> same timer counter block and have to be consecutive (0+1, 1+2 or 3+0).  
>>>
>>> The driver can have this knowledge if it is just picking 2 consecutive
>>> timers. It should already know it has 16-bit timers based on the
>>> compatible string. If it gets more complicated then the features or
>>> limitations of the channels should be listed so the driver can make a
>>> choice. OMAP is a good example of lots of timers with differing
>>> features.
>>
>> Yes it's possible to do that, but what about DT overlays then? Say you
>> have some TCB channels you'd like to reserve because they are connected
>> to pins that are exposed on your board. Those pins are not connected to
>> any device yet, but extension boards can be added, and in this case you
>> might want to expose new PWM devices by dynamically loading DT overlays.
>>
>> If your clksource/clkevent driver parsed the initial DT and picked X
>> free channels randomly, it may conflicts with the one requested by the
>> DT overlay.
>>
>> What's your solution for this case?
> 
> It seems that we don't have any progress on this topic for more than 6
> months which is a pity as we now experience an issue that would have
> been addressed completely by the TC rework [1].
> 
> aka "ping"... ;-)


Hi Nicolas, Boris,

is there any news from your side ?

Thanks.

  -- Daniel


-- 
 <http://www.linaro.org/> Linaro.org ? Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog

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

* Re: [PATCH v2] ARM: at91: Document new TCB bindings
  2017-04-07 12:15             ` Daniel Lezcano
  (?)
@ 2017-04-07 12:31               ` Alexandre Belloni
  -1 siblings, 0 replies; 24+ messages in thread
From: Alexandre Belloni @ 2017-04-07 12:31 UTC (permalink / raw)
  To: Daniel Lezcano
  Cc: Nicolas Ferre, Boris Brezillon, Rob Herring,
	Jean-Christophe Plagniol-Villard, linux-arm-kernel, linux-kernel,
	Thierry Reding, Linux PWM List, devicetree

On 07/04/2017 at 14:15:36 +0200, Daniel Lezcano wrote:
> >> What's your solution for this case?
> > 
> > It seems that we don't have any progress on this topic for more than 6
> > months which is a pity as we now experience an issue that would have
> > been addressed completely by the TC rework [1].
> > 
> > aka "ping"... ;-)
> 
> 
> Hi Nicolas, Boris,
> 
> is there any news from your side ?
> 

I'm planning to resubmit news bindings and the full rework when I'll
have time to work on that. But I must admit I don't quite see the issue
with the proposed bindings.

Also, we are starting to see more and more flexible timer IPs that can
be used as RTC, timer, pwm, counters, quad decoders. I'm starting to
think we may need a new subsystem.


-- 
Alexandre Belloni, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

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

* Re: [PATCH v2] ARM: at91: Document new TCB bindings
@ 2017-04-07 12:31               ` Alexandre Belloni
  0 siblings, 0 replies; 24+ messages in thread
From: Alexandre Belloni @ 2017-04-07 12:31 UTC (permalink / raw)
  To: Daniel Lezcano
  Cc: Nicolas Ferre, Boris Brezillon, Rob Herring,
	Jean-Christophe Plagniol-Villard, linux-arm-kernel, linux-kernel,
	Thierry Reding, Linux PWM List, devicetree

On 07/04/2017 at 14:15:36 +0200, Daniel Lezcano wrote:
> >> What's your solution for this case?
> > 
> > It seems that we don't have any progress on this topic for more than 6
> > months which is a pity as we now experience an issue that would have
> > been addressed completely by the TC rework [1].
> > 
> > aka "ping"... ;-)
> 
> 
> Hi Nicolas, Boris,
> 
> is there any news from your side ?
> 

I'm planning to resubmit news bindings and the full rework when I'll
have time to work on that. But I must admit I don't quite see the issue
with the proposed bindings.

Also, we are starting to see more and more flexible timer IPs that can
be used as RTC, timer, pwm, counters, quad decoders. I'm starting to
think we may need a new subsystem.


-- 
Alexandre Belloni, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

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

* [PATCH v2] ARM: at91: Document new TCB bindings
@ 2017-04-07 12:31               ` Alexandre Belloni
  0 siblings, 0 replies; 24+ messages in thread
From: Alexandre Belloni @ 2017-04-07 12:31 UTC (permalink / raw)
  To: linux-arm-kernel

On 07/04/2017 at 14:15:36 +0200, Daniel Lezcano wrote:
> >> What's your solution for this case?
> > 
> > It seems that we don't have any progress on this topic for more than 6
> > months which is a pity as we now experience an issue that would have
> > been addressed completely by the TC rework [1].
> > 
> > aka "ping"... ;-)
> 
> 
> Hi Nicolas, Boris,
> 
> is there any news from your side ?
> 

I'm planning to resubmit news bindings and the full rework when I'll
have time to work on that. But I must admit I don't quite see the issue
with the proposed bindings.

Also, we are starting to see more and more flexible timer IPs that can
be used as RTC, timer, pwm, counters, quad decoders. I'm starting to
think we may need a new subsystem.


-- 
Alexandre Belloni, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

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

end of thread, other threads:[~2017-04-07 12:31 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-27 15:05 [PATCH v2] ARM: at91: Document new TCB bindings Alexandre Belloni
2016-06-27 15:05 ` Alexandre Belloni
2016-07-01  1:27 ` Rob Herring
2016-07-01  1:27   ` Rob Herring
2016-07-04 13:10   ` Boris Brezillon
2016-07-04 13:10     ` Boris Brezillon
2016-07-05 15:40     ` Rob Herring
2016-07-05 15:40       ` Rob Herring
2016-07-05 15:40       ` Rob Herring
2016-07-05 18:33       ` Alexandre Belloni
2016-07-05 18:33         ` Alexandre Belloni
2016-07-05 18:33         ` Alexandre Belloni
2017-01-25 15:11       ` Boris Brezillon
2017-01-25 15:11         ` Boris Brezillon
2017-01-25 15:11         ` Boris Brezillon
2017-03-13 15:18         ` Nicolas Ferre
2017-03-13 15:18           ` Nicolas Ferre
2017-03-13 15:18           ` Nicolas Ferre
2017-04-07 12:15           ` Daniel Lezcano
2017-04-07 12:15             ` Daniel Lezcano
2017-04-07 12:15             ` Daniel Lezcano
2017-04-07 12:31             ` Alexandre Belloni
2017-04-07 12:31               ` Alexandre Belloni
2017-04-07 12:31               ` Alexandre Belloni

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.