Received: by 2002:a25:f815:0:0:0:0:0 with SMTP id u21csp1239445ybd; Sun, 23 Jun 2019 03:14:55 -0700 (PDT) X-Google-Smtp-Source: APXvYqyIw8KOc7ARCUawPrbdgqEztDxUFnQXdbUrWGWw282+PucVYWgMG134tUjqju2/2stcWbQq X-Received: by 2002:a17:902:2bc5:: with SMTP id l63mr28397311plb.30.1561284895322; Sun, 23 Jun 2019 03:14:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561284895; cv=none; d=google.com; s=arc-20160816; b=ph38s/FYynaL9S7696okeerwgKtcrIg5nXdAUj+Y6KBGVGysoFYqDKaDGc5cvwLQYM dWQlO1tAZcLKFSGajCTr2y5VA3+iXxnLXdiPDSZYv/aDfhu7eZXvV/HjsOlE5zihKOol hy1RCcQYq0/9vmA4as//iXt4IaaNdrfSWN3LUVDgVIlhjvVY1IOX81kYryv3v6dIyVlz SO03WWKaGKOEhaSDic5mwPU8jM/6780azrAU2RjEtmyGpOYoOI+dwqhi9qeMBPq6Honr pwZm9MkAbzyjEP3hUXi5uL9BgCaGCiNedOzKqftO0aRnmR07XN9ceTld6CT/Kqyd6X7a Rt9g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=Ge3SY9labvAxE4Yy2J2jXFLMiCj48qKbZn4VIaVWNWk=; b=ZxC2U5Ln1hBTe9wdT5VRJC5aYIwiuox/CVljJtj6JT4YJFS6FMT9w0YemRPXrHSbzA Oiz2dJiV7ircSpOZvqCnsiRAjplwvY8dWwFc0gFYhbPORYSGZQCCi+S5Ylftcj9y/AhS lqFLaegYY6VweUb7xTuLlhsoeXXA8QDMACKxSyMCk0eKXGllxDEOtB+U1ZtqKzCxRcTG X8UbWMy14SZ3Mi4HBSQzG13vihSOYvQQAg3fJHKYtK+fVJDqzvv3k23Lp9SY5XVG+yi4 0zhepVgDunl/ykGKtwRgGsiDiqkYREKvqF+vkPfBeDi5RWEQwmBpM1wFdEu2QlsMRnzJ +nVg== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail (test mode) header.i=@armlinux.org.uk header.s=pandora-2019 header.b=c6ORLuCv; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=armlinux.org.uk Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d7si7601568plj.74.2019.06.23.03.14.39; Sun, 23 Jun 2019 03:14:55 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail (test mode) header.i=@armlinux.org.uk header.s=pandora-2019 header.b=c6ORLuCv; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=armlinux.org.uk Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726547AbfFWKND (ORCPT + 99 others); Sun, 23 Jun 2019 06:13:03 -0400 Received: from pandora.armlinux.org.uk ([78.32.30.218]:43636 "EHLO pandora.armlinux.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726350AbfFWKNC (ORCPT ); Sun, 23 Jun 2019 06:13:02 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=armlinux.org.uk; s=pandora-2019; h=Sender:In-Reply-To:Content-Type: MIME-Version:References:Message-ID:Subject:Cc:To:From:Date:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=Ge3SY9labvAxE4Yy2J2jXFLMiCj48qKbZn4VIaVWNWk=; b=c6ORLuCvwylMf7lS7gWuZTe9Z ykpKX6JD6FLvJbiRcfvzKRx2d7NB57YMkdzigkEmEXZw1ONKUzFNENnY/3b1x8HYG/ARzFuDVDipw kpCXtGlSRTNghKvGhKWHhLckjfynTM9pl3ccQuTGzjdR12o4MpTyysX1vUGcBIfjYGMmyu8sZ4YvM WywCPiq/N20VzO5wlmyz8pJnt63l+wzZR5ljJWt4jTmNtFf8kYocVDyBMufgj4xwSiwnfDXKbOhE7 cdcTHAWOLddUbtL8Gfyvp7j/nFDUZtl61r4LHhseRQq89XgxixhL+/LE4WpKJZFWMzyn2oe/JjA8v B9n5di/eA==; Received: from shell.armlinux.org.uk ([fd8f:7570:feb6:1:5054:ff:fe00:4ec]:59908) by pandora.armlinux.org.uk with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.90_1) (envelope-from ) id 1hezUU-0000iC-1F; Sun, 23 Jun 2019 11:12:54 +0100 Received: from linux by shell.armlinux.org.uk with local (Exim 4.89) (envelope-from ) id 1hezUT-0004wn-1u; Sun, 23 Jun 2019 11:12:53 +0100 Date: Sun, 23 Jun 2019 11:12:52 +0100 From: Russell King - ARM Linux admin To: Parshuram Thombare Cc: andrew@lunn.ch, nicolas.ferre@microchip.com, davem@davemloft.net, f.fainelli@gmail.com, netdev@vger.kernel.org, hkallweit1@gmail.com, linux-kernel@vger.kernel.org, rafalc@cadence.com, aniljoy@cadence.com, piotrs@cadence.com Subject: Re: [PATCH v4 3/5] net: macb: add support for c45 PHY Message-ID: <20190623101252.olfxbls3phgxttcb@shell.armlinux.org.uk> References: <1561281419-6030-1-git-send-email-pthombar@cadence.com> <1561281797-13796-1-git-send-email-pthombar@cadence.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1561281797-13796-1-git-send-email-pthombar@cadence.com> User-Agent: NeoMutt/20170113 (1.7.2) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sun, Jun 23, 2019 at 10:23:17AM +0100, Parshuram Thombare wrote: > This patch modify MDIO read/write functions to support > communication with C45 PHY. Which Clause 45 PHY are you using? > > Signed-off-by: Parshuram Thombare > --- > drivers/net/ethernet/cadence/macb.h | 15 ++++-- > drivers/net/ethernet/cadence/macb_main.c | 61 +++++++++++++++++++----- > 2 files changed, 61 insertions(+), 15 deletions(-) > > diff --git a/drivers/net/ethernet/cadence/macb.h b/drivers/net/ethernet/cadence/macb.h > index 6d268283c318..330da702b946 100644 > --- a/drivers/net/ethernet/cadence/macb.h > +++ b/drivers/net/ethernet/cadence/macb.h > @@ -642,10 +642,17 @@ > #define GEM_CLK_DIV96 5 > > /* Constants for MAN register */ > -#define MACB_MAN_SOF 1 > -#define MACB_MAN_WRITE 1 > -#define MACB_MAN_READ 2 > -#define MACB_MAN_CODE 2 > +#define MACB_MAN_C22_SOF 1 > +#define MACB_MAN_C22_WRITE 1 > +#define MACB_MAN_C22_READ 2 > +#define MACB_MAN_C22_CODE 2 > + > +#define MACB_MAN_C45_SOF 0 > +#define MACB_MAN_C45_ADDR 0 > +#define MACB_MAN_C45_WRITE 1 > +#define MACB_MAN_C45_POST_READ_INCR 2 > +#define MACB_MAN_C45_READ 3 > +#define MACB_MAN_C45_CODE 2 > > /* Capability mask bits */ > #define MACB_CAPS_ISR_CLEAR_ON_WRITE BIT(0) > diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c > index 10d18b2cef31..94145e460e6e 100644 > --- a/drivers/net/ethernet/cadence/macb_main.c > +++ b/drivers/net/ethernet/cadence/macb_main.c > @@ -341,11 +341,30 @@ static int macb_mdio_read(struct mii_bus *bus, int mii_id, int regnum) > if (status < 0) > goto mdio_read_exit; > > - macb_writel(bp, MAN, (MACB_BF(SOF, MACB_MAN_SOF) > - | MACB_BF(RW, MACB_MAN_READ) > - | MACB_BF(PHYA, mii_id) > - | MACB_BF(REGA, regnum) > - | MACB_BF(CODE, MACB_MAN_CODE))); > + if (regnum & MII_ADDR_C45) { > + macb_writel(bp, MAN, (MACB_BF(SOF, MACB_MAN_C45_SOF) > + | MACB_BF(RW, MACB_MAN_C45_ADDR) > + | MACB_BF(PHYA, mii_id) > + | MACB_BF(REGA, (regnum >> 16) & 0x1F) > + | MACB_BF(DATA, regnum & 0xFFFF) > + | MACB_BF(CODE, MACB_MAN_C45_CODE))); > + > + status = macb_mdio_wait_for_idle(bp); > + if (status < 0) > + goto mdio_read_exit; > + > + macb_writel(bp, MAN, (MACB_BF(SOF, MACB_MAN_C45_SOF) > + | MACB_BF(RW, MACB_MAN_C45_READ) > + | MACB_BF(PHYA, mii_id) > + | MACB_BF(REGA, (regnum >> 16) & 0x1F) > + | MACB_BF(CODE, MACB_MAN_C45_CODE))); > + } else { > + macb_writel(bp, MAN, (MACB_BF(SOF, MACB_MAN_C22_SOF) > + | MACB_BF(RW, MACB_MAN_C22_READ) > + | MACB_BF(PHYA, mii_id) > + | MACB_BF(REGA, regnum) > + | MACB_BF(CODE, MACB_MAN_C22_CODE))); > + } > > status = macb_mdio_wait_for_idle(bp); > if (status < 0) > @@ -374,12 +393,32 @@ static int macb_mdio_write(struct mii_bus *bus, int mii_id, int regnum, > if (status < 0) > goto mdio_write_exit; > > - macb_writel(bp, MAN, (MACB_BF(SOF, MACB_MAN_SOF) > - | MACB_BF(RW, MACB_MAN_WRITE) > - | MACB_BF(PHYA, mii_id) > - | MACB_BF(REGA, regnum) > - | MACB_BF(CODE, MACB_MAN_CODE) > - | MACB_BF(DATA, value))); > + if (regnum & MII_ADDR_C45) { > + macb_writel(bp, MAN, (MACB_BF(SOF, MACB_MAN_C45_SOF) > + | MACB_BF(RW, MACB_MAN_C45_ADDR) > + | MACB_BF(PHYA, mii_id) > + | MACB_BF(REGA, (regnum >> 16) & 0x1F) > + | MACB_BF(DATA, regnum & 0xFFFF) > + | MACB_BF(CODE, MACB_MAN_C45_CODE))); > + > + status = macb_mdio_wait_for_idle(bp); > + if (status < 0) > + goto mdio_write_exit; > + > + macb_writel(bp, MAN, (MACB_BF(SOF, MACB_MAN_C45_SOF) > + | MACB_BF(RW, MACB_MAN_C45_WRITE) > + | MACB_BF(PHYA, mii_id) > + | MACB_BF(REGA, (regnum >> 16) & 0x1F) > + | MACB_BF(CODE, MACB_MAN_C45_CODE) > + | MACB_BF(DATA, value))); > + } else { > + macb_writel(bp, MAN, (MACB_BF(SOF, MACB_MAN_C22_SOF) > + | MACB_BF(RW, MACB_MAN_C22_WRITE) > + | MACB_BF(PHYA, mii_id) > + | MACB_BF(REGA, regnum) > + | MACB_BF(CODE, MACB_MAN_C22_CODE) > + | MACB_BF(DATA, value))); > + } > > status = macb_mdio_wait_for_idle(bp); > if (status < 0) > -- > 2.17.1 > > -- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTC broadband for 0.8mile line in suburbia: sync at 12.1Mbps down 622kbps up According to speedtest.net: 11.9Mbps down 500kbps up