This series of patches is to simplify UFS driver initialization flow and add a new parameter max_lu_supported used to specify how many LUs supported by the UFS device. This series of patches being tested on my two platforms, Qualcomm SOC based and Hisilicon SOC based platforms. v1-v2: 1. Split ufshcd_probe_hba() based on its called flow 2. Delete two unnecessary functions 3. Add a fixup patch v2-v3: 1. Combine patches 7/9 and 8/9 of v2 to patch 7/8 of v3 2. Change patches 1/8 and 5/8 subject 3. Change the name of two functions in patch 7/8 v3-v4: 1. Change patch 4/8 subject 2. Change new added function name from ufshcd_init_params() to ufshcd_device_params_init() 3. Change new added function name from ufshcd_init_device_geo_params() to ufshcd_device_geo_params_init() 4. Fix two compilation errors in patch 2/8: 1) Missed an operator "&" in function ufs_mtk_apply_dev_quirks() when getting address of the dev_info. 2) Incorrectly changed hba->dev_quirks to dev_info->dev_quirks in function ufs_qcom_apply_dev_quirks(). Bean Huo (8): scsi: ufs: Fix ufshcd_probe_hba() reture value in case ufshcd_scsi_add_wlus() fails scsi: ufs: Delete struct ufs_dev_desc scsi: ufs: Split ufshcd_probe_hba() based on its called flow scsi: ufs: Move ufshcd_get_max_pwr_mode() to ufshcd_device_params_init() scsi: ufs: Inline two functions into their callers scsi: ufs: Delete is_init_prefetch from struct ufs_hba scsi: ufs: Add max_lu_supported in struct ufs_dev_info scsi: ufs: Use UFS device indicated maximum LU number drivers/scsi/ufs/ufs-mediatek.c | 7 +- drivers/scsi/ufs/ufs-qcom.c | 3 +- drivers/scsi/ufs/ufs-sysfs.c | 2 +- drivers/scsi/ufs/ufs.h | 25 ++- drivers/scsi/ufs/ufs_quirks.h | 9 +- drivers/scsi/ufs/ufshcd.c | 276 +++++++++++++++++++------------- drivers/scsi/ufs/ufshcd.h | 9 +- 7 files changed, 194 insertions(+), 137 deletions(-) -- 2.17.1