From patchwork Fri Jan 31 15:34:34 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Calvin Johnson X-Patchwork-Id: 1231972 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.a=rsa-sha256 header.s=selector2 header.b=srcIEFcE; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 488Ls34Cjvz9sRQ for ; Sat, 1 Feb 2020 02:35:35 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729192AbgAaPfb (ORCPT ); Fri, 31 Jan 2020 10:35:31 -0500 Received: from mail-eopbgr150088.outbound.protection.outlook.com ([40.107.15.88]:24231 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728922AbgAaPfa (ORCPT ); Fri, 31 Jan 2020 10:35:30 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DZm+A7Q0DSeOJ0PsSVrWfj2KYPY40PBdMz2+A7LgGRB87sEoHBjOef5mVT57nKZJetDPNhF184+jHzP/ESimq0B9JXXDrr/gaQSy8TpZ4ZziH1gNjwGjLmRVL/FxFM6IefcOMz8UAv3mFRZuBqSgfqsYAJTm6fN/8KSc3YjV1uj/fKzqIE3jk28yOOQ9DMsh7BP5J4nhLq32oj3coOS72q2xkNQ2NGre7JduPXzlZeLC8xeSBpCG2ctWRTucUYhBNwSgLPY6GK5RD1w++5V/zGg08XlRqEBGXns8mxOCqGdo1toFpHYFaHdB8Ta254TkIJM3NKnVDkw/9shmin4eow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hTRpipYJTW3VF3bItMDl3M6eYaSewsQeotAJFnJUaNY=; b=RhN5u/gcvGAHyjdOKnqSSv9C98JwdKZ686YkOl3+ckOOxchO7oEwpaGWVY+F8UauQJvC0sxdqQomE603sw5gdEjK2MJwGfkhIAuxylQM4K0yAnTQV3r0dxP6CuqHVBKkpdSEz8yUMGzqVSC1PlmrUe2iB3t0YXQ/tHwEcRGNkzR62drII42wgj2NTfB7/iSBIp/SbYsprbffavvxRCTCAeKuc1o8jgdTxMkVW6/iGpLHIYPsV0QH7Sb2yASl5NQzpALB9Lsx7dYMRarIZWEm8qInE2hkKVqQZ9PLColq/OfmgP4W1T8yzWpMG2DxRv5KYOqVxScagwH5jI4/3fu3/g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hTRpipYJTW3VF3bItMDl3M6eYaSewsQeotAJFnJUaNY=; b=srcIEFcENWccrC0L1WEQ5W5bzJ4iskCj31gt/WG366iE+Hdq8yjfjNN2Tq+YyOZjSl7PszZkYxJ+NH6p0cTjeOjSh+MqskZ91G8mAZMtPTS5uH1sFqd+2th+XAYk+7YhGHykhQde//03FgR/zSN6y/fOCAfOuNPbFSyewAivu2s= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=calvin.johnson@nxp.com; Received: from DB8PR04MB5643.eurprd04.prod.outlook.com (20.179.10.153) by DB8PR04MB6730.eurprd04.prod.outlook.com (20.179.249.157) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2665.22; Fri, 31 Jan 2020 15:35:27 +0000 Received: from DB8PR04MB5643.eurprd04.prod.outlook.com ([fe80::e1be:98ef:d81c:1eef]) by DB8PR04MB5643.eurprd04.prod.outlook.com ([fe80::e1be:98ef:d81c:1eef%2]) with mapi id 15.20.2686.025; Fri, 31 Jan 2020 15:35:27 +0000 From: Calvin Johnson To: linux.cj@gmail.com, Jon Nettleton , linux@armlinux.org.uk, Makarand Pawagi , cristian.sovaiala@nxp.com, laurentiu.tudor@nxp.com, ioana.ciornei@nxp.com, V.Sethi@nxp.com, pankaj.bansal@nxp.com, "Rajesh V . Bikkina" Cc: Marcin Wojtas , Calvin Johnson , Andrew Lunn , "David S. Miller" , Florian Fainelli , Heiner Kallweit , linux-kernel@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH v1 1/7] mdio_bus: Introduce fwnode MDIO helpers Date: Fri, 31 Jan 2020 21:04:34 +0530 Message-Id: <20200131153440.20870-2-calvin.johnson@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200131153440.20870-1-calvin.johnson@nxp.com> References: <20200131153440.20870-1-calvin.johnson@nxp.com> X-ClientProxiedBy: SG2PR02CA0061.apcprd02.prod.outlook.com (2603:1096:4:54::25) To DB8PR04MB5643.eurprd04.prod.outlook.com (2603:10a6:10:aa::25) MIME-Version: 1.0 Received: from lsv03152.swis.in-blr01.nxp.com (14.142.151.118) by SG2PR02CA0061.apcprd02.prod.outlook.com (2603:1096:4:54::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2686.29 via Frontend Transport; Fri, 31 Jan 2020 15:35:22 +0000 X-Mailer: git-send-email 2.17.1 X-Originating-IP: [14.142.151.118] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 1188d636-e608-4d41-52b3-08d7a6633224 X-MS-TrafficTypeDiagnostic: DB8PR04MB6730:|DB8PR04MB6730: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3276; X-Forefront-PRVS: 029976C540 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4636009)(39860400002)(396003)(346002)(136003)(366004)(376002)(189003)(199004)(52116002)(7696005)(1006002)(66556008)(66476007)(2906002)(66946007)(8676002)(110136005)(55236004)(8936002)(26005)(81156014)(81166006)(316002)(6666004)(478600001)(54906003)(7416002)(1076003)(36756003)(6636002)(6486002)(186003)(16526019)(5660300002)(956004)(86362001)(44832011)(2616005)(4326008)(110426005)(921003)(1121003); DIR:OUT; SFP:1101; SCL:1; SRVR:DB8PR04MB6730; H:DB8PR04MB5643.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Pa30z0axfPlnnvGrnm6DpwGOCA1/cJDBO0Oz+r2+SNGAiRn56k/pB6YcceqGTxyJsKQhiinlcHPy1CIo/Elg/TKCXQKXJfiJ0rnlfB3nP+Q330JZjHcijLrHBaxSWMcO8o8dWullxzEWnd3QBOiuWmCf3QSIUn+M+tIDGNjich31pepJ+bf7jMf1WXeJAzaj3R413FRr2gmZIk4vW0Cmupu2yPnxKSI8AaKHHGjZMYPncyuxyhujCbfTlA2CQCI3IDV0QXy8wSNwgm12RKyy+RoUY1CCjjldky56dyiGSkyCJ3rVL1cDq1U0dDOGZptIMa8/V4dBnxtgd4OFBrICdm/ZF1qXWw00MDmzce3ZNiTrW6PzZQs91X+aa8cXX1YOVETwIOL6pIbE5YaJAFM4+C1EJ2UA3DFhq2Xk8EHeLUUNHlhXpB3ROl/a0ImAgI2qOe2cdwN4g1G2ZdyUBuOhXwa1lH65b3AQPOaGzOVkmksFpoiQBoNqS55vUr9PVRkz9ogD5oFU4L1OA9zfio5FYjaKYxtBlyf8dDMGYYt6FSE= X-MS-Exchange-AntiSpam-MessageData: YUpbBO9f993vuQE3m0Qu/roi0b2JbYddgLGGAGFFLmyGssrfVLERoRLt0QtU7PnGV+UJiKdTJJKCKowW+OqR6QvYZ4YoqnqQTNBFe4rdS0DbPsEFf5UWFPjE+V+zpGjBqsGjiu7P7S/rCm10UeoUFg== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1188d636-e608-4d41-52b3-08d7a6633224 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Jan 2020 15:35:27.1067 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 2Xx/K8zmEFGFmprBS71IIROjQiQkvEUJHTiy+39T4JV4lgPixq5i1iV/Ra3l6Mfv/DwCf7afIIg6LmkZ/+X33A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR04MB6730 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Marcin Wojtas This patch introduces fwnode helper for registering MDIO bus, as well as one for finding the PHY, basing on its firmware node pointer. Comparing to existing OF equivalent, fwnode_mdiobus_register() does not support: * deprecated bindings (device whitelist, nor the PHY ID embedded in the compatible string) * MDIO bus auto scanning Signed-off-by: Marcin Wojtas Signed-off-by: Calvin Johnson Reported-by: kbuild test robot --- drivers/net/phy/mdio_bus.c | 218 +++++++++++++++++++++++++++++++++++++ include/linux/mdio.h | 3 + 2 files changed, 221 insertions(+) diff --git a/drivers/net/phy/mdio_bus.c b/drivers/net/phy/mdio_bus.c index 229e480179ff..b1830ae2abd9 100644 --- a/drivers/net/phy/mdio_bus.c +++ b/drivers/net/phy/mdio_bus.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -725,6 +726,223 @@ static int mdio_uevent(struct device *dev, struct kobj_uevent_env *env) return 0; } +static int fwnode_mdiobus_register_phy(struct mii_bus *bus, + struct fwnode_handle *child, u32 addr) +{ + struct phy_device *phy; + bool is_c45 = false; + int rc; + + rc = fwnode_property_match_string(child, "compatible", + "ethernet-phy-ieee802.3-c45"); + if (!rc) + is_c45 = true; + + phy = get_phy_device(bus, addr, is_c45); + if (IS_ERR(phy)) + return PTR_ERR(phy); + + phy->irq = bus->irq[addr]; + + if (to_of_node(child)) { + rc = of_irq_get(to_of_node(child), 0); + if (rc == -EPROBE_DEFER) { + phy_device_free(phy); + return rc; + } else if (rc > 0) { + phy->irq = rc; + bus->irq[addr] = rc; + } + } + + if (fwnode_property_read_bool(child, "broken-turn-around")) + bus->phy_ignore_ta_mask |= 1 << addr; + + /* Associate the fwnode with the device structure so it + * can be looked up later. + */ + phy->mdio.dev.fwnode = child; + + /* All data is now stored in the phy struct, so register it */ + rc = phy_device_register(phy); + if (rc) { + phy_device_free(phy); + fwnode_handle_put(child); + return rc; + } + + dev_dbg(&bus->dev, "registered phy at address %i\n", addr); + + return 0; +} + +static int fwnode_mdiobus_register_device(struct mii_bus *bus, + struct fwnode_handle *child, u32 addr) +{ + struct mdio_device *mdiodev; + int rc; + + mdiodev = mdio_device_create(bus, addr); + if (IS_ERR(mdiodev)) + return PTR_ERR(mdiodev); + + /* Associate the fwnode with the device structure so it + * can be looked up later. + */ + mdiodev->dev.fwnode = child; + + /* All data is now stored in the mdiodev struct; register it. */ + rc = mdio_device_register(mdiodev); + if (rc) { + mdio_device_free(mdiodev); + fwnode_handle_put(child); + return rc; + } + + dev_dbg(&bus->dev, "registered mdio device at address %i\n", addr); + + return 0; +} + +static int fwnode_mdio_parse_addr(struct device *dev, + const struct fwnode_handle *fwnode) +{ + u32 addr; + int ret; + + ret = fwnode_property_read_u32(fwnode, "reg", &addr); + if (ret < 0) { + dev_err(dev, "PHY node has no 'reg' property\n"); + return ret; + } + + /* A PHY must have a reg property in the range [0-31] */ + if (addr < 0 || addr >= PHY_MAX_ADDR) { + dev_err(dev, "PHY address %i is invalid\n", addr); + return -EINVAL; + } + + return addr; +} + +/** + * fwnode_mdiobus_child_is_phy - Return true if the child is a PHY node. + * It must either: + * o Compatible string of "ethernet-phy-ieee802.3-c45" + * o Compatible string of "ethernet-phy-ieee802.3-c22" + * Checking "compatible" property is done, in order to follow the DT binding. + */ +static bool fwnode_mdiobus_child_is_phy(struct fwnode_handle *child) +{ + int ret; + + ret = fwnode_property_match_string(child, "compatible", + "ethernet-phy-ieee802.3-c45"); + if (!ret) + return true; + + ret = fwnode_property_match_string(child, "compatible", + "ethernet-phy-ieee802.3-c22"); + if (!ret) + return true; + + if (!fwnode_property_present(child, "compatible")) + return true; + + return false; +} + +/** + * fwnode_mdiobus_register - Register mii_bus and create PHYs from the fwnode + * @bus: pointer to mii_bus structure + * @fwnode: pointer to fwnode_handle of MDIO bus. + * + * This function registers the mii_bus structure and registers a phy_device + * for each child node of @fwnode. + */ +int fwnode_mdiobus_register(struct mii_bus *bus, struct fwnode_handle *fwnode) +{ + struct fwnode_handle *child; + int addr, rc; + int default_gpio_reset_delay_ms = 10; + + /* Do not continue if the node is disabled */ + if (!fwnode_device_is_available(fwnode)) + return -ENODEV; + + /* Mask out all PHYs from auto probing. Instead the PHYs listed in + * the firmware nodes are populated after the bus has been registered. + */ + bus->phy_mask = ~0; + + bus->dev.fwnode = fwnode; + + /* Get bus level PHY reset GPIO details */ + bus->reset_delay_us = default_gpio_reset_delay_ms; + fwnode_property_read_u32(fwnode, "reset-delay-us", + &bus->reset_delay_us); + + /* Register the MDIO bus */ + rc = mdiobus_register(bus); + if (rc) + return rc; + + /* Loop over the child nodes and register a phy_device for each PHY */ + fwnode_for_each_child_node(fwnode, child) { + addr = fwnode_mdio_parse_addr(&bus->dev, child); + if (addr < 0) + continue; + + if (fwnode_mdiobus_child_is_phy(child)) + rc = fwnode_mdiobus_register_phy(bus, child, addr); + else + rc = fwnode_mdiobus_register_device(bus, child, addr); + if (rc) + goto unregister; + } + + return 0; + +unregister: + mdiobus_unregister(bus); + + return rc; +} +EXPORT_SYMBOL(fwnode_mdiobus_register); + +/* Helper function for fwnode_phy_find_device */ +static int fwnode_phy_match(struct device *dev, const void *phy_fwnode) +{ + return dev->fwnode == phy_fwnode; +} + +/** + * fwnode_phy_find_device - find the phy_device associated to fwnode + * @phy_fwnode: Pointer to the PHY's fwnode + * + * If successful, returns a pointer to the phy_device with the embedded + * struct device refcount incremented by one, or NULL on failure. + */ +struct phy_device *fwnode_phy_find_device(struct fwnode_handle *phy_fwnode) +{ + struct device *d; + struct mdio_device *mdiodev; + + if (!phy_fwnode) + return NULL; + + d = bus_find_device(&mdio_bus_type, NULL, phy_fwnode, fwnode_phy_match); + if (d) { + mdiodev = to_mdio_device(d); + if (mdiodev->flags & MDIO_DEVICE_FLAG_PHY) + return to_phy_device(d); + put_device(d); + } + + return NULL; +} +EXPORT_SYMBOL(fwnode_phy_find_device); + struct bus_type mdio_bus_type = { .name = "mdio_bus", .match = mdio_bus_match, diff --git a/include/linux/mdio.h b/include/linux/mdio.h index a7604248777b..5c600bb1183c 100644 --- a/include/linux/mdio.h +++ b/include/linux/mdio.h @@ -327,6 +327,9 @@ int mdiobus_unregister_device(struct mdio_device *mdiodev); bool mdiobus_is_registered_device(struct mii_bus *bus, int addr); struct phy_device *mdiobus_get_phy(struct mii_bus *bus, int addr); +int fwnode_mdiobus_register(struct mii_bus *bus, struct fwnode_handle *fwnode); +struct phy_device *fwnode_phy_find_device(struct fwnode_handle *phy_fwnode); + /** * mdio_module_driver() - Helper macro for registering mdio drivers * From patchwork Fri Jan 31 15:34:35 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Calvin Johnson X-Patchwork-Id: 1231973 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.a=rsa-sha256 header.s=selector2 header.b=IgCnNWsw; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 488Ls63zCkz9sRQ for ; Sat, 1 Feb 2020 02:35:38 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729228AbgAaPff (ORCPT ); Fri, 31 Jan 2020 10:35:35 -0500 Received: from mail-eopbgr150074.outbound.protection.outlook.com ([40.107.15.74]:33723 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728922AbgAaPfe (ORCPT ); Fri, 31 Jan 2020 10:35:34 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=m48LX7QpskF3so0AZVwkIVBMcr28ZKWuqzsQ90Qh/U5+r+ILdOkVoFnALJaIhIWuip2UVrYAtffncnhToEXGutTk/JXikvB3PRs+sEBfsNMgcDlio43TGJpYM8cfE44blLEN9x2XymjKRMRDhkVjyvGWHCUJZiKiee1yitTrfejv9DOHzM/JmsyVKh7GE/3JPPF+kOpnbeHrSzsaSUK7I8MetOcb43dvRYVkPV1bNKdqxAB8dE4aLZfXGofSi1dbrvH9SrC7VBR1OsDM1UdovvGybDQSvlJN9OR4M2+jyvy/GYKGyiWCNWE16+jlc704n/V8DvgrfZuPbLMRbXYs3Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZTmvw2n9wtw5saaaH5VE2XOgOO3pO3uGIHHnovLbs2Q=; b=ACu4u46ViQBU7LFYIkqypNCShwAQjAdSzBwt663y3HADmT7+RtvfkTXO6AlqBhJq1d3InjyJS7ZgEXqiVtCrA9npyx2pLfwj1Po07H6OsAYlbFB4gJRicvZflsTxaYLzBdAZr6Ib7EaVFaQmerizZjd5+uRVy0WS35DYUBJxL5nZHKn6dbKli95Ml1SLFOLzwLtE7DCi0eEdOiV8gw8vDD1eCPptirnUNWBm+f0E93MuX8FzqYUUBk+IjjLyQG07JpPuyTtqfGFLhELVfEQvw+lQfGANpQyUVSd2xkpcMYh16zlCoS83FREl0jIfUgNodIufDs9vpjQBsjAa+BPANQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZTmvw2n9wtw5saaaH5VE2XOgOO3pO3uGIHHnovLbs2Q=; b=IgCnNWswO/NZzI2mVr3vYRxjFpbZ1oo3Jf01iLN+D7cchP7NKlcDuskaK0PLbplB4+EYfHDjP7uEBe85fwB/OnJNpfN0urnFf82DTjUpbEhMZjQBkiXFJaV7dmNkpZh8Dzoqrphaic9dsW2UTYvu1xChTnjm828gGpr2FqaeFhg= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=calvin.johnson@nxp.com; Received: from DB8PR04MB5643.eurprd04.prod.outlook.com (20.179.10.153) by DB8PR04MB6730.eurprd04.prod.outlook.com (20.179.249.157) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2665.22; Fri, 31 Jan 2020 15:35:31 +0000 Received: from DB8PR04MB5643.eurprd04.prod.outlook.com ([fe80::e1be:98ef:d81c:1eef]) by DB8PR04MB5643.eurprd04.prod.outlook.com ([fe80::e1be:98ef:d81c:1eef%2]) with mapi id 15.20.2686.025; Fri, 31 Jan 2020 15:35:31 +0000 From: Calvin Johnson To: linux.cj@gmail.com, Jon Nettleton , linux@armlinux.org.uk, Makarand Pawagi , cristian.sovaiala@nxp.com, laurentiu.tudor@nxp.com, ioana.ciornei@nxp.com, V.Sethi@nxp.com, pankaj.bansal@nxp.com, "Rajesh V . Bikkina" Cc: Calvin Johnson , Andrew Lunn , "David S. Miller" , Florian Fainelli , Heiner Kallweit , linux-kernel@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH v1 2/7] mdio_bus: modify fwnode phy related functions Date: Fri, 31 Jan 2020 21:04:35 +0530 Message-Id: <20200131153440.20870-3-calvin.johnson@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200131153440.20870-1-calvin.johnson@nxp.com> References: <20200131153440.20870-1-calvin.johnson@nxp.com> X-ClientProxiedBy: SG2PR02CA0061.apcprd02.prod.outlook.com (2603:1096:4:54::25) To DB8PR04MB5643.eurprd04.prod.outlook.com (2603:10a6:10:aa::25) MIME-Version: 1.0 Received: from lsv03152.swis.in-blr01.nxp.com (14.142.151.118) by SG2PR02CA0061.apcprd02.prod.outlook.com (2603:1096:4:54::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2686.29 via Frontend Transport; Fri, 31 Jan 2020 15:35:27 +0000 X-Mailer: git-send-email 2.17.1 X-Originating-IP: [14.142.151.118] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: e2276173-892e-4593-2fab-08d7a66334dc X-MS-TrafficTypeDiagnostic: DB8PR04MB6730:|DB8PR04MB6730: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:446; X-Forefront-PRVS: 029976C540 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4636009)(39860400002)(396003)(346002)(136003)(366004)(376002)(189003)(199004)(52116002)(7696005)(1006002)(66556008)(66476007)(2906002)(66946007)(8676002)(110136005)(55236004)(8936002)(26005)(81156014)(81166006)(316002)(6666004)(478600001)(54906003)(1076003)(36756003)(6636002)(6486002)(186003)(16526019)(5660300002)(956004)(86362001)(44832011)(2616005)(4326008)(110426005)(921003)(1121003); DIR:OUT; SFP:1101; SCL:1; SRVR:DB8PR04MB6730; H:DB8PR04MB5643.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: AxNB7UktrkaNWw3oBJYBCAx6YEsXWJ83WR7ykL264LHTud/ydYLvFrcMm6gTkYJTtDvCdYHpgPAk/f7V5M5ImrkH7yfZiKVvgQq8vtkoInr6HA5VwKhvscRcC9D6VnZNi8tDx6lsDxcCPI5bUBHocuxYiMY9TRJWYNVQ2oNnBtxiSdeH+rOtZkr+AVcG/iZjwANQuep0DX4hn4bSTy/Epvrtckl8CE3/0kWqKHNvSyoi+gpiZB4If/mckDcoIYw+f+6NnwQjpG5Btf73I6Z/4Sjd3BnQlXpmGY190h5almZtnDCqWdv86R27UfzRMwUepxFEVJmvc7cgcyuO/D4H7v9oGiyP1ulrgaSFQG2oHLHWJPpJd5fNNgCpVXam9CxIVX6jwjqDmJg8r5MPdJFIwZC0Cb4XTmn3T1VCMEy5oO4MeR/bUbh5ZXBB/La+z0c/hdhZvLnaY4B02GriH8N7HKpVlfRqKXthiNnLwLbo+mdefi6kN/agjdwsFHCJPNwQaZr+DMotDGxWitxW1Fj/GH4TbbFMPpdsyPSYXldcPVc= X-MS-Exchange-AntiSpam-MessageData: C0FladfhhnIZcNalFiDqlYniXCtMWQ3Ti7YTZi6s2TP/Pue6ypHWXAzyTvOlBxA1N1+k2QOVBRrDzZsPIZDaFS2j9BTIFP9rsCnHweb3LqWKJcT9n/mWnop143hh6X22pmB8itZ8hhReGNgZg28vig== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: e2276173-892e-4593-2fab-08d7a66334dc X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Jan 2020 15:35:31.6772 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 1/F26sw14MOU9/3TrhPd4uVQ5dC75vVt2yDTt4ynioJt0ae+4u4IuwT6cG+wqdCquJLMNXBoHl/oajHgq9yKWg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR04MB6730 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Calvin Johnson -Add fwnode_get_phy_id to extract phy_id from fwnode compatible property. -Modify fwnode_mdiobus_register_phy and fwnode_mdiobus_child_is_phy to get the compatible string and process accordingly. Signed-off-by: Calvin Johnson --- drivers/net/phy/mdio_bus.c | 58 +++++++++++++++++++++++++++----------- 1 file changed, 42 insertions(+), 16 deletions(-) diff --git a/drivers/net/phy/mdio_bus.c b/drivers/net/phy/mdio_bus.c index b1830ae2abd9..d806b8294651 100644 --- a/drivers/net/phy/mdio_bus.c +++ b/drivers/net/phy/mdio_bus.c @@ -726,19 +726,43 @@ static int mdio_uevent(struct device *dev, struct kobj_uevent_env *env) return 0; } +/* Extract the clause 22 phy ID from the compatible string of the form + * ethernet-phy-idAAAA.BBBB + */ +static int fwnode_get_phy_id(struct fwnode_handle *fwnode, u32 *phy_id) +{ + const char *cp; + unsigned int upper, lower; + int ret; + + ret = fwnode_property_read_string(fwnode, "compatible", &cp); + if (!ret) { + if (sscanf(cp, "ethernet-phy-id%4x.%4x", + &upper, &lower) == 2) { + *phy_id = ((upper & 0xFFFF) << 16) | (lower & 0xFFFF); + return 0; + } + } + return -EINVAL; +} + static int fwnode_mdiobus_register_phy(struct mii_bus *bus, struct fwnode_handle *child, u32 addr) { struct phy_device *phy; bool is_c45 = false; int rc; + const char *cp; + u32 phy_id; - rc = fwnode_property_match_string(child, "compatible", - "ethernet-phy-ieee802.3-c45"); - if (!rc) + fwnode_property_read_string(child, "compatible", &cp); + if (!strcmp(cp, "ethernet-phy-ieee802.3-c45")) is_c45 = true; - phy = get_phy_device(bus, addr, is_c45); + if (!is_c45 && !fwnode_get_phy_id(child, &phy_id)) + phy = phy_device_create(bus, addr, phy_id, 0, NULL); + else + phy = get_phy_device(bus, addr, is_c45); if (IS_ERR(phy)) return PTR_ERR(phy); @@ -835,21 +859,23 @@ static int fwnode_mdio_parse_addr(struct device *dev, static bool fwnode_mdiobus_child_is_phy(struct fwnode_handle *child) { int ret; + const char *cp; + u32 phy_id; - ret = fwnode_property_match_string(child, "compatible", - "ethernet-phy-ieee802.3-c45"); - if (!ret) - return true; - - ret = fwnode_property_match_string(child, "compatible", - "ethernet-phy-ieee802.3-c22"); - if (!ret) - return true; - - if (!fwnode_property_present(child, "compatible")) + if (fwnode_get_phy_id(child, &phy_id) != -EINVAL) return true; - return false; + ret = fwnode_property_read_string(child, "compatible", &cp); + if (!ret) { + if (!strcmp(cp, "ethernet-phy-ieee802.3-c22")) + return true; + else if (!strcmp(cp, "ethernet-phy-ieee802.3-c45")) + return true; + else + return false; + } else { + return false; + } } /** From patchwork Fri Jan 31 15:34:36 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Calvin Johnson X-Patchwork-Id: 1231974 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.a=rsa-sha256 header.s=selector2 header.b=oNIUJcNV; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 488LsD07Dcz9sRQ for ; Sat, 1 Feb 2020 02:35:44 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729253AbgAaPfk (ORCPT ); Fri, 31 Jan 2020 10:35:40 -0500 Received: from mail-eopbgr150083.outbound.protection.outlook.com ([40.107.15.83]:45391 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728922AbgAaPfj (ORCPT ); Fri, 31 Jan 2020 10:35:39 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AYRnHILs//BsgXJhjZrVH5jS7zkjdexj/aq+zWhyl9/PWik1bRGa7q7uJtbRk6G5dSUZ8cSrc6udCzebYpq/Lm2dx1UUD0Y2wdJ2z1t5r+pPjz6we/E6+tDudnv2Y7FRYHVlo2Zh7CvTDufWJaaWA/e/IEoP27DTIMdZZEQ0vEeIEiTWmKcQHYq6E0XK3Q6gRp9visW6ORG/QZo4kkoUbLSEHtzzPKkjddQrvJf/0SXdH16d579PUX3LkY8HPhCH/KqSLEfcbH6CbHIfPoFSYvpfE9sYzUdU2l1mslMCU81fPJDjfQdzEZNNB17MuzuIPQ+5fCGAc3u+aCQuLuYkUQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Z56JE6JNFh2GFkbTcOgPN2K5Dy61b+7ZhRnCIp8NWAc=; b=C5Wim+ke0z3/Y6HdZbh3Lw+HrOHW382t54GY5dCQ1CNKxPtjr8IZ5Cjz6jwsM7+4Gdxznk7/zk+Mxf31kUgZICSJOcVYtOfYaC6V6AQw8OT/8QUn4k3ylrBaSc2UTZmb7GHWrNShjsd+aedm8dLtGpV6225mn6XQAsiOVW7dAtJ35kdaPyakEADOXOdcudrJ0n7Y7FSYS7qOH+LcvfYF10oRQsVPXD2G5qyQUr2nDPswXj3Cfer7+BtU+XE8tK/BqaxZ7d5VPIVE0CFFnczqLn7W7nmZzvYo5CCt9sw+EnFDHjS5IXflNSBHK0Wcr9xKhhoJniXEaloSym4skVTH9g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Z56JE6JNFh2GFkbTcOgPN2K5Dy61b+7ZhRnCIp8NWAc=; b=oNIUJcNVSC4uuoKem046Ic8/1W3Rwsnzwte67ZPPIOfkyrOxYOpbbbeK+8zIfXW1Q3lCZEpuBB52omsTgUgmT+NXYhMQ+EE9EKAu81Py8w6C0UwNzKlQC9E47xFi/a88DhyP92ynawCt6dUofj3SnSkHJQkSyar11DJGZUJ+CYY= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=calvin.johnson@nxp.com; Received: from DB8PR04MB5643.eurprd04.prod.outlook.com (20.179.10.153) by DB8PR04MB6730.eurprd04.prod.outlook.com (20.179.249.157) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2665.22; Fri, 31 Jan 2020 15:35:36 +0000 Received: from DB8PR04MB5643.eurprd04.prod.outlook.com ([fe80::e1be:98ef:d81c:1eef]) by DB8PR04MB5643.eurprd04.prod.outlook.com ([fe80::e1be:98ef:d81c:1eef%2]) with mapi id 15.20.2686.025; Fri, 31 Jan 2020 15:35:35 +0000 From: Calvin Johnson To: linux.cj@gmail.com, Jon Nettleton , linux@armlinux.org.uk, Makarand Pawagi , cristian.sovaiala@nxp.com, laurentiu.tudor@nxp.com, ioana.ciornei@nxp.com, V.Sethi@nxp.com, pankaj.bansal@nxp.com, "Rajesh V . Bikkina" Cc: Calvin Johnson , "David S. Miller" , Madalin Bucur , linux-kernel@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH v1 3/7] net/fsl: add ACPI support for mdio bus Date: Fri, 31 Jan 2020 21:04:36 +0530 Message-Id: <20200131153440.20870-4-calvin.johnson@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200131153440.20870-1-calvin.johnson@nxp.com> References: <20200131153440.20870-1-calvin.johnson@nxp.com> X-ClientProxiedBy: SG2PR02CA0061.apcprd02.prod.outlook.com (2603:1096:4:54::25) To DB8PR04MB5643.eurprd04.prod.outlook.com (2603:10a6:10:aa::25) MIME-Version: 1.0 Received: from lsv03152.swis.in-blr01.nxp.com (14.142.151.118) by SG2PR02CA0061.apcprd02.prod.outlook.com (2603:1096:4:54::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2686.29 via Frontend Transport; Fri, 31 Jan 2020 15:35:32 +0000 X-Mailer: git-send-email 2.17.1 X-Originating-IP: [14.142.151.118] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: b3a9169a-6a90-43fd-66bf-08d7a6633763 X-MS-TrafficTypeDiagnostic: DB8PR04MB6730:|DB8PR04MB6730: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6430; X-Forefront-PRVS: 029976C540 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4636009)(39860400002)(396003)(346002)(136003)(366004)(376002)(189003)(199004)(52116002)(7696005)(1006002)(66556008)(66476007)(2906002)(66946007)(8676002)(110136005)(55236004)(8936002)(26005)(81156014)(81166006)(316002)(478600001)(54906003)(1076003)(36756003)(6636002)(6486002)(186003)(16526019)(5660300002)(956004)(86362001)(44832011)(2616005)(4326008)(110426005)(921003)(1121003); DIR:OUT; SFP:1101; SCL:1; SRVR:DB8PR04MB6730; H:DB8PR04MB5643.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 62Iyc/4jQKaD27f5rkq+fc5+i+AJLG4fEEMqgTMJUiJGnvVB/dujbEvikizzSkpeHjeX4FQ4ABydl3ceNNEbj1kgj5bJc/i+V3PeO2TVVAufu3zE+IQvVmPXQHZjN6JwJoLEXxis+ewqHvHkp5FYToDEIG1nngcsn8RqTPajvy2w03V83xYFF+wIJqsB7X0HFD8aeIVNMIUmYf2zc/GKjqbqO+i+VsFZlMzz53gAP4JVt6tmZ4zVUaBVl8yj2l9c+wnbIK/O56zbkVt1Uqq+Q8itMTA5nPHWlSfTP2L0pNPD4ISxWZbbmjVUl1OwjbpFncBQt8vC2oS9VqzFQiBu4kjyRZB2ObtXTz/VvnONx7a4uMUOv6GH1W6lQJiXYCQ4JCRXbcR1/Wj9s5JjqZWqii3nMATJHA1hfdq+DllZ6SBGtfnSpTNIYcjYkOUQzS7j5JWTLhMpF+wXALX7L9BnvaZMTVMtO99uxYTAwDk3F1Bwj4K6rTlwar+fiZevMfazWfGxX+rN3C16xLB63HUrzXMbtFhQO7DIPY4fIjqjYqk= X-MS-Exchange-AntiSpam-MessageData: 89k/oaVUsfYUGpaTD+qFFt0lL0IeleZbteO6Ugkgb6nNh6g+9tmbBZ4HKwLIcr+k3/tD0csbwabPgkCJsBOwuBj5ySST4S04tyRrFLqrMinS5/+N4XgtlieKInONtvCcPIOb2TWyfVoikCAfJUfG7A== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: b3a9169a-6a90-43fd-66bf-08d7a6633763 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Jan 2020 15:35:35.9287 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: rJZqI+DgdaHJcgF1MHfQGJuLipfayZUq69myly1Jg6rRbysZcgodmkr/Ki5+t56Jwu4w1CvJ+ZN8zDJjw6JTww== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR04MB6730 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Calvin Johnson Add ACPI support for MDIO bus registration while maintaining the existing DT support. Signed-off-by: Calvin Johnson --- drivers/net/ethernet/freescale/xgmac_mdio.c | 63 ++++++++++++++------- 1 file changed, 42 insertions(+), 21 deletions(-) diff --git a/drivers/net/ethernet/freescale/xgmac_mdio.c b/drivers/net/ethernet/freescale/xgmac_mdio.c index c82c85ef5fb3..51db7482b3de 100644 --- a/drivers/net/ethernet/freescale/xgmac_mdio.c +++ b/drivers/net/ethernet/freescale/xgmac_mdio.c @@ -2,6 +2,7 @@ * QorIQ 10G MDIO Controller * * Copyright 2012 Freescale Semiconductor, Inc. + * Copyright 2019 NXP * * Authors: Andy Fleming * Timur Tabi @@ -11,6 +12,7 @@ * kind, whether express or implied. */ +#include #include #include #include @@ -245,14 +247,14 @@ static int xgmac_mdio_probe(struct platform_device *pdev) { struct device_node *np = pdev->dev.of_node; struct mii_bus *bus; - struct resource res; + struct resource *res; struct mdio_fsl_priv *priv; int ret; - ret = of_address_to_resource(np, 0, &res); - if (ret) { + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + if (!res) { dev_err(&pdev->dev, "could not obtain address\n"); - return ret; + return -ENODEV; } bus = mdiobus_alloc_size(sizeof(struct mdio_fsl_priv)); @@ -263,25 +265,41 @@ static int xgmac_mdio_probe(struct platform_device *pdev) bus->read = xgmac_mdio_read; bus->write = xgmac_mdio_write; bus->parent = &pdev->dev; - snprintf(bus->id, MII_BUS_ID_SIZE, "%llx", (unsigned long long)res.start); + snprintf(bus->id, MII_BUS_ID_SIZE, "%llx", + (unsigned long long)res->start); /* Set the PHY base address */ priv = bus->priv; - priv->mdio_base = of_iomap(np, 0); + priv->mdio_base = devm_ioremap_resource(&pdev->dev, res); if (!priv->mdio_base) { ret = -ENOMEM; goto err_ioremap; } - priv->is_little_endian = of_property_read_bool(pdev->dev.of_node, - "little-endian"); - - priv->has_a011043 = of_property_read_bool(pdev->dev.of_node, - "fsl,erratum-a011043"); - - ret = of_mdiobus_register(bus, np); - if (ret) { - dev_err(&pdev->dev, "cannot register MDIO bus\n"); + if (is_of_node(pdev->dev.fwnode)) { + priv->is_little_endian = of_property_read_bool(pdev->dev.of_node, + "little-endian"); + + priv->has_a011043 = of_property_read_bool(pdev->dev.of_node, + "fsl,erratum-a011043"); + + ret = of_mdiobus_register(bus, np); + if (ret) { + dev_err(&pdev->dev, "cannot register MDIO bus\n"); + goto err_registration; + } + } else if (is_acpi_node(pdev->dev.fwnode)) { + priv->is_little_endian = + fwnode_property_read_bool(pdev->dev.fwnode, + "little-endian"); + ret = fwnode_mdiobus_register(bus, pdev->dev.fwnode); + if (ret) { + dev_err(&pdev->dev, "cannot register MDIO bus\n"); + goto err_registration; + } + } else { + dev_err(&pdev->dev, "Cannot get cfg data from DT or ACPI\n"); + ret = -ENXIO; goto err_registration; } @@ -290,8 +308,6 @@ static int xgmac_mdio_probe(struct platform_device *pdev) return 0; err_registration: - iounmap(priv->mdio_base); - err_ioremap: mdiobus_free(bus); @@ -303,13 +319,12 @@ static int xgmac_mdio_remove(struct platform_device *pdev) struct mii_bus *bus = platform_get_drvdata(pdev); mdiobus_unregister(bus); - iounmap(bus->priv); mdiobus_free(bus); return 0; } -static const struct of_device_id xgmac_mdio_match[] = { +static const struct of_device_id xgmac_mdio_of_match[] = { { .compatible = "fsl,fman-xmdio", }, @@ -318,12 +333,18 @@ static const struct of_device_id xgmac_mdio_match[] = { }, {}, }; -MODULE_DEVICE_TABLE(of, xgmac_mdio_match); +MODULE_DEVICE_TABLE(of, xgmac_mdio_of_match); + +static const struct acpi_device_id xgmac_mdio_acpi_match[] = { + {"NXP0006", 0} +}; +MODULE_DEVICE_TABLE(acpi, xgmac_mdio_acpi_match); static struct platform_driver xgmac_mdio_driver = { .driver = { .name = "fsl-fman_xmdio", - .of_match_table = xgmac_mdio_match, + .of_match_table = xgmac_mdio_of_match, + .acpi_match_table = ACPI_PTR(xgmac_mdio_acpi_match), }, .probe = xgmac_mdio_probe, .remove = xgmac_mdio_remove, From patchwork Fri Jan 31 15:34:37 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Calvin Johnson X-Patchwork-Id: 1231976 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.a=rsa-sha256 header.s=selector2 header.b=NvvooTt1; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 488LsK60JSz9sRW for ; Sat, 1 Feb 2020 02:35:49 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729278AbgAaPfq (ORCPT ); Fri, 31 Jan 2020 10:35:46 -0500 Received: from mail-eopbgr150074.outbound.protection.outlook.com ([40.107.15.74]:29963 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728922AbgAaPfp (ORCPT ); Fri, 31 Jan 2020 10:35:45 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PF9O9O3CEXyLCp4GwpxU8XYrPCFBE3X7DC3uMm2NL1oLwf/B0S1eZWPeTTi14wiXFVswuhmVpvS+bQyAtFDnk2Zf8qJMfMfOhFFptJAU85f8HQNSjYeNzHizi/gAEx4mFdeZ0jsjwPcLWxNLy6OB0qJiuVo9n1UvlNCSrGkxv98JA5wRvPBjo+f8lvKE9/V9EFrXdJY12vK0QTn2h5eUxDHHxoRp7Ny9wAYLVQ/YmAwXRkfJxQwFWsNCCxTXjaWmrsdQrSHX+KK6sai+l3itf6/AkQvbdJuKZCJW3ag210d2q2Ki+ljiOa+0zOD/lodvNl6GcjklySiPshr9L6sEfg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=m+uSZvUff1oHm7jKiZZuawMGO9YRsHaKns2/ko5X4D0=; b=HMaYINqOhe5VQjNLzBtdz4z69d6Hr5I3zFUcggdLJCexwH4mOrHGSaUDk+da6uoJs7wPg70+llsZ0U0GVuY64Z18LyxcfOFVBqPVjNfI73YForGQzUX2cnPv8kUer9VBvFok016DTESD0rRYMjvioEVG4s2SbsbBNG1LakhXmKjhG7yG9O1SoEvUnyUPjqHMsqkgpj7jghPkbK1MKnFhHcmlTSJefczckrMRnmniYJ0FWOe7LsOxo4nZpY281h/QGnC+PZEoTV4ANASJ9YSmOk7fgs7eNR1gYiXgxBPqAYQ713hVYh9bWjtCWs5EKKoy/imCPFcOArssMjnMQGZrdQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=m+uSZvUff1oHm7jKiZZuawMGO9YRsHaKns2/ko5X4D0=; b=NvvooTt1ZTV90cQJc69JCEqs8lizXAECKHDPdRVAaBvkjitK/cXdOZGoAVC+8o/qG09gw+11u8YlBh5ex2zx6PhQogF24irHcs1IRiWElHQpXse909UmKcJTNCrR8/6GVOfo/GBwf3HdyvbXTxv5fqBQbNxtLYyBUACB8Wj2XFI= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=calvin.johnson@nxp.com; Received: from DB8PR04MB5643.eurprd04.prod.outlook.com (20.179.10.153) by DB8PR04MB6730.eurprd04.prod.outlook.com (20.179.249.157) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2665.22; Fri, 31 Jan 2020 15:35:42 +0000 Received: from DB8PR04MB5643.eurprd04.prod.outlook.com ([fe80::e1be:98ef:d81c:1eef]) by DB8PR04MB5643.eurprd04.prod.outlook.com ([fe80::e1be:98ef:d81c:1eef%2]) with mapi id 15.20.2686.025; Fri, 31 Jan 2020 15:35:42 +0000 From: Calvin Johnson To: linux.cj@gmail.com, Jon Nettleton , linux@armlinux.org.uk, Makarand Pawagi , cristian.sovaiala@nxp.com, laurentiu.tudor@nxp.com, ioana.ciornei@nxp.com, V.Sethi@nxp.com, pankaj.bansal@nxp.com, "Rajesh V . Bikkina" Cc: Calvin Johnson , Andy Shevchenko , Antoine Tenart , "David S. Miller" , Dmitry Torokhov , Greg Kroah-Hartman , Heikki Krogerus , Matteo Croce , Maxime Chevallier , "Rafael J. Wysocki" , Russell King , Sakari Ailus , Thomas Gleixner , linux-kernel@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH v1 4/7] device property: fwnode_get_phy_mode: Change API to solve int/unit warnings Date: Fri, 31 Jan 2020 21:04:37 +0530 Message-Id: <20200131153440.20870-5-calvin.johnson@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200131153440.20870-1-calvin.johnson@nxp.com> References: <20200131153440.20870-1-calvin.johnson@nxp.com> X-ClientProxiedBy: SG2PR02CA0061.apcprd02.prod.outlook.com (2603:1096:4:54::25) To DB8PR04MB5643.eurprd04.prod.outlook.com (2603:10a6:10:aa::25) MIME-Version: 1.0 Received: from lsv03152.swis.in-blr01.nxp.com (14.142.151.118) by SG2PR02CA0061.apcprd02.prod.outlook.com (2603:1096:4:54::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2686.29 via Frontend Transport; Fri, 31 Jan 2020 15:35:36 +0000 X-Mailer: git-send-email 2.17.1 X-Originating-IP: [14.142.151.118] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: e730dad7-979f-44fa-b8ac-08d7a6633b18 X-MS-TrafficTypeDiagnostic: DB8PR04MB6730:|DB8PR04MB6730: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2331; X-Forefront-PRVS: 029976C540 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4636009)(39860400002)(396003)(346002)(136003)(366004)(376002)(189003)(199004)(52116002)(7696005)(1006002)(66556008)(66476007)(2906002)(66946007)(8676002)(110136005)(55236004)(8936002)(26005)(81156014)(81166006)(316002)(478600001)(54906003)(7416002)(1076003)(36756003)(6636002)(6486002)(186003)(16526019)(5660300002)(956004)(86362001)(44832011)(2616005)(4326008)(110426005)(921003)(1121003); DIR:OUT; SFP:1101; SCL:1; SRVR:DB8PR04MB6730; H:DB8PR04MB5643.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: zq+c6PH4MmAKf0hjZpBpickPVbtKuozuvpJ5hfKQrAGyS4MBGCtVXwKe/E4804tp+r0+Mox52lTgg3FsouTIFyx5FriOs1qHA0pOxCWCVYLpNTDbbec/vJcuoJ3r0dmdmLRzcydsbpqe/4SqbyFTEB6Hb+DgNWCIAvuqmpvOYdxoXPH8qE1vtka35iTFKHJ3A5b5onkC9V4FKxN+8INlzrnlCZjwAT7wwgGftNfdNTfJHcAs0HWdXD/R+mV+KUU5WKJx2zgbYbvf622ZII+zDGhMEy8v9/YOeTf3zvgMJ/IaqfYrqqQb81FI0iNQZUSFcWjHbaQlsQ2/Oh51/2y9ofBc9at4xdRyKHxG0BIxwzOdUkIXxEvBk12pZoXtJoxWq8ZQ8cEzZ2hwPVjvqG9PQ0SF2QZwsfNY/Dwq3h728HrT6WPT3g6wA1VukxzczByKr47JfNkT3s0wn3vJ8vldXyOFIycg8e1CgN1sqyqeC+3O1MnyFG3mAMzLWz6fHPmi42QkrUFqjgFV1VbxaxqLvziP2cxpy+jWAnEGv0fseE4= X-MS-Exchange-AntiSpam-MessageData: u3Dx5rE3cSGQRw8FKBNRU4WjX6uNVxsNSpkoQ3tw4l86m5oh+P2VZewGnyBZM+Pveej/6hK/g44DEnVPlFT35Z4ducCaouDcjdmL0WjCZpPhKIUGQm/a98mJ/m30qpRTg85PqE2xh1VS5Ru8IWfwjg== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: e730dad7-979f-44fa-b8ac-08d7a6633b18 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Jan 2020 15:35:42.1382 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: epWicJ7QVEuq+9s3Vs7JZBstYm1xMPH7OzMYSo6cdiCJvgsQHtjDF93neFubWeX1saskI0zhPIt/oby8jcvjCQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR04MB6730 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Calvin Johnson API fwnode_get_phy_mode is modified to follow the changes made by Commit 0c65b2b90d13c1 ("net: of_get_phy_mode: Change API to solve int/unit warnings"). Signed-off-by: Calvin Johnson Reported-by: kbuild test robot Reported-by: kbuild test robot --- drivers/base/property.c | 22 ++++++++++++++----- .../net/ethernet/marvell/mvpp2/mvpp2_main.c | 7 +++--- include/linux/property.h | 4 +++- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/drivers/base/property.c b/drivers/base/property.c index 511f6d7acdfe..fdb79033d58f 100644 --- a/drivers/base/property.c +++ b/drivers/base/property.c @@ -830,16 +830,20 @@ EXPORT_SYMBOL_GPL(device_get_dma_attr); /** * fwnode_get_phy_mode - Get phy mode for given firmware node * @fwnode: Pointer to the given node + * @interface: Pointer to the result * * The function gets phy interface string from property 'phy-mode' or - * 'phy-connection-type', and return its index in phy_modes table, or errno in - * error case. + * 'phy-connection-type'. The index in phy_modes table is set in + * interface and 0 returned. In case of error interface is set to + * PHY_INTERFACE_MODE_NA and an errno is returned, e.g. -ENODEV. */ -int fwnode_get_phy_mode(struct fwnode_handle *fwnode) +int fwnode_get_phy_mode(struct fwnode_handle *fwnode, phy_interface_t *interface) { const char *pm; int err, i; + *interface = PHY_INTERFACE_MODE_NA; + err = fwnode_property_read_string(fwnode, "phy-mode", &pm); if (err < 0) err = fwnode_property_read_string(fwnode, @@ -848,8 +852,10 @@ int fwnode_get_phy_mode(struct fwnode_handle *fwnode) return err; for (i = 0; i < PHY_INTERFACE_MODE_MAX; i++) - if (!strcasecmp(pm, phy_modes(i))) + if (!strcasecmp(pm, phy_modes(i))) { + *interface = i; return i; + } return -ENODEV; } @@ -865,7 +871,13 @@ EXPORT_SYMBOL_GPL(fwnode_get_phy_mode); */ int device_get_phy_mode(struct device *dev) { - return fwnode_get_phy_mode(dev_fwnode(dev)); + int ret; + phy_interface_t phy_mode; + + ret = fwnode_get_phy_mode(dev_fwnode(dev), &phy_mode); + if (!ret) + ret = phy_mode; + return ret; } EXPORT_SYMBOL_GPL(device_get_phy_mode); diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c index 14e372cda7f4..00a0350f4da7 100644 --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c @@ -5209,7 +5209,7 @@ static int mvpp2_port_probe(struct platform_device *pdev, unsigned long flags = 0; bool has_tx_irqs; u32 id; - int phy_mode; + phy_interface_t phy_mode; int err, i; has_tx_irqs = mvpp2_port_has_irqs(priv, port_node, &flags); @@ -5226,10 +5226,9 @@ static int mvpp2_port_probe(struct platform_device *pdev, if (!dev) return -ENOMEM; - phy_mode = fwnode_get_phy_mode(port_fwnode); - if (phy_mode < 0) { + err = fwnode_get_phy_mode(port_fwnode, &phy_mode); + if (err < 0) { dev_err(&pdev->dev, "incorrect phy mode\n"); - err = phy_mode; goto err_free_netdev; } diff --git a/include/linux/property.h b/include/linux/property.h index 48335288c2a9..1998f502d2ed 100644 --- a/include/linux/property.h +++ b/include/linux/property.h @@ -13,6 +13,7 @@ #include #include #include +#include struct device; @@ -332,7 +333,8 @@ int device_get_phy_mode(struct device *dev); void *device_get_mac_address(struct device *dev, char *addr, int alen); -int fwnode_get_phy_mode(struct fwnode_handle *fwnode); +int fwnode_get_phy_mode(struct fwnode_handle *fwnode, + phy_interface_t *interface); void *fwnode_get_mac_address(struct fwnode_handle *fwnode, char *addr, int alen); struct fwnode_handle *fwnode_graph_get_next_endpoint( From patchwork Fri Jan 31 15:34:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Calvin Johnson X-Patchwork-Id: 1231979 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.a=rsa-sha256 header.s=selector2 header.b=h2seiSOM; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 488Lsp1Qcfz9sRR for ; Sat, 1 Feb 2020 02:36:14 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729308AbgAaPgH (ORCPT ); Fri, 31 Jan 2020 10:36:07 -0500 Received: from mail-eopbgr150074.outbound.protection.outlook.com ([40.107.15.74]:17057 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728922AbgAaPgH (ORCPT ); Fri, 31 Jan 2020 10:36:07 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FAORbJDUuSzbBg7QJHhcmWCHFS2TApB8zlM7w62RWlhaYdgP2XUGtRggsbjk3hUoGN0reqMSXwvdlSTzvBxsJ8+od/Jwp9DB4NJQwCTHxrCcodGX22c6IXs1trJWOepBVurXWs9bssASaJKyaSEg9oteX6XQJwUyMmgPAPP9U4Y7xamhibuZQ5P2Yp2apAWU9QZrNpYRVqD6/Uh1v2YnylfnASKvvMGewUcSeDidsdUOmkjRjoXy1bVmr/+OuGcgS0BgDc7Pm5XAxXCOUFYatZrF/5yO+0ISKSgbXP1rpqLZvQNxtq/LUbschJSa9cv4AlQlB8QGbGLDwrSAtOfQEw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=EZePI2LWmim/vlpE/5g2V7+bbouRlLEU0BZGBIzWusc=; b=n4Ss+409tcOBqowONhM+oNGa6eEvIoEmHb33yHFXtkt47STGO2dYgVKnL0OLC8GaV0/TKIBA6ZgvL97b3cnTrUpW2YykzAPSIS/3hTeQNgbP4C7PPats13oKQjYYosX2uGHEOCfi2IwhMA1WkcKdS471Dj/oRzz5c1MNb8wUJD4LjYrx3OCrEIpGbPEMa2DLA3MYvWKYS6G1zR5oLSA+xq+BhO1jL8oN2FxSYMrr5jnpy6+7YBhfMM7IxDfJxBhJiw34aLzosj1Cff9G3K/BHtLXkYSRj3ii3kRm4+nmiDQoFyIdLbfFRDONy6odjBYH5DcihOoMO1zgDtbw53PjSQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=EZePI2LWmim/vlpE/5g2V7+bbouRlLEU0BZGBIzWusc=; b=h2seiSOMKbky4FbaCSVCSqHAlZHgrldmFz2Rix4D5EI0m7QeS7akDTzyNdjHEbU4lBvEUOC1gxWBpQapsuzoZX4dWb8CyGOoB0VL/dVl+XCV0qPjvXodm3j+/G2zgMPM0YOdX2+dqFeZ8okQfVQNGklO0l8QXtuzP9W4w7L7374= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=calvin.johnson@nxp.com; Received: from DB8PR04MB5643.eurprd04.prod.outlook.com (20.179.10.153) by DB8PR04MB6730.eurprd04.prod.outlook.com (20.179.249.157) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2665.22; Fri, 31 Jan 2020 15:35:51 +0000 Received: from DB8PR04MB5643.eurprd04.prod.outlook.com ([fe80::e1be:98ef:d81c:1eef]) by DB8PR04MB5643.eurprd04.prod.outlook.com ([fe80::e1be:98ef:d81c:1eef%2]) with mapi id 15.20.2686.025; Fri, 31 Jan 2020 15:35:51 +0000 From: Calvin Johnson To: linux.cj@gmail.com, Jon Nettleton , linux@armlinux.org.uk, Makarand Pawagi , cristian.sovaiala@nxp.com, laurentiu.tudor@nxp.com, ioana.ciornei@nxp.com, V.Sethi@nxp.com, pankaj.bansal@nxp.com, "Rajesh V . Bikkina" Cc: Calvin Johnson , Andrew Lunn , "David S. Miller" , Florian Fainelli , Heiner Kallweit , linux-kernel@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH v1 6/7] net: phylink: Introduce phylink_fwnode_phy_connect() Date: Fri, 31 Jan 2020 21:04:39 +0530 Message-Id: <20200131153440.20870-7-calvin.johnson@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200131153440.20870-1-calvin.johnson@nxp.com> References: <20200131153440.20870-1-calvin.johnson@nxp.com> X-ClientProxiedBy: SG2PR02CA0061.apcprd02.prod.outlook.com (2603:1096:4:54::25) To DB8PR04MB5643.eurprd04.prod.outlook.com (2603:10a6:10:aa::25) MIME-Version: 1.0 Received: from lsv03152.swis.in-blr01.nxp.com (14.142.151.118) by SG2PR02CA0061.apcprd02.prod.outlook.com (2603:1096:4:54::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2686.29 via Frontend Transport; Fri, 31 Jan 2020 15:35:47 +0000 X-Mailer: git-send-email 2.17.1 X-Originating-IP: [14.142.151.118] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 8d47e552-2543-4fc1-6ec6-08d7a66340be X-MS-TrafficTypeDiagnostic: DB8PR04MB6730:|DB8PR04MB6730: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3826; X-Forefront-PRVS: 029976C540 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4636009)(39860400002)(396003)(346002)(136003)(366004)(376002)(189003)(199004)(52116002)(7696005)(1006002)(66556008)(66476007)(2906002)(66946007)(8676002)(110136005)(55236004)(8936002)(26005)(81156014)(81166006)(316002)(6666004)(478600001)(54906003)(1076003)(36756003)(6636002)(6486002)(186003)(16526019)(5660300002)(956004)(86362001)(44832011)(2616005)(4326008)(110426005)(921003)(1121003); DIR:OUT; SFP:1101; SCL:1; SRVR:DB8PR04MB6730; H:DB8PR04MB5643.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: OKjZqpX145W4eb8SaNoDGIFqplJkxSBXsRBEljujDfaz6zcVED6eGxDo4P2SPFNe5dWMqkuJAcgwKmRd6kvUyeXAT3qD77F8A3BmvdzR+QUDtN2wunwylTkdsWfYRdKR9l8oaWF54cWctfEhcaJQnwLxi1KEt+O2cdGXVL9yagP/JTgEbpRJHMJXlgu9LtW5aRZgTi/vIxHugRSEGOeDj8G130xZMTOkOmV+9GZQlGV45N38Bep6mlycda2BjVqFUrR6YiR+qWUOYnUMUsJ9W3Pqr/jWk7ILhfVaSXdRUIK00WjLPph6PQXSF7B1LNzNFUjKyNtnfBkhdPsIsIr8pKhqgEcDnrVoIIe0oshLDqMxegq+6SJzMVwLE8HWgBIeGg+dfI0Fm0sAm/0VPRMTvX4ZUVmQ/M4TH1EpFtM05fSSra5fd2eMkixAPrJEpwhmBjAR8Uyt9eih1gJD9a4im96FeZqpZwRJXeShXxbn0xFej1koSDndCyZjWC2OYlQ+MPIsy2AHhX4IOIfmJRF79yKoawGcpaOENMGAq2WNOl0= X-MS-Exchange-AntiSpam-MessageData: XLLodztX4puJTrLTY7NdDO1z3uOdic4s8mwiedoaRnX4dN0NyZcqRhfqINOA+lv0baNKr6Q9bqB2188sHrFJCvRDsSLqg3tIK8QOeUioDV3wmKW6pMYWN9uOkirUHBx3DPKLCfiXy5fvP29FTaen8w== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8d47e552-2543-4fc1-6ec6-08d7a66340be X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Jan 2020 15:35:51.5918 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ntqstVzRYHXXkGSM8r2jIzSkK1uehs4TZn2PQD25YWhxS/Jj8i2QpvHrHEtJVdsLM/3pknJXEvpqCSrDO2jcUA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR04MB6730 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Calvin Johnson Introduce phylink_fwnode_phy_connect API to connect the PHY using fwnode. Signed-off-by: Calvin Johnson Reported-by: kbuild test robot --- drivers/net/phy/phylink.c | 64 +++++++++++++++++++++++++++++++++++++++ include/linux/phylink.h | 2 ++ 2 files changed, 66 insertions(+) diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c index ee7a718662c6..f211f62283b5 100644 --- a/drivers/net/phy/phylink.c +++ b/drivers/net/phy/phylink.c @@ -18,6 +18,7 @@ #include #include #include +#include #include "sfp.h" #include "swphy.h" @@ -817,6 +818,69 @@ int phylink_connect_phy(struct phylink *pl, struct phy_device *phy) } EXPORT_SYMBOL_GPL(phylink_connect_phy); +/** + * phylink_fwnode_phy_connect() - connect the PHY specified in the fwnode. + * @pl: a pointer to a &struct phylink returned from phylink_create() + * @dn: a pointer to a &struct device_node. + * @flags: PHY-specific flags to communicate to the PHY device driver + * + * Connect the phy specified in the device node @dn to the phylink instance + * specified by @pl. Actions specified in phylink_connect_phy() will be + * performed. + * + * Returns 0 on success or a negative errno. + */ +int phylink_fwnode_phy_connect(struct phylink *pl, + struct fwnode_handle *fwnode, + u32 flags) +{ + struct fwnode_handle *phy_node; + struct phy_device *phy_dev; + int ret; + int status; + struct fwnode_reference_args args; + + /* Fixed links and 802.3z are handled without needing a PHY */ + if (pl->link_an_mode == MLO_AN_FIXED || + (pl->link_an_mode == MLO_AN_INBAND && + phy_interface_mode_is_8023z(pl->link_interface))) + return 0; + + status = acpi_node_get_property_reference(fwnode, "phy-handle", 0, + &args); + if (ACPI_FAILURE(status) || !is_acpi_device_node(args.fwnode)) + status = acpi_node_get_property_reference(fwnode, "phy", 0, + &args); + if (ACPI_FAILURE(status) || !is_acpi_device_node(args.fwnode)) + status = acpi_node_get_property_reference(fwnode, + "phy-device", 0, + &args); + + if (ACPI_FAILURE(status) || !is_acpi_device_node(args.fwnode)) { + if (pl->link_an_mode == MLO_AN_PHY) + return -ENODEV; + return 0; + } + + phy_dev = fwnode_phy_find_device(args.fwnode); + if (phy_dev) + phy_attach_direct(pl->netdev, phy_dev, flags, + pl->link_interface); + + /* refcount is held by phy_attach_direct() on success */ + put_device(&phy_dev->mdio.dev); + + if (!phy_dev) + return -ENODEV; + + ret = phylink_bringup_phy(pl, phy_dev); + if (ret) + phy_detach(phy_dev); + + return ret; +} +EXPORT_SYMBOL_GPL(phylink_fwnode_phy_connect); + /** * phylink_of_phy_connect() - connect the PHY specified in the DT mode. * @pl: a pointer to a &struct phylink returned from phylink_create() diff --git a/include/linux/phylink.h b/include/linux/phylink.h index fed5488e3c75..cb07cf7a832e 100644 --- a/include/linux/phylink.h +++ b/include/linux/phylink.h @@ -240,6 +240,8 @@ void phylink_destroy(struct phylink *); int phylink_connect_phy(struct phylink *, struct phy_device *); int phylink_of_phy_connect(struct phylink *, struct device_node *, u32 flags); +int phylink_fwnode_phy_connect(struct phylink *pl, struct fwnode_handle *fwnode, + u32 flags); void phylink_disconnect_phy(struct phylink *); int phylink_fixed_state_cb(struct phylink *, void (*cb)(struct net_device *dev, From patchwork Fri Jan 31 15:34:40 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Calvin Johnson X-Patchwork-Id: 1231977 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.a=rsa-sha256 header.s=selector2 header.b=spafmJCW; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 488Lsm0Ympz9sRR for ; Sat, 1 Feb 2020 02:36:12 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729321AbgAaPgJ (ORCPT ); Fri, 31 Jan 2020 10:36:09 -0500 Received: from mail-eopbgr150074.outbound.protection.outlook.com ([40.107.15.74]:17057 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729286AbgAaPgI (ORCPT ); Fri, 31 Jan 2020 10:36:08 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=edSsApinKazZ8KksMS7lPsbHP2+81YVzPcFWqnr7aALB/WxudjiYMSXiG6ZuLR/G4pMfUKRpxoVGC15pSdEiAqS8JC7O4LJuFalLj10hYt+HbIdAOpqIGh6zDtDAt8bBLDXn8+2DGczZu+hCmlujffWm4RFFFGUuuYBwjz3xWZlE/yqhVf6cn/N5pd6+in/JIgGhSotvadJnyQHpX7MMO9abXBu6/QJlspWK+earPh/1Q3ZeRPNViFEkRSErGXEoMydYW7AdznfIuWQ9oOr6q3Jp7mPwJ2qjDhOUJT0d2Dy68sFCMP/zx/gLhUqV2ARg9EA4lRLKKoBPNt5+wiayFw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0TwGOicNnzeq2GnTIJ2qxqZ8J9KSEynaNV7JqA5nHp0=; b=GVDZTiyWFnCdfizW5qHUbVkZXYeGPcmcpNy+5lvQjkExiacXYDjUPEdgobGnoLpTDHibvHihMgO+k/Z7H8aWEdVvkE5ZI4kOliMIpVZ7UqTEa/ESM3V4S8UcyGZ1K1yoO98Rj7xAB05w4/ti7GGapRu73dOReo2//i2Nn88/gdJcIOVzlEq+Fi6Fp54VOkgxZHDMtq2rOQvcLlHr7G8SnZheakCRRfk+WC4gQm7INq35x2gJiGQ3Yar8w8lL8tKlBNukJwmnyWMgfsRJf1YeImrp64XDyo9c/OAj1ogpWrjfXlMSLQjKQxRc9qE3aNeT0QkXkxSu4XmqCbCeIublXQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0TwGOicNnzeq2GnTIJ2qxqZ8J9KSEynaNV7JqA5nHp0=; b=spafmJCWteXf8z6b2A9nw4wVC2EK5H5oIOvl9RrA7XqNIukaxHQPN+BKP06IEPuizCFdKZ1guowhwtfU/8YuNh8uER9S/cX3AY3J8UQkMhTSuW2dlGEsi1RLgoA6g523lcboNYVEEvtwTfLwT7DRolZ0zs4mqHqJapyNbVwVGSM= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=calvin.johnson@nxp.com; Received: from DB8PR04MB5643.eurprd04.prod.outlook.com (20.179.10.153) by DB8PR04MB6730.eurprd04.prod.outlook.com (20.179.249.157) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2665.22; Fri, 31 Jan 2020 15:35:55 +0000 Received: from DB8PR04MB5643.eurprd04.prod.outlook.com ([fe80::e1be:98ef:d81c:1eef]) by DB8PR04MB5643.eurprd04.prod.outlook.com ([fe80::e1be:98ef:d81c:1eef%2]) with mapi id 15.20.2686.025; Fri, 31 Jan 2020 15:35:55 +0000 From: Calvin Johnson To: linux.cj@gmail.com, Jon Nettleton , linux@armlinux.org.uk, Makarand Pawagi , cristian.sovaiala@nxp.com, laurentiu.tudor@nxp.com, ioana.ciornei@nxp.com, V.Sethi@nxp.com, pankaj.bansal@nxp.com, "Rajesh V . Bikkina" Cc: Calvin Johnson , "David S. Miller" , Ioana Radulescu , linux-kernel@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH v1 7/7] dpaa2-eth: Add ACPI support for DPAA2 MAC driver Date: Fri, 31 Jan 2020 21:04:40 +0530 Message-Id: <20200131153440.20870-8-calvin.johnson@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200131153440.20870-1-calvin.johnson@nxp.com> References: <20200131153440.20870-1-calvin.johnson@nxp.com> X-ClientProxiedBy: SG2PR02CA0061.apcprd02.prod.outlook.com (2603:1096:4:54::25) To DB8PR04MB5643.eurprd04.prod.outlook.com (2603:10a6:10:aa::25) MIME-Version: 1.0 Received: from lsv03152.swis.in-blr01.nxp.com (14.142.151.118) by SG2PR02CA0061.apcprd02.prod.outlook.com (2603:1096:4:54::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2686.29 via Frontend Transport; Fri, 31 Jan 2020 15:35:51 +0000 X-Mailer: git-send-email 2.17.1 X-Originating-IP: [14.142.151.118] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: cc82fe5f-ec83-46d5-e485-08d7a6634329 X-MS-TrafficTypeDiagnostic: DB8PR04MB6730:|DB8PR04MB6730: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1002; X-Forefront-PRVS: 029976C540 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4636009)(39860400002)(396003)(346002)(136003)(366004)(376002)(189003)(199004)(52116002)(7696005)(1006002)(66556008)(66476007)(2906002)(66946007)(8676002)(110136005)(55236004)(8936002)(26005)(81156014)(81166006)(316002)(6666004)(478600001)(54906003)(1076003)(36756003)(6636002)(6486002)(186003)(16526019)(5660300002)(956004)(86362001)(44832011)(2616005)(4326008)(110426005)(921003)(1121003); DIR:OUT; SFP:1101; SCL:1; SRVR:DB8PR04MB6730; H:DB8PR04MB5643.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: zoEC0XdM1PLztDjWJTltvhk1y+Me5owK8bUMViaQIauj05PHfr0Ie294LOyZvB6DVbnJxm+9uuGIU+DRcYZyeAwJAs3pwf3EV9IVEHNLm/JrotNlCyI77evciUeQ3EkoJFFH503qguD+zEkDDeFhFCzHTDDPgGfeWw+gpJ9S7PG6FlxVc77bnj7u+l1r2vzL/KBLCQo+/J7UXD36Pqj/nnm0Eq2NVaLRpa8oOE2Aod3hN2OSs77NRGptv1bF6hqOJkASVAvHVeoDz/PdIMz1+b7pmha2zXdG9I6e5nVecsBA7WZ1YjxbFIZOwUckH58uzT4pCc5yoxxfMPRIBJ6gzqUcfMT/ZCe5cZjnZUqmdkJQmdgKhwkWYwp8vXlJgHddjoM6cy5EiunrCvC2MIIlcI+quoMa0/bBrf/ApPFPlMNYR2jgMlfVtpPfQoBoE3Jo9zHF3TCubJSsIDURGp0TtrrGeRbvbJUfOdPY6Vj2lKXEWjyHaT2HWeirtwJ4+KLLgi0w6h3iFNhgO4oCqmta4jBpH4E30jww2WIfU/RFyWI= X-MS-Exchange-AntiSpam-MessageData: RScqU1P6QLkKQE1OZebrUxyHK3bkLgIBs2JfraARMDePreF8wx1TWjrMPhLWKZjNZVF6ngyUIM9Tt/Z6C3i7srFR4SIvn2g7VAugr/pSnRUgJnomUdDdMeq894npicm59ncSrZWmZQhJg+hrlHzW8Q== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: cc82fe5f-ec83-46d5-e485-08d7a6634329 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Jan 2020 15:35:55.6635 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: fk0reexQYRXN9Fl67WEkiKZ8FxabiR5cumy/21bqVZ08X/CqPT6F7ynFejcbhUMs3cESHZ9XoofUwZ+vydZJVw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR04MB6730 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Calvin Johnson fwnode APIs are used to handle both DT and ACPI nodes. Whereever common fwnode APIs cannot be used, corresponding DT and ACPI APIs are used. Signed-off-by: Calvin Johnson --- .../net/ethernet/freescale/dpaa2/dpaa2-mac.c | 78 ++++++++++++------- 1 file changed, 50 insertions(+), 28 deletions(-) diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c index 84233e467ed1..29d2d85383de 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c @@ -3,6 +3,7 @@ #include "dpaa2-eth.h" #include "dpaa2-mac.h" +#include #define phylink_to_dpaa2_mac(config) \ container_of((config), struct dpaa2_mac, phylink_config) @@ -23,37 +24,51 @@ static int phy_mode(enum dpmac_eth_if eth_if, phy_interface_t *if_mode) } /* Caller must call of_node_put on the returned value */ -static struct device_node *dpaa2_mac_get_node(u16 dpmac_id) +static struct fwnode_handle *dpaa2_mac_get_node(struct device *dev, + u16 dpmac_id) { - struct device_node *dpmacs, *dpmac = NULL; + struct fwnode_handle *dpmac_fwnode; + struct fwnode_handle *dpmacs, *dpmac = NULL; u32 id; int err; - dpmacs = of_find_node_by_name(NULL, "dpmacs"); - if (!dpmacs) - return NULL; + if (is_of_node(dev->parent->fwnode)) { + dpmacs = device_get_named_child_node(dev->parent, "dpmacs"); + if (!dpmacs) + return NULL; + + while ((dpmac = fwnode_get_next_child_node(dpmacs, dpmac))) { + err = fwnode_property_read_u32(dpmac, "reg", &id); + if (err) + continue; + if (id == dpmac_id) + return dpmac; + } - while ((dpmac = of_get_next_child(dpmacs, dpmac)) != NULL) { - err = of_property_read_u32(dpmac, "reg", &id); - if (err) - continue; - if (id == dpmac_id) - break; + } else if (is_acpi_node(dev->parent->fwnode)) { + device_for_each_child_node(dev->parent, dpmac_fwnode) { + err = fwnode_property_read_u32(dpmac_fwnode, "reg", + &id); + if (err) { + dev_err(dev->parent, "failed to get reg\n"); + continue; + } else { + if (id == dpmac_id) + return dpmac_fwnode; + } + } } - - of_node_put(dpmacs); - - return dpmac; + return NULL; } -static int dpaa2_mac_get_if_mode(struct device_node *node, +static int dpaa2_mac_get_if_mode(struct fwnode_handle *dpmac_fwnode, struct dpmac_attr attr) { phy_interface_t if_mode; int err; - err = of_get_phy_mode(node, &if_mode); - if (!err) + err = fwnode_get_phy_mode(dpmac_fwnode, &if_mode); + if (err > 0) return if_mode; err = phy_mode(attr.eth_if, &if_mode); @@ -220,7 +235,7 @@ int dpaa2_mac_connect(struct dpaa2_mac *mac) { struct fsl_mc_device *dpmac_dev = mac->mc_dev; struct net_device *net_dev = mac->net_dev; - struct device_node *dpmac_node; + struct fwnode_handle *dpmac_fwnode = NULL; struct phylink *phylink; struct dpmac_attr attr; int err; @@ -238,25 +253,26 @@ int dpaa2_mac_connect(struct dpaa2_mac *mac) goto err_close_dpmac; } - dpmac_node = dpaa2_mac_get_node(attr.id); - if (!dpmac_node) { + dpmac_fwnode = dpaa2_mac_get_node(&mac->mc_dev->dev, attr.id); + if (!dpmac_fwnode) { netdev_err(net_dev, "No dpmac@%d node found.\n", attr.id); err = -ENODEV; goto err_close_dpmac; } - err = dpaa2_mac_get_if_mode(dpmac_node, attr); + err = dpaa2_mac_get_if_mode(dpmac_fwnode, attr); if (err < 0) { err = -EINVAL; goto err_put_node; } + mac->if_mode = err; /* The MAC does not have the capability to add RGMII delays so * error out if the interface mode requests them and there is no PHY * to act upon them */ - if (of_phy_is_fixed_link(dpmac_node) && + if (fwnode_phy_is_fixed_link(dpmac_fwnode) && (mac->if_mode == PHY_INTERFACE_MODE_RGMII_ID || mac->if_mode == PHY_INTERFACE_MODE_RGMII_RXID || mac->if_mode == PHY_INTERFACE_MODE_RGMII_TXID)) { @@ -269,7 +285,7 @@ int dpaa2_mac_connect(struct dpaa2_mac *mac) mac->phylink_config.type = PHYLINK_NETDEV; phylink = phylink_create(&mac->phylink_config, - of_fwnode_handle(dpmac_node), mac->if_mode, + dpmac_fwnode, mac->if_mode, &dpaa2_mac_phylink_ops); if (IS_ERR(phylink)) { err = PTR_ERR(phylink); @@ -277,20 +293,26 @@ int dpaa2_mac_connect(struct dpaa2_mac *mac) } mac->phylink = phylink; - err = phylink_of_phy_connect(mac->phylink, dpmac_node, 0); + if (is_of_node(dpmac_fwnode)) + err = phylink_of_phy_connect(mac->phylink, + to_of_node(dpmac_fwnode), 0); + else if (is_acpi_node(dpmac_fwnode)) + err = phylink_fwnode_phy_connect(mac->phylink, dpmac_fwnode, 0); if (err) { - netdev_err(net_dev, "phylink_of_phy_connect() = %d\n", err); + netdev_err(net_dev, "phylink_fwnode_phy_connect() = %d\n", err); goto err_phylink_destroy; } - of_node_put(dpmac_node); + if (is_of_node(dpmac_fwnode)) + of_node_put(to_of_node(dpmac_fwnode)); return 0; err_phylink_destroy: phylink_destroy(mac->phylink); err_put_node: - of_node_put(dpmac_node); + if (is_of_node(dpmac_fwnode)) + of_node_put(to_of_node(dpmac_fwnode)); err_close_dpmac: dpmac_close(mac->mc_io, 0, dpmac_dev->mc_handle); return err;