Linux cryptographic layer development
 help / color / mirror / Atom feed
* [PATCH 0/2] arm64: dts: qcom: sm8150: Add standalone ICE node for UFS
@ 2026-11-04  8:00 Andrew Gigena via B4 Relay
  2026-11-04  8:00 ` [PATCH 1/2] dt-bindings: crypto: ice: Document sm8150 inline crypto engine Andrew Gigena via B4 Relay
  2026-11-04  8:00 ` [PATCH 2/2] arm64: dts: qcom: sm8150: Use standalone ICE node for UFS Andrew Gigena via B4 Relay
  0 siblings, 2 replies; 5+ messages in thread
From: Andrew Gigena via B4 Relay @ 2026-11-04  8:00 UTC (permalink / raw)
  To: Abel Vesa, Herbert Xu, David S. Miller, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio
  Cc: linux-arm-msm, linux-crypto, devicetree, linux-kernel,
	Andrew Gigena

Hi everyone,

This small series brings the Qualcomm Inline Crypto Engine (ICE) to the
SM8150 (Snapdragon 855) platform, following the same standalone-node style
already used on SM8250 and newer SoCs.

The first patch documents the new compatible in the binding, and the second
converts the UFS node to reference a dedicated ICE node instead of embedding
the registers directly.

I've tested this on a Google Pixel 4 (google-flame) and everything works:
/sys/block/sda/queue/crypto now advertises AES-256-XTS and ext4 reports
encryption as "supported". The ICE self-test completes cleanly during boot.

Happy to adjust anything or add more details if needed. Thanks for reviewing!

Andrew Gigena (2):

dt-bindings: crypto: ice: Document sm8150 inline crypto engine
arm64: dts: qcom: sm8150: Use standalone ICE node for UFS
---
 .../devicetree/bindings/crypto/qcom,inline-crypto-engine.yaml |  1 +
 arch/arm64/boot/dts/qcom/sm8150.dtsi                         | 21 ++++++++++++---------
 2 files changed, 13 insertions(+), 9 deletions(-)

To: Abel Vesa <abelvesa@kernel.org>
To: Herbert Xu <herbert@gondor.apana.org.au>
To: "David S. Miller" <davem@davemloft.net>
To: Rob Herring <robh@kernel.org>
To: Krzysztof Kozlowski <krzk+dt@kernel.org>
To: Conor Dooley <conor+dt@kernel.org>
To: Bjorn Andersson <andersson@kernel.org>
To: Konrad Dybcio <konradybcio@kernel.org>
Cc: linux-arm-msm@vger.kernel.org
Cc: linux-crypto@vger.kernel.org
Cc: devicetree@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Andrew Gigena <mail@andrewgigena.dev>

---
Andrew Gigena (2):
      dt-bindings: crypto: ice: Document sm8150 inline crypto engine
      arm64: dts: qcom: sm8150: Use standalone ICE node for UFS

 .../bindings/crypto/qcom,inline-crypto-engine.yaml |  1 +
 arch/arm64/boot/dts/qcom/sm8150.dtsi               | 25 ++++++++++++++--------
 2 files changed, 17 insertions(+), 9 deletions(-)
---
base-commit: 6628e7d4c6b25c8d18f1345e3a20d21829aae7e4
change-id: 20261104-sm8150-ice-rfc-0b4b2c035e80

Best regards,
--  
Andrew Gigena <mail@andrewgigena.dev>



^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 1/2] dt-bindings: crypto: ice: Document sm8150 inline crypto engine
  2026-11-04  8:00 [PATCH 0/2] arm64: dts: qcom: sm8150: Add standalone ICE node for UFS Andrew Gigena via B4 Relay
@ 2026-11-04  8:00 ` Andrew Gigena via B4 Relay
  2026-11-04  8:13   ` sashiko-bot
  2026-11-04  8:00 ` [PATCH 2/2] arm64: dts: qcom: sm8150: Use standalone ICE node for UFS Andrew Gigena via B4 Relay
  1 sibling, 1 reply; 5+ messages in thread
From: Andrew Gigena via B4 Relay @ 2026-11-04  8:00 UTC (permalink / raw)
  To: Abel Vesa, Herbert Xu, David S. Miller, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio
  Cc: linux-arm-msm, linux-crypto, devicetree, linux-kernel,
	Andrew Gigena

From: Andrew Gigena <mail@andrewgigena.dev>

Document the compatible used for the inline crypto engine found on
SM8150.

Signed-off-by: Andrew Gigena <mail@andrewgigena.dev>
---
 Documentation/devicetree/bindings/crypto/qcom,inline-crypto-engine.yaml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/crypto/qcom,inline-crypto-engine.yaml b/Documentation/devicetree/bindings/crypto/qcom,inline-crypto-engine.yaml
index 23bf98c2b9fa..1918f18fe8b1 100644
--- a/Documentation/devicetree/bindings/crypto/qcom,inline-crypto-engine.yaml
+++ b/Documentation/devicetree/bindings/crypto/qcom,inline-crypto-engine.yaml
@@ -23,6 +23,7 @@ properties:
           - qcom,sa8775p-inline-crypto-engine
           - qcom,sc7180-inline-crypto-engine
           - qcom,sc7280-inline-crypto-engine
+          - qcom,sm8150-inline-crypto-engine
           - qcom,shikra-inline-crypto-engine
           - qcom,sm8450-inline-crypto-engine
           - qcom,sm8550-inline-crypto-engine

-- 
2.56.0



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 2/2] arm64: dts: qcom: sm8150: Use standalone ICE node for UFS
  2026-11-04  8:00 [PATCH 0/2] arm64: dts: qcom: sm8150: Add standalone ICE node for UFS Andrew Gigena via B4 Relay
  2026-11-04  8:00 ` [PATCH 1/2] dt-bindings: crypto: ice: Document sm8150 inline crypto engine Andrew Gigena via B4 Relay
@ 2026-11-04  8:00 ` Andrew Gigena via B4 Relay
  2026-11-04  8:11   ` sashiko-bot
  1 sibling, 1 reply; 5+ messages in thread
From: Andrew Gigena via B4 Relay @ 2026-11-04  8:00 UTC (permalink / raw)
  To: Abel Vesa, Herbert Xu, David S. Miller, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, Konrad Dybcio
  Cc: linux-arm-msm, linux-crypto, devicetree, linux-kernel,
	Andrew Gigena

From: Andrew Gigena <mail@andrewgigena.dev>

Convert SM8150 UFS to use a standalone ICE node.

Move the ICE register region and clock from the UFS controller node
into a dedicated ICE node. Reference the new node from the UFS
controller using the qcom,ice property.

This brings the SM8150 device tree in line with the standalone ICE
representation used on newer Qualcomm platforms.

Signed-off-by: Andrew Gigena <mail@andrewgigena.dev>
Tested-by: Andrew Gigena <mail@andrewgigena.dev>
---
 arch/arm64/boot/dts/qcom/sm8150.dtsi | 25 ++++++++++++++++---------
 1 file changed, 16 insertions(+), 9 deletions(-)

diff --git a/arch/arm64/boot/dts/qcom/sm8150.dtsi b/arch/arm64/boot/dts/qcom/sm8150.dtsi
index 293fcbacff34..b3d6f3d92395 100644
--- a/arch/arm64/boot/dts/qcom/sm8150.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8150.dtsi
@@ -2071,9 +2071,7 @@ pcie1_phy: phy@1c0e000 {
 		ufs_mem_hc: ufshc@1d84000 {
 			compatible = "qcom,sm8150-ufshc", "qcom,ufshc",
 				     "jedec,ufs-2.0";
-			reg = <0 0x01d84000 0 0x2500>,
-			      <0 0x01d90000 0 0x8000>;
-			reg-names = "std", "ice";
+			reg = <0 0x01d84000 0 0x2500>;
 			interrupts = <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>;
 			phys = <&ufs_mem_phy>;
 			phy-names = "ufsphy";
@@ -2092,8 +2090,7 @@ ufs_mem_hc: ufshc@1d84000 {
 				"ref_clk",
 				"tx_lane0_sync_clk",
 				"rx_lane0_sync_clk",
-				"rx_lane1_sync_clk",
-				"ice_core_clk";
+				"rx_lane1_sync_clk";
 			clocks =
 				<&gcc GCC_UFS_PHY_AXI_CLK>,
 				<&gcc GCC_AGGRE_UFS_PHY_AXI_CLK>,
@@ -2102,8 +2099,7 @@ ufs_mem_hc: ufshc@1d84000 {
 				<&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>;
+				<&gcc GCC_UFS_PHY_RX_SYMBOL_1_CLK>;
 			freq-table-hz =
 				<37500000 300000000>,
 				<0 0>,
@@ -2112,8 +2108,8 @@ ufs_mem_hc: ufshc@1d84000 {
 				<0 0>,
 				<0 0>,
 				<0 0>,
-				<0 0>,
-				<0 300000000>;
+				<0 0>;
+			qcom,ice = <&ice>;
 
 			status = "disabled";
 		};
@@ -2139,6 +2135,17 @@ ufs_mem_phy: phy@1d87000 {
 			status = "disabled";
 		};
 
+		ice: crypto@1d90000 {
+			compatible = "qcom,sm8150-inline-crypto-engine",
+				     "qcom,inline-crypto-engine";
+			reg = <0 0x01d90000 0 0x8000>;
+			clocks = <&gcc GCC_UFS_PHY_ICE_CORE_CLK>,
+				 <&gcc GCC_UFS_PHY_AHB_CLK>;
+			clock-names = "core",
+				      "iface";
+			power-domains = <&gcc UFS_PHY_GDSC>;
+		};
+
 		cryptobam: dma-controller@1dc4000 {
 			compatible = "qcom,bam-v1.7.4", "qcom,bam-v1.7.0";
 			reg = <0 0x01dc4000 0 0x24000>;

-- 
2.56.0



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH 2/2] arm64: dts: qcom: sm8150: Use standalone ICE node for UFS
  2026-11-04  8:00 ` [PATCH 2/2] arm64: dts: qcom: sm8150: Use standalone ICE node for UFS Andrew Gigena via B4 Relay
@ 2026-11-04  8:11   ` sashiko-bot
  0 siblings, 0 replies; 5+ messages in thread
From: sashiko-bot @ 2026-11-04  8:11 UTC (permalink / raw)
  To: Andrew Gigena, Abel Vesa, Herbert Xu, David S. Miller,
	Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson,
	Konrad Dybcio
  Cc: linux-crypto, devicetree

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] arm64: dts: qcom: sm8150: ufs_mem_hc violates qcom,ufs.yaml schema
--

commit 44282b2e2d420ebb8b4be7b6dd11cd5ecade575e
Author: Andrew Gigena <mail@andrewgigena.dev>

arm64: dts: qcom: sm8150: Use standalone ICE node for UFS

This commit converts the SM8150 UFS controller node to use a standalone
Inline Crypto Engine (ICE) node referenced via the qcom,ice property,
moving the ICE register region and clock out of ufs_mem_hc.

> diff --git a/arch/arm64/boot/dts/qcom/sm8150.dtsi b/arch/arm64/boot/dts/qcom/sm8150.dtsi
> index 293fcbacff346..b3d6f3d923950 100644
> --- a/arch/arm64/boot/dts/qcom/sm8150.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sm8150.dtsi
> @@ -2071,9 +2071,7 @@ pcie1_phy: phy@1c0e000 {
>  		ufs_mem_hc: ufshc@1d84000 {
>  			compatible = "qcom,sm8150-ufshc", "qcom,ufshc",
>  				     "jedec,ufs-2.0";
> -			reg = <0 0x01d84000 0 0x2500>,
> -			      <0 0x01d90000 0 0x8000>;
> -			reg-names = "std", "ice";
> +			reg = <0 0x01d84000 0 0x2500>;
>  			interrupts = <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>;
>  			phys = <&ufs_mem_phy>;
>  			phy-names = "ufsphy";
> @@ -2092,8 +2090,7 @@ ufs_mem_hc: ufshc@1d84000 {
>  				"ref_clk",
>  				"tx_lane0_sync_clk",
>  				"rx_lane0_sync_clk",
> -				"rx_lane1_sync_clk",
> -				"ice_core_clk";
> +				"rx_lane1_sync_clk";
>  			clocks =
>  				<&gcc GCC_UFS_PHY_AXI_CLK>,
>  				<&gcc GCC_AGGRE_UFS_PHY_AXI_CLK>,
> @@ -2102,8 +2099,7 @@ ufs_mem_hc: ufshc@1d84000 {
>  				<&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>;
> +				<&gcc GCC_UFS_PHY_RX_SYMBOL_1_CLK>;
>  			freq-table-hz =
>  				<37500000 300000000>,
>  				<0 0>,
> @@ -2112,8 +2108,8 @@ ufs_mem_hc: ufshc@1d84000 {
>  				<0 0>,
>  				<0 0>,
>  				<0 0>,
> -				<0 0>,
> -				<0 300000000>;
> +				<0 0>;
> +			qcom,ice = <&ice>;

[Severity: Low]
Does converting ufs_mem_hc here without updating the devicetree binding
cause dtbs_check failures on SM8150 and SA8155P boards?

In Documentation/devicetree/bindings/ufs/qcom,ufs.yaml, the allOf entry
matching qcom,sm8150-ufshc still requires 9 clocks (including
ice_core_clk), 2 reg entries, and reg-names:

  - 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: ice_core_clk
        reg:
          minItems: 2
        reg-names:
          minItems: 2
      required:
        - reg-names

Meanwhile, the rule for qcom,ice in the same binding requires maxItems: 1
for reg and maxItems: 8 for clocks, which conflicts with the
qcom,sm8150-ufshc constraints above.

Should qcom,sm8150-ufshc be updated in the UFS binding schema (for example,
moved to Documentation/devicetree/bindings/ufs/qcom,sc7180-ufshc.yaml
alongside qcom,sm8250-ufshc and qcom,sm8450-ufshc) before or along with
this change?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261104-sm8150-ice-rfc-v1-0-5737b6c2ecc0@andrewgigena.dev?part=2

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/2] dt-bindings: crypto: ice: Document sm8150 inline crypto engine
  2026-11-04  8:00 ` [PATCH 1/2] dt-bindings: crypto: ice: Document sm8150 inline crypto engine Andrew Gigena via B4 Relay
@ 2026-11-04  8:13   ` sashiko-bot
  0 siblings, 0 replies; 5+ messages in thread
From: sashiko-bot @ 2026-11-04  8:13 UTC (permalink / raw)
  To: Andrew Gigena, Abel Vesa, Herbert Xu, David S. Miller,
	Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson,
	Konrad Dybcio
  Cc: linux-crypto, devicetree

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Medium] dt-bindings: crypto: ice: sm8150 standalone ICE conflicts with qcom,ufs.yaml
- [Low] dt-bindings: crypto: ice: qcom,sm8150-inline-crypto-engine out of sort order
--

commit 8ecc5836840659392f33486ed20f5aa5057a1a4c
Author: Andrew Gigena <mail@andrewgigena.dev>

dt-bindings: crypto: ice: Document sm8150 inline crypto engine

This commit documents the qcom,sm8150-inline-crypto-engine compatible string
in Documentation/devicetree/bindings/crypto/qcom,inline-crypto-engine.yaml.

> diff --git a/Documentation/devicetree/bindings/crypto/qcom,inline-crypto-engine.yaml b/Documentation/devicetree/bindings/crypto/qcom,inline-crypto-engine.yaml
> index 23bf98c2b9fa0..1918f18fe8b10 100644
> --- a/Documentation/devicetree/bindings/crypto/qcom,inline-crypto-engine.yaml
> +++ b/Documentation/devicetree/bindings/crypto/qcom,inline-crypto-engine.yaml
> @@ -23,6 +23,7 @@ properties:
>            - qcom,sa8775p-inline-crypto-engine
>            - qcom,sc7180-inline-crypto-engine
>            - qcom,sc7280-inline-crypto-engine
> +          - qcom,sm8150-inline-crypto-engine

[Severity: Medium]
Does adding a standalone ICE compatible for SM8150 conflict with the existing
qcom,sm8150-ufshc binding in Documentation/devicetree/bindings/ufs/qcom,ufs.yaml?

On SM8150, the inline crypto engine is associated with the UFS controller
(GCC only provides GCC_UFS_PHY_ICE_CORE_CLK, with no SDCC ICE clock in
include/dt-bindings/clock/qcom,gcc-sm8150.h).

In Documentation/devicetree/bindings/ufs/qcom,ufs.yaml, qcom,sm8150-ufshc is
defined as using the legacy embedded ICE representation:

    if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,msm8996-ufshc
              - qcom,sdm845-ufshc
              - qcom,sm6350-ufshc
              - qcom,sm8150-ufshc
    then:
      properties:
        clocks:
          minItems: 9
          maxItems: 9
        clock-names:
          items:
            - const: core_clk
            ...
            - const: ice_core_clk
        reg:
          minItems: 2
        reg-names:
          items:
            - const: std
            - const: ice

In the same qcom,ufs.yaml schema, the conditional rule for nodes using the
standalone ICE binding via qcom,ice requires at most 1 reg entry and 8
clocks, which is mutually exclusive with the qcom,sm8150-ufshc constraints:

    if:
      required:
        - qcom,ice
    then:
      properties:
        clocks:
          maxItems: 8
        clock-names:
          maxItems: 8
        reg:
          maxItems: 1
        reg-names:
          maxItems: 1

When ufshc@1d84000 in arch/arm64/boot/dts/qcom/sm8150.dtsi is converted to a
standalone qcom,sm8150-inline-crypto-engine node referenced via qcom,ice and
the embedded ice register range and ice_core_clk are removed from the UFS
node, won't this fail dtbs_check against qcom,ufs.yaml and break Device Tree
ABI compatibility with existing kernels expecting the embedded ICE registers
and clock on qcom,sm8150-ufshc?

>            - qcom,shikra-inline-crypto-engine

[Severity: Low]
This isn't a bug, but the compatible enum in properties:compatible in
Documentation/devicetree/bindings/crypto/qcom,inline-crypto-engine.yaml is
sorted alphabetically. Should qcom,sm8150-inline-crypto-engine be placed
after qcom,shikra-inline-crypto-engine and before
qcom,sm8450-inline-crypto-engine?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261104-sm8150-ice-rfc-v1-0-5737b6c2ecc0@andrewgigena.dev?part=1

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2026-11-04  8:13 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-04  8:00 [PATCH 0/2] arm64: dts: qcom: sm8150: Add standalone ICE node for UFS Andrew Gigena via B4 Relay
2026-11-04  8:00 ` [PATCH 1/2] dt-bindings: crypto: ice: Document sm8150 inline crypto engine Andrew Gigena via B4 Relay
2026-11-04  8:13   ` sashiko-bot
2026-11-04  8:00 ` [PATCH 2/2] arm64: dts: qcom: sm8150: Use standalone ICE node for UFS Andrew Gigena via B4 Relay
2026-11-04  8:11   ` sashiko-bot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox