From nobody Mon Feb 9 13:21:32 2026 Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AF96D229B38; Mon, 8 Sep 2025 10:59:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757329158; cv=none; b=USBtzSo67AMVpBTeQ/XnNFld7zNEgxKVx++c+HDc0wmkKtknftUC5HdkjDlqOIBQSw3TtYeucbgWAuX2/kxnIbI/NqMl4+wHgLdmwjkhx9ngbP2uFm+nkJzqNDukrS1EzKIVn5c+5y6fLjqSIQt4Keg7BlOG2cVsqYwTwVWlodw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757329158; c=relaxed/simple; bh=RRXKpyB1zyA0Tn5B4rSFnxVyQ1oz/YOJj+2tt8M50xE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lLlbhapKQfTNkWL3XvGR54n0dQYEXuyigAQYsd2hQDzWFaFxBo6Dr53qsoOoC0dk1/P2g3scYhnnxJxCLGAwo+Rc1dvPy9XXQlI8IPeuJsiSy/8TokKwskuUDrhwusTMfqvQctu8gjqur2Kx/WazOKDQbySXivqTlaxNZ5TWoTQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=XYsYxd4q; arc=none smtp.client-ip=209.85.221.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="XYsYxd4q" Received: by mail-wr1-f45.google.com with SMTP id ffacd0b85a97d-3d3ff4a4d6fso2596826f8f.0; Mon, 08 Sep 2025 03:59:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757329154; x=1757933954; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=peDufwHvetmPOFt3DEDwzaxtxNLiJvPrin9RtvRg8KU=; b=XYsYxd4qp4y7i1ySs+Z9JYnXjg6AqFw0DZCkJEiXihldnWLOdf/6gqSeoxo1KjjVoT Jta5vkwFv0X1Xp2gwrsbvdlvQPdYrxNquvQGk2L3wtlnJsMCXm8zAmZn6/Gd8NvUdai6 iKfoIve/NTeZyGps5NfgtgVdq0tJmT1mAVMgYgGxYeq1r0uRRU6MMOMecet55l3LGbO/ QJNyvglgY5FdNMoxvDB3hAHhuDpNS3KRilRnjr/C4lyGvUrWyK1Uoq5LsVRoLozz6hJk tdl2jaKn6ubG0TTw4iZJgUArafEASAuLUzr+ow1hUeDlvIgcFedb66oR5SV381GLsRxn FwrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757329154; x=1757933954; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=peDufwHvetmPOFt3DEDwzaxtxNLiJvPrin9RtvRg8KU=; b=dRRzd9rXIx18ot4oTBZ39newwd7DK5uZ3XimG3Gc9jXowMFY7xaWZIF7euQd6t4twa 9gQOJ/YnKq1rFY6it356118EFDT2c1NGvTJeqZD6nq43ruGwyprogevruncEua4MaSbM 1+eBNW7D6G6uJsMIpstdsCGnJj86qEDvhSqafl0mtSKQDYkfIDb6mGzFeBF3OUEKRMZM L4mZSo15sOWBPTT8wZxQW//84YtKjzEh9OQIW6ae2Z5ep7LHcvVnEzFQwBLjbFApFOaG WWWI9omcq58MAy7wy/9cK+ajQyviPPswt7H7BJTuyc8RWl16///X8vYS1edadMQqHKaS N/gA== X-Forwarded-Encrypted: i=1; AJvYcCU+pMpGL+8T7kishsqvJxui3Hhzb291Swp+ViZcwbryOt5I9IoRbR5reBTs4oCilQfA/6asG23/N/S6SMXqonMsWV0=@vger.kernel.org, AJvYcCU1vqlhgNgg0ZZTtpl31pRlrqlJHJn7kFQ8THbsb2Nvd6X79/eEhkOFKrgKBVuDdRMhh2vvK+yXKECQ@vger.kernel.org, AJvYcCW9zXnXq1sHBPRPwO9k00U6LF4TzdJFE7us6UHyejgffs2LZM2AZHSS2yF+/lzyMTG08+I5ork9NG3VgOyY@vger.kernel.org X-Gm-Message-State: AOJu0YyhSIf79MMm8iunmns950XtDI8JmF0rI75yNVrIynLpOQNZu0jU TUeC/Hpi/uBK24tiy3iAw14NqXzTuwlzVduceTFP0ZM/qkxvoJno4VKS X-Gm-Gg: ASbGncudWzAqBtNnMWMmvQfxUlY6159ijW6MlKr2oLvYwv4+5a4lW3CRKvyMTYJiwxY /8IDQphn7gz6tRxbN3g2k8vJ3FLb2rKxjolHwTaFCf/7YvKtuxqdv/vW05wdDwVVTmr256Et8HR Tv1U+AAKQN8PzQYMIw/Ocp9EXzC8rfMUjU67uNMMVyw1xtsgSH6y6lw2fHJO1y4QE1hzx3I+rnA fs4GJhwppq+eL4aVbSbK00Ou8+gPKj68KvJWEwn4NFA2mZouehvaNbk7wiJftuf7RNoGHOeQTK5 YNLyE/Q93CcXY9h6dx/ABvHV/QP2vV4L7efhGW8CszFaWqeVur76mJrXWTYRUsu2NYLGWlP8hmV LZIPHJ5zDw0DwPdgomMvia6fz9/BfLKgCJsSJlKn+F+DISZFVQB+Hc6zm7w== X-Google-Smtp-Source: AGHT+IELTgxCxxMFlkSEsgovlmb0CJQVYUnnXHGxbgqoK5YwfTIppZeS9BA8X3YNorpanLJ1ufvAzA== X-Received: by 2002:a05:6000:2c0e:b0:3d7:94bb:cb9d with SMTP id ffacd0b85a97d-3e636d8f2ecmr5327019f8f.3.1757329153628; Mon, 08 Sep 2025 03:59:13 -0700 (PDT) Received: from iku.Home ([2a06:5906:61b:2d00:393b:4605:1f6c:eea1]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45ddfe0b654sm91063195e9.3.2025.09.08.03.59.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Sep 2025 03:59:13 -0700 (PDT) From: Prabhakar X-Google-Original-From: Prabhakar To: Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Maxime Coquelin , Alexandre Torgue , Richard Cochran , Philipp Zabel , Russell King , Geert Uytterhoeven , Magnus Damm , Vladimir Oltean , Giuseppe Cavallaro , Jose Abreu Cc: netdev@vger.kernel.org, linux-renesas-soc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, Prabhakar , Biju Das , Fabrizio Castro , Lad Prabhakar Subject: [PATCH net-next v3 2/3] net: stmmac: dwmac-renesas-gbeth: Use OF data for configuration Date: Mon, 8 Sep 2025 11:59:00 +0100 Message-ID: <20250908105901.3198975-3-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250908105901.3198975-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20250908105901.3198975-1-prabhakar.mahadev-lad.rj@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Lad Prabhakar Prepare for adding RZ/T2H SoC support by making the driver configuration selectable via OF match data. While the RZ/V2H(P) and RZ/T2H use the same version of the Synopsys DesignWare MAC (version 5.20), the hardware is synthesized with different options. To accommodate these differences, introduce a struct holding per-SoC configuration such as clock list, number of clocks, TX clock rate control, and STMMAC flags, and retrieve it from the device tree match entry during probe. Signed-off-by: Lad Prabhakar --- v2->v3: - Made sure STMMAC_FLAG_EN_TX_LPI_CLK_PHY_CAP flag is always set for all the SoCs. v1->v2: - No changes. --- .../stmicro/stmmac/dwmac-renesas-gbeth.c | 57 +++++++++++++++---- 1 file changed, 47 insertions(+), 10 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-renesas-gbeth.c b/dr= ivers/net/ethernet/stmicro/stmmac/dwmac-renesas-gbeth.c index df4ca897a60c..50be944ee37b 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-renesas-gbeth.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-renesas-gbeth.c @@ -16,12 +16,34 @@ #include #include #include +#include #include #include +#include =20 #include "stmmac_platform.h" =20 +/** + * struct renesas_gbeth_of_data - OF data for Renesas GBETH + * + * @clks: Array of clock names + * @num_clks: Number of clocks + * @stmmac_flags: Flags for the stmmac driver + * @handle_reset: Flag to indicate if reset control is + * handled by the glue driver or core driver. + * @set_clk_tx_rate: Flag to indicate if Tx clock is fixed or + * set_clk_tx_rate is needed. + */ +struct renesas_gbeth_of_data { + const char * const *clks; + u8 num_clks; + u32 stmmac_flags; + bool handle_reset; + bool set_clk_tx_rate; +}; + struct renesas_gbeth { + const struct renesas_gbeth_of_data *of_data; struct plat_stmmacenet_data *plat_dat; struct reset_control *rstc; struct device *dev; @@ -70,6 +92,7 @@ static void renesas_gbeth_exit(struct platform_device *pd= ev, void *priv) =20 static int renesas_gbeth_probe(struct platform_device *pdev) { + const struct renesas_gbeth_of_data *of_data; struct plat_stmmacenet_data *plat_dat; struct stmmac_resources stmmac_res; struct device *dev =3D &pdev->dev; @@ -91,14 +114,17 @@ static int renesas_gbeth_probe(struct platform_device = *pdev) if (!gbeth) return -ENOMEM; =20 - plat_dat->num_clks =3D ARRAY_SIZE(renesas_gbeth_clks); + of_data =3D of_device_get_match_data(&pdev->dev); + gbeth->of_data =3D of_data; + + plat_dat->num_clks =3D of_data->num_clks; plat_dat->clks =3D devm_kcalloc(dev, plat_dat->num_clks, sizeof(*plat_dat->clks), GFP_KERNEL); if (!plat_dat->clks) return -ENOMEM; =20 for (i =3D 0; i < plat_dat->num_clks; i++) - plat_dat->clks[i].id =3D renesas_gbeth_clks[i]; + plat_dat->clks[i].id =3D of_data->clks[i]; =20 err =3D devm_clk_bulk_get(dev, plat_dat->num_clks, plat_dat->clks); if (err < 0) @@ -109,25 +135,36 @@ static int renesas_gbeth_probe(struct platform_device= *pdev) return dev_err_probe(dev, -EINVAL, "error finding tx clock\n"); =20 - gbeth->rstc =3D devm_reset_control_get_exclusive(dev, NULL); - if (IS_ERR(gbeth->rstc)) - return PTR_ERR(gbeth->rstc); + if (of_data->handle_reset) { + gbeth->rstc =3D devm_reset_control_get_exclusive(dev, NULL); + if (IS_ERR(gbeth->rstc)) + return PTR_ERR(gbeth->rstc); + } =20 gbeth->dev =3D dev; gbeth->plat_dat =3D plat_dat; plat_dat->bsp_priv =3D gbeth; - plat_dat->set_clk_tx_rate =3D stmmac_set_clk_tx_rate; + if (of_data->set_clk_tx_rate) + plat_dat->set_clk_tx_rate =3D stmmac_set_clk_tx_rate; plat_dat->init =3D renesas_gbeth_init; plat_dat->exit =3D renesas_gbeth_exit; - plat_dat->flags |=3D STMMAC_FLAG_HWTSTAMP_CORRECT_LATENCY | - STMMAC_FLAG_EN_TX_LPI_CLK_PHY_CAP | - STMMAC_FLAG_SPH_DISABLE; + plat_dat->flags |=3D STMMAC_FLAG_EN_TX_LPI_CLK_PHY_CAP | + gbeth->of_data->stmmac_flags; =20 return devm_stmmac_pltfr_probe(pdev, plat_dat, &stmmac_res); } =20 +static const struct renesas_gbeth_of_data renesas_gbeth_of_data =3D { + .clks =3D renesas_gbeth_clks, + .num_clks =3D ARRAY_SIZE(renesas_gbeth_clks), + .handle_reset =3D true, + .set_clk_tx_rate =3D true, + .stmmac_flags =3D STMMAC_FLAG_HWTSTAMP_CORRECT_LATENCY | + STMMAC_FLAG_SPH_DISABLE, +}; + static const struct of_device_id renesas_gbeth_match[] =3D { - { .compatible =3D "renesas,rzv2h-gbeth", }, + { .compatible =3D "renesas,rzv2h-gbeth", .data =3D &renesas_gbeth_of_data= }, { /* Sentinel */ } }; MODULE_DEVICE_TABLE(of, renesas_gbeth_match); --=20 2.51.0