Re: [PATCH v2 1/3] dt-bindings: interconnect: Add Qualcomm CAMNOC ICC binding
From: Krzysztof Kozlowski
Date: Thu Aug 27 2026 - 05:25:23 EST
On Wed, Aug 19, 2026 at 12:32:09PM +0300, Atanas Filipov wrote:
> Add binding for the Qualcomm CAMNOC interconnect provider. CAMNOC is
> the internal AXI interconnect within the camera subsystem. Multiple
> sub-devices share CAM_CC_CAMNOC_AXI_CLK; the ICC provider aggregates
> their bandwidth votes and scales the clock accordingly, avoiding the
> last-writer-wins race from direct clk_set_rate() calls.
>
> Signed-off-by: Atanas Filipov <atanas.filipov@xxxxxxxxxxxxxxxx>
> ---
> .../bindings/interconnect/qcom,camnoc.yaml | 124 ++++++++++++++++++
> .../dt-bindings/interconnect/qcom,camnoc.h | 52 ++++++++
> 2 files changed, 176 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/interconnect/qcom,camnoc.yaml
> create mode 100644 include/dt-bindings/interconnect/qcom,camnoc.h
>
> diff --git a/Documentation/devicetree/bindings/interconnect/qcom,camnoc.yaml b/Documentation/devicetree/bindings/interconnect/qcom,camnoc.yaml
> new file mode 100644
> index 000000000000..b2659db2cf27
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/interconnect/qcom,camnoc.yaml
Filename must match compatible.
> @@ -0,0 +1,124 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/interconnect/qcom,camnoc.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Qualcomm Camera NOC (CAMNOC) Interconnect Provider
> +
> +maintainers:
> + - Atanas Filipov <atanas.filipov@xxxxxxxxxxxxxxxx>
> +
> +description:
> + The Camera Network-on-Chip (CAMNOC) is the internal AXI interconnect
> + within the Qualcomm camera subsystem. It arbitrates AXI bandwidth
> + between camera sub-devices (IFE, JPEG, BPS, IPE, etc.) and the external
> + memory interconnect. Multiple consumers may independently request
> + bandwidth via icc_set_bw(); the CAMNOC ICC provider aggregates all active
> + votes and scales CAM_CC_CAMNOC_AXI_CLK accordingly, avoiding the
> + last-writer-wins race that arises when each consumer calls clk_set_rate()
> + directly on the shared clock.
> +
> + Each camera sub-device driver that shares the CAMNOC AXI clock should
> + obtain an ICC path from its master port to SLAVE_CAMNOC_AXI and vote for
> + bandwidth using the port IDs defined in
> + include/dt-bindings/interconnect/qcom,camnoc.h.
> +
> +properties:
> + compatible:
> + enum:
> + - qcom,sm8250-cam-virt
> +
> + clocks:
> + items:
> + - description: CAMNOC AXI clock
> +
> + clock-names:
> + items:
> + - const: camnoc_axi
> +
> + '#interconnect-cells':
> + const: 1
> +
> +required:
> + - compatible
> + - clocks
> + - clock-names
> + - '#interconnect-cells'
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/clock/qcom,camcc-sm8250.h>
> + #include <dt-bindings/interconnect/qcom,camnoc.h>
> +
> + /* CAMNOC ICC provider node */
Drop, redundant.
> + cam_virt: interconnect-cam-virt {
Drop unused label
> + compatible = "qcom,sm8250-cam-virt";
> + clocks = <&camcc CAM_CC_CAMNOC_AXI_CLK>;
> + clock-names = "camnoc_axi";
> + #interconnect-cells = <1>;
> + };
> +
> + /*
> + * Simple consumer example: IFE sub-device voting for CAMNOC bandwidth
And what are the writing schema/bindings asking about consumers? Or
DTS101 slides? Look at other bindings instead of coming with own style.
Best regards,
Krzysztof