Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753449AbbDAUun (ORCPT ); Wed, 1 Apr 2015 16:50:43 -0400 Received: from mail-gw3-out.broadcom.com ([216.31.210.64]:37502 "EHLO mail-gw3-out.broadcom.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753092AbbDAUuj (ORCPT ); Wed, 1 Apr 2015 16:50:39 -0400 X-IronPort-AV: E=Sophos;i="5.11,506,1422950400"; d="scan'208";a="60856816" From: Arun Ramamurthy To: Kishon Vijay Abraham I , Rob Herring , Pawel Moll , Mark Rutland , "Ian Campbell" , Kumar Gala , Arnd Bergmann , CC: , , , Dmitry Torokhov , Anatol Pomazau , Jonathan Richardson , Scott Branden , Ray Jui , Dmitry Torokhov , Arun Ramamurthy Subject: [PATCH v2 1/3] phy: phy-core: allow specifying supply at port level Date: Wed, 1 Apr 2015 13:50:55 -0700 Message-ID: <1427921457-18235-2-git-send-email-arun.ramamurthy@broadcom.com> X-Mailer: git-send-email 2.3.4 In-Reply-To: <1427921457-18235-1-git-send-email-arun.ramamurthy@broadcom.com> References: <1427921457-18235-1-git-send-email-arun.ramamurthy@broadcom.com> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1939 Lines: 70 From: Dmitry Torokhov Multi-port phy's may have per-port power supplies. Let's change phy core to first attempt to look up the supply at the port level, and then, if not found, check parent device. Signed-off-by: Dmitry Torokhov Signed-off-by: Arun Ramamurthy Reviewed-by: Ray Jui Reviewed-by: Scott Branden --- drivers/phy/phy-core.c | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c index 3791838..c7aa297 100644 --- a/drivers/phy/phy-core.c +++ b/drivers/phy/phy-core.c @@ -651,16 +651,6 @@ struct phy *phy_create(struct device *dev, struct device_node *node, goto free_phy; } - /* phy-supply */ - phy->pwr = regulator_get_optional(dev, "phy"); - if (IS_ERR(phy->pwr)) { - if (PTR_ERR(phy->pwr) == -EPROBE_DEFER) { - ret = -EPROBE_DEFER; - goto free_ida; - } - phy->pwr = NULL; - } - device_initialize(&phy->dev); mutex_init(&phy->mutex); @@ -674,6 +664,16 @@ struct phy *phy_create(struct device *dev, struct device_node *node, if (ret) goto put_dev; + /* phy-supply */ + phy->pwr = regulator_get_optional(&phy->dev, "phy"); + if (IS_ERR(phy->pwr)) { + ret = PTR_ERR(phy->pwr); + if (ret == -EPROBE_DEFER) + goto put_dev; + + phy->pwr = NULL; + } + ret = device_add(&phy->dev); if (ret) goto put_dev; @@ -689,9 +689,6 @@ put_dev: put_device(&phy->dev); /* calls phy_release() which frees resources */ return ERR_PTR(ret); -free_ida: - ida_simple_remove(&phy_ida, phy->id); - free_phy: kfree(phy); return ERR_PTR(ret); -- 2.3.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/