Re: [PATCH v2 1/3] dt-bindings: interconnect: Add Qualcomm CAMNOC ICC binding
Krzysztof Kozlowski <[email protected]>
| Newsgroups | org.kernel.vger.linux-pm,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
On 27/08/2026 11:23, Krzysztof Kozlowski wrote: > 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 <[email protected]> >> --- >> .../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 <[email protected]> >> + >> +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. > And: Drop second/last, redundant "binding". The "dt-bindings" prefix is already stating that these are bindings. See also: https://elixir.bootlin.com/linux/v7.1-rc7/source/Documentation/devicetree/bindings/submitting-patches.rst#L23 Best regards, Krzysztof