[PATCH 5/5] ufs: doc/README.ufs
Raz Ben Yehuda
raz.benyehuda at mobileye.com
Wed Jun 3 14:45:39 CEST 2026
Documention of the ufs tool.
Signed-off-by: Raz Ben Yehuda <raz.benyehuda at mobileye.com>
---
doc/README.ufs | 217 +++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 217 insertions(+)
create mode 100644 doc/README.ufs
diff --git a/doc/README.ufs b/doc/README.ufs
new file mode 100644
index 00000000000..bd9f5cd2856
--- /dev/null
+++ b/doc/README.ufs
@@ -0,0 +1,217 @@
+ ufs_tool
+ **********************
+ The UFS tool provides utilities for querying, displaying, and modifying
+UFS device configuration and descriptor information.
+
+Features:
+- Query and display Device, Geometry, Unit, Configuration, and Power
+ Descriptors
+- Display LUN configuration and calculated capacities
+- Modify LUN, Configuration, and Device Descriptor fields
+- Configure WriteBooster-related parameters
+- Query common UFS runtime flags
+- Commit configuration changes or clear all LUN configurations
+- Decode and format descriptor contents for easier debugging
+- Clear
+- Provisioning
+
+The UFS tool header definitions are based on the JEDEC Standard JESD220E:
+Universal Flash Storage (UFS) Version 3.1.
+
+--------------------------------
+Usage
+--------------------------------
+
+Query descriptors:
+--------------------------------
+
+ ufs query [lun] [idn]
+
+Descriptor IDs:
+--------------------------------
+
+ 0x00 Device Descriptor
+ 0x01 Configuration Descriptor
+ 0x02 Unit Descriptor
+ 0x07 Geometry Descriptor
+ 0x08 Power Descriptor
+
+Configure a Logical Unit (LUN):
+--------------------------------
+
+ ufs set_lun <lun> <parameter> <value>
+
+Supported parameters:
+--------------------------------
+
+ lu_enable
+ boot_lun_id
+ lu_write_protect
+ memory_type
+ data_reliability
+ num_allocunits
+ logical_block_size
+ provisioning_type
+ context_capabilities
+ lu_num_write_booster_buffer_allocunits
+
+Modify Device Descriptor fields:
+--------------------------------
+
+ ufs set_dev_desc <parameter> <value>
+
+Supported parameters:
+----------------------
+
+ descriptor_idn
+ device
+ device_class
+ device_sub_class
+ number_lu
+ boot_enable
+ descr_access_en
+ init_power_mode
+ high_priority_lun
+ secure_removal_type
+ initactive_icc_level
+ queue_depth
+ write_booster_buffer_preserve_user_space_en
+ write_booster_buffer_type
+ spec_version
+ manufacturer_id
+ periodic_rtc_update
+ device_version
+ psa_max_data_size
+ extended_ufs_features_support
+ num_shared_write_booster_buffer_allocunits
+
+Modify Configuration Descriptor fields:
+----------------------------------------
+
+ ufs set_cfg_desc <parameter> <value>
+
+Supported parameters:
+---------------------
+ length
+ descriptor_idn
+ conf_desc_continue
+ boot_enable
+ descr_access_en
+ initpower_mode
+ high_priority_lun
+ secure_removal_type
+ init_active_icc_level
+ periodic_rtc_update
+ reserved_HPB
+ rpmb_region_enable
+ rpmb_region1_size
+ rpmb_region2_size
+ rpmb_region3_size
+ write_booster_buffer_preserve_user_space_en
+ write_booster_buffer_type
+ num_shared_write_booster_buffer_allocunits
+
+Query UFS flags:
+----------------------------
+ ufs getflag <flag_name>
+
+Supported flags:
+-----------------------------
+ deviceinit
+ permanent_wpe
+ pwr_on_wpe
+ bkops_en
+ life_span_mode
+ purge_enable
+ fphy_resource_removal
+ busy_rtc
+ permanently_disable_fw_update
+ write_booster_en
+ wb_buf_flush_en
+ wb_buf_flush_h8
+
+Examples
+------------------------------
+
+Create LUN 4:
+ ufs query 1 1
+ ufs set_lun 4 num_allocunits <size_in_alloc_units>
+ ufs commit
+ scsi scan
+
+Update WriteBooster configuration:
+
+ ufs query 1 1
+ ufs set_cfg_desc num_shared_write_booster_buffer_allocunits 100000
+ ufs set_cfg_desc write_booster_buffer_type 1
+ ufs commit
+
+Clear all LUN configurations:
+-------------------------------
+
+ ufs clearall
+
+This command clears luns, and commits.
+
+Provisioning
+------------
+
+To simplify UFS provisioning, the tool displays the memory address and
+size of the Configuration Descriptor (IDN 0x01). This allows the
+descriptor to be exported from one system and imported on another.
+
+Provisioning workflow:
+
+Source system
+-------------
+
+1. Display the Configuration Descriptor:
+
+ ufs query 1 1
+
+ The output includes the Configuration Descriptor address and size.
+
+ Example:
+
+ Config Descriptor: (0x00000008ffffc610)
+ Length : 0x0e6
+ DescriptorIdn : 0x01
+ ConfDescContinue : 0x00
+ BootEnable : 0x01
+ ...
+
+2. Save the Configuration Descriptor to a file:
+
+ tftpput <cfg_desc_addr> <size> <filename>
+
+ Example:
+
+ tftpput 0x8ffffc610 0xe6 luns.bin
+
+ This exports the current UFS configuration, including LUN settings.
+
+Target system
+-------------
+
+1. Load the currect Configuration descriptor.
+ ufs query 1 1
+ Config Descriptor: (0x00000008ffffce00)
+ Length : 0x0e6
+ DescriptorIdn : 0x01
+ ConfDescContinue : 0x00
+ BootEnable : 0x01
+
+
+2. Load the configuration file onto Configuration Descriptor using XMODEM or TFTP.
+ Examples:
+
+ loadx 0x8ffffce00
+ or
+ tftpget 0x8ffffce00 luns.bin
+
+3. Commit the configuration to the UFS device:
+
+ ufs commit
+
+ The imported Configuration Descriptor is written to the device and
+ becomes active after the commit operation completes.
--
2.43.0
More information about the U-Boot
mailing list