Message ID | 20210709065711.25195-3-chanho61.park@samsung.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [01/15] scsi: ufs: add quirk to handle broken UIC command | expand |
Hi Chanho > -----Original Message----- > From: Chanho Park <chanho61.park@samsung.com> > Sent: 09 July 2021 12:27 > To: Alim Akhtar <alim.akhtar@samsung.com>; James E . J . Bottomley > <jejb@linux.ibm.com>; Martin K . Petersen <martin.petersen@oracle.com> > Cc: Can Guo <cang@codeaurora.org>; Jaegeuk Kim <jaegeuk@kernel.org>; > Kiwoong Kim <kwmad.kim@samsung.com>; Avri Altman > <avri.altman@wdc.com>; Adrian Hunter <adrian.hunter@intel.com>; > Christoph Hellwig <hch@infradead.org>; Bart Van Assche > <bvanassche@acm.org>; jongmin jeong <jjmin.jeong@samsung.com>; > Gyunghoon Kwon <goodjob.kwon@samsung.com>; linux-samsung- > soc@vger.kernel.org; linux-scsi@vger.kernel.org; Chanho Park > <chanho61.park@samsung.com> > Subject: [PATCH 02/15] scsi: ufs: add quirk to enable host controller without > interface configuration > > 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 interface configuration part that cannot be performed in > the virtual host. > > Signed-off-by: jongmin jeong <jjmin.jeong@samsung.com> > Signed-off-by: Chanho Park <chanho61.park@samsung.com> > --- > 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 > 9702086e9860..3451b335f2b4 100644 > --- a/drivers/scsi/ufs/ufshcd.c > +++ b/drivers/scsi/ufs/ufshcd.c > @@ -7988,6 +7988,9 @@ static int ufshcd_probe_hba(struct ufs_hba *hba, > bool async) > if (ret) > goto out; > > + if (hba->quirks & > UFSHCD_QUIRK_SKIP_INTERFACE_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 > e67b1fcfe1a2..fe523cbd68dd 100644 > --- a/drivers/scsi/ufs/ufshcd.h > +++ b/drivers/scsi/ufs/ufshcd.h > @@ -573,6 +573,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 interface configuration. > + */ > + UFSHCD_QUIRK_SKIP_INTERFACE_CONFIGURATION = 1 << 16, May be UFSHCD_QUIRK_SKIP_PH_CONFIGURATION > }; > > enum ufshcd_caps { > -- > 2.32.0
> > + /* > > + * This quirk needs to be enabled if the host controller cannot > > + * support interface configuration. > > + */ > > + UFSHCD_QUIRK_SKIP_INTERFACE_CONFIGURATION = 1 << 16, > May be UFSHCD_QUIRK_SKIP_PH_CONFIGURATION This can explain more specific meaning. I'll apply your review v2 patchset. Thanks. Best Regards, Chanho Park
diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index 9702086e9860..3451b335f2b4 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -7988,6 +7988,9 @@ static int ufshcd_probe_hba(struct ufs_hba *hba, bool async) if (ret) goto out; + if (hba->quirks & UFSHCD_QUIRK_SKIP_INTERFACE_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 e67b1fcfe1a2..fe523cbd68dd 100644 --- a/drivers/scsi/ufs/ufshcd.h +++ b/drivers/scsi/ufs/ufshcd.h @@ -573,6 +573,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 interface configuration. + */ + UFSHCD_QUIRK_SKIP_INTERFACE_CONFIGURATION = 1 << 16, }; enum ufshcd_caps {