diff mbox series

[v5,1/2] dt-bindings: i2c: pca954x: Add timeout reset property

Message ID 20241018100338.19420-2-wojciech.siudy@nokia.com
State New
Headers show
Series pca954x: Add DT bindings and driver changes for reset after timeout | expand

Commit Message

Wojciech Siudy Oct. 18, 2024, 10:03 a.m. UTC
For cases when the mux shares reset line with other chips we cannot
use it always when channel selection or deselection times out, because
it could break them without proper init/probe. The property is
necessary, because reset lines are board-specific.

Signed-off-by: Wojciech Siudy <wojciech.siudy@nokia.com>

---
Changelog:
v5:
  * Declare dependency of a new property
---
 .../devicetree/bindings/i2c/i2c-mux-pca954x.yaml      | 11 +++++++++++
 1 file changed, 11 insertions(+)

Comments

Rob Herring Oct. 18, 2024, 1:53 p.m. UTC | #1
On Fri, Oct 18, 2024 at 12:03:37PM +0200, Wojciech Siudy wrote:
> For cases when the mux shares reset line with other chips we cannot
> use it always when channel selection or deselection times out, because
> it could break them without proper init/probe. The property is
> necessary, because reset lines are board-specific.
> 
> Signed-off-by: Wojciech Siudy <wojciech.siudy@nokia.com>
> 
> ---
> Changelog:
> v5:
>   * Declare dependency of a new property
> ---
>  .../devicetree/bindings/i2c/i2c-mux-pca954x.yaml      | 11 +++++++++++
>  1 file changed, 11 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/i2c/i2c-mux-pca954x.yaml b/Documentation/devicetree/bindings/i2c/i2c-mux-pca954x.yaml
> index 9aa0585200c9..37882a5a8c87 100644
> --- a/Documentation/devicetree/bindings/i2c/i2c-mux-pca954x.yaml
> +++ b/Documentation/devicetree/bindings/i2c/i2c-mux-pca954x.yaml
> @@ -63,6 +63,11 @@ properties:
>        necessary for example, if there are several multiplexers on the bus and
>        the devices behind them use same I2C addresses.
>  
> +  i2c-mux-timeout-reset:
> +    type: boolean
> +    description: Sends reset pulse if channel selection or deselection times
> +      out. Do not use if other chips share the same reset line.

If you have a reset GPIO for the mux, then why wouldn't just use it on 
timeout? What happens if you timeout and don't have this property? Just 
give up? 

Does the timeout time need to be configurable?

> +
>    idle-state:
>      description: if present, overrides i2c-mux-idle-disconnect
>      $ref: /schemas/mux/mux-controller.yaml#/properties/idle-state
> @@ -88,6 +93,9 @@ properties:
>        register activates a channel to detect a stuck high fault. On fault the
>        channel is isolated from the upstream bus.
>  
> +dependencies:
> +  i2c-mux-timeout-reset: [ reset-gpios ]
> +
>  required:
>    - compatible
>    - reg
> @@ -146,6 +154,9 @@ examples:
>              interrupt-parent = <&ipic>;
>              interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
>              interrupt-controller;
> +            reset-gpios = <&gpio1 27 1>;
> +            i2c-mux-idle-disconnect;
> +            i2c-mux-timeout-reset;
>              #interrupt-cells = <2>;
>  
>              i2c@2 {
> -- 
> 2.34.1
>
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/i2c/i2c-mux-pca954x.yaml b/Documentation/devicetree/bindings/i2c/i2c-mux-pca954x.yaml
index 9aa0585200c9..37882a5a8c87 100644
--- a/Documentation/devicetree/bindings/i2c/i2c-mux-pca954x.yaml
+++ b/Documentation/devicetree/bindings/i2c/i2c-mux-pca954x.yaml
@@ -63,6 +63,11 @@  properties:
       necessary for example, if there are several multiplexers on the bus and
       the devices behind them use same I2C addresses.
 
+  i2c-mux-timeout-reset:
+    type: boolean
+    description: Sends reset pulse if channel selection or deselection times
+      out. Do not use if other chips share the same reset line.
+
   idle-state:
     description: if present, overrides i2c-mux-idle-disconnect
     $ref: /schemas/mux/mux-controller.yaml#/properties/idle-state
@@ -88,6 +93,9 @@  properties:
       register activates a channel to detect a stuck high fault. On fault the
       channel is isolated from the upstream bus.
 
+dependencies:
+  i2c-mux-timeout-reset: [ reset-gpios ]
+
 required:
   - compatible
   - reg
@@ -146,6 +154,9 @@  examples:
             interrupt-parent = <&ipic>;
             interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
             interrupt-controller;
+            reset-gpios = <&gpio1 27 1>;
+            i2c-mux-idle-disconnect;
+            i2c-mux-timeout-reset;
             #interrupt-cells = <2>;
 
             i2c@2 {