Received: by 2002:ac0:b08d:0:0:0:0:0 with SMTP id l13csp2626967imc; Sat, 23 Feb 2019 07:28:25 -0800 (PST) X-Google-Smtp-Source: AHgI3Ia+hAvI0TL1QseuaMgT9XMowh7VXiMM20EZRAAMk/W7E7vqUlLQvm5uADsKv9FB1A+Boepm X-Received: by 2002:a17:902:b20e:: with SMTP id t14mr9672927plr.97.1550935705697; Sat, 23 Feb 2019 07:28:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550935705; cv=none; d=google.com; s=arc-20160816; b=wrXXC0ku0G9dksoZRXqRQGuO1SZEc+XMMj3jXi1qlHVTEwaGN/RY+J7szOSt3dLLDf saFF1BOLv1wKf15vAp0y+NmDd0/OYJjg4I7bWEwXnJj+EHx3m3BknML4gv7Zf7V7X7gW WxwgU8mkIrUlbt1d5DbwN/8FT2O/t1buwxQv7pRto9vAmkE/hoD+GIeXEVmgX+4dSufy XByLmf+Pp3ixyyp/BBuAItI3p3i/QWw9AV1FPpgyIpVYw++H/j9Dx2Wl8aDSE3e2iW0r bHRHmz/d9D/mdqcJ1wT0tojw2WeDvnwTie63fZVGipqm4pyozEKWkbwWFqiswFmMevaX D0JQ== 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=CRQwEQzjztiQ4ff0Ub/tPThKUBLrzw/3lLd+v4EOqVk=; b=cibPBOK/r84OEVdQAJ3SgFRnnJurQwL//uvTHFXeJV7VkQIkkzo2+vmCKrF8I0gQm1 6hTH2sTh/pxwHJ+0lsYQq8AleNuw9r92zomUeCD/lCMrazJCe3VdemtwswJOUnQFEDlQ JKMBcVw8sQBguklY790f64MVbgh9PZICjZvmZUWMqWyRGDvNBWOhMBSqtwb9FYv+4f+R 6I0qba0BMLQjU9+K+VwHAas8hEaeO7MHNwInRs9CaLleewEVwCIgBv1II2UU1Q6IX9Th EerutTiX8ZeGX/hnvKuStodmFdsbkle0blxds7qBhPkCjzOwG5Tsn2RqqQ6HkbvRpyzZ +B1Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@lunn.ch header.s=20171124 header.b=j646Hl3y; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o1si3902099plk.7.2019.02.23.07.28.10; Sat, 23 Feb 2019 07:28:25 -0800 (PST) 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 header.i=@lunn.ch header.s=20171124 header.b=j646Hl3y; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727843AbfBWPZp (ORCPT + 99 others); Sat, 23 Feb 2019 10:25:45 -0500 Received: from vps0.lunn.ch ([185.16.172.187]:36131 "EHLO vps0.lunn.ch" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726269AbfBWPZo (ORCPT ); Sat, 23 Feb 2019 10:25:44 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lunn.ch; s=20171124; h=In-Reply-To:Content-Type:MIME-Version:References:Message-ID: Subject:Cc:To:From:Date:Sender: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=CRQwEQzjztiQ4ff0Ub/tPThKUBLrzw/3lLd+v4EOqVk=; b=j646Hl3yCGAdrbOYUtYvXWDdl1 6NiMGMABcS+7tgQMbEx7df4k8I14MKQ/fQdRaaYX2WolE/61bHqpo03N9qK2bRr7Tg177bEBpxvnP cxGKSdEAQoabqRrLVlsznTH5zIzuL//+Go7ymFyUI0gxD2ewhHn2nNFZwZPazLVfDLrg=; Received: from andrew by vps0.lunn.ch with local (Exim 4.89) (envelope-from ) id 1gxZBM-0003Mi-9M; Sat, 23 Feb 2019 16:25:40 +0100 Date: Sat, 23 Feb 2019 16:25:40 +0100 From: Andrew Lunn To: Parshuram Thombare Cc: nicolas.ferre@microchip.com, davem@davemloft.net, netdev@vger.kernel.org, f.fainelli@gmail.com, hkallweit1@gmail.com, linux-kernel@vger.kernel.org, rafalc@cadence.com, piotrs@cadence.com, jank@cadence.com Subject: Re: [PATCH 2/3] net: ethernet: add c45 PHY support in MDIO read/write functions. Message-ID: <20190223152540.GE10693@lunn.ch> References: <20190222201242.GA20889@lvlogina.cadence.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20190222201242.GA20889@lvlogina.cadence.com> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Feb 22, 2019 at 08:12:42PM +0000, Parshuram Thombare wrote: > This patch modify MDIO read/write functions to support > communication with C45 PHY in Cadence ethernet controller driver. > > 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 bed4ded..59c23e0 100644 > --- a/drivers/net/ethernet/cadence/macb.h > +++ b/drivers/net/ethernet/cadence/macb.h > @@ -636,10 +636,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 0x00000001 > diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c > index 4f4f8e5..2494abf 100644 > --- a/drivers/net/ethernet/cadence/macb_main.c > +++ b/drivers/net/ethernet/cadence/macb_main.c > @@ -323,11 +323,30 @@ static int macb_mdio_read(struct mii_bus *bus, int mii_id, int regnum) > struct macb *bp = bus->priv; > int value; > > - 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))); > + > + /* wait for end of transfer */ > + while (!MACB_BFEXT(IDLE, macb_readl(bp, NSR))) > + cpu_relax(); You need a timeout here, and anywhere you wait for the hardware to complete. Try to make use of readx_poll_timeout() variants. Andrew