Received: by 2002:ac0:946b:0:0:0:0:0 with SMTP id j40csp1237741imj; Thu, 14 Feb 2019 03:27:53 -0800 (PST) X-Google-Smtp-Source: AHgI3IYBVzPWr17EeDhuSOW1uxMSN+3InWRPLdjF1BFa39AZSdfn2GK75rgVdt0AaMk2eWo9zajY X-Received: by 2002:a17:902:28aa:: with SMTP id f39mr3617755plb.297.1550143673852; Thu, 14 Feb 2019 03:27:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550143673; cv=none; d=google.com; s=arc-20160816; b=EuHbtzlMadr/XTR/YMJ5q9+7N0x/S2EV0txOSgmAC2ZeneRwOWjmh/KFbCthynGqW6 ZaW2qZFFXvv0qDOlyZnzN9uAolRLnxhaDReyS+OfWv5BH+aKnJ2nP0igvGR3K+DDvI1z 3+5J6tHG6qznuRH5WMTXxz1SaC7yA5roYhTvYTwcHiKEZSwkNJYVIlxFD3GUCer+vpuA m7RladLBRhbOEcn196cMtqFicuf1XGqu1hfRGkzouLbXYpyDo9dctX5tMDs9x2XKaKXc ANhtS5yIAYqy9UoXVREbjixMiSuporRWH8CLX6pTMoHS/5QaSAKkAbVb2fqYPOWorbb7 eU5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=nzp1dnnz3oMwbgQX7qQphx2Ntkdp1ZgNdv+u6edTXVQ=; b=bwX2TALlmX4RsH0/OptqxpFJ49A6nbD0MM7D93lDCvNhrhctVrD/Ip1eQcxaH5yLir WZEEu2JHlG/Y6HZ0lX76Vk2+CtCWI66mizhP0gpxi+lnTaXZHduRict2zu5Td7Uf121o jNrXHO8ausTSoAeYaTJK/Pr3IFW0dZWoNlI1E0pOtk7C9DVLQZ8zWhQXSg58xN6+rK0V KpKMER0393TmXpb5jYITURRMwLZxG+AuZfW2KncDW+/w2E/M54WyL2AKpgNUeHWgrzj2 l/H3zhMhYBdEA4tLUqQQoi5B2NPZhPXVq6Eorc6JmWXFOylI6N1PSqbNb+6TaUfF8AxC V5sQ== ARC-Authentication-Results: i=1; mx.google.com; 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 u131si2172190pgc.287.2019.02.14.03.27.37; Thu, 14 Feb 2019 03:27:53 -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; 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 S2437127AbfBNGrw (ORCPT + 99 others); Thu, 14 Feb 2019 01:47:52 -0500 Received: from mx07-00178001.pphosted.com ([62.209.51.94]:45184 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729201AbfBNGrH (ORCPT ); Thu, 14 Feb 2019 01:47:07 -0500 Received: from pps.filterd (m0046037.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x1E6a35H013987; Thu, 14 Feb 2019 07:46:45 +0100 Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx07-00178001.pphosted.com with ESMTP id 2qn0jwrqas-1 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT); Thu, 14 Feb 2019 07:46:45 +0100 Received: from zeta.dmz-eu.st.com (zeta.dmz-eu.st.com [164.129.230.9]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id AD18F38; Thu, 14 Feb 2019 06:46:44 +0000 (GMT) Received: from Webmail-eu.st.com (Safex1hubcas22.st.com [10.75.90.92]) by zeta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 919E32431; Thu, 14 Feb 2019 06:46:44 +0000 (GMT) Received: from SAFEX1HUBCAS24.st.com (10.75.90.95) by Safex1hubcas22.st.com (10.75.90.92) with Microsoft SMTP Server (TLS) id 14.3.361.1; Thu, 14 Feb 2019 07:46:44 +0100 Received: from localhost (10.201.23.166) by webmail-ga.st.com (10.75.90.48) with Microsoft SMTP Server (TLS) id 14.3.361.1; Thu, 14 Feb 2019 07:46:44 +0100 From: Christophe Roullier To: , , , , , , CC: , , , , , , Subject: [PATCH 1/8] net: ethernet: stmmac: manage Ethernet WoL for stm32mp157c. Date: Thu, 14 Feb 2019 07:45:56 +0100 Message-ID: <1550126763-22669-2-git-send-email-christophe.roullier@st.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1550126763-22669-1-git-send-email-christophe.roullier@st.com> References: <1550126763-22669-1-git-send-email-christophe.roullier@st.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.201.23.166] X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2019-02-14_04:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add glue codes to support magic packet on stm32mp157c Signed-off-by: Christophe Roullier --- drivers/net/ethernet/stmicro/stmmac/dwmac-stm32.c | 30 ++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-stm32.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-stm32.c index 7e2e79d..d1cf145 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-stm32.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-stm32.c @@ -42,6 +42,7 @@ struct stm32_dwmac { struct clk *clk_ethstp; struct clk *syscfg_clk; bool int_phyclk; /* Clock from RCC to drive PHY */ + int irq_pwr_wakeup; u32 mode_reg; /* MAC glue-logic mode register */ struct regmap *regmap; u32 speed; @@ -232,7 +233,9 @@ static int stm32_dwmac_parse_data(struct stm32_dwmac *dwmac, static int stm32mp1_parse_data(struct stm32_dwmac *dwmac, struct device *dev) { + struct platform_device *pdev = to_platform_device(dev); struct device_node *np = dev->of_node; + int err = 0; dwmac->int_phyclk = of_property_read_bool(np, "st,int-phyclk"); @@ -260,7 +263,26 @@ static int stm32mp1_parse_data(struct stm32_dwmac *dwmac, return PTR_ERR(dwmac->syscfg_clk); } - return 0; + /* Get IRQ information early to have an ability to ask for deferred + * probe if needed before we went too far with resource allocation. + */ + dwmac->irq_pwr_wakeup = platform_get_irq_byname(pdev, + "stm32_pwr_wakeup"); + if (!dwmac->int_phyclk && dwmac->irq_pwr_wakeup >= 0) { + err = device_init_wakeup(&pdev->dev, true); + if (err) { + dev_err(&pdev->dev, "Failed to init wake up irq\n"); + return err; + } + err = dev_pm_set_dedicated_wake_irq(&pdev->dev, + dwmac->irq_pwr_wakeup); + if (err) { + dev_err(&pdev->dev, "Failed to set wake up irq\n"); + device_init_wakeup(&pdev->dev, false); + } + device_set_wakeup_enable(&pdev->dev, false); + } + return err; } static int stm32_dwmac_probe(struct platform_device *pdev) @@ -326,9 +348,15 @@ static int stm32_dwmac_remove(struct platform_device *pdev) struct net_device *ndev = platform_get_drvdata(pdev); struct stmmac_priv *priv = netdev_priv(ndev); int ret = stmmac_dvr_remove(&pdev->dev); + struct stm32_dwmac *dwmac = priv->plat->bsp_priv; stm32_dwmac_clk_disable(priv->plat->bsp_priv); + if (dwmac->irq_pwr_wakeup >= 0) { + dev_pm_clear_wake_irq(&pdev->dev); + device_init_wakeup(&pdev->dev, false); + } + return ret; } -- 2.7.4