mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-09-03 17:51:23 +00:00

Some R-Car ISP instances have in addition to the channel selector (CS) an ISP core (CORE) to perform operations on an image stream. The core function is mapped to a different memory region and has a separate interrupt than CS, extend the bindings to allow describing this. On the same SoC different instances of the ISP IP may have, or not have, the CORE functionality. The CS function on all instances on the SoC are the same and the documentation describes the full ISP (CS + CORE) as a single IP block. Where instances not having the CORE function simply lack the functionality to modify the image data. There are dependencies on the CS functionality while operating the CORE functionality. In order for the ISP core to function in memory-to-memory mode it needs to be feed input data from a Streaming Bridge interface. This interface is provided thru the VSP-X device. Add an optional new property "renesas,vspx" to provide a phandle to describe this relationship. While adding mandatory reg-names and interrupt-names breaks existing bindings the driver itself remains backward compatible and provides CS functionality if a single unnamed reg and interrupt property is present. Furthermore all existing users of the bindings are updated in following work to add these new mandatory properties. Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> Reviewed-by: Rob Herring (Arm) <robh@kernel.org> Link: https://lore.kernel.org/r/20250423163113.2961049-2-niklas.soderlund+renesas@ragnatech.se Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
247 lines
6.7 KiB
YAML
247 lines
6.7 KiB
YAML
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
|
# Copyright (C) 2021 Renesas Electronics Corp.
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/media/renesas,isp.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: Renesas R-Car ISP Channel Selector
|
|
|
|
maintainers:
|
|
- Niklas Söderlund <niklas.soderlund@ragnatech.se>
|
|
|
|
description:
|
|
The R-Car ISP Channel Selector provides MIPI CSI-2 VC and DT filtering
|
|
capabilities for the Renesas R-Car family of devices. It is used in
|
|
conjunction with the R-Car VIN and CSI-2 modules, which provides the video
|
|
capture capabilities.
|
|
|
|
properties:
|
|
compatible:
|
|
items:
|
|
- enum:
|
|
- renesas,r8a779a0-isp # V3U
|
|
- renesas,r8a779g0-isp # V4H
|
|
- renesas,r8a779h0-isp # V4M
|
|
- const: renesas,rcar-gen4-isp # Generic R-Car Gen4
|
|
reg:
|
|
minItems: 1
|
|
maxItems: 2
|
|
|
|
reg-names:
|
|
minItems: 1
|
|
items:
|
|
- const: cs
|
|
- const: core
|
|
|
|
interrupts:
|
|
minItems: 1
|
|
maxItems: 2
|
|
|
|
interrupt-names:
|
|
minItems: 1
|
|
items:
|
|
- const: cs
|
|
- const: core
|
|
|
|
clocks:
|
|
minItems: 1
|
|
maxItems: 2
|
|
|
|
clock-names:
|
|
minItems: 1
|
|
items:
|
|
- const: cs
|
|
- const: core
|
|
|
|
power-domains:
|
|
maxItems: 1
|
|
|
|
resets:
|
|
minItems: 1
|
|
maxItems: 2
|
|
|
|
reset-names:
|
|
minItems: 1
|
|
items:
|
|
- const: cs
|
|
- const: core
|
|
|
|
renesas,vspx:
|
|
$ref: /schemas/types.yaml#/definitions/phandle
|
|
description:
|
|
A phandle to the companion VSPX responsible for the Streaming Bridge
|
|
functionality. The Streaming Bridge is responsible for feeding image
|
|
and configuration data to the ISP when operating in memory-to-memory
|
|
mode.
|
|
|
|
ports:
|
|
$ref: /schemas/graph.yaml#/properties/ports
|
|
|
|
properties:
|
|
port@0:
|
|
$ref: /schemas/graph.yaml#/properties/port
|
|
description:
|
|
Input port node, multiple endpoints describing the connected R-Car
|
|
CSI-2 receivers.
|
|
|
|
port@1:
|
|
$ref: /schemas/graph.yaml#/properties/port
|
|
description:
|
|
Single endpoint describing the R-Car VIN connected to output port 0.
|
|
|
|
port@2:
|
|
$ref: /schemas/graph.yaml#/properties/port
|
|
description:
|
|
Single endpoint describing the R-Car VIN connected to output port 1.
|
|
|
|
port@3:
|
|
$ref: /schemas/graph.yaml#/properties/port
|
|
description:
|
|
Single endpoint describing the R-Car VIN connected to output port 2.
|
|
|
|
port@4:
|
|
$ref: /schemas/graph.yaml#/properties/port
|
|
description:
|
|
Single endpoint describing the R-Car VIN connected to output port 3.
|
|
|
|
port@5:
|
|
$ref: /schemas/graph.yaml#/properties/port
|
|
description:
|
|
Single endpoint describing the R-Car VIN connected to output port 4.
|
|
|
|
port@6:
|
|
$ref: /schemas/graph.yaml#/properties/port
|
|
description:
|
|
Single endpoint describing the R-Car VIN connected to output port 5.
|
|
|
|
port@7:
|
|
$ref: /schemas/graph.yaml#/properties/port
|
|
description:
|
|
Single endpoint describing the R-Car VIN connected to output port 6.
|
|
|
|
port@8:
|
|
$ref: /schemas/graph.yaml#/properties/port
|
|
description:
|
|
Single endpoint describing the R-Car VIN connected to output port 7.
|
|
|
|
required:
|
|
- port@0
|
|
- port@1
|
|
- port@2
|
|
- port@3
|
|
- port@4
|
|
- port@5
|
|
- port@6
|
|
- port@7
|
|
- port@8
|
|
|
|
required:
|
|
- compatible
|
|
- reg
|
|
- reg-names
|
|
- interrupts
|
|
- interrupt-names
|
|
- clocks
|
|
- clock-names
|
|
- power-domains
|
|
- resets
|
|
- reset-names
|
|
- ports
|
|
|
|
additionalProperties: false
|
|
|
|
examples:
|
|
- |
|
|
#include <dt-bindings/clock/r8a779a0-cpg-mssr.h>
|
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
|
#include <dt-bindings/power/r8a779a0-sysc.h>
|
|
|
|
isp1: isp@fed20000 {
|
|
compatible = "renesas,r8a779a0-isp", "renesas,rcar-gen4-isp";
|
|
reg = <0xfed20000 0x10000>, <0xfee00000 0x100000>;
|
|
reg-names = "cs", "core";
|
|
interrupts = <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>,
|
|
<GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>;
|
|
interrupt-names = "cs", "core";
|
|
clocks = <&cpg CPG_MOD 613>, <&cpg CPG_MOD 17>;
|
|
clock-names = "cs", "core";
|
|
power-domains = <&sysc R8A779A0_PD_A3ISP01>;
|
|
resets = <&cpg 613>, <&cpg 17>;
|
|
reset-names = "cs", "core";
|
|
|
|
renesas,vspx = <&vspx1>;
|
|
|
|
ports {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
port@0 {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
reg = <0>;
|
|
isp1csi41: endpoint@1 {
|
|
reg = <1>;
|
|
remote-endpoint = <&csi41isp1>;
|
|
};
|
|
};
|
|
|
|
port@1 {
|
|
reg = <1>;
|
|
isp1vin08: endpoint {
|
|
remote-endpoint = <&vin08isp1>;
|
|
};
|
|
};
|
|
|
|
port@2 {
|
|
reg = <2>;
|
|
isp1vin09: endpoint {
|
|
remote-endpoint = <&vin09isp1>;
|
|
};
|
|
};
|
|
|
|
port@3 {
|
|
reg = <3>;
|
|
isp1vin10: endpoint {
|
|
remote-endpoint = <&vin10isp1>;
|
|
};
|
|
};
|
|
|
|
port@4 {
|
|
reg = <4>;
|
|
isp1vin11: endpoint {
|
|
remote-endpoint = <&vin11isp1>;
|
|
};
|
|
};
|
|
|
|
port@5 {
|
|
reg = <5>;
|
|
isp1vin12: endpoint {
|
|
remote-endpoint = <&vin12isp1>;
|
|
};
|
|
};
|
|
|
|
port@6 {
|
|
reg = <6>;
|
|
isp1vin13: endpoint {
|
|
remote-endpoint = <&vin13isp1>;
|
|
};
|
|
};
|
|
|
|
port@7 {
|
|
reg = <7>;
|
|
isp1vin14: endpoint {
|
|
remote-endpoint = <&vin14isp1>;
|
|
};
|
|
};
|
|
|
|
port@8 {
|
|
reg = <8>;
|
|
isp1vin15: endpoint {
|
|
remote-endpoint = <&vin15isp1>;
|
|
};
|
|
};
|
|
};
|
|
};
|