From 30921ddfa24a5325d0f4980c72f98d20bace87a2 Mon Sep 17 00:00:00 2001 From: Richard Oliver Date: Fri, 24 May 2024 11:43:07 +0100 Subject: [PATCH 1243/1350] media: dt-bindings: i2c: Add Sony IMX500 Add YAML device tree binding for the Sony IMX500 CMOS image sensor / CNN inference engine. Also, add a MAINTAINERS entry. Signed-off-by: Richard Oliver --- .../bindings/media/i2c/sony,imx500.yaml | 132 ++++++++++++++++++ MAINTAINERS | 7 + 2 files changed, 139 insertions(+) create mode 100644 Documentation/devicetree/bindings/media/i2c/sony,imx500.yaml --- /dev/null +++ b/Documentation/devicetree/bindings/media/i2c/sony,imx500.yaml @@ -0,0 +1,132 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/media/i2c/sony,imx500.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Sony CMOS Digital Image Sensor and CNN + +maintainers: + - Raspberry Pi + +description: |- + The Sony IMX500 is a stacked 1/2.3-inch CMOS digital image sensor and inbuilt + AI processor with an active array CNN (Convolutional Neural Network) inference + engine. The native sensor size is 4056H x 3040V, and the module also contains + an in-built ISP for the CNN. The module is programmable through an I2C + interface with firmware and neural network uploads being made over SPI. The + default I2C address is 0x1A, with an address of 0x10 being selectable via + SLASEL. The module also has a second I2C interface available with a fixed + address of 0x36. Image data is sent through MIPI CSI-2, which is configured + as either 2 or 4 data lanes. + +properties: + compatible: + const: sony,imx500 + + reg: + description: I2C device address + maxItems: 1 + + clocks: + maxItems: 1 + + clock-names: + description: |- + Input clock (12 to 27 MHz) + items: + - const: inck + + interrupts: + maxItems: 1 + + vana-supply: + description: Supply voltage (analog) - 2.7 V + + vdig-supply: + description: Supply voltage (digital) - 0.84 V + + vif-supply: + description: Supply voltage (interface) - 1.8 V + + reset-gpios: + description: |- + Sensor reset (XCLR) GPIO + + Chip clear in lieu of built-in power on reset. To be set 'High' after + power supplies are brought up and INCK supplied. + + port: + $ref: /schemas/graph.yaml#/$defs/port-base + additionalProperties: false + description: | + Video output port + + properties: + endpoint: + $ref: /schemas/media/video-interfaces.yaml# + type: object + unevaluatedProperties: false + properties: + data-lanes: + items: + - const: 2 + - const: 4 + clock-noncontinuous: true + link-frequencies: true + required: + - link-frequencies + - data-lanes + + spi: + $ref: /schemas/types.yaml#/definitions/phandle + description: |- + SPI peripheral + + Optional SPI peripheral for uploading firmware and network weights to AI + processor. + +required: + - compatible + - reg + - clocks + - clock-names + - vana-supply + - vdig-supply + - vif-supply + - port + +examples: + - | + #include + + i2c { + #address-cells = <1>; + #size-cells = <0>; + + imx500: sensor@1a { + compatible = "sony,imx500"; + reg = <0x1a>; + + clocks = <&imx500_clk>; + clock-names = "inck"; + + vana-supply = <&imx500_vana>; /* 2.7 +/- 0.1 V */ + vdig-supply = <&imx500_vdig>; /* 0.84 +/- 0.04 V */ + vif-supply = <&imx500_vif>; /* 1.8 +/- 0.1 V */ + + reset-gpios = <&gpio_sensor 0 GPIO_ACTIVE_LOW>; + + port { + imx500_0: endpoint { + remote-endpoint = <&csi1_ep>; + data-lanes = <1 2>; + clock-noncontinuous; + link-frequencies = /bits/ 64 <499500000>; + }; + }; + }; + }; + +... + --- a/MAINTAINERS +++ b/MAINTAINERS @@ -20127,6 +20127,13 @@ F: Documentation/devicetree/bindings/med F: Documentation/devicetree/bindings/media/i2c/imx477.yaml F: drivers/media/i2c/imx477.c +SONY IMX500 SENSOR DRIVER +M: Raspberry Pi Kernel Maintenance +L: linux-media@vger.kernel.org +S: Maintained +T: git git://linuxtv.org/media_tree.git +F: Documentation/devicetree/bindings/media/i2c/sony,imx500.yaml + SONY IMX519 SENSOR DRIVER M: Arducam Kernel Maintenance L: linux-media@vger.kernel.org