From c70cfb7ded8d7e0713d9124cdb325ec3afb5fc56 Mon Sep 17 00:00:00 2001 From: Rakesh Babu Bodla Date: Mon, 4 Apr 2016 18:10:48 +0530 Subject: t186: padctl_uphy: create sata/ufs phy based on lanes Sata/UFS phy will be created only if the lanes are assigned to particular module. Bug 200178286 Change-Id: Ieeb443fcaa99a5c4a62e484d2123d83d0b10cacb Signed-off-by: Rakesh Babu Bodla Reviewed-on: http://git-master/r/1119737 Reviewed-by: Bitan Biswas --- drivers/pinctrl/pinctrl-tegra186-padctl-uphy.c | 28 +++++++++++++++----------- 1 file changed, 16 insertions(+), 12 deletions(-) (limited to 'drivers') diff --git a/drivers/pinctrl/pinctrl-tegra186-padctl-uphy.c b/drivers/pinctrl/pinctrl-tegra186-padctl-uphy.c index a89d31e75..70a6a7724 100644 --- a/drivers/pinctrl/pinctrl-tegra186-padctl-uphy.c +++ b/drivers/pinctrl/pinctrl-tegra186-padctl-uphy.c @@ -5230,21 +5230,25 @@ static int tegra186_padctl_uphy_probe(struct platform_device *pdev) phy_set_drvdata(phy, uphy); } - phy = devm_phy_create(dev, NULL, &sata_phy_ops, NULL); - if (IS_ERR(phy)) { - err = PTR_ERR(phy); - goto uphy_pll_deinit; + if (uphy->sata_lanes) { + phy = devm_phy_create(dev, NULL, &sata_phy_ops, NULL); + if (IS_ERR(phy)) { + err = PTR_ERR(phy); + goto uphy_pll_deinit; + } + uphy->sata_phys[0] = phy; + phy_set_drvdata(phy, uphy); } - uphy->sata_phys[0] = phy; - phy_set_drvdata(phy, uphy); - phy = devm_phy_create(dev, NULL, &ufs_phy_ops, NULL); - if (IS_ERR(phy)) { - err = PTR_ERR(phy); - goto uphy_pll_deinit; + if (uphy->ufs_lanes) { + phy = devm_phy_create(dev, NULL, &ufs_phy_ops, NULL); + if (IS_ERR(phy)) { + err = PTR_ERR(phy); + goto uphy_pll_deinit; + } + uphy->ufs_phys[0] = phy; + phy_set_drvdata(phy, uphy); } - uphy->ufs_phys[0] = phy; - phy_set_drvdata(phy, uphy); INIT_WORK(&uphy->otg_vbus_work, tegra_xusb_otg_vbus_work); INIT_WORK(&uphy->mbox_req_work, tegra_xusb_phy_mbox_work); -- cgit v1.2.2