mbox series

[v2,0/2] media: i2c: isl7998x: Add driver for Intersil ISL7998x

Message ID 20210602132950.4167596-1-m.tretter@pengutronix.de
Headers show
Series media: i2c: isl7998x: Add driver for Intersil ISL7998x | expand

Message

Michael Tretter June 2, 2021, 1:29 p.m. UTC
Hello,

This is a respin/v2 of the previous series for adding the isl7998x driver [0]
sent by Marek Vasut. I updated the patches according to the review comments of
this previous series.

The isl7998x is an analog video to MIPI CSI-2 or BT.656 converter. The dt
binding describes only the isl79987 chip, which supports MIPI CSI-2. The
driver could be extended to handle isl79988 (for BT.656), too, but this isn't
implemented.

As this is a v2, I left the patch author as is, but added myself as a
maintainer for the driver. Please tell me, if I should handle this differently
and/or further document my changes in the patches.

checkpatch.pl complains about the macros that are used for handling the
regmaps and paged register space in the driver. I don't have a good idea how
to handle this differently. Suggestions are welcome, if this is actually
problem.

Michael

[0] https://lore.kernel.org/linux-media/20190520201812.7937-1-marex@denx.de/

Changelog:

v2:

- convert dt binding to yaml
- change binding to ISL79987 only
- general driver cleanup
- convert driver to pm_runtime
- use ports in device tree for specifying inputs
- add reset gpio

Marek Vasut (2):
  media: dt-bindings: Add Intersil ISL79987 DT bindings
  media: i2c: isl7998x: Add driver for Intersil ISL7998x

 .../bindings/media/i2c/isil,isl79987.yaml     |  108 ++
 MAINTAINERS                                   |    8 +
 drivers/media/i2c/Kconfig                     |    9 +
 drivers/media/i2c/Makefile                    |    1 +
 drivers/media/i2c/isl7998x.c                  | 1421 +++++++++++++++++
 5 files changed, 1547 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/media/i2c/isil,isl79987.yaml
 create mode 100644 drivers/media/i2c/isl7998x.c

Comments

Rob Herring (Arm) June 10, 2021, 5:57 p.m. UTC | #1
On Wed, Jun 02, 2021 at 03:29:49PM +0200, Michael Tretter wrote:
> From: Marek Vasut <marex@denx.de>
> 
> Add bindings for the Intersil ISL79987 analog to MIPI CSI-2 decoder.
> 
> Signed-off-by: Marek Vasut <marex@denx.de>
> Cc: Sakari Ailus <sakari.ailus@linux.intel.com>
> Cc: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
> Cc: Rob Herring <robh+dt@kernel.org>
> Cc: devicetree@vger.kernel.org
> To: linux-media@vger.kernel.org
> Signed-off-by: Michael Tretter <m.tretter@pengutronix.de>
> ---
> Changelog:
> 
> v2:
> 
> - convert binding to yaml
> - change description to match only isl79987
> - replace num-inputs property with multiple ports
> - add reset gpio
> ---
>  .../bindings/media/i2c/isil,isl79987.yaml     | 108 ++++++++++++++++++
>  1 file changed, 108 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/media/i2c/isil,isl79987.yaml
> 
> diff --git a/Documentation/devicetree/bindings/media/i2c/isil,isl79987.yaml b/Documentation/devicetree/bindings/media/i2c/isil,isl79987.yaml
> new file mode 100644
> index 000000000000..4aa27511b1ab
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/media/i2c/isil,isl79987.yaml
> @@ -0,0 +1,108 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/media/i2c/isil,isl79987.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Intersil ISL79987 Analog to MIPI CSI-2 decoder
> +
> +maintainers:
> +  - Michael Tretter <m.tretter@pengutronix.de>
> +  - Marek Vasut <marex@denx.de>
> +
> +description:
> +  The Intersil ISL79987 is an analog to MIPI CSI-2 decoder which is capable of
> +  receiving up to four analog stream and multiplexing them into up to four MIPI
> +  CSI-2 virtual channels, using one MIPI clock lane and 1/2 data lanes.
> +
> +properties:
> +  compatible:
> +    enum:
> +      - isil,isl79987
> +
> +  reg:
> +    maxItems: 1
> +
> +  reset-gpios:
> +    maxItems: 1
> +    description:
> +      A GPIO spec for the RSTB pin (active high)
> +
> +  pd-gpios:

powerdown-gpios is the somewhat standard name.

> +    maxItems: 1
> +    description:
> +      A GPIO spec for the Power Down pin (active high)
> +
> +  ports:
> +    type: object

Please reference the graph.yaml schema. There's several examples in the 
tree now what this should look like.

> +    description:
> +      A node containing input and output port nodes with endpoint definitions
> +      as documented in
> +      Documentation/devicetree/bindings/media/video-interfaces.txt

This is now video-interfaces.yaml, but it's not actually used here.

> +    properties:

> +      '#address-cells':
> +        const: 1
> +      '#size-cells':
> +        const: 0

These can be dropped (covered by graph.yaml).

> +      port@0:
> +        type: object
> +        description: Output port
> +
> +    patternProperties:
> +      "^port@[1-4]$":
> +        type: object
> +        description: Input ports
> +
> +    required:
> +      - port@0
> +
> +additionalProperties: false
> +
> +required:
> +  - compatible
> +  - reg
> +  - ports
> +
> +examples:
> +  - |
> +    #include <dt-bindings/gpio/gpio.h>
> +
> +    i2c {
> +      #address-cells = <1>;
> +      #size-cells = <0>;
> +
> +      isl7998x_mipi@44 {
> +        compatible = "isil,isl79987";
> +        reg = <0x44>;
> +        pd-gpios = <&gpio3 27 GPIO_ACTIVE_HIGH>;
> +        reset-gpios = <&gpio3 28 GPIO_ACTIVE_HIGH>;
> +
> +        ports {
> +          #address-cells = <1>;
> +          #size-cells = <0>;
> +
> +          port@0 {
> +            reg = <0>;
> +            isl79987_out: endpoint {
> +              remote-endpoint = <&mipi_csi2_in>;
> +              clock-lanes = <0>;
> +              data-lanes = <1 2>;
> +            };
> +          };
> +
> +          port@1 {
> +            reg = <1>;
> +            endpoint {
> +              remote-endpoint = <&camera_0>;
> +            };
> +          };
> +
> +          port@2 {
> +            reg = <2>;
> +            endpoint {
> +              remote-endpoint = <&camera_1>;
> +            };
> +          };
> +        };
> +      };
> +    };
> -- 
> 2.29.2