Received: by 2002:ac0:aed5:0:0:0:0:0 with SMTP id t21csp3099838imb; Tue, 5 Mar 2019 00:31:02 -0800 (PST) X-Google-Smtp-Source: APXvYqzUwwMmgEaFK/9sx+ie9tiP4ztaWzXY1D6sK7GtsCyqZdKKmjv8v4WvTjm8DR73+xpJWMBR X-Received: by 2002:aa7:9310:: with SMTP id 16mr731034pfj.84.1551774662011; Tue, 05 Mar 2019 00:31:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1551774662; cv=none; d=google.com; s=arc-20160816; b=EEvRBrMUR+vhMcT5T9cJM6hV1eA9HtBkLpHBzrPe5mzxULEWlQSY3amN8RQigug/4n MKNbfAcamlT61J6uaGqNKEgs9+pvWVbNdHBBazx/glj2Gzz3o8I2mwyqOirBti4J6WjQ wJvuw+7eh8Un1MKxjB9Vdk3DHcFVZg9ufqKz+e9dQRsaJAwG/iUJRN/qtIF6nOC6TSs7 RW8xi1xNhvVtQlZL6N7GfDkv46zgifvlGaSGeCQeNbtxrdWGX8ILOeS9gGL6Kj6URBGh d2bbMEI8+2bbXuDqv/E9eMBsjhbGJf7rUEBg94xzwHcrXEHDLhTI8go8fqjWfFvP6Kag 9QGQ== 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=ZLuwfx7T/n7jIFeggwboraLzKuBU5sd2gH2TS+xnif3VadOCtAT61JkzhjOs0UkvOu VTxME61XU0PnSlNurzmrR4oaeT5l4fZpA692qyWPI/oieS9QR9l289h8wmDXkSM+dcy/ qhByvQmCbMAFlwkYuyJc06RMUB5p0TiqTJ4cGkn3w7cN3PuILT/EPY4cAMHLek6LRhVM d5gv2STK/S3TC6m9gMbu6Jn/RURKsBjdiwUlbcF2WH+AlnNT0uoM1QBRrXxsvhsgROcJ XmTILr6bCYQB+j/Cjsz1Zi2CCJv1Pcs0WbP0vKMylAfMRO8ESzypSh8+qtTP7X0/DNP5 /1CA== 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 l192si7192760pge.280.2019.03.05.00.30.47; Tue, 05 Mar 2019 00:31:01 -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 S1727389AbfCEIaO (ORCPT + 99 others); Tue, 5 Mar 2019 03:30:14 -0500 Received: from mx08-00178001.pphosted.com ([91.207.212.93]:25465 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726101AbfCEI36 (ORCPT ); Tue, 5 Mar 2019 03:29:58 -0500 Received: from pps.filterd (m0046660.ppops.net [127.0.0.1]) by mx08-00178001.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x258BVoC008401; Tue, 5 Mar 2019 09:29:37 +0100 Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx08-00178001.pphosted.com with ESMTP id 2qyhgar6ky-1 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT); Tue, 05 Mar 2019 09:29:37 +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 533DA3D; Tue, 5 Mar 2019 08:29:36 +0000 (GMT) Received: from Webmail-eu.st.com (Safex1hubcas24.st.com [10.75.90.94]) by zeta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 01A501675; Tue, 5 Mar 2019 08:29:35 +0000 (GMT) Received: from SAFEX1HUBCAS23.st.com (10.75.90.47) by Safex1hubcas24.st.com (10.75.90.94) with Microsoft SMTP Server (TLS) id 14.3.361.1; Tue, 5 Mar 2019 09:29:35 +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; Tue, 5 Mar 2019 09:29:35 +0100 From: Christophe Roullier To: , , , , , , CC: , , , , , , Subject: [PATCH V3 1/6] net: ethernet: stmmac: manage Ethernet WoL for stm32mp157c. Date: Tue, 5 Mar 2019 09:29:23 +0100 Message-ID: <1551774568-11732-2-git-send-email-christophe.roullier@st.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1551774568-11732-1-git-send-email-christophe.roullier@st.com> References: <1551774568-11732-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-03-05_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