# SPDX-License-Identifier: GPL-2.0-only %YAML 1.2 --- $id: http://devicetree.org/schemas/bindings/clock/qcom,gcc.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: Qualcomm Global Clock & Reset Controller Binding maintainers: - Stephen Boyd - Taniya Das description: | Qualcomm global clock control module which supports the clocks, resets and power domains. properties: compatible : enum: - qcom,gcc-apq8064 - qcom,gcc-apq8084 - qcom,gcc-ipq4019 - qcom,gcc-ipq6018 - qcom,gcc-ipq8064 - qcom,gcc-ipq8074 - qcom,gcc-msm8660 - qcom,gcc-msm8916 - qcom,gcc-msm8960 - qcom,gcc-msm8974 - qcom,gcc-msm8974pro - qcom,gcc-msm8974pro-ac - qcom,gcc-msm8994 - qcom,gcc-msm8996 - qcom,gcc-msm8998 - qcom,gcc-mdm9615 - qcom,gcc-qcs404 - qcom,gcc-sc7180 - qcom,gcc-sdm630 - qcom,gcc-sdm660 - qcom,gcc-sdm845 - qcom,gcc-sm8150 clocks: oneOf: #qcom,gcc-sm8150 #qcom,gcc-sc7180 - items: - description: Board XO source - description: Board active XO source - description: Sleep clock source #qcom,gcc-msm8996 - items: - description: XO source - description: Second XO source - description: Sleep clock source #qcom,gcc-msm8998 - items: - description: Board XO source - description: Sleep clock source - description: USB 3.0 phy pipe clock - description: UFS phy rx symbol clock for pipe 0 - description: UFS phy rx symbol clock for pipe 1 - description: UFS phy tx symbol clock - description: PCIE phy pipe clock clock-names: oneOf: #qcom,gcc-sm8150 #qcom,gcc-sc7180 - items: - const: bi_tcxo - const: bi_tcxo_ao - const: sleep_clk #qcom,gcc-msm8996 - items: - const: cxo - const: cxo2 - const: sleep_clk #qcom,gcc-msm8998 - items: - const: xo - const: sleep_clk - const: usb3_pipe - const: ufs_rx_symbol0 - const: ufs_rx_symbol1 - const: ufs_tx_symbol0 - const: pcie0_pipe '#clock-cells': const: 1 '#reset-cells': const: 1 '#power-domain-cells': const: 1 reg: maxItems: 1 nvmem-cells: minItems: 1 maxItems: 2 description: Qualcomm TSENS (thermal sensor device) on some devices can be part of GCC and hence the TSENS properties can also be part of the GCC/clock-controller node. For more details on the TSENS properties please refer Documentation/devicetree/bindings/thermal/qcom-tsens.txt nvmem-cell-names: minItems: 1 maxItems: 2 description: Names for each nvmem-cells specified. items: - const: calib - const: calib_backup 'thermal-sensor-cells': const: 1 protected-clocks: description: Protected clock specifier list as per common clock binding required: - compatible - reg - '#clock-cells' - '#reset-cells' - '#power-domain-cells' if: properties: compatible: contains: const: qcom,gcc-apq8064 then: required: - nvmem-cells - nvmem-cell-names - '#thermal-sensor-cells' else: if: properties: compatible: contains: enum: - qcom,gcc-msm8998 - qcom,gcc-sm8150 - qcom,gcc-sc7180 then: required: - clocks - clock-names examples: # Example for GCC for MSM8960: - | clock-controller@900000 { compatible = "qcom,gcc-msm8960"; reg = <0x900000 0x4000>; #clock-cells = <1>; #reset-cells = <1>; #power-domain-cells = <1>; }; # Example of GCC with TSENS properties: - | clock-controller@900000 { compatible = "qcom,gcc-apq8064"; reg = <0x00900000 0x4000>; nvmem-cells = <&tsens_calib>, <&tsens_backup>; nvmem-cell-names = "calib", "calib_backup"; #clock-cells = <1>; #reset-cells = <1>; #power-domain-cells = <1>; #thermal-sensor-cells = <1>; }; # Example of GCC with protected-clocks properties: - | clock-controller@100000 { compatible = "qcom,gcc-sdm845"; reg = <0x100000 0x1f0000>; protected-clocks = <187>, <188>, <189>, <190>, <191>; #clock-cells = <1>; #reset-cells = <1>; #power-domain-cells = <1>; }; # Example of GCC with clock node properties for SM8150: - | clock-controller@100000 { compatible = "qcom,gcc-sm8150"; reg = <0x00100000 0x1f0000>; clocks = <&rpmhcc 0>, <&rpmhcc 1>, <&sleep_clk>; clock-names = "bi_tcxo", "bi_tcxo_ao", "sleep_clk"; #clock-cells = <1>; #reset-cells = <1>; #power-domain-cells = <1>; }; # Example of GCC with clock nodes properties for SC7180: - | clock-controller@100000 { compatible = "qcom,gcc-sc7180"; reg = <0x100000 0x1f0000>; clocks = <&rpmhcc 0>, <&rpmhcc 1>, <0>; clock-names = "bi_tcxo", "bi_tcxo_ao", "sleep_clk"; #clock-cells = <1>; #reset-cells = <1>; #power-domain-cells = <1>; }; # Example of MSM8998 GCC: - | #include clock-controller@100000 { compatible = "qcom,gcc-msm8998"; #clock-cells = <1>; #reset-cells = <1>; #power-domain-cells = <1>; reg = <0x00100000 0xb0000>; clocks = <&rpmcc RPM_SMD_XO_CLK_SRC>, <&sleep>, <0>, <0>, <0>, <0>, <0>; clock-names = "xo", "sleep_clk", "usb3_pipe", "ufs_rx_symbol0", "ufs_rx_symbol1", "ufs_tx_symbol0", "pcie0_pipe"; }; ...