mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 01:49:46 +00:00
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 <richard.oliver@raspberrypi.com>
133 lines
3.2 KiB
YAML
133 lines
3.2 KiB
YAML
# 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 <kernel-list@raspberrypi.com>
|
|
|
|
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 <dt-bindings/gpio/gpio.h>
|
|
|
|
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>;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
...
|
|
|