From patchwork Mon Feb 19 20:40:51 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 203370 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:693c:2685:b0:108:e6aa:91d0 with SMTP id mn5csp134355dyc; Mon, 19 Feb 2024 17:29:53 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCWlJMccwONJQ2ZsqQ8NN7PTF7UGIeUOvVNHfoBoEOKY6jiAggXFTVX9EAOqZqw6NVPjPFI0hSNxxVp8/lx7j70y1l2oLA== X-Google-Smtp-Source: AGHT+IGX59uJIeOZ9bikTfp7/qmpHOMxePnVyVPomlJ5UzRGPNIJ+52tLNZM5gJUwFlUc+8sO4UV X-Received: by 2002:a05:6a00:2e8b:b0:6e1:3dd3:3c89 with SMTP id fd11-20020a056a002e8b00b006e13dd33c89mr10896206pfb.11.1708392593576; Mon, 19 Feb 2024 17:29:53 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1708392593; cv=pass; d=google.com; s=arc-20160816; b=ClpLXlnzKrhZtHmuk3FYj5bSUh7JexQeYrlMyfYv1zLkNXD6R7ZtxAsd1adZNi4cwI EyaV4FMXZ71fFBoocX0YArGE6tpRUwTkpSAZwPAkyTheaf8UPQkg92C9BDrWiq/JB6bb EkHHnI5q3xFYBFZMsVaskZqmeEjsNH5wnk36/izy+xyl9uyQHpAzkDrEAJfkrFPBRydM paqGnrkN/0iM7l5J7pYKl4xzU37SRjnDfIXR5K+RDfWWK11Pb5S7t2DP3EHDUoVETAaG ug4qvTLgkZZc6VJP+53p4Au5pJTH0pBap0Vvn4UlnT7YMTjehXmcObz657ebtKS/42wn EY2Q== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature:dkim-filter; bh=7nG1QF6jgj8Z3ESbEX3TIMLHjTNdV5wWpMmLGqwtCHQ=; fh=j/OwmfJVRgCPa4uSHTSwxfS2Laf6Vp3HYivcwwufwU4=; b=MBpQUbXRIRQ4ihc+Qik1Qg33vjdwJRno06hdJUP7CmAlDL2OP2w9kB6+igL/QhLeOp Bh5RSe8l8qnmn2vhJTcpsxRLRBvyyxH1hn5ngm/GKcDuj0UqQJMYNe3i6R1jODiYJFCZ DjUmN5ozCar7+BhbqGXASCdgIjy9CJBthBXjWOGlYo3bcdwrcqh0CvdWE01103xyGMA/ jfe4d25vcvZYB2PkfhK38zX+BAC8SV2+Rkh7TTeY6S9oZ1XYwlhcy6RkLXuXYq5oX1zc TNKz2cPXB5t3ySn834Gr3sGOJDboaazCYbl3M6FfF5UH3u2MD2/+fdZ0qIoe6YaVFLhW l2zg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@broadcom.com header.s=dkimrelay header.b=cs+kS3XY; arc=pass (i=1 dkim=pass dkdomain=broadcom.com dmarc=pass fromdomain=broadcom.com); spf=pass (google.com: domain of linux-kernel+bounces-71977-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-71977-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=broadcom.com Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id u5-20020a656705000000b005d3adb65694si5112182pgf.757.2024.02.19.17.29.53 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 Feb 2024 17:29:53 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-71977-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@broadcom.com header.s=dkimrelay header.b=cs+kS3XY; arc=pass (i=1 dkim=pass dkdomain=broadcom.com dmarc=pass fromdomain=broadcom.com); spf=pass (google.com: domain of linux-kernel+bounces-71977-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-71977-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=broadcom.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 249B228797A for ; Mon, 19 Feb 2024 20:42:24 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 281A05644E; Mon, 19 Feb 2024 20:41:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="cs+kS3XY" Received: from relay.smtp-ext.broadcom.com (unknown [192.19.166.231]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A781E535A5; Mon, 19 Feb 2024 20:41:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.19.166.231 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708375265; cv=none; b=r68zUIM7nAijOE+kT+mg2N0gXDwQkbYxpa5YatjAw21PwpK5tUs0cP43zMNoy4nth5/3aI1XZMdb0aP6dZhFJv1cZ5WP0PUoGLIb2iTllhAvedaCguVKHwXQ/GBYX0jvk726ZX8YGZ2QX+n4p2sZf6b0W2ZIB4VSiEyjSM10BkQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708375265; c=relaxed/simple; bh=GHR/bR2+PuZf/Ujm8oJ7hpAbN7eeKxkWAlk7t/53fYs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=EFbe8ugeKUw44crVebnoJxkiJbQLdb0KWL5QY6lV+JGeLGPobViv9ED0QOrIuLD1B13tgJKWK6LmB9qjvRrJBwqYsAXz3yohfKgZ+GTShNmsMQokW2cfyVxSyPLFdSiTlPYBiKL8RzEQFBWwpVA7pLOZ//3kSpBQhYSw67AtkRs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=cs+kS3XY; arc=none smtp.client-ip=192.19.166.231 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Received: from mail-lvn-it-01.lvn.broadcom.net (mail-lvn-it-01.lvn.broadcom.net [10.36.132.253]) by relay.smtp-ext.broadcom.com (Postfix) with ESMTP id 43C63C003A73; Mon, 19 Feb 2024 12:40:57 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com 43C63C003A73 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1708375257; bh=GHR/bR2+PuZf/Ujm8oJ7hpAbN7eeKxkWAlk7t/53fYs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=cs+kS3XYxdGzz6yCNGPfquOT5x+MoAt8ZVKVqFeRmlKyggiOghpAWTr/anSJ6tSN0 8VN4DZ79S1xl78mRhsvrSmvnxu2QNDV1QlbU+RGjooQs1fZWdKbkftK3p9Fa2haULe zXVKSDKh+4rE4XaUnMSG3vTE+LQLcztGU8xY2zX4= Received: from fainelli-desktop.igp.broadcom.net (fainelli-desktop.dhcp.broadcom.net [10.67.48.245]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail-lvn-it-01.lvn.broadcom.net (Postfix) with ESMTPSA id AA1F118041CAC6; Mon, 19 Feb 2024 12:40:55 -0800 (PST) From: Florian Fainelli To: netdev@vger.kernel.org Cc: Florian Fainelli , Jacob Keller , Doug Berger , Broadcom internal kernel review list , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Andrew Lunn , Heiner Kallweit , Russell King , linux-kernel@vger.kernel.org (open list), Justin Chen Subject: [PATCH net-next v2 1/3] net: mdio: mdio-bcm-unimac: Manage clock around I/O accesses Date: Mon, 19 Feb 2024 12:40:51 -0800 Message-Id: <20240219204053.471825-2-florian.fainelli@broadcom.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240219204053.471825-1-florian.fainelli@broadcom.com> References: <20240219204053.471825-1-florian.fainelli@broadcom.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1791379472490058701 X-GMAIL-MSGID: 1791379472490058701 Up until now we have managed not to have the mdio-bcm-unimac manage its clock except during probe and suspend/resume. This works most of the time, except where it does not. With a fully modular build, we can get into a situation whereby the GENET driver is fully registered, and so is the mdio-bcm-unimac driver, however the Ethernet PHY driver is not yet, because it depends on a resource that is not yet available (e.g.: GPIO provider). In that state, the network device is not usable yet, and so to conserve power, the GENET driver will have turned off its "main" clock which feeds its MDIO controller. When the PHY driver finally probes however, we make an access to the PHY registers to e.g.: disable interrupts, and this causes a bus error within the MDIO controller space because the MDIO controller clock(s) are turned off. To remedy that, we manage the clock around all of the I/O accesses to the hardware which are done exclusively during read, write and clock divider configuration. This ensures that the register space is accessible, and this also ensures that there are not unnecessarily elevated reference counts keeping the clocks active when the network device is administratively turned off. It would be the case with the previous way of managing the clock. Reviewed-by: Jacob Keller Signed-off-by: Florian Fainelli --- drivers/net/mdio/mdio-bcm-unimac.c | 93 ++++++++++--------- include/linux/platform_data/mdio-bcm-unimac.h | 3 + 2 files changed, 53 insertions(+), 43 deletions(-) diff --git a/drivers/net/mdio/mdio-bcm-unimac.c b/drivers/net/mdio/mdio-bcm-unimac.c index 68f8ee0ec8ba..6fe08427fdd4 100644 --- a/drivers/net/mdio/mdio-bcm-unimac.c +++ b/drivers/net/mdio/mdio-bcm-unimac.c @@ -94,6 +94,10 @@ static int unimac_mdio_read(struct mii_bus *bus, int phy_id, int reg) int ret; u32 cmd; + ret = clk_prepare_enable(priv->clk); + if (ret) + return ret; + /* Prepare the read operation */ cmd = MDIO_RD | (phy_id << MDIO_PMD_SHIFT) | (reg << MDIO_REG_SHIFT); unimac_mdio_writel(priv, cmd, MDIO_CMD); @@ -103,7 +107,7 @@ static int unimac_mdio_read(struct mii_bus *bus, int phy_id, int reg) ret = priv->wait_func(priv->wait_func_data); if (ret) - return ret; + goto out; cmd = unimac_mdio_readl(priv, MDIO_CMD); @@ -112,10 +116,15 @@ static int unimac_mdio_read(struct mii_bus *bus, int phy_id, int reg) * that condition here and ignore the MDIO controller read failure * indication. */ - if (!(bus->phy_ignore_ta_mask & 1 << phy_id) && (cmd & MDIO_READ_FAIL)) - return -EIO; + if (!(bus->phy_ignore_ta_mask & 1 << phy_id) && (cmd & MDIO_READ_FAIL)) { + ret = -EIO; + goto out; + } - return cmd & 0xffff; + ret = cmd & 0xffff; +out: + clk_disable_unprepare(priv->clk); + return ret; } static int unimac_mdio_write(struct mii_bus *bus, int phy_id, @@ -123,6 +132,11 @@ static int unimac_mdio_write(struct mii_bus *bus, int phy_id, { struct unimac_mdio_priv *priv = bus->priv; u32 cmd; + int ret; + + ret = clk_prepare_enable(priv->clk); + if (ret) + return ret; /* Prepare the write operation */ cmd = MDIO_WR | (phy_id << MDIO_PMD_SHIFT) | @@ -131,7 +145,10 @@ static int unimac_mdio_write(struct mii_bus *bus, int phy_id, unimac_mdio_start(priv); - return priv->wait_func(priv->wait_func_data); + ret = priv->wait_func(priv->wait_func_data); + clk_disable_unprepare(priv->clk); + + return ret; } /* Workaround for integrated BCM7xxx Gigabit PHYs which have a problem with @@ -178,14 +195,19 @@ static int unimac_mdio_reset(struct mii_bus *bus) return 0; } -static void unimac_mdio_clk_set(struct unimac_mdio_priv *priv) +static int unimac_mdio_clk_set(struct unimac_mdio_priv *priv) { unsigned long rate; u32 reg, div; + int ret; /* Keep the hardware default values */ if (!priv->clk_freq) - return; + return 0; + + ret = clk_prepare_enable(priv->clk); + if (ret) + return ret; if (!priv->clk) rate = 250000000; @@ -195,7 +217,8 @@ static void unimac_mdio_clk_set(struct unimac_mdio_priv *priv) div = (rate / (2 * priv->clk_freq)) - 1; if (div & ~MDIO_CLK_DIV_MASK) { pr_warn("Incorrect MDIO clock frequency, ignoring\n"); - return; + ret = 0; + goto out; } /* The MDIO clock is the reference clock (typically 250Mhz) divided by @@ -205,6 +228,9 @@ static void unimac_mdio_clk_set(struct unimac_mdio_priv *priv) reg &= ~(MDIO_CLK_DIV_MASK << MDIO_CLK_DIV_SHIFT); reg |= div << MDIO_CLK_DIV_SHIFT; unimac_mdio_writel(priv, reg, MDIO_CFG); +out: + clk_disable_unprepare(priv->clk); + return ret; } static int unimac_mdio_probe(struct platform_device *pdev) @@ -235,24 +261,12 @@ static int unimac_mdio_probe(struct platform_device *pdev) return -ENOMEM; } - priv->clk = devm_clk_get_optional(&pdev->dev, NULL); - if (IS_ERR(priv->clk)) - return PTR_ERR(priv->clk); - - ret = clk_prepare_enable(priv->clk); - if (ret) - return ret; - if (of_property_read_u32(np, "clock-frequency", &priv->clk_freq)) priv->clk_freq = 0; - unimac_mdio_clk_set(priv); - priv->mii_bus = mdiobus_alloc(); - if (!priv->mii_bus) { - ret = -ENOMEM; - goto out_clk_disable; - } + if (!priv->mii_bus) + return -ENOMEM; bus = priv->mii_bus; bus->priv = priv; @@ -261,17 +275,29 @@ static int unimac_mdio_probe(struct platform_device *pdev) priv->wait_func = pdata->wait_func; priv->wait_func_data = pdata->wait_func_data; bus->phy_mask = ~pdata->phy_mask; + priv->clk = pdata->clk; } else { bus->name = "unimac MII bus"; priv->wait_func_data = priv; priv->wait_func = unimac_mdio_poll; + priv->clk = devm_clk_get_optional(&pdev->dev, NULL); + } + + if (IS_ERR(priv->clk)) { + ret = PTR_ERR(priv->clk); + goto out_mdio_free; } + bus->parent = &pdev->dev; bus->read = unimac_mdio_read; bus->write = unimac_mdio_write; bus->reset = unimac_mdio_reset; snprintf(bus->id, MII_BUS_ID_SIZE, "%s-%d", pdev->name, pdev->id); + ret = unimac_mdio_clk_set(priv); + if (ret) + goto out_mdio_free; + ret = of_mdiobus_register(bus, np); if (ret) { dev_err(&pdev->dev, "MDIO bus registration failed\n"); @@ -286,8 +312,6 @@ static int unimac_mdio_probe(struct platform_device *pdev) out_mdio_free: mdiobus_free(bus); -out_clk_disable: - clk_disable_unprepare(priv->clk); return ret; } @@ -297,34 +321,17 @@ static void unimac_mdio_remove(struct platform_device *pdev) mdiobus_unregister(priv->mii_bus); mdiobus_free(priv->mii_bus); - clk_disable_unprepare(priv->clk); -} - -static int __maybe_unused unimac_mdio_suspend(struct device *d) -{ - struct unimac_mdio_priv *priv = dev_get_drvdata(d); - - clk_disable_unprepare(priv->clk); - - return 0; } static int __maybe_unused unimac_mdio_resume(struct device *d) { struct unimac_mdio_priv *priv = dev_get_drvdata(d); - int ret; - ret = clk_prepare_enable(priv->clk); - if (ret) - return ret; - - unimac_mdio_clk_set(priv); - - return 0; + return unimac_mdio_clk_set(priv); } static SIMPLE_DEV_PM_OPS(unimac_mdio_pm_ops, - unimac_mdio_suspend, unimac_mdio_resume); + NULL, unimac_mdio_resume); static const struct of_device_id unimac_mdio_ids[] = { { .compatible = "brcm,asp-v2.1-mdio", }, diff --git a/include/linux/platform_data/mdio-bcm-unimac.h b/include/linux/platform_data/mdio-bcm-unimac.h index 8a5f9f0b2c52..724e1f57b81f 100644 --- a/include/linux/platform_data/mdio-bcm-unimac.h +++ b/include/linux/platform_data/mdio-bcm-unimac.h @@ -1,11 +1,14 @@ #ifndef __MDIO_BCM_UNIMAC_PDATA_H #define __MDIO_BCM_UNIMAC_PDATA_H +struct clk; + struct unimac_mdio_pdata { u32 phy_mask; int (*wait_func)(void *data); void *wait_func_data; const char *bus_name; + struct clk *clk; }; #define UNIMAC_MDIO_DRV_NAME "unimac-mdio" From patchwork Mon Feb 19 20:40:52 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 203356 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:693c:2685:b0:108:e6aa:91d0 with SMTP id mn5csp110695dyc; Mon, 19 Feb 2024 16:19:56 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCVtfzu9Y6lUb6B8xcjJ+sUtjvND5Jkt0yT88NViaCKsauwFZFh6Se4lF6vpoZyBtmcJjTrn/zz/KVlSdBzr/qnJBth0KA== X-Google-Smtp-Source: AGHT+IE7gdj6qpfkNfne7FWQ0zG5031AmEwIou9PCPvi0SFxcbgcOq6wFEhCD1ygUC2WJbuqNyno X-Received: by 2002:a05:6a21:3943:b0:19e:aa08:1a0 with SMTP id ac3-20020a056a21394300b0019eaa0801a0mr22648199pzc.8.1708388395603; Mon, 19 Feb 2024 16:19:55 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1708388395; cv=pass; d=google.com; s=arc-20160816; b=AddD9nN9pRo9nMNse83Np1mpL5N+4AGJ7Is7RDRb7xTI/UrFJ+sgX1i3ypTy9+8jO2 hAdLCvXIoEd6kHyEvsRGkCuPnwKjSk5bU76/7BrcjXYOvj24lcmMZGdui4APY2arTLzA FU+sSL12bhJWExWIpD0MrpIaJlBbgYky0UsCdYkCw/PmFHPjPoVytUURdqVOluNx/4UH A6zl9cLg4Bx1PiSBtMcaShy7tsFxz4DpPb+OaIknJ3XI1gWHkxtazxghbiBr4OIzrHuv xCPf9i7o07vhcEQJM/+quJddwf6iKIb+t4o2FYg7d2U1Q8BnAMNg0gPZjlJ/Zvvp2rL8 f02g== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature:dkim-filter; bh=MbcjRTHeFxZOdEjwZtzMKc9/Y8CVXJAhqD8fOWJ+Xc0=; fh=j/OwmfJVRgCPa4uSHTSwxfS2Laf6Vp3HYivcwwufwU4=; b=PYAogPf/XChTOxhP7bXEJMTIsfLvrBO7lJ9kxjMAG1oXTGagMgzSfRRaT8rKISjHW6 1Rp7Wp9qcf4xinEwgK1i6XYDL3xWVKlP01S6AjpvovYHBEe0Va50MI/V5ERMhIlE6GXO xJqLJLSKSMwK0Y6A6IzV6iCyS0JAvhF5wGV+HVL1gjckBamlT24ENpYjSq36g8Y4fTKy DIbR4/lVTxzz6SIEKQMPNVdIAQE1Svwat7OQ3m68aU/Lz0dJHysJ9TFM6VqFE9SWa4US iDqKdVUrhZX3tNT2OE7dqV5jkEtCIQaG8xL8rQ/t6MrwDI3gfmlfYi8wGcyo7UiEi2P3 eIBw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@broadcom.com header.s=dkimrelay header.b=c1B3I38i; arc=pass (i=1 dkim=pass dkdomain=broadcom.com dmarc=pass fromdomain=broadcom.com); spf=pass (google.com: domain of linux-kernel+bounces-71978-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-71978-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=broadcom.com Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id a187-20020a6366c4000000b005dbcf612461si5401458pgc.416.2024.02.19.16.19.55 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 Feb 2024 16:19:55 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-71978-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@broadcom.com header.s=dkimrelay header.b=c1B3I38i; arc=pass (i=1 dkim=pass dkdomain=broadcom.com dmarc=pass fromdomain=broadcom.com); spf=pass (google.com: domain of linux-kernel+bounces-71978-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-71978-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=broadcom.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id BB910287ACF for ; Mon, 19 Feb 2024 20:42:26 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 78C5A5645B; Mon, 19 Feb 2024 20:41:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="c1B3I38i" Received: from relay.smtp-ext.broadcom.com (relay.smtp-ext.broadcom.com [192.19.144.205]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BA3AF535D6; Mon, 19 Feb 2024 20:41:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.19.144.205 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708375266; cv=none; b=HUBNxNl8b95GpAgEIv3S4UrmyULRReedDzhhy4W9BeO+a0CVDD4ecayesiGAtO8P+gfrzhp1Zw0IBUfqX941MM+VfKTloLzb8BRRHsS/aFN8mc+juuBzCkq7FuA1bSVtqhusuB8LUWh9EwvSEFE6hWqh/ws95aubyhw9BU+2xRI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708375266; c=relaxed/simple; bh=1XKmVkJGMse2FkEHAtATkVJsddA0KnJTeeuea388y+8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=dT/U37PiAt3EEzALYOZEhVngetUhiaj/QBIz0AvQ9fjGcL8r+Vf70n6se9BV92U2lqnhPvabM7R5gmyBRrPqHEMgf+nRzzOh50LTHD69Jph1QEFZ3bZRryqRXwbrq5w9gv1dDnsuqzovN+M+q5ucb15SGx09uIDYUzVlGh9V6AI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=c1B3I38i; arc=none smtp.client-ip=192.19.144.205 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Received: from mail-lvn-it-01.lvn.broadcom.net (mail-lvn-it-01.lvn.broadcom.net [10.36.132.253]) by relay.smtp-ext.broadcom.com (Postfix) with ESMTP id A15FFC0000E3; Mon, 19 Feb 2024 12:40:57 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com A15FFC0000E3 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1708375257; bh=1XKmVkJGMse2FkEHAtATkVJsddA0KnJTeeuea388y+8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=c1B3I38iTBsxlmBH/377DLgzNqwdGKLDMPupJr577dSUHU0oWJlqYW6rpUs2LpSDy IuHW8yI79NOHtNOYoRjAMXXJgO3SfCqAbk+PVe0TM3qVq4w7+mT7ZusxF9em7LTBxx REU7q2dgRZuemQW2YHYs7V6qsXQTMXb5vrN01U+o= Received: from fainelli-desktop.igp.broadcom.net (fainelli-desktop.dhcp.broadcom.net [10.67.48.245]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail-lvn-it-01.lvn.broadcom.net (Postfix) with ESMTPSA id D3F3018041CAC7; Mon, 19 Feb 2024 12:40:55 -0800 (PST) From: Florian Fainelli To: netdev@vger.kernel.org Cc: Florian Fainelli , Jacob Keller , Doug Berger , Broadcom internal kernel review list , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Andrew Lunn , Heiner Kallweit , Russell King , linux-kernel@vger.kernel.org (open list), Justin Chen Subject: [PATCH net-next v2 2/3] net: bcmgenet: Pass "main" clock down to the MDIO driver Date: Mon, 19 Feb 2024 12:40:52 -0800 Message-Id: <20240219204053.471825-3-florian.fainelli@broadcom.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240219204053.471825-1-florian.fainelli@broadcom.com> References: <20240219204053.471825-1-florian.fainelli@broadcom.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1791375070526737333 X-GMAIL-MSGID: 1791375070526737333 GENET has historically had to create a MDIO platform device for its controller and pass some auxiliary data to it, like a MDIO completion callback. Now we also pass the "main" clock to allow for the MDIO bus controller to manage that clock adequately around I/O accesses. Reviewed-by: Jacob Keller Signed-off-by: Florian Fainelli --- drivers/net/ethernet/broadcom/genet/bcmmii.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/net/ethernet/broadcom/genet/bcmmii.c b/drivers/net/ethernet/broadcom/genet/bcmmii.c index cbbe004621bc..7a21950da77c 100644 --- a/drivers/net/ethernet/broadcom/genet/bcmmii.c +++ b/drivers/net/ethernet/broadcom/genet/bcmmii.c @@ -476,6 +476,10 @@ static int bcmgenet_mii_register(struct bcmgenet_priv *priv) ppd.wait_func = bcmgenet_mii_wait; ppd.wait_func_data = priv; ppd.bus_name = "bcmgenet MII bus"; + /* Pass a reference to our "main" clock which is used for MDIO + * transfers + */ + ppd.clk = priv->clk; /* Unimac MDIO bus controller starts at UniMAC offset + MDIO_CMD * and is 2 * 32-bits word long, 8 bytes total. From patchwork Mon Feb 19 20:40:53 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 203359 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:693c:2685:b0:108:e6aa:91d0 with SMTP id mn5csp118648dyc; Mon, 19 Feb 2024 16:45:54 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCUbHWjJrGq7pOEWEz+iqmmBmJtJPO/kX+9rsbAlD1BFU1ZNE/bVkQfVhieUhl4inhrVGMp6JyWZWl0AjFvZBo3ZNjJmyg== X-Google-Smtp-Source: AGHT+IE4uDxWuosLzRhCtMRk8uaxDEqCiSIzkAsgjuujtcMS+NO/ry3xpg3bStyAvV1n/OlJ1Su7 X-Received: by 2002:ad4:5d42:0:b0:68f:3dfa:951d with SMTP id jk2-20020ad45d42000000b0068f3dfa951dmr13269194qvb.56.1708389954020; Mon, 19 Feb 2024 16:45:54 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1708389954; cv=pass; d=google.com; s=arc-20160816; b=dXuNGdbGGRR9zPl2KDmoikIEMsK502yBaBye1HOgJqwIy7UjiNcQAJg1ZoqnrdLLyk R4sNYWIgqzdZJKUVJwIgB5x2DWfb2xoRX5JBvxF+Npxfro5ocyJ2+df96OTCnIS1d+Y+ HFUG/oTqSpU8/PuNAMAlfobKCgeJiifTKJ0vBQBF9ozgr3N2ckgTQbb3rojfDzPo4uaf QbH4h+qJQ8YK+qBIDSyv3tzvk56XhdXxpCU2UG9Fka2ksS0ec9SCzgcQpqIVCoKmWGSj 6vwVS45atP2r0Gm1sgwxy+6JXw16nMxyKJHmdqPHROwUWLgGNtaYTI20bGpTViBb1kY4 ivAQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature:dkim-filter; bh=A0TlXKrkc7oaN+OEDCLZ+cP+0vqzDV2WAem3I9ZzSrs=; fh=j/OwmfJVRgCPa4uSHTSwxfS2Laf6Vp3HYivcwwufwU4=; b=Z37zZQ8eya7IwDjf6QDst0bPxS1V5xNbXpufJ5PoA+fLPk947UETvWfiY597nCIC+l exYhO2gy6UPhvKgJlZHos/30vcYTFQMcvNkVVU6K+4yJzv1dOI2dsqPobVj2DHBwnz7O mvSvUpJ80M6jtp/iB03hpRTwr91FMSexUYngd56Vd4pSboEa0cf6oqpJHFXL31fXLDQC wc4WGezTpQtwHqfnbEb5PXccFbILcQSkpyGYlYT971yzF6iALACzoYen+uKkEOF5jMtM cRPs+mqAWNrBDU4QBTkqnKtDJwYP599ODN/0O6M0IN5cfXLHl9fRuqBqRPY4kZjh+o2l PxVg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@broadcom.com header.s=dkimrelay header.b=WA993cE8; arc=pass (i=1 dkim=pass dkdomain=broadcom.com dmarc=pass fromdomain=broadcom.com); spf=pass (google.com: domain of linux-kernel+bounces-71975-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-71975-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=broadcom.com Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [147.75.199.223]) by mx.google.com with ESMTPS id pt1-20020a056214048100b0068efc03dfe8si7284479qvb.582.2024.02.19.16.45.53 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 Feb 2024 16:45:54 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-71975-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) client-ip=147.75.199.223; Authentication-Results: mx.google.com; dkim=pass header.i=@broadcom.com header.s=dkimrelay header.b=WA993cE8; arc=pass (i=1 dkim=pass dkdomain=broadcom.com dmarc=pass fromdomain=broadcom.com); spf=pass (google.com: domain of linux-kernel+bounces-71975-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-71975-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=broadcom.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 3DA0E1C23D3B for ; Mon, 19 Feb 2024 20:42:03 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id B96705577E; Mon, 19 Feb 2024 20:41:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="WA993cE8" Received: from relay.smtp-ext.broadcom.com (unknown [192.19.166.228]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7EBEA50267; Mon, 19 Feb 2024 20:41:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.19.166.228 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708375265; cv=none; b=W1yPAec7knUFOvk2WZCERNxpXiAGt3nWJ/GFNhcgZwAhYo+WY3ugt77LXoJbJVkK34ZsnYcm9OEH8MF9BURa2p7ZH0cFN8TsiSxUbEl0T0UjKATx3E3xvt8r/V5CIl7/ZSzeAWNFbQUFxKbf5ksa2hJAqC71RpxuIQKhnhLGOlI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708375265; c=relaxed/simple; bh=o0TlAjqIB1czzINK/rdoqCJ5lVeAGeS7FC7bZcSamiY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ulcD1rrm2m6bgdG21j6QpFBsh3wWyHPgDoiSJwUYdlC2WSnywrjmRVat3z5DwNSAILsZbOD7PBZtqEcY2py2eGb7u2No7t5EyO2tS8lp5mOwAWsiIIYvBAclHnHM24Y4OsIFpLcXtVrzt6iu6jLwtGK8ZHWJOZpwdvLA9e6RAdo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=WA993cE8; arc=none smtp.client-ip=192.19.166.228 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Received: from mail-lvn-it-01.lvn.broadcom.net (mail-lvn-it-01.lvn.broadcom.net [10.36.132.253]) by relay.smtp-ext.broadcom.com (Postfix) with ESMTP id 87A5DC003B80; Mon, 19 Feb 2024 12:40:57 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com 87A5DC003B80 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1708375257; bh=o0TlAjqIB1czzINK/rdoqCJ5lVeAGeS7FC7bZcSamiY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=WA993cE8MyTCiGVAijtq+cwOqHy0emZjkb0SIvPNlCiIIBuZdvCdMA1r8ZkbShTVC y83hso+wdYgRpnjeHvDrk2GTZnrooZFm4NhgzHv+t5JX2hxSpRrEK/yRXYk03yVLLj nTgjAtB0SPJa01DIb5QkNYZ7eHSsdYRrOkVXfxFY= Received: from fainelli-desktop.igp.broadcom.net (fainelli-desktop.dhcp.broadcom.net [10.67.48.245]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail-lvn-it-01.lvn.broadcom.net (Postfix) with ESMTPSA id 0989518041CAC4; Mon, 19 Feb 2024 12:40:56 -0800 (PST) From: Florian Fainelli To: netdev@vger.kernel.org Cc: Florian Fainelli , Jacob Keller , Doug Berger , Broadcom internal kernel review list , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Andrew Lunn , Heiner Kallweit , Russell King , linux-kernel@vger.kernel.org (open list), Justin Chen Subject: [PATCH net-next v2 3/3] Revert "net: bcmgenet: Ensure MDIO unregistration has clocks enabled" Date: Mon, 19 Feb 2024 12:40:53 -0800 Message-Id: <20240219204053.471825-4-florian.fainelli@broadcom.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240219204053.471825-1-florian.fainelli@broadcom.com> References: <20240219204053.471825-1-florian.fainelli@broadcom.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1791376704287913935 X-GMAIL-MSGID: 1791376704287913935 This reverts commit 1b5ea7ffb7a3bdfffb4b7f40ce0d20a3372ee405 ("net: bcmgenet: Ensure MDIO unregistration has clocks enabled"). This is no longer necessary now that the MDIO bus controller has a clock that it can manage around the I/O accesses. Reviewed-by: Jacob Keller Signed-off-by: Florian Fainelli --- drivers/net/ethernet/broadcom/genet/bcmmii.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/net/ethernet/broadcom/genet/bcmmii.c b/drivers/net/ethernet/broadcom/genet/bcmmii.c index 7a21950da77c..9ada89355747 100644 --- a/drivers/net/ethernet/broadcom/genet/bcmmii.c +++ b/drivers/net/ethernet/broadcom/genet/bcmmii.c @@ -678,7 +678,5 @@ void bcmgenet_mii_exit(struct net_device *dev) if (of_phy_is_fixed_link(dn)) of_phy_deregister_fixed_link(dn); of_node_put(priv->phy_dn); - clk_prepare_enable(priv->clk); platform_device_unregister(priv->mii_pdev); - clk_disable_unprepare(priv->clk); }