From patchwork Fri Oct 19 01:08:41 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahisa Kojima X-Patchwork-Id: 149196 Delivered-To: patch@linaro.org Received: by 2002:a2e:8595:0:0:0:0:0 with SMTP id b21-v6csp2680822lji; Thu, 18 Oct 2018 18:10:35 -0700 (PDT) X-Google-Smtp-Source: ACcGV63DnMyrFhRoRKKu1pgBIIe033Tf6Twu1ODHxfA8TDTXmxwdBmeAb+v2wPZJr7+hU9FPME0P X-Received: by 2002:a63:30c8:: with SMTP id w191-v6mr30063266pgw.447.1539911434869; Thu, 18 Oct 2018 18:10:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1539911434; cv=none; d=google.com; s=arc-20160816; b=PMb1H5lxYR3BOxJ+4ul09PdyGNgR3G9pzdMyKxBD+3j+aOE67DOWWzt1FEPJGJZzXn qG1xa6r3GEh9gIPVgpaE7N6YYed1UZuLGyOwBPmA1O8Dt87m4x8izKWU/8SCApSau0np 815nYqJJuDRj1Gdh7ckJU+nB4OI2eQnuDZvEFh9DYnh+Sxaf2w/pA3xoqUtp6R5iwi7E Trx8yIN6sVf3wJbhZ703AX9FT+BpbFa2teC7tkbX9owy1U6v2LjgPC0fCm0KmA9XUjmi +a7tNntnxaVS39YRNeUGd542I+Eh5k1xdKgB2dkEg1B/coaUz7CKMj7MwPzGNu+RF2/c SsxQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=zup1u/FBvCTqA8w/OBz9sjLyaTKGoKh65IYPknttpgs=; b=oCAlF8cX11upVbj00SvrpOURKE548Ws0cPjKhZ0MKfueGjS32QJBeHzNveKEg188YI nFDg7SmhKVXmBzxge6JDdS5Ev13GOgGXr9eC+TTcc0JaOpP7I80AYR5ZOMbWGjGrsUH3 +Lo3+7r8lGzTnaFUKLpAbyRk7xtaanVxmqOh1vJVS2Zz/STYRBNKxFP4VWmIQ6FFGD0b rOrGkU6hvtCOZogCqAyGlTCQJK34ICrtQjMOZqCaW+AqvfJs6zRBIGVe9OJGE5a8ghCY MHsetZD6i4Jf1GTw51mmcc0nNCGIxE9HrvSgCTSnBkIBkEeTZFDv1cymvZHwfg/YWryd l+fw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=V+V6Z1hD; spf=pass (google.com: best guess record for domain of netdev-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=netdev-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 33-v6si22893275plh.50.2018.10.18.18.10.34; Thu, 18 Oct 2018 18:10:34 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of netdev-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=V+V6Z1hD; spf=pass (google.com: best guess record for domain of netdev-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=netdev-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726566AbeJSJOP (ORCPT + 10 others); Fri, 19 Oct 2018 05:14:15 -0400 Received: from mail-yb1-f195.google.com ([209.85.219.195]:36247 "EHLO mail-yb1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726245AbeJSJOP (ORCPT ); Fri, 19 Oct 2018 05:14:15 -0400 Received: by mail-yb1-f195.google.com with SMTP id 5-v6so12645671ybf.3 for ; Thu, 18 Oct 2018 18:10:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=zup1u/FBvCTqA8w/OBz9sjLyaTKGoKh65IYPknttpgs=; b=V+V6Z1hDFT8ARhOl0L+rYMJoEQs7Q7L6hYR99OUysDd6HShy5W/+IjX74jtbWRDfSS J9IDOZXfnNoaiaWXnyozUcbD3Sr/EHfS7ch0zDNXRGas0+8piHYCVy9vHKzVqd1QrIZp +ZVto3gKWxxJ0nnz6ApOdKf77dl0tryt61vCk= 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=zup1u/FBvCTqA8w/OBz9sjLyaTKGoKh65IYPknttpgs=; b=okKlzcJkvFu1JdtnOyfpwALOfLue5t0H9JxOaF+LqZ97CgCS/4Ovm9NoGO7ETiaa9O hYFFZhxBcAzEOApcI+YAoni1dwDB9mWwRKqpRgIYroJVdpuqqtrNzedSN0cLJ+OOIiPe ZQ/iMKkVmw9EM0B9On8K0OA62HOgDPfqpDRhifUUEHRiwK/zp3ElcJwNvm8JAEOczbKF 7Jb89GpnniP5dXwH6VCSP12h5DNoughPcFPNwNAsf2V6zQcpE+/jPj/+ae3J9A1lzyh3 2A+xMXe2oqvvm9e2ELPrXulYg7njKR4nNEcLhmkYaE84g1tMjKFnqGjO3VcB4i+GHMKz od+A== X-Gm-Message-State: ABuFfohlF0Y7nRY9KFyEGf35eEnD12QQUxgg06Ur0qlOfLTLBpEh+URu xMYC/aqZE2mtHkI/jMejsxGP1AcyfUk= X-Received: by 2002:a25:b88d:: with SMTP id w13-v6mr21581335ybj.213.1539911432088; Thu, 18 Oct 2018 18:10:32 -0700 (PDT) Received: from localhost ([121.95.100.191]) by smtp.gmail.com with ESMTPSA id n186-v6sm7608373ywn.16.2018.10.18.18.10.31 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 18 Oct 2018 18:10:31 -0700 (PDT) From: masahisa.kojima@linaro.org To: netdev@vger.kernel.org Cc: ilias.apalodimas@linaro.org, jaswinder.singh@linaro.org, ard.biesheuvel@linaro.org, osaki.yoshitoyo@socionext.com, Masahisa Kojima Subject: [PATCH 1/3] net: socionext: Stop PHY before resetting netsec Date: Fri, 19 Oct 2018 10:08:41 +0900 Message-Id: <20181019010843.3605-2-masahisa.kojima@linaro.org> X-Mailer: git-send-email 2.14.2 In-Reply-To: <20181019010843.3605-1-masahisa.kojima@linaro.org> References: <20181019010843.3605-1-masahisa.kojima@linaro.org> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Masahisa Kojima After resetting netsec IP, driver have to wait until netsec mode turns to NRM mode. But sometimes mode transition to NRM will not complete if the PHY is in normal operation state. To avoid this situation, stop PHY before resetting netsec. Signed-off-by: Masahisa Kojima Signed-off-by: Yoshitoyo Osaki --- drivers/net/ethernet/socionext/netsec.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) -- 2.14.2 diff --git a/drivers/net/ethernet/socionext/netsec.c b/drivers/net/ethernet/socionext/netsec.c index 4289ccb26e4e..273cc5fc07e0 100644 --- a/drivers/net/ethernet/socionext/netsec.c +++ b/drivers/net/ethernet/socionext/netsec.c @@ -1343,11 +1343,11 @@ static int netsec_netdev_stop(struct net_device *ndev) netsec_uninit_pkt_dring(priv, NETSEC_RING_TX); netsec_uninit_pkt_dring(priv, NETSEC_RING_RX); - ret = netsec_reset_hardware(priv, false); - phy_stop(ndev->phydev); phy_disconnect(ndev->phydev); + ret = netsec_reset_hardware(priv, false); + pm_runtime_put_sync(priv->dev); return ret; @@ -1415,7 +1415,7 @@ static const struct net_device_ops netsec_netdev_ops = { }; static int netsec_of_probe(struct platform_device *pdev, - struct netsec_priv *priv) + struct netsec_priv *priv, u32 *phy_addr) { priv->phy_np = of_parse_phandle(pdev->dev.of_node, "phy-handle", 0); if (!priv->phy_np) { @@ -1423,6 +1423,8 @@ static int netsec_of_probe(struct platform_device *pdev, return -EINVAL; } + *phy_addr = of_mdio_parse_addr(&pdev->dev, priv->phy_np); + priv->clk = devm_clk_get(&pdev->dev, NULL); /* get by 'phy_ref_clk' */ if (IS_ERR(priv->clk)) { dev_err(&pdev->dev, "phy_ref_clk not found\n"); @@ -1473,6 +1475,7 @@ static int netsec_register_mdio(struct netsec_priv *priv, u32 phy_addr) { struct mii_bus *bus; int ret; + u16 data; bus = devm_mdiobus_alloc(priv->dev); if (!bus) @@ -1486,6 +1489,10 @@ static int netsec_register_mdio(struct netsec_priv *priv, u32 phy_addr) bus->parent = priv->dev; priv->mii_bus = bus; + /* set phy power down */ + data = netsec_phy_read(bus, phy_addr, 0) | 0x800; + netsec_phy_write(bus, phy_addr, 0, data); + if (dev_of_node(priv->dev)) { struct device_node *mdio_node, *parent = dev_of_node(priv->dev); @@ -1623,7 +1630,7 @@ static int netsec_probe(struct platform_device *pdev) } if (dev_of_node(&pdev->dev)) - ret = netsec_of_probe(pdev, priv); + ret = netsec_of_probe(pdev, priv, &phy_addr); else ret = netsec_acpi_probe(pdev, priv, &phy_addr); if (ret)