Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions Documentation/devicetree/bindings/ufs/spacemit,k3-ufshc.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/ufs/spacemit,k3-ufshc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: SpacemiT K3 SoC UFS Host Controller

maintainers:
- Yixun Lan <dlan@kernel.org>

properties:
compatible:
const: spacemit,k3-ufshc

reg:
maxItems: 1

clocks:
maxItems: 2

clock-names:
items:
- const: aclk
- const: ref_clk

resets:
maxItems: 1

required:
- reg
- clocks
- clock-names
- resets

allOf:
- $ref: ufs-common.yaml

unevaluatedProperties: false

examples:
- |
#include <dt-bindings/clock/spacemit,k3-clocks.h>
#include <dt-bindings/reset/spacemit,k3-resets.h>
ufs@c0e00000 {
compatible = "spacemit,k3-ufshc";
reg = <0xc0e00000 0x40000>;
clocks = <&syscon_apmu CLK_APMU_UFS_ACLK>,
<&syscon_apmu CLK_APMU_UFS_REFCLK>;
clock-names = "aclk", "ref_clk";
resets = <&syscon_apmu RESET_APMU_UFS_ACLK>;
freq-table-hz = <491520000 491520000 19200000 19200000>;
lanes-per-direction = <2>;
};
4 changes: 4 additions & 0 deletions arch/riscv/boot/dts/spacemit/k3-com260-ifx.dts
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,7 @@
stdout-path = "serial0:115200n8";
};
};

&ufshc {
status = "okay";
};
4 changes: 4 additions & 0 deletions arch/riscv/boot/dts/spacemit/k3-pico-itx.dts
Original file line number Diff line number Diff line change
Expand Up @@ -221,3 +221,7 @@
&usb2_phy {
status = "okay";
};

&ufshc {
status = "okay";
};
13 changes: 13 additions & 0 deletions arch/riscv/boot/dts/spacemit/k3.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -1186,5 +1186,18 @@
riscv,num-sources = <512>;
status = "reserved";
};

ufshc: ufshc@c0e00000 {
compatible = "spacemit,k3-ufshc";
reg = <0x0 0xc0e00000 0x0 0x40000>;
clocks = <&syscon_apmu CLK_APMU_UFS_ACLK>,
<&syscon_apmu CLK_APMU_UFS_REFCLK>;
clock-names = "aclk", "ref_clk";
resets = <&syscon_apmu RESET_APMU_UFS_ACLK>;
interrupts = <135 IRQ_TYPE_LEVEL_HIGH>;
freq-table-hz = <491520000 491520000 19200000 19200000>;
lanes-per-direction = <2>;
status = "disabled";
};
};
};
12 changes: 12 additions & 0 deletions drivers/ufs/host/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,18 @@ config SCSI_UFS_VARIABLE_SG_ENTRY_SIZE
bool
default y if SCSI_UFS_EXYNOS && SCSI_UFS_CRYPTO

config SCSI_UFS_SPACEMIT
tristate "SpacemiT UFS controller driver"
depends on SCSI_UFSHCD_PLATFORM && ARCH_SPACEMIT
help
This selects the SpacemiT specific additions to UFSHCD platform driver.
UFS host on SpacemiT needs some vendor specific configuration before
accessing the hardware which includes PHY configuration and vendor
specific registers.

Select this if you have UFS controller on SpacemiT chipset.
If unsure, say N.

config SCSI_UFS_SPRD
tristate "Unisoc specific hooks to UFS controller platform driver"
depends on SCSI_UFSHCD_PLATFORM && (ARCH_SPRD || COMPILE_TEST)
Expand Down
1 change: 1 addition & 0 deletions drivers/ufs/host/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ obj-$(CONFIG_SCSI_UFS_HISI) += ufs-hisi.o
obj-$(CONFIG_SCSI_UFS_MEDIATEK) += ufs-mediatek.o
obj-$(CONFIG_SCSI_UFS_RENESAS) += ufs-renesas.o
obj-$(CONFIG_SCSI_UFS_ROCKCHIP) += ufs-rockchip.o
obj-$(CONFIG_SCSI_UFS_SPACEMIT) += ufs-spacemit.o
obj-$(CONFIG_SCSI_UFS_SPRD) += ufs-sprd.o
obj-$(CONFIG_SCSI_UFS_TI_J721E) += ti-j721e-ufs.o
obj-$(CONFIG_SCSI_UFS_AMD_VERSAL2) += ufs-amd-versal2.o ufshcd-dwc.o
Loading
Loading