| Storage Type | Versions |
|---|---|
| Universal Flash Storage (UFS) | v2.1, v2.2, v3.1 |
| Embedded Multi-Media Card (eMMC) | v5.1 |
| Non-Volatile Memory Express (NVMe) | v1.3 |
| Secure Digital (SD) Card | v3.0 |
UFS Storage
Features
| Feature | Description |
|---|---|
| Lanes | 2 lanes supported |
| Gear | HS Gear 1, 2, 3, and 4 |
| Low-Power Mode | Link hibernate and device sleep |
| Hot-Plug | Not supported (embedded only) |
Kernel Configuration
| Configuration | Default | Description |
|---|---|---|
CONFIG_UFS_FAULT_INJECTION | No | Injects failure commands for debugging |
CONFIG_SCSI_UFSHCD | Yes | UFS host control driver |
CONFIG_SCSI_UFSHCD_PLATFORM | Yes | UFS controller from platform bus |
CONFIG_SCSI_UFS_QCOM | Yes | Qualcomm-specific PHY and vendor registers |
CONFIG_PHY_QCOM_QMP | Yes | UFS QMP PHY driver |
CONFIG_SCSI_UFS_BSG | Yes | UFS BSG device node |
CONFIG_SCSI_UFS_CRYPTO | Yes | UFS crypto engine |
Power Management States
Auto-Hibern8 (AH8) — Transitions PHY link to Hibernate after 150 ms of idle time (adjustable).Device Parameters
| Parameter | Subnode | Value | Description |
|---|---|---|---|
init_speed_params | EnableHighSpeed | 1 | Enables high speed mode |
| NumGears | 4 | Maximum gear (3 for UFS 2.x, 4 for UFS 3.1) | |
| NumLanes | 2 | Number of lanes | |
| Rate | 2 | 1=Rate A, 2=Rate B | |
perf_speed_params | EnableHighSpeed | 1 | High speed in perf mode |
| NumGears | 4 | Maximum gear in perf mode | |
| NumLanes | 2 | Lanes in perf mode | |
| Rate | 2 | Series in perf mode | |
timeout_values | fDeviceInitTimeout | 2500000 μs | Device init timeout |
| UTRDPollTimeout | 30000000 μs | UTRD timeout | |
BatteryThresholdMv | — | 3600 | Battery threshold (mV) to move to Gear 1 |
LinkStartupRetryCount | — | 5 | Link startup retry count |
RefClock | — | 19200000 | Reference clock (19.2 MHz) |
UFS Provisioning
UFS provisioning creates Logical Unit Numbers (LUNs) on a new UFS device. Device Descriptor Parameters:| Parameter | Description |
|---|---|
bNumberLU | Number of Logical Units |
bBootEnable | 00h: Boot disabled, 01h: Boot enabled |
bConfigDescrLock | 0h: Unlocked, 1h: Locked (prevents reprovisioning) |
| Parameter | Description |
|---|---|
LUNum | Logical Unit Number |
bLUEnable | 00h: Disabled, 01h: Enabled |
bBootLunID | 00h: Not bootable, 01h: Boot LU A, 02h: Boot LU B |
size_in_kb | LUN size in KB |
bMemoryType | 00h: Normal, 01h: System code, 02h: Non-Persistent |
bProvisioningType | 00h: Thin provisioning disabled, 02h: Enabled (TPRZ=0) |
- LUN0 — Linux data and filesystem images
- LUN1 & LUN2 — Boot WLUN (0xB0) alternates for fail-safe XBL backup
- LUN4 — Rest of boot chain
- LUN6 & LUN7 — Unused by default
Architecture Diagrams






eMMC Storage
Features
| Feature | Description |
|---|---|
| Speed | DDR50, HS200, HS400, HS400 Enhanced |
| Sleep Mode | Clock gating and auto suspend |
| Command Queuing | Multiple simultaneous commands |
Device Tree Configuration
Add the following to the&sdhc_1 node in the SoC-specific DTSI file:
Power Management
- Runtime Suspend — After 50 ms of inactivity; always enabled
- System Suspend — Follows system suspend/resume events; always enabled
SD Card Storage
Features
| Feature | Description |
|---|---|
| Bus Width | 4-bit mode |
| Speed | SDR50, SDR104, DDR50 |
| Hot-Plug | Supported |
Kernel Configuration
| Configuration | Default | Description |
|---|---|---|
CONFIG_MMC | Yes | MMC driver |
CONFIG_MMC_SDHCI | Yes | SDHCI driver |
CONFIG_MMC_CQHCI | Yes | Command Queue Host Control Interface |
CONFIG_MMC_SDHCI_MSM | Yes | MSM SDHCI driver |
CONFIG_MMC_BLOCK | Yes | MMC block driver |
CONFIG_MMC_CRYPTO | Yes | MMC Crypto Engine |
Power Management
- Runtime Suspend — After 50 ms of inactivity; always enabled
- System Suspend — Follows system suspend/resume events; always enabled
NVMe Storage
| Feature | Description |
|---|---|
| Lanes | 4 lanes over PCIe port (PCIe1) |
| Interface | High-speed serial |
| Protocol | Optimized for NAND flash and next-gen SSDs |
Configuration Guide
Mount File Systems
- UFS / eMMC
- SD Card
- NVMe
Power Management Control
Troubleshooting


Command Pending in Device
Command Pending in Device
Symptoms:Resolution: Contact UFS device vendor; check device compatibility and power supply stability.
No Response from Device
No Response from Device
Symptoms:Resolution: Check physical connections, verify power rails, check PHY initialization.
Physical Adapter / Data Link Error
Physical Adapter / Data Link Error
Symptoms:Diagnosis:Resolution: Indicates poor signal quality. Check PCB layout, signal integrity, and PHY settings. Contact Qualcomm support for PHY tuning.
High Power Consumption in Active State
High Power Consumption in Active State
Diagnosis:Resolution: Enable clock scaling if disabled; disable WriteBooster if not needed.
High Power Consumption in Sleep State
High Power Consumption in Sleep State
Diagnosis:Resolution: Adjust PM level; disable HPB/WriteBooster if causing issues; verify VCC/VCCQ/VCCQ2 timing.
Unhandled SMMU Fault
Unhandled SMMU Fault
Symptoms:Resolution: In the to:
ufshc_mem node in the SoC DTSI file, change:Command Reference
UFS Commands
| Purpose | Command |
|---|---|
| Check PA/DL error count | cat /sys/kernel/debug/ufshcd/1d84000.ufs/stats |
| Read current clock frequency | cat /sys/devices/platform/soc@0/1d84000.ufs/devfreq/1d84000.ufs/cur_freq |
| Read device state (active/sleep) | cat /sys/devices/platform/soc@0/1d84000.ufs/power_info/dev_pm |
| Read gear information | cat /sys/devices/platform/soc@0/1d84000.ufs/power_info/gear |
| Read link state (ACTIVE/HIBERN8) | cat /sys/devices/platform/soc@0/1d84000.ufs/power_info/link_state |
| Read runtime status | cat /sys/devices/platform/soc@0/1d84000.ufs/power/runtime_status |
| Read RPM/SPM level | cat /sys/devices/platform/soc@0/1d84000.ufs/rpm_lvl |
SD Card Commands
| Purpose | Command |
|---|---|
| Read error stats | cat /sys/kernel/debug/mmc1/err_stats |
| Check current clock | cat /sys/kernel/debug/mmc1/clock |
| Read runtime status | cat /sys/devices/platform/soc@0/8804000.mmc/power/runtime_status |
NVMe Commands
| Purpose | Command |
|---|---|
| View device model | cat /sys/class/nvme/nvme0/model |
| View firmware version | cat /sys/class/nvme/nvme0/firmware_rev |
| View namespace size | cat /sys/class/nvme/nvme0/nvme0n1/size |
eMMC Commands
| Purpose | Command |
|---|---|
| Error stats | cat /sys/kernel/debug/mmc0/err_stats |
| Current clock | cat /sys/kernel/debug/mmc0/clock |
| Runtime status | cat /sys/devices/platform/soc@0/7c4000/power/runtime_status |
For eMMC commands, replace the address with the SoC-specific value: IQ-615 and IQ-9075 use
7c4000; IQ-8275 uses 87c4000.
