From patchwork Wed Mar 22 01:18:04 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Iyappan Subramanian X-Patchwork-Id: 9637891 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id A1CDA602D6 for ; Wed, 22 Mar 2017 01:17:47 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 90C2425EA6 for ; Wed, 22 Mar 2017 01:17:47 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 81E3428306; Wed, 22 Mar 2017 01:17:47 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id EFE8925EA6 for ; Wed, 22 Mar 2017 01:17:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=8JYk6Qsg3MdcZi7m6K8aq7AqLpeI50kcw9xqAQAHY/A=; b=BQc6jMZXBQ9OyIGnj8sQwlXbFH c9Cv4vM00gxdRx++cVSdVX38Atyzaf5m4LEfEkqy7EI6wVi2oRAAuc+0o8ECNr/ltw1PIK98+++sR 4r80vYjAtjv45VARY889KU9Qc98kmZ4L8i9IBM0I0Lu7aUKmUAmK00InbPIGS81tjhbPdsEMqksbT 7Tr1z36Bp1H3D0a02BbvVO0Qz/chZgxk9/oW15XB/Myq3L2xYLiyit63IY66w0vGRvx7IGRfwN4dX jWTeLTrJjKI/16YcBuztc61Y6PHo2Pfx8WOrhDI+JL6fCJA4wA74gHfhVpyLyjNquWHcomjpdrp7U 1xBoxWPw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1cqUuI-00074e-1k; Wed, 22 Mar 2017 01:17:46 +0000 Received: from mail-pg0-x235.google.com ([2607:f8b0:400e:c05::235]) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1cqUtn-0006Uj-Cg for linux-arm-kernel@lists.infradead.org; Wed, 22 Mar 2017 01:17:17 +0000 Received: by mail-pg0-x235.google.com with SMTP id 21so68166760pgg.1 for ; Tue, 21 Mar 2017 18:16:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=apm.com; s=apm; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=YlOz59zBCHQnTKvIlumR7elQJJ3mELGVzkzBK3kDKDE=; b=jifOgf0TPOAdrlQhwqNhFPYK1Bq/EyiDZ9ol+WxUYs97PbBRWBG6epEBQoz+ldLCPo qbsbLmXgwRhQw1X8AVv34OpiNAc+nvykEXxHnd3ZfAPtpEjFVoNwvIMr3CJ2jUpofTGf ZKVIz7dBFv6kbVJPCUW5WjzKBaIVe5dBrFD+c= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=YlOz59zBCHQnTKvIlumR7elQJJ3mELGVzkzBK3kDKDE=; b=UuqWGdDv76oGM6DQqkahiL+x/nIcvqQNkod+gb1q40IxNolR0PU/Io9Yz90FV4CwqI +sruXaLJPj04ey0VglYpx7yy4ACmeRs/i3fnI8OOQnoul190mLWYeYNFLqMBI+1O3h4P xOBvglJNsW17r2++lOs5sbBZ5WykrOYrKLbh+29q9YWtNOwcG0xd1eiyb+p9QywM67P7 XhvKp3ptgIXqIu4cpPBVdXSbQ43kqDcxXaYS6Bhqhsk+AELLiftrQPHFWrvB+Jxx+El1 jM5ATXRBqn+yTo8adMM06TveVmtkvdRQ0GnFW03PyveSTPAZlWxqtFCO6PasuDRPG6bQ RM9w== X-Gm-Message-State: AFeK/H0j65bnopvVdp30XoZ5/TEwE8gvqy8FlyOQQTIf2PAEl3yz8+8s6BfYXy8OKNbFvzjR X-Received: by 10.99.102.134 with SMTP id a128mr39978248pgc.215.1490145413285; Tue, 21 Mar 2017 18:16:53 -0700 (PDT) Received: from isubrama-dev.amcc.com ([206.80.4.98]) by smtp.gmail.com with ESMTPSA id k184sm42142703pgc.23.2017.03.21.18.16.52 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 21 Mar 2017 18:16:52 -0700 (PDT) From: Iyappan Subramanian To: davem@davemloft.net, netdev@vger.kernel.org, andrew@lunn.ch, f.fainelli@gmail.com, David.Laight@aculab.com Subject: [PATCH v2 net-next 3/4] drivers: net: xgene-v2: Fix port reset Date: Tue, 21 Mar 2017 18:18:04 -0700 Message-Id: <1490145485-32661-4-git-send-email-isubramanian@apm.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1490145485-32661-1-git-send-email-isubramanian@apm.com> References: <1490145485-32661-1-git-send-email-isubramanian@apm.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20170321_181715_509711_F31C1CEE X-CRM114-Status: GOOD ( 13.30 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kchudgar@apm.com, patches@apm.com, linux-arm-kernel@lists.infradead.org, Iyappan Subramanian MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP Fixed port reset sequence by adding ECC init. Signed-off-by: Iyappan Subramanian --- drivers/net/ethernet/apm/xgene-v2/enet.c | 24 ++++++++++++++++++------ drivers/net/ethernet/apm/xgene-v2/enet.h | 2 ++ drivers/net/ethernet/apm/xgene-v2/mac.h | 1 - 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/drivers/net/ethernet/apm/xgene-v2/enet.c b/drivers/net/ethernet/apm/xgene-v2/enet.c index b49edee..5998da0 100644 --- a/drivers/net/ethernet/apm/xgene-v2/enet.c +++ b/drivers/net/ethernet/apm/xgene-v2/enet.c @@ -38,10 +38,24 @@ u32 xge_rd_csr(struct xge_pdata *pdata, u32 offset) int xge_port_reset(struct net_device *ndev) { struct xge_pdata *pdata = netdev_priv(ndev); + struct device *dev = &pdata->pdev->dev; + u32 data, wait = 10; - xge_wr_csr(pdata, ENET_SRST, 0x3); - xge_wr_csr(pdata, ENET_SRST, 0x2); - xge_wr_csr(pdata, ENET_SRST, 0x0); + xge_wr_csr(pdata, ENET_CLKEN, 0x3); + xge_wr_csr(pdata, ENET_SRST, 0xf); + xge_wr_csr(pdata, ENET_SRST, 0); + xge_wr_csr(pdata, CFG_MEM_RAM_SHUTDOWN, 1); + xge_wr_csr(pdata, CFG_MEM_RAM_SHUTDOWN, 0); + + do { + usleep_range(100, 110); + data = xge_rd_csr(pdata, BLOCK_MEM_RDY); + } while (data != MEM_RDY && wait--); + + if (data != MEM_RDY) { + dev_err(dev, "ECC init failed: %x\n", data); + return -ETIMEDOUT; + } xge_wr_csr(pdata, ENET_SHIM, DEVM_ARAUX_COH | DEVM_AWAUX_COH); @@ -59,13 +73,11 @@ static void xge_traffic_resume(struct net_device *ndev) xge_wr_csr(pdata, RX_DV_GATE_REG, 1); } -int xge_port_init(struct net_device *ndev) +void xge_port_init(struct net_device *ndev) { struct xge_pdata *pdata = netdev_priv(ndev); pdata->phy_speed = SPEED_1000; xge_mac_init(pdata); xge_traffic_resume(ndev); - - return 0; } diff --git a/drivers/net/ethernet/apm/xgene-v2/enet.h b/drivers/net/ethernet/apm/xgene-v2/enet.h index 40371cf..3fd36dc6 100644 --- a/drivers/net/ethernet/apm/xgene-v2/enet.h +++ b/drivers/net/ethernet/apm/xgene-v2/enet.h @@ -28,6 +28,7 @@ #define CFG_MEM_RAM_SHUTDOWN 0xd070 #define BLOCK_MEM_RDY 0xd074 +#define MEM_RDY 0xffffffff #define DEVM_ARAUX_COH BIT(19) #define DEVM_AWAUX_COH BIT(3) @@ -39,5 +40,6 @@ void xge_wr_csr(struct xge_pdata *pdata, u32 offset, u32 val); u32 xge_rd_csr(struct xge_pdata *pdata, u32 offset); int xge_port_reset(struct net_device *ndev); +void xge_port_init(struct net_device *ndev); #endif /* __XGENE_ENET_V2_ENET__H__ */ diff --git a/drivers/net/ethernet/apm/xgene-v2/mac.h b/drivers/net/ethernet/apm/xgene-v2/mac.h index 74397c9..18a9c9d 100644 --- a/drivers/net/ethernet/apm/xgene-v2/mac.h +++ b/drivers/net/ethernet/apm/xgene-v2/mac.h @@ -105,7 +105,6 @@ static inline u32 xgene_get_reg_bits(u32 var, int pos, int len) void xge_mac_enable(struct xge_pdata *pdata); void xge_mac_disable(struct xge_pdata *pdata); void xge_mac_init(struct xge_pdata *pdata); -int xge_port_init(struct net_device *ndev); void xge_mac_set_station_addr(struct xge_pdata *pdata); #endif /* __XGENE_ENET_V2_MAC_H__ */