On Wed, Sep 2, 2015 at 3:32 AM, Yaniv Gardi <ygardi@xxxxxxxxxxxxxx> wrote: > This change turns the UFS variant (SCSI_UFS_QCOM) into a UFS > a platform device. > In order to do so a few additional changes are required: > 1. The ufshcd-pltfrm is no longer serves as a platform device. > Now it only serves as a group of platform APIs such as PM APIs > (runtime suspend/resume, system suspend/resume etc), parsers of > clocks, regulators and pm_levels from DT. > 2. What used to be the old platform "probe" is now "only" > a pltfrm_init() routine, that does exactly the same, but only > being called by the new probe function of the UFS variant. > > Signed-off-by: Yaniv Gardi <ygardi@xxxxxxxxxxxxxx> [...] > diff --git a/drivers/scsi/ufs/ufs-qcom.c b/drivers/scsi/ufs/ufs-qcom.c > index 329ac84..5179250 100644 > --- a/drivers/scsi/ufs/ufs-qcom.c > +++ b/drivers/scsi/ufs/ufs-qcom.c > @@ -19,6 +19,7 @@ > > #include <linux/phy/phy-qcom-ufs.h> > #include "ufshcd.h" > +#include "ufshcd-pltfrm.h" > #include "unipro.h" > #include "ufs-qcom.h" > #include "ufshci.h" > @@ -1036,7 +1037,7 @@ void ufs_qcom_clk_scale_notify(struct ufs_hba *hba) > * The variant operations configure the necessary controller and PHY > * handshake during initialization. > */ > -static const struct ufs_hba_variant_ops ufs_hba_qcom_vops = { > +static struct ufs_hba_variant_ops ufs_hba_qcom_vops = { > .name = "qcom", > .init = ufs_qcom_init, > .exit = ufs_qcom_exit, > @@ -1050,4 +1051,75 @@ static const struct ufs_hba_variant_ops ufs_hba_qcom_vops = { > .resume = ufs_qcom_resume, > }; > > +/** > + * ufs_qcom_probe - probe routine of the driver > + * @pdev: pointer to Platform device handle > + * > + * Always return 0 > + */ > +static int ufs_qcom_probe(struct platform_device *pdev) > +{ > + int err; > + struct device *dev = &pdev->dev; > + struct ufs_hba *hba; > + > + /* Perform generic probe */ > + err = ufshcd_pltfrm_init(pdev, &ufs_hba_qcom_vops); > + if (err) { > + dev_err(dev, "ufshcd_pltfrm_init() failed %d\n", err); > + goto out; > + } > + All of this: > + hba = platform_get_drvdata(pdev); > + > + return 0; > + > +dealloc_host: > + /* disconnect the bind between the qcom host and the hba */ > + ufshcd_set_variant(hba, NULL); > + ufshcd_dealloc_host(hba); To this is dead code. You should get a warning that dealloc_host is unused. Please check and fix all warnings. Rob > +out: > + return err; > +} > + -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html