From patchwork Mon Jun 29 20:01:28 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andre Edich X-Patchwork-Id: 216909 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DC399C433E0 for ; Mon, 29 Jun 2020 20:01:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A9D2920672 for ; Mon, 29 Jun 2020 20:01:41 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=microchip.com header.i=@microchip.com header.b="umhQcdYt"; dkim=pass (1024-bit key) header.d=microchiptechnology.onmicrosoft.com header.i=@microchiptechnology.onmicrosoft.com header.b="DKtE7fp7" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388657AbgF2UBk (ORCPT ); Mon, 29 Jun 2020 16:01:40 -0400 Received: from esa2.microchip.iphmx.com ([68.232.149.84]:39950 "EHLO esa2.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388647AbgF2UBi (ORCPT ); Mon, 29 Jun 2020 16:01:38 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1593460896; x=1624996896; h=from:to:cc:subject:date:message-id:content-id: content-transfer-encoding:mime-version; bh=X6v+GJn3BdQxBi0OBo9rz/xKibjYdilAa4DSeJv/TKE=; b=umhQcdYtIaCdkm+RT10LUtIbRr11GHzz043PssD+TNHagQY52WJ0UG4o Cgs5jn38hk07pTsGB1QHbdV2M9sTj6xn0DYD+jOzFo4BDxnsIvdSte93k gjdj+WdhKQ/WvGzjAcyvYXP/6wYAVn9l4gujcEozCZA13aTgpo7KdXCnR uLsWmqNTh+YPmW5cgPe0mvVhQkFieiy+itPcCWKk3LHW5wzCLiJe6pDT2 toxWVUY3MuEstYQnN0U/ngowEcDQh0aRofPu/5EpuaJjvUpygotAgZgqL 1MEvfYkLJcTP2b5fgsjqNhzf2pkoKMPt8bdym622gmgcWi7sms3N3LtPY Q==; IronPort-SDR: UBieLuFr/X4vL8IcjoiEhkmkj1x2jiLm7EJ7L4FSamJsNAMfU4S+1Zc45TKo4VZ4eXdOmxN7/A DGhwiDWYSmQD51CELbym2mNIeYHq3yFwLilo6ZKaURXdTLKGmvW6tF25U8UGAGBPE9S8eNpX+s QngyLNnXinWu2D17XjdZNYQVgChckgZAfscLeNyOLVTp1MsvPnhnI/42e+kJYYQx8cEblNyhnM 2DH4IuCcnB4g2VAYZCxNTeVM0yOHNva+jM3ROkJltpbs5pa2YP+AqW87VFGExzL2LETTQsoR5o ENA= X-IronPort-AV: E=Sophos;i="5.75,295,1589266800"; d="scan'208";a="80128601" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa2.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 29 Jun 2020 13:01:36 -0700 Received: from chn-vm-ex02.mchp-main.com (10.10.87.72) by chn-vm-ex02.mchp-main.com (10.10.87.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3; Mon, 29 Jun 2020 13:01:18 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.87.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3 via Frontend Transport; Mon, 29 Jun 2020 13:01:18 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AlwV5ijbkKIY8wHCcMb1NDd8lC6T7S0xc6vQXZbAdycztgZVRWaTaWss2DfSaKggTpV6R/YFXDgVzQ/BkH88LFuqTWocJ5zQlZf+0aZVNZPl8s/0hohR4M/+jisbz/wX/6wUKGOBu+U21nu0mz0xBS/SmZ3XXT54wtXVZ8cQpMPKzimyQg0I1wNNIQOAfvIGWKic8t+Elphdqwo0ZWb6WAkgxlJbQqWKd9n224/BEw/fFWcItVuviPSMdkMQaip07GXPCMKlr1FwJ2piHAPSuE3aIXzQmonUT0qJre+KVhIjqVTPyrl4TAF0S794bRPYRS1PCWCsMvPWSrrz7chx7w== 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=X6v+GJn3BdQxBi0OBo9rz/xKibjYdilAa4DSeJv/TKE=; b=dZ96vDEdA5TyLxCpZdNgxu3YXfSJGfsN8S/psGcu7+Rp9EUM8zyqpqA1lKMWR2IVxiT/9fyugW699BUiXGb0v03NMyY27ZDHVmJI5KDI+oRf0eYJtZoyCgpj7t474IIqT4lRTbW4hXhZE1yA1dm2Ng09TeXA6Bljg8HHywed3wmeQVZoWtzC2zx+3yuEiWRb3cD6XMYwIb/NNO8Coss+AiS7FaaAhwgqLqZgj2VdTVifgjijNcAKD1E+fDAPK+uOzfQa7BIg8I1tP2BH2Cgi53QkhpzwMjrIf4KvFIl2o1XLEsNDSULpKbKGGh0cEq9JDUTojIqFaDZsyMNn8DHt5g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microchip.com; dmarc=pass action=none header.from=microchip.com; dkim=pass header.d=microchip.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microchiptechnology.onmicrosoft.com; s=selector2-microchiptechnology-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=X6v+GJn3BdQxBi0OBo9rz/xKibjYdilAa4DSeJv/TKE=; b=DKtE7fp7mtaLgie3s2MhdsKsjLhZXTLq11MIA1pUibboquWXY6M0Sf67T+0HkqY/XHCPYQ/Pe0e4iFuicsMsWs1dU9JGVervUVhsJ88Ae1eOIPZG+xMqejcTpFLXPyvyTh8+JVWHYwMIUIKiwG36xBQZCjnPsTZs3ZfhhhAvG6k= Received: from BY5PR11MB3927.namprd11.prod.outlook.com (2603:10b6:a03:186::21) by BYAPR11MB2792.namprd11.prod.outlook.com (2603:10b6:a02:c3::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3131.24; Mon, 29 Jun 2020 20:01:29 +0000 Received: from BY5PR11MB3927.namprd11.prod.outlook.com ([fe80::5993:d0ac:9849:d311]) by BY5PR11MB3927.namprd11.prod.outlook.com ([fe80::5993:d0ac:9849:d311%7]) with mapi id 15.20.3131.027; Mon, 29 Jun 2020 20:01:29 +0000 From: To: , , CC: Subject: [PATCH net-next 3/8] smsc95xx: add PAL support to use external PHY drivers Thread-Topic: [PATCH net-next 3/8] smsc95xx: add PAL support to use external PHY drivers Thread-Index: AQHWTlATxfp4qn3AGUya8kyVakY9YA== Date: Mon, 29 Jun 2020 20:01:28 +0000 Message-ID: <9255483491fb18b9cdb2ea86ede6fe8e81c71be0.camel@microchip.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.36.3 authentication-results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=microchip.com; x-originating-ip: [93.202.178.57] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 779a4efe-ef99-4127-96e7-08d81c673665 x-ms-traffictypediagnostic: BYAPR11MB2792: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-bypassexternaltag: True x-ms-oob-tlc-oobclassifiers: OLM:7691; x-forefront-prvs: 044968D9E1 x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: KyKBg9vxrkSIlU/EBjLm1HQ/kW9aH7vt7FZTbunnJ8ev7n6XpA3ytVHX/6Rwnwf8zL8TzGmdQYerIQVXglPSnwVTavc/V5uBq5bhFCOm43Y6beUdrnYg5gh2nlO531xjmdgp/f5v7Dk/okel/u53zeJP0ZTSvZK4WJCSdJhfW3i/cG3UfNUxnnX+uz07fD4vx/igyFdOB+Dv3+ckGwoAJgu4yh4Q5VVK3Y+X4lf9Ej6o+uQ/plhPkStWURYitEJ5M0Z0RZn9gIb0vJxMnby9P5OBjTbu78zSVuf9AR2GZ2Qd13urCiXL3b+nlQOCh6TP x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BY5PR11MB3927.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(366004)(376002)(346002)(396003)(136003)(39860400002)(6506007)(4326008)(110136005)(478600001)(2616005)(2906002)(8676002)(316002)(8936002)(36756003)(6512007)(186003)(86362001)(83380400001)(71200400001)(26005)(6486002)(76116006)(107886003)(91956017)(5660300002)(66446008)(64756008)(66946007)(66556008)(66476007); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: KYMgVTtb3AIN6+w6YRD4UGPfjaiZvJ+vrQGNxujcDaM2m/kWgRjfKSfuKAF5/wGPv1BQL+x8rECqxQKJcA1CB8eJHQ4KQZtZtM0zrghBoLLpmV+RzA/c1rIJ0KfnCxTUauL2vrDgpOSW3wDRiBqllG7r7uFjVISNHEWFdoAc1Nv2vD1B1obtLVOdWD0/h8qraytvVNcjwkvdirDYRNoGWogfJ8b2ykgm7GOp2W9GtoInatpnFZko+UEBhApcxvnZZhjoEWptQzJ8Lw3eWKFEpICiII6nNcip+HWP09Dvx5WpAhcC7z3LqpQAJWjGjcLRLdbU37+HY4dL3Ov4AG+Q2HOmZ83+myA4me9Fe812TWdx9tmO7OB8LEiBxF4CsYll+aAe9HPzXxGHXkxiwXJc+mH1nilaXu91NnF8Jwju6n+2WwFnaO8DBO6Iw1hDD0KmZptV/b00erWEDy1hYpXeOic2j47jQDu3TVR3c9dvQwSnUZd8KKSm5JBmSEyq+HWr Content-ID: <4C5882CA48D8DE49A0D993EC04935602@namprd11.prod.outlook.com> MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BY5PR11MB3927.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 779a4efe-ef99-4127-96e7-08d81c673665 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Jun 2020 20:01:29.0772 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3f4057f3-b418-4d4e-ba84-d55b4e897d88 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: OUj0GwSyfZQIccA2NPRCBrpvt1ofLSQb6ZeeFI+/ayYqaFl0hpOCjLLP3WXRaKPgLTD6sj+fjxUzw+r2/MaioP3UgysKH4+OMn7+k6OOyYk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR11MB2792 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Generally, each PHY has their own configuration and it can be done through an external PHY driver. The smsc95xx driver uses only the hard-coded internal PHY configuration. This patch adds PAL (PHY Abstraction Layer) support to probe external PHY drivers for configuring external PHYs. Signed-off-by: Andre Edich --- drivers/net/usb/smsc95xx.c | 165 +++++++++++++++++++++++++------------ 1 file changed, 112 insertions(+), 53 deletions(-) static int __must_check smsc95xx_wait_eeprom(struct usbnet *dev) { unsigned long start_time = jiffies; @@ -972,51 +992,6 @@ static int smsc95xx_start_rx_path(struct usbnet *dev, int in_pm) return __smsc95xx_write_reg(dev, MAC_CR, pdata->mac_cr, in_pm); } -static int smsc95xx_phy_initialize(struct usbnet *dev) -{ - int bmcr, ret, timeout = 0; - - /* Initialize MII structure */ - dev->mii.dev = dev->net; - dev->mii.mdio_read = smsc95xx_mdio_read; - dev->mii.mdio_write = smsc95xx_mdio_write; - dev->mii.phy_id_mask = 0x1f; - dev->mii.reg_num_mask = 0x1f; - dev->mii.phy_id = SMSC95XX_INTERNAL_PHY_ID; - - /* reset phy and wait for reset to complete */ - smsc95xx_mdio_write(dev->net, dev->mii.phy_id, MII_BMCR, BMCR_RESET); - - do { - msleep(10); - bmcr = smsc95xx_mdio_read(dev->net, dev->mii.phy_id, MII_BMCR); - timeout++; - } while ((bmcr & BMCR_RESET) && (timeout < 100)); - - if (timeout >= 100) { - netdev_warn(dev->net, "timeout on PHY Reset"); - return -EIO; - } - - smsc95xx_mdio_write(dev->net, dev->mii.phy_id, MII_ADVERTISE, - ADVERTISE_ALL | ADVERTISE_CSMA | ADVERTISE_PAUSE_CAP | - ADVERTISE_PAUSE_ASYM); - - /* read to clear */ - ret = smsc95xx_mdio_read(dev->net, dev->mii.phy_id, PHY_INT_SRC); - if (ret < 0) { - netdev_warn(dev->net, "Failed to read PHY_INT_SRC during init\n"); - return ret; - } - - smsc95xx_mdio_write(dev->net, dev->mii.phy_id, PHY_INT_MASK, - PHY_INT_MASK_DEFAULT_); - mii_nway_restart(&dev->mii); - - netif_dbg(dev, ifup, dev->net, "phy initialised successfully\n"); - return 0; -} - static int smsc95xx_reset(struct usbnet *dev) { struct smsc95xx_priv *pdata = (struct smsc95xx_priv *)(dev- > data[0]); @@ -1198,12 +1173,6 @@ static int smsc95xx_reset(struct usbnet *dev) smsc95xx_set_multicast(dev->net); - ret = smsc95xx_phy_initialize(dev); - if (ret < 0) { - netdev_warn(dev->net, "Failed to init PHY\n"); - return ret; - } - ret = smsc95xx_read_reg(dev, INT_EP_CTL, &read_buf); if (ret < 0) return ret; @@ -1231,6 +1200,43 @@ static int smsc95xx_reset(struct usbnet *dev) return 0; } +static void smsc95xx_handle_link_change(struct net_device *net) +{ + phy_print_status(net->phydev); +} + +static int smsc95xx_start_phy(struct usbnet *dev) +{ + struct smsc95xx_priv *pdata = (struct smsc95xx_priv *)(dev- > data[0]); + struct net_device *net = dev->net; + int ret; + + ret = smsc95xx_reset(dev); + if (ret < 0) + return ret; + + /* attach the mac to the phy */ + ret = phy_connect_direct(net, pdata->phydev, + &smsc95xx_handle_link_change, + PHY_INTERFACE_MODE_MII); + if (ret) { + netdev_err(net, "can't attach PHY to %s\n", pdata- > mdiobus->id); + return ret; + } + + phy_attached_info(net->phydev); + phy_start(net->phydev); + mii_nway_restart(&dev->mii); + return 0; +} + +static int smsc95xx_disconnect_phy(struct usbnet *dev) +{ + phy_stop(dev->net->phydev); + phy_disconnect(dev->net->phydev); + return 0; +} + static const struct net_device_ops smsc95xx_netdev_ops = { .ndo_open = usbnet_open, .ndo_stop = usbnet_stop, @@ -1290,10 +1296,53 @@ static int smsc95xx_bind(struct usbnet *dev, struct usb_interface *intf) if (ret) goto free_pdata; + pdata->mdiobus = mdiobus_alloc(); + if (!pdata->mdiobus) { + ret = -ENOMEM; + goto free_pdata; + } + + ret = smsc95xx_read_reg(dev, HW_CFG, &val); + if (ret < 0) + goto free_mdio; + + /* check for internal phy */ + if (!(val & HW_CFG_PSEL_)) + pdata->mdiobus->phy_mask = ~(1u << SMSC95XX_INTERNAL_PHY_ID); + + pdata->mdiobus->priv = dev; + pdata->mdiobus->read = smsc95xx_mdiobus_read; + pdata->mdiobus->write = smsc95xx_mdiobus_write; + pdata->mdiobus->name = "smsc95xx-mdiobus"; + + dev->mii.phy_id_mask = 0x1f; + dev->mii.reg_num_mask = 0x1f; + + snprintf(pdata->mdiobus->id, ARRAY_SIZE(pdata->mdiobus->id), + "usb-%03d:%03d", dev->udev->bus->busnum, dev->udev- > devnum); + + ret = mdiobus_register(pdata->mdiobus); + if (ret) { + netdev_err(dev->net, "Could not register MDIO bus\n"); + goto free_mdio; + } + + pdata->phydev = phy_find_first(pdata->mdiobus); + if (!pdata->phydev) { + netdev_err(dev->net, "no PHY found\n"); + ret = -ENODEV; + goto unregister_mdio; + } + + dev->mii.dev = dev->net; + dev->mii.mdio_read = smsc95xx_mdio_read; + dev->mii.mdio_write = smsc95xx_mdio_write; + dev->mii.phy_id = pdata->phydev->mdio.addr; + /* detect device revision as different features may be available */ ret = smsc95xx_read_reg(dev, ID_REV, &val); if (ret < 0) - goto free_pdata; + goto unregister_mdio; val >>= 16; pdata->chip_id = val; @@ -1321,6 +1370,12 @@ static int smsc95xx_bind(struct usbnet *dev, struct usb_interface *intf) return 0; +unregister_mdio: + mdiobus_unregister(pdata->mdiobus); + +free_mdio: + mdiobus_free(pdata->mdiobus); + free_pdata: kfree(pdata); return ret; @@ -1332,6 +1387,8 @@ static void smsc95xx_unbind(struct usbnet *dev, struct usb_interface *intf) if (pdata) { cancel_delayed_work_sync(&pdata->carrier_check); + mdiobus_unregister(pdata->mdiobus); + mdiobus_free(pdata->mdiobus); netif_dbg(dev, ifdown, dev->net, "free pdata\n"); kfree(pdata); pdata = NULL; @@ -1893,6 +1950,7 @@ static int smsc95xx_resume(struct usb_interface *intf) if (ret < 0) netdev_warn(dev->net, "usbnet_resume error\n"); + phy_init_hw(pdata->phydev); return ret; } @@ -2098,7 +2156,8 @@ static const struct driver_info smsc95xx_info = { .bind = smsc95xx_bind, .unbind = smsc95xx_unbind, .link_reset = smsc95xx_link_reset, - .reset = smsc95xx_reset, + .reset = smsc95xx_start_phy, + .stop = smsc95xx_disconnect_phy, .rx_fixup = smsc95xx_rx_fixup, .tx_fixup = smsc95xx_tx_fixup, .status = smsc95xx_status, diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c index bb4ccbda031a..fbb80a7aef32 100644 --- a/drivers/net/usb/smsc95xx.c +++ b/drivers/net/usb/smsc95xx.c @@ -18,6 +18,8 @@ #include #include #include +#include +#include #include "smsc95xx.h" #define SMSC_CHIPNAME "smsc95xx" @@ -64,6 +66,8 @@ struct smsc95xx_priv { bool link_ok; struct delayed_work carrier_check; struct usbnet *dev; + struct mii_bus *mdiobus; + struct phy_device *phydev; }; static bool turbo_mode = true; @@ -284,6 +288,22 @@ static void smsc95xx_mdio_write(struct net_device *netdev, int phy_id, int idx, __smsc95xx_mdio_write(netdev, phy_id, idx, regval, 0); } +static int smsc95xx_mdiobus_read(struct mii_bus *bus, int phy_id, int idx) +{ + struct usbnet *dev = bus->priv; + + return __smsc95xx_mdio_read(dev->net, phy_id, idx, 0); +} + +static int smsc95xx_mdiobus_write(struct mii_bus *bus, int phy_id, int idx, + u16 regval) +{ + struct usbnet *dev = bus->priv; + + __smsc95xx_mdio_write(dev->net, phy_id, idx, regval, 0); + return 0; +} + From patchwork Mon Jun 29 20:01:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andre Edich X-Patchwork-Id: 216907 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,UNWANTED_LANGUAGE_BODY autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1514AC433E0 for ; Mon, 29 Jun 2020 20:02:24 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D91A320672 for ; Mon, 29 Jun 2020 20:02:23 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=microchip.com header.i=@microchip.com header.b="A30kY/dn"; dkim=pass (1024-bit key) header.d=microchiptechnology.onmicrosoft.com header.i=@microchiptechnology.onmicrosoft.com header.b="F7bteOrZ" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388676AbgF2UCV (ORCPT ); Mon, 29 Jun 2020 16:02:21 -0400 Received: from esa1.microchip.iphmx.com ([68.232.147.91]:16407 "EHLO esa1.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731899AbgF2UCM (ORCPT ); Mon, 29 Jun 2020 16:02:12 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1593460932; x=1624996932; h=from:to:cc:subject:date:message-id:content-id: content-transfer-encoding:mime-version; bh=EB+APyaleRVmPJVAGCa5i+yCnTzlPa1QLxtKMqPwPJU=; b=A30kY/dncR1FRoTCBuF4rN26zeyGbf5lnvWu0tBRR45M3Jwl68rhrrjA l3IwfCQ6TMe7al2bhKyAn1Fv3BqxOaKbcP2jw4VRNRkZDPQYXRjyp668n t5S/koDdAMJnHprF6vw3ixs1vaHadirhW/WGrXv66sTCdekNrWqQ0OT4E ATA0dl3wf8Uh1I1SaKBypfxNF6xDKenmaNy56RHaITTV3ftSZenaN2/Fj tuS2jmunBB4wnmfO26+8avjDg/O3UpCdrTPwo6CWq9huFi+WpKEnnW3fm lJmCG88q6uyJN8Nlszhl2TXC+H7+OLKLgkn94kXFABs1rnrc2iF4Avrfz g==; IronPort-SDR: s2A854RC44Ng6FSMBB+VDmYLYbaKI8leO6uH5HlLjf8IdKHgJt4WOCU2fdna+fWCCFLZdTXgSN LLOeVyXPpXcT2cvKb6AP2HrsMrlzZgAFKK4Ewm1STF5+FBQ5FbntASeICNkGUQPIgVVN9Grv4+ m9BYzpP8SN47TNe1kCa7xWy/P8p8slaZ9K2IezOydBVkMFlnfLjzYAlh+ZoY/C5zpDHVBSVU+R jyB2DPTnNiCO5cM13y6jEf2qpze/H6L1mwy4qf+YRbRLjOcmBn5SMLFpMFbKwT4jwSKYPs8mPB FyQ= X-IronPort-AV: E=Sophos;i="5.75,295,1589266800"; d="scan'208";a="85542655" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa1.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 29 Jun 2020 13:01:53 -0700 Received: from chn-vm-ex02.mchp-main.com (10.10.85.144) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3; Mon, 29 Jun 2020 13:01:53 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.87.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3 via Frontend Transport; Mon, 29 Jun 2020 13:01:35 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Wsb+uyZ86sPf4VGj0ayDoXO+QBzSMDtOsy9kWYOf97Z1QeOKwt6OY4TXv83ENF3TJOBYk6kUGbQTeGwirEGDVPv2xdMedrha1Ry19qXXfz+jYJgnucsmv6EyqjlHhK83cqKGN3fi2wRDVfCYe5AyfFFVTmycA/r3n7ru6x9n+05Ro9doOly404YlU8L03490FVJu4eJTF54Zflbnv4kIeRG9YZkfNs/CsTvyg2QQDnQMvI4893KfxYCRSWbwKWrQYkUyLjM9a/wamT4uo3iJTt6/X6y6CNOneHgVpEQTwb+vdSFSnhFoWzM86y6xZCRAIIGex9zrx81npUxLc1T8RQ== 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=EB+APyaleRVmPJVAGCa5i+yCnTzlPa1QLxtKMqPwPJU=; b=bChGzZ8DIW8cUkAiBc1vRL1ZXGwVlvsRAt+D6+AgDAEChKiwHtE6y4ZAWz//29YUc5FTkLs0/aQVr/IWb5PLx5IrfZj9LJ7n9QktMuvKFi0u7OR2FEwehi75N4TfLEndJ82Dp+UdxVC+bxYDKzrvqJ+rN7MqU7O75kdKlti/PS+Fye/y1cUeZdg6IRtIdqECJjjpLKnqXBTzRES76LA96zwTQl9mN/civ5ZGpruWDwfQ7YyGQ6WWLIxT3GhOhsHco9YSm5ytwhSwqu7/aq0HR0ZApfXCjezMr2EAvTCu/aTRKCxNnfPu7jIkvJvckkDSTxfBVpYOd9/wKYEVEAw4kA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microchip.com; dmarc=pass action=none header.from=microchip.com; dkim=pass header.d=microchip.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microchiptechnology.onmicrosoft.com; s=selector2-microchiptechnology-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=EB+APyaleRVmPJVAGCa5i+yCnTzlPa1QLxtKMqPwPJU=; b=F7bteOrZ2hJ3bWyJEIXb+NtXZ+NnL4TPpKe4QLHadup23lJcgMbNf8AFdHWOPDMveujl6HcPAPbmD2EnMQjn+XH7uAIcM3JuPd0rXtMtOx8rPjrUfLHJ3QOQVI5R3xv29lL6b7WAvFjvfHVKn1nqWESYBBjBWI9TN1xj4fSYkvE= Received: from BY5PR11MB3927.namprd11.prod.outlook.com (2603:10b6:a03:186::21) by BYAPR11MB2792.namprd11.prod.outlook.com (2603:10b6:a02:c3::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3131.24; Mon, 29 Jun 2020 20:01:50 +0000 Received: from BY5PR11MB3927.namprd11.prod.outlook.com ([fe80::5993:d0ac:9849:d311]) by BY5PR11MB3927.namprd11.prod.outlook.com ([fe80::5993:d0ac:9849:d311%7]) with mapi id 15.20.3131.027; Mon, 29 Jun 2020 20:01:50 +0000 From: To: , , CC: Subject: [PATCH net-next 5/8] smsc95xx: use PAL framework read/write functions Thread-Topic: [PATCH net-next 5/8] smsc95xx: use PAL framework read/write functions Thread-Index: AQHWTlAgCd9g40loA0yzf+9zUiDr1w== Date: Mon, 29 Jun 2020 20:01:50 +0000 Message-ID: <1042a3a5a592b489ca803fadc5ddbb8d7b8ad82f.camel@microchip.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.36.3 authentication-results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=microchip.com; x-originating-ip: [93.202.178.57] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 7586f594-51c6-44c6-5769-08d81c67433a x-ms-traffictypediagnostic: BYAPR11MB2792: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-bypassexternaltag: True x-ms-oob-tlc-oobclassifiers: OLM:255; x-forefront-prvs: 044968D9E1 x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: OcoYKK2GI303+cC3nSo/Da9ilPORpL8LTpNpjkrFudZhWvWR8a5dTYxLcP+I5kScna9+S2QtAobQrAn4R/Pcg3oc0RvUlatPyFaEkSByU1EJ472j0IAGLWm9Q73adVPgIKkeP/BVo4+DzDifQZDB+QpAjY2r+HbsIiAiXDhfhB7x1in4NTfqNgl2ens9VSFK8j9jLdIkDlzggEPVdeoEyHNKTG61HfIzY95U1x4yJM3TV/KarCdWH4Egsd3nvsoZIl0CZoOQr034QVT9/C8Bzo0QXhLNKFq8PADrltmlYNqvclKso6/+65mmMRm6Kdqy8cubS/bINvQ+lk7bhGieuw== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BY5PR11MB3927.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(366004)(376002)(346002)(396003)(136003)(39860400002)(6506007)(4326008)(110136005)(478600001)(2616005)(2906002)(8676002)(316002)(8936002)(36756003)(6512007)(186003)(86362001)(83380400001)(71200400001)(26005)(6486002)(76116006)(107886003)(91956017)(5660300002)(66446008)(64756008)(66946007)(66556008)(66476007); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: KHOvojJl8F2X6GAhrSfbWfGpMC2MkZrfQFdMIyz6afxwood+nSGIfgwViXc+U5eQs6Kc9enF+sO1wZNRFaaPedwWRotapL5bWQNP3KkyGLk2kx/qxZAwbmoiacKApF+m57ZimxNXvlbEMgCvskC8yCYYUs6BUjYHxuYue2yLTWrHbAk8gvwkM68Uon2IRxEGlnVi+njRcegQkSTKYWj9Pq4yEIYfT+k5rtmMniklTXqoi+5FgA+ITFKrELysmbqMa79iCDNVCW5gJfXFvMHlejcD5fZpHWuHulTEIGzRQKdGf9Y9uF+zeNHGPl0Juc8RmTRCRF2R76s0H52rx3baI6HuPMqWPpEerv3NqZalh0XPpNlbBcVJoGtt2guGgjl/jfKHmQ91xoL313cvPZDPc5t09n+L6bs6Xt0LTCGiwFoPd0nVAzvGOiSovTAwetd0wy1sv6hODG86QVvQYCtmX0DFAAFBJSiP9x8QapWw1odTB7npyKWU5RsQ2xdl1hva Content-ID: <405BC85156EFD644B6F786613ED5185A@namprd11.prod.outlook.com> MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BY5PR11MB3927.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7586f594-51c6-44c6-5769-08d81c67433a X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Jun 2020 20:01:50.5932 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3f4057f3-b418-4d4e-ba84-d55b4e897d88 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: mvx7zjApsWCZ/7ND9BlNlx8ZeXM9TjA6E9k8OGzbUyjCAAmvYGo+yYjZc1MXD9FCr2cQV55FNjXvoyb+D9zrTw8SX4hkgEQJX6XeF+ktR3w= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR11MB2792 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Use functions phy_read and phy_write instead of smsc95xx_mdio_read and smsc95xx_mdio_write respectively. Signed-off-by: Andre Edich --- drivers/net/usb/smsc95xx.c | 33 +++++++++++++-------------------- 1 file changed, 13 insertions(+), 20 deletions(-) "speed: %u duplex: %d lcladv: %04x rmtadv: %04x\n", @@ -753,10 +753,11 @@ static int smsc95xx_ethtool_set_wol(struct net_device *net, static int get_mdix_status(struct net_device *net) { struct usbnet *dev = netdev_priv(net); + struct smsc95xx_priv *pdata = (struct smsc95xx_priv *)(dev- > data[0]); u32 val; int buf; - buf = smsc95xx_mdio_read(dev->net, dev->mii.phy_id, SPECIAL_CTRL_STS); + buf = phy_read(pdata->phydev, SPECIAL_CTRL_STS); if (buf & SPECIAL_CTRL_STS_OVRRD_AMDIX_) { if (buf & SPECIAL_CTRL_STS_AMDIX_ENABLE_) return ETH_TP_MDI_AUTO; @@ -782,39 +783,31 @@ static void set_mdix_status(struct net_device *net, __u8 mdix_ctrl) (pdata->chip_id == ID_REV_CHIP_ID_89530_) || (pdata->chip_id == ID_REV_CHIP_ID_9730_)) { /* Extend Manual AutoMDIX timer for 9500A/9500Ai */ - buf = smsc95xx_mdio_read(dev->net, dev->mii.phy_id, - PHY_EDPD_CONFIG); + buf = phy_read(pdata->phydev, PHY_EDPD_CONFIG); buf |= PHY_EDPD_CONFIG_EXT_CROSSOVER_; - smsc95xx_mdio_write(dev->net, dev->mii.phy_id, - PHY_EDPD_CONFIG, buf); + phy_write(pdata->phydev, PHY_EDPD_CONFIG, buf); } if (mdix_ctrl == ETH_TP_MDI) { - buf = smsc95xx_mdio_read(dev->net, dev->mii.phy_id, - SPECIAL_CTRL_STS); + buf = phy_read(pdata->phydev, SPECIAL_CTRL_STS); buf |= SPECIAL_CTRL_STS_OVRRD_AMDIX_; buf &= ~(SPECIAL_CTRL_STS_AMDIX_ENABLE_ | SPECIAL_CTRL_STS_AMDIX_STATE_); - smsc95xx_mdio_write(dev->net, dev->mii.phy_id, - SPECIAL_CTRL_STS, buf); + phy_write(pdata->phydev, SPECIAL_CTRL_STS, buf); } else if (mdix_ctrl == ETH_TP_MDI_X) { - buf = smsc95xx_mdio_read(dev->net, dev->mii.phy_id, - SPECIAL_CTRL_STS); + buf = phy_read(pdata->phydev, SPECIAL_CTRL_STS); buf |= SPECIAL_CTRL_STS_OVRRD_AMDIX_; buf &= ~(SPECIAL_CTRL_STS_AMDIX_ENABLE_ | SPECIAL_CTRL_STS_AMDIX_STATE_); buf |= SPECIAL_CTRL_STS_AMDIX_STATE_; - smsc95xx_mdio_write(dev->net, dev->mii.phy_id, - SPECIAL_CTRL_STS, buf); + phy_write(pdata->phydev, SPECIAL_CTRL_STS, buf); } else if (mdix_ctrl == ETH_TP_MDI_AUTO) { - buf = smsc95xx_mdio_read(dev->net, dev->mii.phy_id, - SPECIAL_CTRL_STS); + buf = phy_read(pdata->phydev, SPECIAL_CTRL_STS); buf &= ~SPECIAL_CTRL_STS_OVRRD_AMDIX_; buf &= ~(SPECIAL_CTRL_STS_AMDIX_ENABLE_ | SPECIAL_CTRL_STS_AMDIX_STATE_); buf |= SPECIAL_CTRL_STS_AMDIX_ENABLE_; - smsc95xx_mdio_write(dev->net, dev->mii.phy_id, - SPECIAL_CTRL_STS, buf); + phy_write(pdata->phydev, SPECIAL_CTRL_STS, buf); } pdata->mdix_ctrl = mdix_ctrl; } diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c index 3b8f7e439f44..11af5d5ece60 100644 --- a/drivers/net/usb/smsc95xx.c +++ b/drivers/net/usb/smsc95xx.c @@ -574,7 +574,7 @@ static int smsc95xx_link_reset(struct usbnet *dev) int ret; /* clear interrupt status */ - ret = smsc95xx_mdio_read(dev->net, mii->phy_id, PHY_INT_SRC); + ret = phy_read(pdata->phydev, PHY_INT_SRC); if (ret < 0) return ret; @@ -584,8 +584,8 @@ static int smsc95xx_link_reset(struct usbnet *dev) mii_check_media(mii, 1, 1); mii_ethtool_gset(&dev->mii, &ecmd); - lcladv = smsc95xx_mdio_read(dev->net, mii->phy_id, MII_ADVERTISE); - rmtadv = smsc95xx_mdio_read(dev->net, mii->phy_id, MII_LPA); + lcladv = phy_read(pdata->phydev, MII_ADVERTISE); + rmtadv = phy_read(pdata->phydev, MII_LPA); netif_dbg(dev, link, dev->net, From patchwork Mon Jun 29 20:02:09 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andre Edich X-Patchwork-Id: 216908 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 550CDC433DF for ; Mon, 29 Jun 2020 20:02:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 219E620675 for ; Mon, 29 Jun 2020 20:02:18 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=microchip.com header.i=@microchip.com header.b="HZaH6hQh"; dkim=pass (1024-bit key) header.d=microchiptechnology.onmicrosoft.com header.i=@microchiptechnology.onmicrosoft.com header.b="U6KBf8BJ" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388585AbgF2UCR (ORCPT ); Mon, 29 Jun 2020 16:02:17 -0400 Received: from esa2.microchip.iphmx.com ([68.232.149.84]:40012 "EHLO esa2.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388349AbgF2UCO (ORCPT ); Mon, 29 Jun 2020 16:02:14 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1593460933; x=1624996933; h=from:to:cc:subject:date:message-id:content-id: content-transfer-encoding:mime-version; bh=AOD/H1vpG6XSIqc8RUmsbxQn9Jt3sf/cNjdYO4ZDcTM=; b=HZaH6hQhaKjFcmRd11KvIYlzIoEb55gQmDOTnpzSPSXtWFlHZUkeI07T M81x/353GQEvmi2eAMr3kUswLhrRHv7WQGrXiy/nztnwPvMDzYt+u710N J7Avyq+Bc8fcTNCrbf8O+JsVsC+uJTiIEviUK6onpgH3YHmkgJZJFWQme pqPdRYZkOvUDku9zw8ujh6aW7p8I4j9vpNiwSZrnbfI52ttzcN433RMzg sSXt78MHkk/IfG4tW3LkzKQd7Ro80Clond++i1F/JcOC6ubbPjfVa+UIu 8++sy8hfMboGA8xgxmJbmdhIcOnd0A36b9HdFXqmSpTb9vvfXrzgd9Rp/ A==; IronPort-SDR: T5vBc7QBfOK+A9citRxp6bWP4+Hn+G3se8cwWe55d0pjShL2kfsXFNetZqO76frsKRCCd344jt H9J7N5k/vb4iQPoehhTrHrd644OuhZU9EWuzyo65LbU2pEZQZhToa8JjMh6gCyFt39VtpyiZLo l+frujW/bZ2smHINAlzK+1EClaDHYc9gmJeTT5+Xn139bKj4HtjHk/qMI+2DS+yv7/FVrtMeu/ RbddGC3h5jEaiWoaIyREqQz0Nva0GnbakThos3yhe9UQLf0pPR/PqesUyjivxVVAKqh0AkdOyz 2uk= X-IronPort-AV: E=Sophos;i="5.75,295,1589266800"; d="scan'208";a="80128691" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa2.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 29 Jun 2020 13:02:12 -0700 Received: from chn-vm-ex04.mchp-main.com (10.10.85.152) by chn-vm-ex01.mchp-main.com (10.10.85.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3; Mon, 29 Jun 2020 13:01:55 -0700 Received: from NAM02-BL2-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.87.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3 via Frontend Transport; Mon, 29 Jun 2020 13:02:12 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=j83zFoXOg+YBGxVY8K6hmr7Jo4qEfKZRPwa8aSS32cFMTRFFwqwM8avuQog2+Rxsz+nfwQ6vYpIRcsSIVjx9k+ydqxFUDDIqjwG4etj3MDKg2mfzpsPVBR9E7XoVZR11xZ8LPWgcYZ2TsbMnW11I4C52DMQNJvCOngzxJEQLBFEB8kh7e5/q87rMLHB4HiLaZXp7dlhLhXck3jwYMdmLpxgZuynT3MNRNbHVG1I1vAB+9EwK1RwACHK4SRbgmMIY+WfZGaAMnb46sDkAVJEFhDQ32pWzsqIRXH2RhabiEDfAZQ9/KPN0maAnD+8ngIsBNTC0rcGCChIDRuvy4lg88g== 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=AOD/H1vpG6XSIqc8RUmsbxQn9Jt3sf/cNjdYO4ZDcTM=; b=fcbgpxRTvCaV0OlEBHw9rhtV1E28yhk7lbDhkVY86xaxKnxFs0yM9syRcskuj6gyunuUXEiQ/zpgscuVQY28kH8nMIrtpLz2efJLLB2FwV7lYn6MHNxxypUhPp+nVPcNgIYM2dLxBN3OvknaQKSxZZXM3EQa8IIQKbxtPt4aG48jQ/kq+0Xk+JqamP0dUUAGzsGeNGbbBYM9LzIZjzjJn8MdpfFJBC6pte2FWcdvQQoRh1IaTbBeh05XIsJKbsCCmRUlcVY8o5K0mI5EbXydldk4Juy3Pj4pq2lL5XRUsxBFc/nEtzSCi+4jApOsOIOzkJcU8by+ttx5q8oI4B7C4Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microchip.com; dmarc=pass action=none header.from=microchip.com; dkim=pass header.d=microchip.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microchiptechnology.onmicrosoft.com; s=selector2-microchiptechnology-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=AOD/H1vpG6XSIqc8RUmsbxQn9Jt3sf/cNjdYO4ZDcTM=; b=U6KBf8BJaq/857VttOw8M2JPJ4HXVaVDnNsLoeSGiVNXRTnhUtkpKLH4kIN9WwZgSZ3X13t2VemqojThPLLovuTxokYNEs7Ij0XyGWJ31gu474nSJJTDDMvg3aFJUpzktNXvEzXwFyAHou217wLYVtvs9uObx6m5M2Ma7jvC+28= Received: from BY5PR11MB3927.namprd11.prod.outlook.com (2603:10b6:a03:186::21) by BYAPR11MB3045.namprd11.prod.outlook.com (2603:10b6:a03:88::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3131.26; Mon, 29 Jun 2020 20:02:10 +0000 Received: from BY5PR11MB3927.namprd11.prod.outlook.com ([fe80::5993:d0ac:9849:d311]) by BY5PR11MB3927.namprd11.prod.outlook.com ([fe80::5993:d0ac:9849:d311%7]) with mapi id 15.20.3131.027; Mon, 29 Jun 2020 20:02:10 +0000 From: To: , , CC: Subject: [PATCH net-next 7/8] smsc95xx: use PHY framework instead of MII library Thread-Topic: [PATCH net-next 7/8] smsc95xx: use PHY framework instead of MII library Thread-Index: AQHWTlAsTF1B5G+7AkGTORsAdYQICQ== Date: Mon, 29 Jun 2020 20:02:09 +0000 Message-ID: <1eacb44f2585c21a259f7132e0d860a0ed021550.camel@microchip.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.36.3 authentication-results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=microchip.com; x-originating-ip: [93.202.178.57] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 2d119e1c-608c-46a7-caf8-08d81c674eb9 x-ms-traffictypediagnostic: BYAPR11MB3045: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-bypassexternaltag: True x-ms-oob-tlc-oobclassifiers: OLM:6108; x-forefront-prvs: 044968D9E1 x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: UK9kjBigl+7qiWapmt/B5e5mh8H3J4E+P7f4HnHaJgu4ot5TeAP2ZDwov+rh2WE5fV9WbBnDh/kNtVGDJ13LXry8uOQjP/hghisZJWAnAyABOtlve52HsL1SdMx+MtXbceE26jBJRlxULOkoqqaH7PLLMYrRjx5HZ1S7nb47iYDDBwdVcJY9rkO6u+taeupla0zudzqqZJdHEY/NabGcDoZLiZ8fqEero1BbgNcm4Y2kXEBHQdJrmu9tf8avwetslZ+K83GQc+q8POfIfPjNPc9mrmDtOXR0STQim5YDGuzQGiIeP0GJkYJn91B0xYARG6/9d/AJ4cdwd6F1qHNc3g== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BY5PR11MB3927.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(39860400002)(396003)(346002)(376002)(366004)(136003)(110136005)(478600001)(36756003)(8936002)(5660300002)(107886003)(2616005)(6512007)(316002)(66556008)(64756008)(66446008)(86362001)(71200400001)(66946007)(66476007)(91956017)(76116006)(4326008)(8676002)(6486002)(6506007)(26005)(186003)(83380400001)(2906002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: Nl3Ci8ky8ROJkZZk0fC7KDx/Ekxa4YUNTFV2uJFPMXjFHVjQPkzSNGa67zdovrib5Rucgwb5du41BqTi+cEf8tBAQazzB0i2AjllyyMrKVFh/pjCgKu/w0xvBTrqNy3XNZAB9iRPS2tARNZe4vDcG3iZ0TS/nEhnZViPeBDNuLft7d/e4b26ZPyg9a+NWVUdibP5Zpg/agG+xHk7aeCRybHXTi46Z+ppnLcFnDT4I4M98lMkBMMu9qdUiXdDI4jWnzzIwExASG8Eshw44kKmhmC1WOHWSZTvYa8r5h7x/rYLxuK4v6cAn9iWsk0FAgPClHZHMaJYW6un5hcwet3K1MbqcoEHP0dlDcuMnIKx3xGh9/hKMotVPSnGw/jm967UQJBgot/qVDLkKj8AwbjojMNRMGIO98LyJFM1nloqm6vbQrj6cA/7XcduBokvnuYJOR+PzAduLOwZTI0MHSiYJkOzMsoq00DkkB++M0xraB/kqDWCeP4osfn7IPiJcQmd Content-ID: <43EC9A3058136F438F9D73BEDC270A5E@namprd11.prod.outlook.com> MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BY5PR11MB3927.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2d119e1c-608c-46a7-caf8-08d81c674eb9 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Jun 2020 20:02:09.9054 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3f4057f3-b418-4d4e-ba84-d55b4e897d88 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: FHpEM6KIKk373GZ/w2Q1z5A9DltKUO7REdahL6JFS0pC3cJTOqwsFeXpKR9Q24hd6ZjSE/+bvqpq3S/s1QcmLwnmp1jAdPzbmJaYkZqd4Rw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR11MB3045 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Since the PHY framework is used anyway, replace the rest of the calls to the MII library, including those from the USB Network driver infrastructure, by the calls to the PHY framework. Signed-off-by: Andre Edich --- drivers/net/usb/smsc95xx.c | 92 +++++++++++++++----------------------- 1 file changed, 36 insertions(+), 56 deletions(-) u32 chip_id; u32 mac_cr; @@ -173,10 +176,9 @@ static int __must_check __smsc95xx_phy_wait_not_busy(struct usbnet *dev, return -EIO; } -static int __smsc95xx_mdio_read(struct net_device *netdev, int phy_id, int idx, +static int __smsc95xx_mdio_read(struct usbnet *dev, int phy_id, int idx, int in_pm) { - struct usbnet *dev = netdev_priv(netdev); u32 val, addr; int ret; @@ -190,8 +192,8 @@ static int __smsc95xx_mdio_read(struct net_device *netdev, int phy_id, int idx, } /* set the address, index & direction (read from PHY) */ - phy_id &= dev->mii.phy_id_mask; - idx &= dev->mii.reg_num_mask; + phy_id &= PHY_ID_MASK; + idx &= REG_NUM_MASK; addr = (phy_id << 11) | (idx << 6) | MII_READ_ | MII_BUSY_; ret = __smsc95xx_write_reg(dev, MII_ADDR, addr, in_pm); if (ret < 0) { @@ -218,10 +220,9 @@ static int __smsc95xx_mdio_read(struct net_device *netdev, int phy_id, int idx, return ret; } -static void __smsc95xx_mdio_write(struct net_device *netdev, int phy_id, +static void __smsc95xx_mdio_write(struct usbnet *dev, int phy_id, int idx, int regval, int in_pm) { - struct usbnet *dev = netdev_priv(netdev); u32 val, addr; int ret; @@ -242,8 +243,8 @@ static void __smsc95xx_mdio_write(struct net_device *netdev, int phy_id, } /* set the address, index & direction (write to PHY) */ - phy_id &= dev->mii.phy_id_mask; - idx &= dev->mii.reg_num_mask; + phy_id &= PHY_ID_MASK; + idx &= REG_NUM_MASK; addr = (phy_id << 11) | (idx << 6) | MII_WRITE_ | MII_BUSY_; ret = __smsc95xx_write_reg(dev, MII_ADDR, addr, in_pm); if (ret < 0) { @@ -263,34 +264,23 @@ static void __smsc95xx_mdio_write(struct net_device *netdev, int phy_id, static int smsc95xx_mdio_read_nopm(struct usbnet *dev, int idx) { - struct mii_if_info *mii = &dev->mii; + struct smsc95xx_priv *pdata = dev->driver_priv; - return __smsc95xx_mdio_read(dev->net, mii->phy_id, idx, 1); + return __smsc95xx_mdio_read(dev, pdata->phydev->mdio.addr, idx, 1); } static void smsc95xx_mdio_write_nopm(struct usbnet *dev, int idx, int regval) { - struct mii_if_info *mii = &dev->mii; - - __smsc95xx_mdio_write(dev->net, mii->phy_id, idx, regval, 1); -} - -static int smsc95xx_mdio_read(struct net_device *netdev, int phy_id, int idx) -{ - return __smsc95xx_mdio_read(netdev, phy_id, idx, 0); -} + struct smsc95xx_priv *pdata = dev->driver_priv; -static void smsc95xx_mdio_write(struct net_device *netdev, int phy_id, int idx, - int regval) -{ - __smsc95xx_mdio_write(netdev, phy_id, idx, regval, 0); + __smsc95xx_mdio_write(dev, pdata->phydev->mdio.addr, idx, regval, 1); } static int smsc95xx_mdiobus_read(struct mii_bus *bus, int phy_id, int idx) { struct usbnet *dev = bus->priv; - return __smsc95xx_mdio_read(dev->net, phy_id, idx, 0); + return __smsc95xx_mdio_read(dev, phy_id, idx, 0); } static int smsc95xx_mdiobus_write(struct mii_bus *bus, int phy_id, int idx, @@ -298,7 +288,7 @@ static int smsc95xx_mdiobus_write(struct mii_bus *bus, int phy_id, int idx, { struct usbnet *dev = bus->priv; - __smsc95xx_mdio_write(dev->net, phy_id, idx, regval, 0); + __smsc95xx_mdio_write(dev, phy_id, idx, regval, 0); return 0; } @@ -569,8 +559,7 @@ static int smsc95xx_phy_update_flowcontrol(struct usbnet *dev, u8 duplex, static int smsc95xx_link_reset(struct usbnet *dev) { struct smsc95xx_priv *pdata = (struct smsc95xx_priv *)(dev- > data[0]); - struct mii_if_info *mii = &dev->mii; - struct ethtool_cmd ecmd = { .cmd = ETHTOOL_GSET }; + struct ethtool_link_ksettings cmd; unsigned long flags; u16 lcladv, rmtadv; int ret; @@ -584,17 +573,16 @@ static int smsc95xx_link_reset(struct usbnet *dev) if (ret < 0) return ret; - mii_check_media(mii, 1, 1); - mii_ethtool_gset(&dev->mii, &ecmd); + phy_ethtool_ksettings_get(pdata->phydev, &cmd); lcladv = phy_read(pdata->phydev, MII_ADVERTISE); rmtadv = phy_read(pdata->phydev, MII_LPA); netif_dbg(dev, link, dev->net, "speed: %u duplex: %d lcladv: %04x rmtadv: %04x\n", - ethtool_cmd_speed(&ecmd), ecmd.duplex, lcladv, rmtadv); + cmd.base.speed, cmd.base.duplex, lcladv, rmtadv); spin_lock_irqsave(&pdata->mac_cr_lock, flags); - if (ecmd.duplex != DUPLEX_FULL) { + if (cmd.base.duplex != DUPLEX_FULL) { pdata->mac_cr &= ~MAC_CR_FDPX_; pdata->mac_cr |= MAC_CR_RCVOWN_; } else { @@ -607,7 +595,8 @@ static int smsc95xx_link_reset(struct usbnet *dev) if (ret < 0) return ret; - ret = smsc95xx_phy_update_flowcontrol(dev, ecmd.duplex, lcladv, rmtadv); + ret = smsc95xx_phy_update_flowcontrol(dev, cmd.base.duplex, lcladv, + rmtadv); if (ret < 0) netdev_warn(dev->net, "Error updating PHY flow control\n"); @@ -780,6 +769,9 @@ static void set_mdix_status(struct net_device *net, __u8 mdix_ctrl) struct smsc95xx_priv *pdata = (struct smsc95xx_priv *)(dev- > data[0]); int buf; + if (pdata->mdix_ctrl == mdix_ctrl) + return; + if ((pdata->chip_id == ID_REV_CHIP_ID_9500A_) || (pdata->chip_id == ID_REV_CHIP_ID_9530_) || (pdata->chip_id == ID_REV_CHIP_ID_89530_) || @@ -821,7 +813,7 @@ static int smsc95xx_get_link_ksettings(struct net_device *net, struct smsc95xx_priv *pdata = (struct smsc95xx_priv *)(dev- > data[0]); int retval; - retval = usbnet_get_link_ksettings(net, cmd); + retval = phy_ethtool_get_link_ksettings(net, cmd); cmd->base.eth_tp_mdix = pdata->mdix_ctrl; cmd->base.eth_tp_mdix_ctrl = pdata->mdix_ctrl; @@ -832,21 +824,19 @@ static int smsc95xx_get_link_ksettings(struct net_device *net, static int smsc95xx_set_link_ksettings(struct net_device *net, const struct ethtool_link_ksettings *cmd) { - struct usbnet *dev = netdev_priv(net); - struct smsc95xx_priv *pdata = (struct smsc95xx_priv *)(dev- > data[0]); - int retval; - - if (pdata->mdix_ctrl != cmd->base.eth_tp_mdix_ctrl) - set_mdix_status(net, cmd->base.eth_tp_mdix_ctrl); - - retval = usbnet_set_link_ksettings(net, cmd); + set_mdix_status(net, cmd->base.eth_tp_mdix_ctrl); + return phy_ethtool_set_link_ksettings(net, cmd); +} - return retval; +static u32 smsc95xx_get_link(struct net_device *net) +{ + phy_read_status(net->phydev); + return net->phydev->link; } static const struct ethtool_ops smsc95xx_ethtool_ops = { - .get_link = usbnet_get_link, - .nway_reset = usbnet_nway_reset, + .get_link = smsc95xx_get_link, + .nway_reset = phy_ethtool_nway_reset, .get_drvinfo = usbnet_get_drvinfo, .get_msglevel = usbnet_get_msglevel, .set_msglevel = usbnet_set_msglevel, @@ -864,12 +854,10 @@ static const struct ethtool_ops smsc95xx_ethtool_ops = { static int smsc95xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd) { - struct usbnet *dev = netdev_priv(netdev); - if (!netif_running(netdev)) return -EINVAL; - return generic_mii_ioctl(&dev->mii, if_mii(rq), cmd, NULL); + return phy_mii_ioctl(netdev->phydev, rq, cmd); } static void smsc95xx_init_mac_address(struct usbnet *dev) @@ -1179,7 +1167,7 @@ static int smsc95xx_start_phy(struct usbnet *dev) phy_attached_info(net->phydev); phy_start(net->phydev); - mii_nway_restart(&dev->mii); + phy_start_aneg(net->phydev); return 0; } @@ -1268,9 +1256,6 @@ static int smsc95xx_bind(struct usbnet *dev, struct usb_interface *intf) pdata->mdiobus->write = smsc95xx_mdiobus_write; pdata->mdiobus->name = "smsc95xx-mdiobus"; - dev->mii.phy_id_mask = 0x1f; - dev->mii.reg_num_mask = 0x1f; - snprintf(pdata->mdiobus->id, ARRAY_SIZE(pdata->mdiobus->id), "usb-%03d:%03d", dev->udev->bus->busnum, dev->udev- > devnum); @@ -1287,11 +1272,6 @@ static int smsc95xx_bind(struct usbnet *dev, struct usb_interface *intf) goto unregister_mdio; } - dev->mii.dev = dev->net; - dev->mii.mdio_read = smsc95xx_mdio_read; - dev->mii.mdio_write = smsc95xx_mdio_write; - dev->mii.phy_id = pdata->phydev->mdio.addr; - /* detect device revision as different features may be available */ ret = smsc95xx_read_reg(dev, ID_REV, &val); if (ret < 0) diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c index bcdd7e726f5b..06fcc2518305 100644 --- a/drivers/net/usb/smsc95xx.c +++ b/drivers/net/usb/smsc95xx.c @@ -51,6 +51,9 @@ #define SUSPEND_ALLMODES (SUSPEND_SUSPEND0 | SUSPEND_SUSPEND1 | \ SUSPEND_SUSPEND2 | SUSPEND_SUSPEND3) +#define PHY_ID_MASK 0x1f +#define REG_NUM_MASK 0x1f + struct smsc95xx_priv {