mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 23:52:08 +02:00
scsi: ufs: Reuse compose_dev_cmd
Move out some of the dev_cmd initializations so they can be used elsewhere. Reviewed-by: Bart Van Assche <bvanassche@acm.org> Reviewed-by: Bean Huo <beanhuo@micron.com> Signed-off-by: Avri Altman <avri.altman@wdc.com> Link: https://lore.kernel.org/r/20240309081104.5006-4-avri.altman@wdc.com Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
71aabb747d
commit
5b59a68dac
|
|
@ -3061,15 +3061,21 @@ static int ufshcd_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd)
|
|||
return err;
|
||||
}
|
||||
|
||||
static int ufshcd_compose_dev_cmd(struct ufs_hba *hba,
|
||||
struct ufshcd_lrb *lrbp, enum dev_cmd_type cmd_type, int tag)
|
||||
static void ufshcd_setup_dev_cmd(struct ufs_hba *hba, struct ufshcd_lrb *lrbp,
|
||||
enum dev_cmd_type cmd_type, u8 lun, int tag)
|
||||
{
|
||||
lrbp->cmd = NULL;
|
||||
lrbp->task_tag = tag;
|
||||
lrbp->lun = 0; /* device management cmd is not specific to any LUN */
|
||||
lrbp->lun = lun;
|
||||
lrbp->intr_cmd = true; /* No interrupt aggregation */
|
||||
ufshcd_prepare_lrbp_crypto(NULL, lrbp);
|
||||
hba->dev_cmd.type = cmd_type;
|
||||
}
|
||||
|
||||
static int ufshcd_compose_dev_cmd(struct ufs_hba *hba,
|
||||
struct ufshcd_lrb *lrbp, enum dev_cmd_type cmd_type, int tag)
|
||||
{
|
||||
ufshcd_setup_dev_cmd(hba, lrbp, cmd_type, 0, tag);
|
||||
|
||||
return ufshcd_compose_devman_upiu(hba, lrbp);
|
||||
}
|
||||
|
|
@ -7214,20 +7220,14 @@ static int ufshcd_issue_devman_upiu_cmd(struct ufs_hba *hba,
|
|||
enum query_opcode desc_op)
|
||||
{
|
||||
const u32 tag = hba->reserved_slot;
|
||||
struct ufshcd_lrb *lrbp;
|
||||
struct ufshcd_lrb *lrbp = &hba->lrb[tag];
|
||||
int err = 0;
|
||||
u8 upiu_flags;
|
||||
|
||||
/* Protects use of hba->reserved_slot. */
|
||||
lockdep_assert_held(&hba->dev_cmd.lock);
|
||||
|
||||
lrbp = &hba->lrb[tag];
|
||||
lrbp->cmd = NULL;
|
||||
lrbp->task_tag = tag;
|
||||
lrbp->lun = 0;
|
||||
lrbp->intr_cmd = true;
|
||||
ufshcd_prepare_lrbp_crypto(NULL, lrbp);
|
||||
hba->dev_cmd.type = cmd_type;
|
||||
ufshcd_setup_dev_cmd(hba, lrbp, cmd_type, 0, tag);
|
||||
|
||||
if (hba->ufs_version <= ufshci_version(1, 1))
|
||||
lrbp->command_type = UTP_CMD_TYPE_DEV_MANAGE;
|
||||
|
|
@ -7373,7 +7373,7 @@ int ufshcd_advanced_rpmb_req_handler(struct ufs_hba *hba, struct utp_upiu_req *r
|
|||
enum dma_data_direction dir)
|
||||
{
|
||||
const u32 tag = hba->reserved_slot;
|
||||
struct ufshcd_lrb *lrbp;
|
||||
struct ufshcd_lrb *lrbp = &hba->lrb[tag];
|
||||
int err = 0;
|
||||
int result;
|
||||
u8 upiu_flags;
|
||||
|
|
@ -7383,14 +7383,7 @@ int ufshcd_advanced_rpmb_req_handler(struct ufs_hba *hba, struct utp_upiu_req *r
|
|||
/* Protects use of hba->reserved_slot. */
|
||||
ufshcd_dev_man_lock(hba);
|
||||
|
||||
lrbp = &hba->lrb[tag];
|
||||
lrbp->cmd = NULL;
|
||||
lrbp->task_tag = tag;
|
||||
lrbp->lun = UFS_UPIU_RPMB_WLUN;
|
||||
|
||||
lrbp->intr_cmd = true;
|
||||
ufshcd_prepare_lrbp_crypto(NULL, lrbp);
|
||||
hba->dev_cmd.type = DEV_CMD_TYPE_RPMB;
|
||||
ufshcd_setup_dev_cmd(hba, lrbp, DEV_CMD_TYPE_RPMB, UFS_UPIU_RPMB_WLUN, tag);
|
||||
|
||||
/* Advanced RPMB starts from UFS 4.0, so its command type is UTP_CMD_TYPE_UFS_STORAGE */
|
||||
lrbp->command_type = UTP_CMD_TYPE_UFS_STORAGE;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user