From patchwork Fri Jan 12 22:17:34 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heiner Kallweit X-Patchwork-Id: 860218 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) 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; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="KRs8njMy"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zJHDj0Gxsz9s83 for ; Sat, 13 Jan 2018 09:17:41 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965265AbeALWRi (ORCPT ); Fri, 12 Jan 2018 17:17:38 -0500 Received: from mail-wm0-f67.google.com ([74.125.82.67]:41108 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S965156AbeALWRi (ORCPT ); Fri, 12 Jan 2018 17:17:38 -0500 Received: by mail-wm0-f67.google.com with SMTP id g75so14931055wme.0 for ; Fri, 12 Jan 2018 14:17:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:subject:to:cc:message-id:date:user-agent:mime-version :content-transfer-encoding; bh=fHGV7J7y6BjprEE/wYPzI/VsbWEI6oZChWVqAAMVGhg=; b=KRs8njMyukdhuMZKEl9W/o9r27uLjZ7+XPXW6y/CoHiJxUIsFlVKIt4LlauXixgEvh vopX83n68QFuFpcSxgO7CqpagTkKyNajUnD9ch0YGpzy0VSTS/ahIDxrZfsms8z6KlaA z7FbM/jtkZYw2+YKhRYpcUU7VAGcchmyLryyEwVJVGur3WAR9vZEyRYElv7hvRBw6MEh KH1CKws2amD3MAmJ7zq0Mj54xZcXl7C3TNvD+dNDVlJ9T1mCjPXEm2f3y/qBge61Dj1H gwCeaLlpJ50yz2lkaHCP5tZgv1SDD7iwdkgSwelCNCtOghkrz0d2KM5SY1CthORHYWZF DodA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:subject:to:cc:message-id:date:user-agent :mime-version:content-transfer-encoding; bh=fHGV7J7y6BjprEE/wYPzI/VsbWEI6oZChWVqAAMVGhg=; b=jPxFTqDCb/dwPThdiumqgwmD89sh0eIQxGz44ERz1yenlyAqjeNWjshGbQEK0ONhzk tJ5u1GzQ36N4vkB4uxUjfiwaWsvn5HjuOv56QjI5MHvvHGolytbGU8pj9xim4IXLO4CI ORKUM2AuLHGOZ38x56Z//t3VJGIV9L6vbKzw/s6+OZthKIJ7KPENslQtT5NRXkP/n3Iy L8T5DyFLp6FS2oA4Vnz8133Ku1v/bLN6uC1zPDQK5Ytm6jbFDTmqYjxymHBvH78MvEPJ 71tbh5mEIO1A9yEMYBWssMUkfHeDbozbtUoxTORyXD9cEwMnGLLFqYsVc80kzZ73m9ql tNzg== X-Gm-Message-State: AKwxytfNC1L3j9hVQuFiOp0NqzqaDOC5iqD/UgvCBtqd5CagKpDoj3SO r8sal5WykJGdTe8DS65WOuhmFg== X-Google-Smtp-Source: ACJfBouR5bIvx+fvXgvi3l8oz+izHi0q/XsASGaYEDfLYRQBOCeL/7+uChNhZxu+Y1iz9Y8jwn0kYQ== X-Received: by 10.80.165.87 with SMTP id z23mr10369286edb.300.1515795456499; Fri, 12 Jan 2018 14:17:36 -0800 (PST) Received: from ?IPv6:2003:ea:8bce:9d00:3c12:6312:4c35:ba7? (p200300EA8BCE9D003C1263124C350BA7.dip0.t-ipconnect.de. [2003:ea:8bce:9d00:3c12:6312:4c35:ba7]) by smtp.googlemail.com with ESMTPSA id k11sm5866643eda.22.2018.01.12.14.17.35 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 12 Jan 2018 14:17:35 -0800 (PST) From: Heiner Kallweit Subject: [PATCH v2] phy: realtek: use new helpers for paged register access To: Andrew Lunn , Florian Fainelli Cc: "netdev@vger.kernel.org" Message-ID: <901a2f2e-5033-f5b3-bb03-eca0ca792024@gmail.com> Date: Fri, 12 Jan 2018 23:17:34 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Make use of the new helpers for paged register access. Signed-off-by: Heiner Kallweit --- v2: - use accessor versions w/o locking in the read/write_page callbacks --- drivers/net/phy/realtek.c | 59 +++++++++++------------------------------------ 1 file changed, 14 insertions(+), 45 deletions(-) diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c index 7c1bf688d..887bad07a 100644 --- a/drivers/net/phy/realtek.c +++ b/drivers/net/phy/realtek.c @@ -41,37 +41,14 @@ MODULE_DESCRIPTION("Realtek PHY driver"); MODULE_AUTHOR("Johnson Leung"); MODULE_LICENSE("GPL"); -static int rtl8211x_page_read(struct phy_device *phydev, u16 page, u16 address) +static int rtl821x_read_page(struct phy_device *phydev) { - int ret; - - ret = phy_write(phydev, RTL821x_PAGE_SELECT, page); - if (ret) - return ret; - - ret = phy_read(phydev, address); - - /* restore to default page 0 */ - phy_write(phydev, RTL821x_PAGE_SELECT, 0x0); - - return ret; + return __phy_read(phydev, RTL821x_PAGE_SELECT); } -static int rtl8211x_page_write(struct phy_device *phydev, u16 page, - u16 address, u16 val) +static int rtl821x_write_page(struct phy_device *phydev, int page) { - int ret; - - ret = phy_write(phydev, RTL821x_PAGE_SELECT, page); - if (ret) - return ret; - - ret = phy_write(phydev, address, val); - - /* restore to default page 0 */ - phy_write(phydev, RTL821x_PAGE_SELECT, 0x0); - - return ret; + return __phy_write(phydev, RTL821x_PAGE_SELECT, page); } static int rtl8201_ack_interrupt(struct phy_device *phydev) @@ -96,7 +73,7 @@ static int rtl8211f_ack_interrupt(struct phy_device *phydev) { int err; - err = rtl8211x_page_read(phydev, 0xa43, RTL8211F_INSR); + err = phy_read_paged(phydev, 0xa43, RTL8211F_INSR); return (err < 0) ? err : 0; } @@ -110,7 +87,7 @@ static int rtl8201_config_intr(struct phy_device *phydev) else val = 0; - return rtl8211x_page_write(phydev, 0x7, RTL8201F_IER, val); + return phy_write_paged(phydev, 0x7, RTL8201F_IER, val); } static int rtl8211b_config_intr(struct phy_device *phydev) @@ -148,36 +125,24 @@ static int rtl8211f_config_intr(struct phy_device *phydev) else val = 0; - return rtl8211x_page_write(phydev, 0xa42, RTL821x_INER, val); + return phy_write_paged(phydev, 0xa42, RTL821x_INER, val); } static int rtl8211f_config_init(struct phy_device *phydev) { int ret; - u16 val; + u16 val = 0; ret = genphy_config_init(phydev); if (ret < 0) return ret; - ret = rtl8211x_page_read(phydev, 0xd08, 0x11); - if (ret < 0) - return ret; - - val = ret & 0xffff; - /* enable TX-delay for rgmii-id and rgmii-txid, otherwise disable it */ if (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID || phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID) - val |= RTL8211F_TX_DELAY; - else - val &= ~RTL8211F_TX_DELAY; - - ret = rtl8211x_page_write(phydev, 0xd08, 0x11, val); - if (ret) - return ret; + val = RTL8211F_TX_DELAY; - return 0; + return phy_modify_paged(phydev, 0xd08, 0x11, RTL8211F_TX_DELAY, val); } static struct phy_driver realtek_drvs[] = { @@ -197,6 +162,8 @@ static struct phy_driver realtek_drvs[] = { .config_intr = &rtl8201_config_intr, .suspend = genphy_suspend, .resume = genphy_resume, + .read_page = rtl821x_read_page, + .write_page = rtl821x_write_page, }, { .phy_id = 0x001cc912, .name = "RTL8211B Gigabit Ethernet", @@ -236,6 +203,8 @@ static struct phy_driver realtek_drvs[] = { .config_intr = &rtl8211f_config_intr, .suspend = genphy_suspend, .resume = genphy_resume, + .read_page = rtl821x_read_page, + .write_page = rtl821x_write_page, }, };