Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp2624162pxb; Sun, 17 Oct 2021 20:49:44 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxnuBKs1MRxPyeMlInCdsz+qlR66rDVkrJ7HFgTIQ1HFRRletK4cI1TdvWOk7cI5eoHIUpp X-Received: by 2002:a17:90a:2:: with SMTP id 2mr45453212pja.77.1634528984773; Sun, 17 Oct 2021 20:49:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1634528984; cv=none; d=google.com; s=arc-20160816; b=YTdsSH9uPZTwaIjwooq4M/YTj3dRbiD50pNL4IS05LNoFxwy6FHplSHwmaAArp3TVs F+dR7tN8IWSZ3K5vUT0v3+9mmrUPtD815gveMQKVCigLuCVj8p3JJEOGRaiczvbQxEBk 54DYXaOAkUqQszoEOF9z2VqvG84u3UeV6fs/tv6GQgVsi45CKxATnwgobzOuvterW4qa tpKDAuwJUCJdPW/Bpmk5nr9cLhgifWxUCDF2Lh8QWl2ua9fKvmLjLzYn9eCkfIkjF5Y9 36OnPG9HpZsp/oBrnluMxp9vbmHzrgTmGmhRC9h5Vq3ZSatVpKVY0bnbK+NU404dpfOK ARvA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from:dmarc-filter:sender:dkim-signature; bh=Lo3W/Te7SVFoiKgMizE9XcNF5nGE8jBoH5W/RjHiz0M=; b=NIRVsEN0KI3ttNk0HmTu7sD6hUKfWI+i0iEGxD8HJPIJSh3/PuNbw/8p0ApSqLhYIe 4IvnEi1Ja8DDNprhAVC4xHQF/CXPqJJ/IzO1dHDKF3x1ofx0fxChSO9gFRMltqaFRJGR zbQu4MmHxOipdC/EcrqfiDkZOHZjRl1NfoDxGmecYGcSTs67A8BsUCItYvhpjB6KYGq0 8RCSv1Jb3AezdYDd1+3ezaaWPbk1xgubg5Sah/amIDPXff7cxjNICiLmGmbeYfvR+TdH gvjVvPMtNwCTmApWVZ9etvZPJMHSGaS5QQ1H20wVdm4Gy5dfvPt8YjNY2BAFc0v45V2W 2cJw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mg.codeaurora.org header.s=smtp header.b=vSPf8nhR; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id u9si25217932ple.97.2021.10.17.20.49.32; Sun, 17 Oct 2021 20:49:44 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@mg.codeaurora.org header.s=smtp header.b=vSPf8nhR; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232090AbhJRDgb (ORCPT + 99 others); Sun, 17 Oct 2021 23:36:31 -0400 Received: from m43-7.mailgun.net ([69.72.43.7]:34869 "EHLO m43-7.mailgun.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231584AbhJRDgV (ORCPT ); Sun, 17 Oct 2021 23:36:21 -0400 DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1634528051; h=References: In-Reply-To: Message-Id: Date: Subject: Cc: To: From: Sender; bh=Lo3W/Te7SVFoiKgMizE9XcNF5nGE8jBoH5W/RjHiz0M=; b=vSPf8nhRB9DNkR87kDadBVyAHXC49ewqnoCcmrW0kkv1+gEd+v4irJbxMoaRYAHZFxv9cxxX f9vhAbWDFwRekBWaRLkuuVQZivPeiHrLZhmV917TwEQSoXS4bwhdzPGxYrJNtcSr3/mOBzCr U/TDyt+0IcgVqkSEFsLKSR4SI/E= X-Mailgun-Sending-Ip: 69.72.43.7 X-Mailgun-Sid: WyI0MWYwYSIsICJsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnIiwgImJlOWU0YSJd Received: from smtp.codeaurora.org (ec2-35-166-182-171.us-west-2.compute.amazonaws.com [35.166.182.171]) by smtp-out-n07.prod.us-east-1.postgun.com with SMTP id 616ceb28835b7947c10777c5 (version=TLS1.2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256); Mon, 18 Oct 2021 03:34:00 GMT Sender: luoj=codeaurora.org@mg.codeaurora.org Received: by smtp.codeaurora.org (Postfix, from userid 1001) id 472B1C43616; Mon, 18 Oct 2021 03:33:59 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-caf-mail-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=ALL_TRUSTED,BAYES_00,SPF_FAIL autolearn=no autolearn_force=no version=3.4.0 Received: from akronite-sh-dev02.qualcomm.com (unknown [180.166.53.21]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: luoj) by smtp.codeaurora.org (Postfix) with ESMTPSA id 7F85EC43460; Mon, 18 Oct 2021 03:33:55 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 smtp.codeaurora.org 7F85EC43460 Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; spf=fail smtp.mailfrom=codeaurora.org From: Luo Jie To: andrew@lunn.ch, hkallweit1@gmail.com, linux@armlinux.org.uk, davem@davemloft.net, kuba@kernel.org Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, sricharan@codeaurora.org, Luo Jie Subject: [PATCH v3 03/13] net: phy: at803x: improve the WOL feature Date: Mon, 18 Oct 2021 11:33:23 +0800 Message-Id: <20211018033333.17677-4-luoj@codeaurora.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211018033333.17677-1-luoj@codeaurora.org> References: <20211018033333.17677-1-luoj@codeaurora.org> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The wol feature is controlled by the MMD3.8012 bit5, need to set this bit when the wol function is enabled. The reg18 bit0 is for enabling WOL interrupt, when wol occurs, the wol interrupt status reg19 bit0 is set to 1. Signed-off-by: Luo Jie --- drivers/net/phy/at803x.c | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c index c5e145ff5ec8..2f7d96bd1be8 100644 --- a/drivers/net/phy/at803x.c +++ b/drivers/net/phy/at803x.c @@ -70,6 +70,8 @@ #define AT803X_CDT_STATUS_DELTA_TIME_MASK GENMASK(7, 0) #define AT803X_LED_CONTROL 0x18 +#define AT803X_PHY_MMD3_WOL_CTRL 0x8012 +#define AT803X_WOL_EN BIT(5) #define AT803X_LOC_MAC_ADDR_0_15_OFFSET 0x804C #define AT803X_LOC_MAC_ADDR_16_31_OFFSET 0x804B #define AT803X_LOC_MAC_ADDR_32_47_OFFSET 0x804A @@ -327,7 +329,6 @@ static int at803x_set_wol(struct phy_device *phydev, struct net_device *ndev = phydev->attached_dev; const u8 *mac; int ret; - u32 value; unsigned int i; const unsigned int offsets[] = { AT803X_LOC_MAC_ADDR_32_47_OFFSET, @@ -348,18 +349,29 @@ static int at803x_set_wol(struct phy_device *phydev, phy_write_mmd(phydev, MDIO_MMD_PCS, offsets[i], mac[(i * 2) + 1] | (mac[(i * 2)] << 8)); + /* Enable WOL function */ + ret = phy_modify_mmd(phydev, MDIO_MMD_PCS, AT803X_PHY_MMD3_WOL_CTRL, + 0, AT803X_WOL_EN); + if (ret) + return ret; + /* Enable WOL interrupt */ ret = phy_modify(phydev, AT803X_INTR_ENABLE, 0, AT803X_INTR_ENABLE_WOL); if (ret) return ret; - value = phy_read(phydev, AT803X_INTR_STATUS); } else { + /* Disable WoL function */ + ret = phy_modify_mmd(phydev, MDIO_MMD_PCS, AT803X_PHY_MMD3_WOL_CTRL, + AT803X_WOL_EN, 0); + if (ret) + return ret; + /* Disable WOL interrupt */ ret = phy_modify(phydev, AT803X_INTR_ENABLE, AT803X_INTR_ENABLE_WOL, 0); if (ret) return ret; - value = phy_read(phydev, AT803X_INTR_STATUS); } - return ret; + /* Clear WOL status */ + return phy_read(phydev, AT803X_INTR_STATUS); } static void at803x_get_wol(struct phy_device *phydev, @@ -370,8 +382,11 @@ static void at803x_get_wol(struct phy_device *phydev, wol->supported = WAKE_MAGIC; wol->wolopts = 0; - value = phy_read(phydev, AT803X_INTR_ENABLE); - if (value & AT803X_INTR_ENABLE_WOL) + value = phy_read_mmd(phydev, MDIO_MMD_PCS, AT803X_PHY_MMD3_WOL_CTRL); + if (value < 0) + return; + + if (value & AT803X_WOL_EN) wol->wolopts |= WAKE_MAGIC; } -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project