Message ID | 20210917065436.145629-11-chanho61.park@samsung.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [v3,01/17] scsi: ufs: add quirk to handle broken UIC command | expand |
>-----Original Message----- >From: Chanho Park [mailto:chanho61.park@samsung.com] >Sent: Friday, September 17, 2021 12:24 PM >To: Alim Akhtar <alim.akhtar@samsung.com>; Avri Altman ><avri.altman@wdc.com>; James E . J . Bottomley <jejb@linux.ibm.com>; Martin >K . Petersen <martin.petersen@oracle.com>; Krzysztof Kozlowski ><krzysztof.kozlowski@canonical.com> >Cc: Bean Huo <beanhuo@micron.com>; Bart Van Assche ><bvanassche@acm.org>; Adrian Hunter <adrian.hunter@intel.com>; Christoph >Hellwig <hch@infradead.org>; Can Guo <cang@codeaurora.org>; Jaegeuk Kim ><jaegeuk@kernel.org>; Gyunghoon Kwon <goodjob.kwon@samsung.com>; >linux-samsung-soc@vger.kernel.org; linux-scsi@vger.kernel.org; Chanho Park ><chanho61.park@samsung.com>; Kiwoong Kim <kwmad.kim@samsung.com> >Subject: [PATCH v3 10/17] scsi: ufs: ufs-exynos: support custom version of >ufs_hba_variant_ops > >By default, ufs_hba_exynos_ops will be used but this patch supports to use >custom version of ufs_hba_variant_ops because some variants of exynos-ufs will >use only few callbacks. > >Cc: Alim Akhtar <alim.akhtar@samsung.com> >Cc: Kiwoong Kim <kwmad.kim@samsung.com> >Cc: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> >Signed-off-by: Chanho Park <chanho61.park@samsung.com> >--- Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com> > drivers/scsi/ufs/ufs-exynos.c | 8 +++++++- drivers/scsi/ufs/ufs-exynos.h | 1 + > 2 files changed, 8 insertions(+), 1 deletion(-) > >diff --git a/drivers/scsi/ufs/ufs-exynos.c b/drivers/scsi/ufs/ufs-exynos.c index >e32f7d09db1a..a3160d9bd234 100644 >--- a/drivers/scsi/ufs/ufs-exynos.c >+++ b/drivers/scsi/ufs/ufs-exynos.c >@@ -1238,8 +1238,14 @@ static int exynos_ufs_probe(struct platform_device >*pdev) { > int err; > struct device *dev = &pdev->dev; >+ const struct ufs_hba_variant_ops *vops = &ufs_hba_exynos_ops; >+ const struct exynos_ufs_drv_data *drv_data = >+ device_get_match_data(dev); > >- err = ufshcd_pltfrm_init(pdev, &ufs_hba_exynos_ops); >+ if (drv_data && drv_data->vops) >+ vops = drv_data->vops; >+ >+ err = ufshcd_pltfrm_init(pdev, vops); > if (err) > dev_err(dev, "ufshcd_pltfrm_init() failed %d\n", err); > >diff --git a/drivers/scsi/ufs/ufs-exynos.h b/drivers/scsi/ufs/ufs-exynos.h index >4f93db893ce8..bc4b8b0324bd 100644 >--- a/drivers/scsi/ufs/ufs-exynos.h >+++ b/drivers/scsi/ufs/ufs-exynos.h >@@ -142,6 +142,7 @@ struct exynos_ufs_uic_attr { }; > > struct exynos_ufs_drv_data { >+ const struct ufs_hba_variant_ops *vops; > struct exynos_ufs_uic_attr *uic_attr; > unsigned int quirks; > unsigned int opts; >-- >2.33.0
diff --git a/drivers/scsi/ufs/ufs-exynos.c b/drivers/scsi/ufs/ufs-exynos.c index e32f7d09db1a..a3160d9bd234 100644 --- a/drivers/scsi/ufs/ufs-exynos.c +++ b/drivers/scsi/ufs/ufs-exynos.c @@ -1238,8 +1238,14 @@ static int exynos_ufs_probe(struct platform_device *pdev) { int err; struct device *dev = &pdev->dev; + const struct ufs_hba_variant_ops *vops = &ufs_hba_exynos_ops; + const struct exynos_ufs_drv_data *drv_data = + device_get_match_data(dev); - err = ufshcd_pltfrm_init(pdev, &ufs_hba_exynos_ops); + if (drv_data && drv_data->vops) + vops = drv_data->vops; + + err = ufshcd_pltfrm_init(pdev, vops); if (err) dev_err(dev, "ufshcd_pltfrm_init() failed %d\n", err); diff --git a/drivers/scsi/ufs/ufs-exynos.h b/drivers/scsi/ufs/ufs-exynos.h index 4f93db893ce8..bc4b8b0324bd 100644 --- a/drivers/scsi/ufs/ufs-exynos.h +++ b/drivers/scsi/ufs/ufs-exynos.h @@ -142,6 +142,7 @@ struct exynos_ufs_uic_attr { }; struct exynos_ufs_drv_data { + const struct ufs_hba_variant_ops *vops; struct exynos_ufs_uic_attr *uic_attr; unsigned int quirks; unsigned int opts;
By default, ufs_hba_exynos_ops will be used but this patch supports to use custom version of ufs_hba_variant_ops because some variants of exynos-ufs will use only few callbacks. Cc: Alim Akhtar <alim.akhtar@samsung.com> Cc: Kiwoong Kim <kwmad.kim@samsung.com> Cc: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> Signed-off-by: Chanho Park <chanho61.park@samsung.com> --- drivers/scsi/ufs/ufs-exynos.c | 8 +++++++- drivers/scsi/ufs/ufs-exynos.h | 1 + 2 files changed, 8 insertions(+), 1 deletion(-)