mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 02:50:49 +09:00
UPSTREAM: scsi: ufs: ufshpb: Merge ufshpb_reset() and ufshpb_reset_host()
There is no functional change in this patch, just merge ufshpb_reset() and
ufshpb_reset_host() into one function ufshpb_toggle_state().
Link: https://lore.kernel.org/r/20220505134707.35929-2-huobean@gmail.com
Reviewed-by: Keoseong Park <keosung.park@samsung.com>
Signed-off-by: Bean Huo <beanhuo@micron.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 234653003
(cherry picked from commit facc239c87)
Change-Id: I88837545b7af1664c6accbec957b8dcaf4d23a3b
Signed-off-by: Bart Van Assche <bvanassche@google.com>
This commit is contained in:
committed by
Bart Van Assche
parent
92cf8c285a
commit
50460bbd71
@@ -7298,7 +7298,7 @@ static int ufshcd_host_reset_and_restore(struct ufs_hba *hba)
|
||||
* Stop the host controller and complete the requests
|
||||
* cleared by h/w
|
||||
*/
|
||||
ufshpb_reset_host(hba);
|
||||
ufshpb_toggle_state(hba, HPB_PRESENT, HPB_RESET);
|
||||
ufshcd_hba_stop(hba);
|
||||
hba->silence_err_logs = true;
|
||||
ufshcd_complete_requests(hba);
|
||||
@@ -8265,7 +8265,7 @@ static int ufshcd_probe_hba(struct ufs_hba *hba, bool init_dev_params)
|
||||
/* Enable Auto-Hibernate if configured */
|
||||
ufshcd_auto_hibern8_enable(hba);
|
||||
|
||||
ufshpb_reset(hba);
|
||||
ufshpb_toggle_state(hba, HPB_RESET, HPB_PRESENT);
|
||||
out:
|
||||
spin_lock_irqsave(hba->host->host_lock, flags);
|
||||
if (ret)
|
||||
|
||||
@@ -2272,38 +2272,28 @@ out:
|
||||
return flag_res;
|
||||
}
|
||||
|
||||
void ufshpb_reset(struct ufs_hba *hba)
|
||||
/**
|
||||
* ufshpb_toggle_state - switch HPB state of all LUs
|
||||
* @hba: per-adapter instance
|
||||
* @src: expected current HPB state
|
||||
* @dest: target HPB state to switch to
|
||||
*/
|
||||
void ufshpb_toggle_state(struct ufs_hba *hba, enum UFSHPB_STATE src, enum UFSHPB_STATE dest)
|
||||
{
|
||||
struct ufshpb_lu *hpb;
|
||||
struct scsi_device *sdev;
|
||||
|
||||
shost_for_each_device(sdev, hba->host) {
|
||||
hpb = ufshpb_get_hpb_data(sdev);
|
||||
if (!hpb)
|
||||
|
||||
if (!hpb || ufshpb_get_state(hpb) != src)
|
||||
continue;
|
||||
ufshpb_set_state(hpb, dest);
|
||||
|
||||
if (ufshpb_get_state(hpb) != HPB_RESET)
|
||||
continue;
|
||||
|
||||
ufshpb_set_state(hpb, HPB_PRESENT);
|
||||
}
|
||||
}
|
||||
|
||||
void ufshpb_reset_host(struct ufs_hba *hba)
|
||||
{
|
||||
struct ufshpb_lu *hpb;
|
||||
struct scsi_device *sdev;
|
||||
|
||||
shost_for_each_device(sdev, hba->host) {
|
||||
hpb = ufshpb_get_hpb_data(sdev);
|
||||
if (!hpb)
|
||||
continue;
|
||||
|
||||
if (ufshpb_get_state(hpb) != HPB_PRESENT)
|
||||
continue;
|
||||
ufshpb_set_state(hpb, HPB_RESET);
|
||||
ufshpb_cancel_jobs(hpb);
|
||||
ufshpb_discard_rsp_lists(hpb);
|
||||
if (dest == HPB_RESET) {
|
||||
ufshpb_cancel_jobs(hpb);
|
||||
ufshpb_discard_rsp_lists(hpb);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -288,8 +288,7 @@ static int ufshpb_prep(struct ufs_hba *hba, struct ufshcd_lrb *lrbp) { return 0;
|
||||
static void ufshpb_rsp_upiu(struct ufs_hba *hba, struct ufshcd_lrb *lrbp) {}
|
||||
static void ufshpb_resume(struct ufs_hba *hba) {}
|
||||
static void ufshpb_suspend(struct ufs_hba *hba) {}
|
||||
static void ufshpb_reset(struct ufs_hba *hba) {}
|
||||
static void ufshpb_reset_host(struct ufs_hba *hba) {}
|
||||
static void ufshpb_toggle_state(struct ufs_hba *hba, enum UFSHPB_STATE src, enum UFSHPB_STATE dest) {}
|
||||
static void ufshpb_init(struct ufs_hba *hba) {}
|
||||
static void ufshpb_init_hpb_lu(struct ufs_hba *hba, struct scsi_device *sdev) {}
|
||||
static void ufshpb_destroy_lu(struct ufs_hba *hba, struct scsi_device *sdev) {}
|
||||
@@ -303,8 +302,7 @@ int ufshpb_prep(struct ufs_hba *hba, struct ufshcd_lrb *lrbp);
|
||||
void ufshpb_rsp_upiu(struct ufs_hba *hba, struct ufshcd_lrb *lrbp);
|
||||
void ufshpb_resume(struct ufs_hba *hba);
|
||||
void ufshpb_suspend(struct ufs_hba *hba);
|
||||
void ufshpb_reset(struct ufs_hba *hba);
|
||||
void ufshpb_reset_host(struct ufs_hba *hba);
|
||||
void ufshpb_toggle_state(struct ufs_hba *hba, enum UFSHPB_STATE src, enum UFSHPB_STATE dest);
|
||||
void ufshpb_init(struct ufs_hba *hba);
|
||||
void ufshpb_init_hpb_lu(struct ufs_hba *hba, struct scsi_device *sdev);
|
||||
void ufshpb_destroy_lu(struct ufs_hba *hba, struct scsi_device *sdev);
|
||||
|
||||
Reference in New Issue
Block a user