Message ID | 20211007080934.108804-3-chanho61.park@samsung.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [v4,01/16] scsi: ufs: add quirk to handle broken UIC command | expand |
> > From: jongmin jeong <jjmin.jeong@samsung.com> > > samsung ExynosAuto SoC has two types of host controller interface to support > the virtualization of UFS Device. > One is the physical host(PH) that the same as conventaional UFSHCI, and the > other is the virtual host(VH) that support data transfer function only. > > In this structure, the virtual host does not support like device management. > This patch skips the physical host interface configuration part that cannot be > performed in the virtual host. > > Suggested-by: Alim Akhtar <alim.akhtar@samsung.com> > Cc: James E.J. Bottomley <jejb@linux.ibm.com> > Cc: Martin K. Petersen <martin.petersen@oracle.com> > Cc: Bart Van Assche <bvanassche@acm.org> > Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com> > Signed-off-by: jongmin jeong <jjmin.jeong@samsung.com> > Signed-off-by: Chanho Park <chanho61.park@samsung.com> You forgot to set this quirk / opt for ufs-samsung. Thanks, Avri > --- > drivers/scsi/ufs/ufshcd.c | 3 +++ > drivers/scsi/ufs/ufshcd.h | 6 ++++++ > 2 files changed, 9 insertions(+) > > diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index > 7cf8e688aec8..aec18ce203b9 100644 > --- a/drivers/scsi/ufs/ufshcd.c > +++ b/drivers/scsi/ufs/ufshcd.c > @@ -8053,6 +8053,9 @@ static int ufshcd_probe_hba(struct ufs_hba *hba, > bool init_dev_params) > if (ret) > goto out; > > + if (hba->quirks & UFSHCD_QUIRK_SKIP_PH_CONFIGURATION) > + goto out; > + > /* Debug counters initialization */ > ufshcd_clear_dbg_ufs_stats(hba); > > diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h index > 5d485d65591f..aceaedcc1558 100644 > --- a/drivers/scsi/ufs/ufshcd.h > +++ b/drivers/scsi/ufs/ufshcd.h > @@ -594,6 +594,12 @@ enum ufshcd_quirks { > * support UIC command > */ > UFSHCD_QUIRK_BROKEN_UIC_CMD = 1 << 15, > + > + /* > + * This quirk needs to be enabled if the host controller cannot > + * support physical host configuration. > + */ > + UFSHCD_QUIRK_SKIP_PH_CONFIGURATION = 1 << 16, > }; > > enum ufshcd_caps { > -- > 2.33.0
diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index 7cf8e688aec8..aec18ce203b9 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -8053,6 +8053,9 @@ static int ufshcd_probe_hba(struct ufs_hba *hba, bool init_dev_params) if (ret) goto out; + if (hba->quirks & UFSHCD_QUIRK_SKIP_PH_CONFIGURATION) + goto out; + /* Debug counters initialization */ ufshcd_clear_dbg_ufs_stats(hba); diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h index 5d485d65591f..aceaedcc1558 100644 --- a/drivers/scsi/ufs/ufshcd.h +++ b/drivers/scsi/ufs/ufshcd.h @@ -594,6 +594,12 @@ enum ufshcd_quirks { * support UIC command */ UFSHCD_QUIRK_BROKEN_UIC_CMD = 1 << 15, + + /* + * This quirk needs to be enabled if the host controller cannot + * support physical host configuration. + */ + UFSHCD_QUIRK_SKIP_PH_CONFIGURATION = 1 << 16, }; enum ufshcd_caps {