tree: 24fb6835f7bcfea44fcf10ff98e2abb93e7678d6 [path history] [tgz]
  1. Android.bp
  2. hmac_sha2.c
  3. hmac_sha2.h
  4. ioctl.h
  5. Makefile.disable
  6. mtk_ioctl.c
  7. options.c
  8. options.h
  9. README.md
  10. scsi_bsg_util.c
  11. scsi_bsg_util.h
  12. sha2.c
  13. sha2.h
  14. ufs.c
  15. ufs.h
  16. ufs_cmds.c
  17. ufs_cmds.h
  18. ufs_err_hist.c
  19. ufs_err_hist.h
  20. ufs_ffu.c
  21. ufs_ffu.h
  22. ufs_hmr.c
  23. ufs_hmr.h
  24. ufs_rpmb.c
  25. ufs_rpmb.h
  26. ufs_vendor.c
  27. ufs_vendor.h
  28. unipro.c
  29. unipro.h
libmtk_bsg/README.md

UFS Tool ver 1.9

Description:

a) Read/Write device flags, attributes & descriptors by using the BSG infrastructure in linux kernel (applied to 5.1 rc1)
Due to the issues in UFS BSG driver, the following patch have to be applied:
https://lore.kernel.org/patchwork/patch/1076796/
https://patchwork.kernel.org/patch/11011891/
b) Get/Set UNIPRO attributes
c) HMR - Host Manual Refresh functionality
The following options may work with the SCSI BSG device
using sg v4 structure (e.g. /dev/0:0:0:0)
or via a SCSI Generic interface using sg v3 struct (e.g. /dev/block/sda)
d) Error History
e) FFU - Field Firmware Update
f) Send Vendor commands based on SCSI WRITE/READ Buffer commands
g) RPMB functionality

The tool is aligned to the UFS 3.1 spec.

Build:

Set CROSS_COMPILE variable(e.g.):

export CROSS_COMPILE=/XXX/aarch64-linux-gnu-

Build:

"make"

Clean:

"make clean"

Usage

Copy the tool into a directory on the device (e.g. /data/local/tmp).
Run the tool without arguments or with -h/--help options in order to list the supported features:
E.g. Run:
./ufs-utils --help
Output: ufs-utils help|--help|-h Show the help.

    ufs-utils -v
            Show the version.

    ufs-utils <desc | attr | fl | err_hist | uic | ffu | vendor | rpmb | hmr> --help|-h
            Show detailed help for a command

Run the tool's help for the ufs configuration features in order to
get full information related to the feature, all options and the
examples. E.g.: getting help for ufs flags Run: ./ufs-utils fl --help
Output: Flags command usage:

    ufs-utils fl [-t] <flag idn> [-a|-r|-o|-e] [-p] <device_path> 

    -t       Flags type idn
             Available flags and its access, based on UFS ver 3.0 :
                     0  : Reserved
                     1  : fDeviceInit                | Read | SetOnly
                     2  : fPermanentWPEn             | Read | WriteOnce
                     3  : fPowerOnWPEn               | Read | ResetOnPower
                     4  : fBackgroundOpsEn           | Read | Volatile
                     5  : fDeviceLifeSpanModeEn      | Read | Volatile
                     6  : fPurgeEnable               | WriteOnly | Volatile
                     7  : fRefreshEnable             | WriteOnly | Volatile
                     8  : fPhyResourceRemoval        | Read | Persistent
                     9  : fBusyRTC                   | ReadOnly
                     10 : Reserved
                     11 : fPermanentlyDisableFw      | Read | WriteOnce

    -a       read and print all readable flags for the device

    -r       read operation (default), for readable flag(s)

    -e       set flag operation

    -c       clear/reset flag operation

    -o       toggle flag operation

    -p       path to ufs bsg device

    Example - Read the bkops operation flag
            ufs-utils fl -t 4 -p /dev/ufs-bsg

Authors

signed-off-by:Arthur Simchaev (arthur.simchaev@wdc.com) signed-off-by:Avri Altman (avri.altman@wdc.com)