Re: [PATCH v4 2/7] dt-bindings: media: max9286: Define 'maxim,gpio-poc'

2021-04-15 Thread Rob Herring
On Thu, Apr 15, 2021 at 02:25:57PM +0200, Jacopo Mondi wrote:
> Define a new vendor property in the maxim,max9286 binding schema.
> 
> The new property allows to declare that the remote camera
> power-over-coax is controlled by one of the MAX9286 gpio lines.
> 
> As it is currently not possible to establish a regulator as consumer
> of the MAX9286 gpio controller for this purpose, the property allows to
> declare that the camera power is controlled by the MAX9286 directly.
> 
> The property accepts a gpio-index (0 or 1) and one line polarity
> flag as defined by dt-bindings/gpio/gpio.h.
> 
> Reviewed-by: Laurent Pinchart 
> Signed-off-by: Jacopo Mondi 
> ---
>  .../bindings/media/i2c/maxim,max9286.yaml | 71 ++-
>  1 file changed, 70 insertions(+), 1 deletion(-)
> 
> diff --git a/Documentation/devicetree/bindings/media/i2c/maxim,max9286.yaml 
> b/Documentation/devicetree/bindings/media/i2c/maxim,max9286.yaml
> index 0e7162998b77..e2422241b7d0 100644
> --- a/Documentation/devicetree/bindings/media/i2c/maxim,max9286.yaml
> +++ b/Documentation/devicetree/bindings/media/i2c/maxim,max9286.yaml
> @@ -70,6 +70,28 @@ properties:
>a remote serializer whose high-threshold noise immunity is not enabled
>is 10 micro volts
>  
> +  maxim,gpio-poc:
> +$ref: '/schemas/types.yaml#/definitions/uint32-array'
> +minItems: 2
> +maxItems: 2
> +description: |
> +  Index of the MAX9286 gpio output line (0 or 1) that controls Power over
> +  Coax to the cameras and its associated polarity flag.
> +
> +  The property accepts an array of two unsigned integers, the first being
> +  the gpio line index (0 or 1) and the second being the gpio line 
> polarity
> +  flag (GPIO_ACTIVE_HIGH or GPIO_ACTIVE_LOW) as defined in
> +  .
> +
> +  When the remote cameras power is controlled by one of the MAX9286 gpio
> +  lines, this property has to be used to specify which line among the two
> +  available ones controls the remote camera power enablement.
> +
> +  When this property is used it is not possible to register a gpio
> +  controller as the gpio lines are controlled directly by the MAX9286 and
> +  not available for consumers, nor the 'poc-supply' property should be
> +  specified.
> +
>ports:
>  $ref: /schemas/graph.yaml#/properties/ports
>  
> @@ -182,7 +204,20 @@ required:
>- reg
>- ports
>- i2c-mux
> -  - gpio-controller
> +
> +# If 'maxim,gpio-poc' is present, then 'poc-supply' and 'gpio-controller'
> +# are not allowed.
> +if:
> +  required:
> +- maxim,gpio-poc
> +then:
> +  allOf:
> +- not:
> +required:
> +  - poc-supply
> +- not:
> +required:
> +  - gpio-controller

I did tell you to do it this way on irc, but looking at it again, it's 
slightly more concise to do:

 properties:
   poc-supply: false
   gpio-controller: false

Note that 'properties' in the 'if' doesn't work because a schema 
for a property evaluates as true when the property is not present.

Either way,

Reviewed-by: Rob Herring 

Rob


[PATCH v4 2/7] dt-bindings: media: max9286: Define 'maxim,gpio-poc'

2021-04-15 Thread Jacopo Mondi
Define a new vendor property in the maxim,max9286 binding schema.

The new property allows to declare that the remote camera
power-over-coax is controlled by one of the MAX9286 gpio lines.

As it is currently not possible to establish a regulator as consumer
of the MAX9286 gpio controller for this purpose, the property allows to
declare that the camera power is controlled by the MAX9286 directly.

The property accepts a gpio-index (0 or 1) and one line polarity
flag as defined by dt-bindings/gpio/gpio.h.

Reviewed-by: Laurent Pinchart 
Signed-off-by: Jacopo Mondi 
---
 .../bindings/media/i2c/maxim,max9286.yaml | 71 ++-
 1 file changed, 70 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/media/i2c/maxim,max9286.yaml 
b/Documentation/devicetree/bindings/media/i2c/maxim,max9286.yaml
index 0e7162998b77..e2422241b7d0 100644
--- a/Documentation/devicetree/bindings/media/i2c/maxim,max9286.yaml
+++ b/Documentation/devicetree/bindings/media/i2c/maxim,max9286.yaml
@@ -70,6 +70,28 @@ properties:
   a remote serializer whose high-threshold noise immunity is not enabled
   is 10 micro volts
 
+  maxim,gpio-poc:
+$ref: '/schemas/types.yaml#/definitions/uint32-array'
+minItems: 2
+maxItems: 2
+description: |
+  Index of the MAX9286 gpio output line (0 or 1) that controls Power over
+  Coax to the cameras and its associated polarity flag.
+
+  The property accepts an array of two unsigned integers, the first being
+  the gpio line index (0 or 1) and the second being the gpio line polarity
+  flag (GPIO_ACTIVE_HIGH or GPIO_ACTIVE_LOW) as defined in
+  .
+
+  When the remote cameras power is controlled by one of the MAX9286 gpio
+  lines, this property has to be used to specify which line among the two
+  available ones controls the remote camera power enablement.
+
+  When this property is used it is not possible to register a gpio
+  controller as the gpio lines are controlled directly by the MAX9286 and
+  not available for consumers, nor the 'poc-supply' property should be
+  specified.
+
   ports:
 $ref: /schemas/graph.yaml#/properties/ports
 
@@ -182,7 +204,20 @@ required:
   - reg
   - ports
   - i2c-mux
-  - gpio-controller
+
+# If 'maxim,gpio-poc' is present, then 'poc-supply' and 'gpio-controller'
+# are not allowed.
+if:
+  required:
+- maxim,gpio-poc
+then:
+  allOf:
+- not:
+required:
+  - poc-supply
+- not:
+required:
+  - gpio-controller
 
 additionalProperties: false
 
@@ -327,4 +362,38 @@ examples:
 };
 };
 };
+
+/*
+* Example of a deserializer that controls the camera Power over Coax
+* through one of its gpio lines.
+*/
+gmsl-deserializer@6c {
+compatible = "maxim,max9286";
+reg = <0x6c>;
+enable-gpios = < 14 GPIO_ACTIVE_HIGH>;
+
+/*
+* The remote camera power is controlled by MAX9286 GPIO line #0.
+* No 'poc-supply' nor 'gpio-controller' are specified.
+*/
+maxim,gpio-poc = <0 GPIO_ACTIVE_LOW>;
+
+/*
+* Do not describe connections as they're the same as in the 
previous
+* example.
+*/
+ports {
+#address-cells = <1>;
+#size-cells = <0>;
+
+port@4 {
+reg = <4>;
+};
+};
+
+i2c-mux {
+#address-cells = <1>;
+#size-cells = <0>;
+};
+};
 };
-- 
2.31.1