mirror of
https://github.com/torvalds/linux.git
synced 2026-05-02 21:42:42 -04:00
The binding for Qualcomm SoC UFS controllers grew and it will grow
further. Split SM8650 and SM8750 UFS controllers which:
1. Do not reference ICE as IO address space, but as phandle,
2. Have same order of clocks.
3. Have MCQ I/O address space. Document that MCQ address space as
optional to maintain backwards compatibility and because Linux
drivers can operate perfectly fine without it (thus without MCQ
feature). Linux driver already uses "mcq" as possible name for
"reg-names" property.
The split allows easier review and maintenance of the binding.
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20250731-dt-bindings-ufs-qcom-v2-3-53bb634bf95a@linaro.org
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
Acked-by: Manivannan Sadhasivam <mani@kernel.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
244 lines
6.2 KiB
YAML
244 lines
6.2 KiB
YAML
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/ufs/qcom,ufs.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: Qualcomm Universal Flash Storage (UFS) Controller
|
|
|
|
maintainers:
|
|
- Bjorn Andersson <bjorn.andersson@linaro.org>
|
|
- Andy Gross <agross@kernel.org>
|
|
|
|
# Select only our matches, not all jedec,ufs-2.0
|
|
select:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- qcom,msm8994-ufshc
|
|
- qcom,msm8996-ufshc
|
|
- qcom,qcs615-ufshc
|
|
- qcom,sdm845-ufshc
|
|
- qcom,sm6115-ufshc
|
|
- qcom,sm6125-ufshc
|
|
- qcom,sm6350-ufshc
|
|
- qcom,sm8150-ufshc
|
|
required:
|
|
- compatible
|
|
|
|
properties:
|
|
compatible:
|
|
items:
|
|
- enum:
|
|
- qcom,msm8994-ufshc
|
|
- qcom,msm8996-ufshc
|
|
- qcom,qcs615-ufshc
|
|
- qcom,sdm845-ufshc
|
|
- qcom,sm6115-ufshc
|
|
- qcom,sm6125-ufshc
|
|
- qcom,sm6350-ufshc
|
|
- qcom,sm8150-ufshc
|
|
- const: qcom,ufshc
|
|
- const: jedec,ufs-2.0
|
|
|
|
qcom,ice:
|
|
$ref: /schemas/types.yaml#/definitions/phandle
|
|
description: phandle to the Inline Crypto Engine node
|
|
|
|
reg:
|
|
minItems: 1
|
|
maxItems: 2
|
|
|
|
reg-names:
|
|
items:
|
|
- const: std
|
|
- const: ice
|
|
|
|
required:
|
|
- compatible
|
|
- reg
|
|
|
|
allOf:
|
|
- $ref: qcom,ufs-common.yaml
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- qcom,sdm845-ufshc
|
|
- qcom,sm6350-ufshc
|
|
- qcom,sm8150-ufshc
|
|
then:
|
|
properties:
|
|
clocks:
|
|
minItems: 9
|
|
maxItems: 9
|
|
clock-names:
|
|
items:
|
|
- const: core_clk
|
|
- const: bus_aggr_clk
|
|
- const: iface_clk
|
|
- const: core_clk_unipro
|
|
- const: ref_clk
|
|
- const: tx_lane0_sync_clk
|
|
- const: rx_lane0_sync_clk
|
|
- const: rx_lane1_sync_clk
|
|
- const: ice_core_clk
|
|
reg:
|
|
minItems: 2
|
|
maxItems: 2
|
|
reg-names:
|
|
minItems: 2
|
|
required:
|
|
- reg-names
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- qcom,msm8996-ufshc
|
|
then:
|
|
properties:
|
|
clocks:
|
|
minItems: 9
|
|
maxItems: 9
|
|
clock-names:
|
|
items:
|
|
- const: core_clk
|
|
- const: bus_clk
|
|
- const: bus_aggr_clk
|
|
- const: iface_clk
|
|
- const: core_clk_unipro
|
|
- const: core_clk_ice
|
|
- const: ref_clk
|
|
- const: tx_lane0_sync_clk
|
|
- const: rx_lane0_sync_clk
|
|
reg:
|
|
minItems: 1
|
|
maxItems: 1
|
|
reg-names:
|
|
maxItems: 1
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- qcom,qcs615-ufshc
|
|
- qcom,sm6115-ufshc
|
|
- qcom,sm6125-ufshc
|
|
then:
|
|
properties:
|
|
clocks:
|
|
minItems: 8
|
|
maxItems: 8
|
|
clock-names:
|
|
items:
|
|
- const: core_clk
|
|
- const: bus_aggr_clk
|
|
- const: iface_clk
|
|
- const: core_clk_unipro
|
|
- const: ref_clk
|
|
- const: tx_lane0_sync_clk
|
|
- const: rx_lane0_sync_clk
|
|
- const: ice_core_clk
|
|
reg:
|
|
minItems: 2
|
|
maxItems: 2
|
|
reg-names:
|
|
minItems: 2
|
|
required:
|
|
- reg-names
|
|
|
|
# TODO: define clock bindings for qcom,msm8994-ufshc
|
|
|
|
- if:
|
|
required:
|
|
- qcom,ice
|
|
then:
|
|
properties:
|
|
reg:
|
|
maxItems: 1
|
|
clocks:
|
|
minItems: 7
|
|
maxItems: 8
|
|
else:
|
|
properties:
|
|
reg:
|
|
minItems: 1
|
|
maxItems: 2
|
|
clocks:
|
|
minItems: 7
|
|
maxItems: 9
|
|
|
|
unevaluatedProperties: false
|
|
|
|
examples:
|
|
- |
|
|
#include <dt-bindings/clock/qcom,gcc-sm8150.h>
|
|
#include <dt-bindings/clock/qcom,rpmh.h>
|
|
#include <dt-bindings/gpio/gpio.h>
|
|
#include <dt-bindings/interconnect/qcom,sm8150.h>
|
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
|
|
|
soc {
|
|
#address-cells = <2>;
|
|
#size-cells = <2>;
|
|
|
|
ufs@1d84000 {
|
|
compatible = "qcom,sm8150-ufshc", "qcom,ufshc",
|
|
"jedec,ufs-2.0";
|
|
reg = <0x0 0x01d84000 0x0 0x2500>,
|
|
<0x0 0x01d90000 0x0 0x8000>;
|
|
reg-names = "std", "ice";
|
|
|
|
interrupts = <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>;
|
|
phys = <&ufs_mem_phy_lanes>;
|
|
phy-names = "ufsphy";
|
|
lanes-per-direction = <2>;
|
|
#reset-cells = <1>;
|
|
resets = <&gcc GCC_UFS_PHY_BCR>;
|
|
reset-names = "rst";
|
|
reset-gpios = <&tlmm 210 GPIO_ACTIVE_LOW>;
|
|
|
|
vcc-supply = <&vreg_l7b_2p5>;
|
|
vcc-max-microamp = <1100000>;
|
|
vccq-supply = <&vreg_l9b_1p2>;
|
|
vccq-max-microamp = <1200000>;
|
|
|
|
power-domains = <&gcc UFS_PHY_GDSC>;
|
|
iommus = <&apps_smmu 0x300 0>;
|
|
|
|
clocks = <&gcc GCC_UFS_PHY_AXI_CLK>,
|
|
<&gcc GCC_AGGRE_UFS_PHY_AXI_CLK>,
|
|
<&gcc GCC_UFS_PHY_AHB_CLK>,
|
|
<&gcc GCC_UFS_PHY_UNIPRO_CORE_CLK>,
|
|
<&rpmhcc RPMH_CXO_CLK>,
|
|
<&gcc GCC_UFS_PHY_TX_SYMBOL_0_CLK>,
|
|
<&gcc GCC_UFS_PHY_RX_SYMBOL_0_CLK>,
|
|
<&gcc GCC_UFS_PHY_RX_SYMBOL_1_CLK>,
|
|
<&gcc GCC_UFS_PHY_ICE_CORE_CLK>;
|
|
clock-names = "core_clk",
|
|
"bus_aggr_clk",
|
|
"iface_clk",
|
|
"core_clk_unipro",
|
|
"ref_clk",
|
|
"tx_lane0_sync_clk",
|
|
"rx_lane0_sync_clk",
|
|
"rx_lane1_sync_clk",
|
|
"ice_core_clk";
|
|
freq-table-hz = <37500000 300000000>,
|
|
<0 0>,
|
|
<0 0>,
|
|
<37500000 300000000>,
|
|
<0 0>,
|
|
<0 0>,
|
|
<0 0>,
|
|
<0 0>,
|
|
<0 300000000>;
|
|
};
|
|
};
|