From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 7E452CA6001 for ; Tue, 6 Oct 2026 16:28:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=9mg85VabbbtS6czrrB4WvjO2AQoAfu5Y+/lBKySc/qo=; b=OZvZJzwee4oOfz ANJHgwGaL8pHEjj7CN86sb6RR+4OiBbNT/ccEYvidH3MIwfLDeg9lEutbCOAydZTjssLzlM8gVAEm fm5vzS1+lBp6EC2pEgFseS99Wi1YvsWMFaTTdVyxeWSS0GtB0xbqQ6XAiYYdFgODF1cs/QBf6NK/b sIYce68CbnNyRuKNMPwEYCFB25cJtxsf1AQzzF0NiCyWIdGWtK69W0aQRU8L0kC78rIdSUFR7TWnC 63R69Aga8d5Bk9NE5y1XCFR/6pKRsjp61vWSPpHSMT9B1IsD7ZTpnNPFdD5iHir1RqKGU+3NLFN+E bHON+kHJYkUJIa4zO53g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1xE81t-000000018XZ-1jOr; Tue, 06 Oct 2026 16:28:37 +0000 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1xE81r-000000018W3-1ZA7 for linux-rockchip@bombadil.infradead.org; Tue, 06 Oct 2026 16:28:35 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=Content-Transfer-Encoding:MIME-Version :References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=C5GHjzqrk28FffPt6wY8dDf5xP519k7dLJfQtCczhyU=; b=Q4Gz/RsaXi0BHCvYMMHJNKVeaA tg0IXHwLb2Dn+h5RhqasOA7d5yb5Z1QnzzqGc1ujYAG+R5GYFAvFyTxIIhMttWRrWo7tQ7m4XVmAT 6etlksHIrzFVUOTnmXTTWld9C5yuGp/S+Y6PV47GjoTC+a1LMl0UfkemtSgVLvlw52qN+jFajj8h2 83M6SF/NaQpNR7WqYgCkLCbLQvwqfnmxqqZTVR8T+RM8t+H7qY767qaH1rsNDtwjneXiLXcutkq03 bK9LaxkQG27Q8cslIiPtequcDm0dA60PxJ4gdha/Jqikj9QfGVm4QDeDTHRVBMYD54MLf103rcL7D 9/30wD0g==; Received: from mail-pz2-x09.google.com ([2607:f8b0:4864:3b::9]) by desiato.infradead.org with esmtps (Exim 4.99.2 #2 (Red Hat Linux)) id 1xE81n-00000008raI-17pk for linux-rockchip@lists.infradead.org; Tue, 06 Oct 2026 16:28:34 +0000 Received: by mail-pz2-x09.google.com with SMTP id 41be03b00d2f7-cc7a925c1a2so237713a12.1 for ; Tue, 06 Oct 2026 09:28:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1791304109; x=1791908909; darn=lists.infradead.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:content-type; bh=C5GHjzqrk28FffPt6wY8dDf5xP519k7dLJfQtCczhyU=; b=nRP2NeO02CTJR2376uXwO1yuornSuebTw5XNQm3PjxNnM6psdjgQnnr6jvnHgjzDnY aUAsVJMZdjvG2XS0Uqqj+Kfxw8rStaWDYkRKLH+fJHUiSCYxHRJ6cQmpM8hyqt8Zu4VZ F6xkuE9l22RW9DXDfeIX+rkYEP4C6uj0qjimGdgj3KOmR6aelcl9u1FHMGYgahR+TeWj P4QFVh2ZKdWWyCLilLvDnd0Pzq1YcTW41TLwa16ZxQDcaABfPEnHBQc9BPpiQ3VOg358 ye2BqCSTbS/K6jfjtm1XO/sAZCzL6AS8P+zbgPPABra6Xsn6Rv8vlhpeYNi0+StOjeVy EBkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1791304109; x=1791908909; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=C5GHjzqrk28FffPt6wY8dDf5xP519k7dLJfQtCczhyU=; b=GizCFL5WVbaSYt5kWHGEPl4bQUpsJrrs+MOjeXsQ6PwLxQksjNCBYOQzkoxWNcjdll IdPzjD2GstcnyDEnwyAhxToYjsRLDJIqdPQYJT2DjWla3u/FmmgabAgiK42o/snhcljH 2QHaO1L5Iu6hCXRwj42U9/kT8YU6cdaymU2iKaUKdBjC8nUhzToIgVi02KleNxOz1+Nq wyV6X6jvL5jQHTwWbPUUn2TQBZBTz3VD2rQkXGJ3PAigBBHV5kcPOVsPmoWB+y91Gog9 4WKGNy9BVoXhGX5gQSYUkmeaA/hAjlrkt2PX4r6I5urW59NqD4Iq+8ohfvmoOiZRDoPr pVtw== X-Forwarded-Encrypted: i=1; AKwUvBwpaFZ85Y2MAcV8iSn03lxnmp7Bhz6fiNL55h8XF7jsRoxVQfs+jE6gduBQGGfo/ua/tNnu6BPE0h2EVZ9GNQ==@lists.infradead.org X-Gm-Message-State: AFuF++l+FOWfT003lKUn2bDB087Ip9FxfY/iNG6lWXxjPJm+DScDbf3k ZclxAMEu9xMds6E5zox9KoabPev/OG/vDvVA4jcRhaTocnXg1fnrCpMnbg0Cs5QT0H7gpBOj X-Gm-Gg: AYBFou3YMUJt/6jmim1xeFyxR9RJBJN80fZOvB5tOVZktubM1AqCuyT/wipq5ixOw/L fV0LjKvsIDtXmva+uIV1GPH5+PYzliMBsTNURsHo0TYJptnuDG3Aq4dqzssm/yzdfcwnck2/o1f dvzlVRSs8ZraOd6SMp4oWXcfZGc+PhlNt3Jmw7DbTzttGh7mIp9b7a8D9jLNKJFHppSYOsRnB9R hKIWnmGxFlbIFjZcEMM5qj/9k9kmU0o2dGlLkHBaNH+JYfhYv+gQrQnzsajutP8sBXYFGVXY5+m 7BY/FIBAmzCl0C754i9Ke2Fft07HOOYB15Uc51TgRhbSceLQUG+IgFlGjaoioQbVH4jgdumdRha 3jJIzVSjsFBYig8Ag6GJEvKFUCcBLWz2LgOietiljxnWthCh+7apxalCU61BjP5j0vQGxLh0GUN JcdptPOE/PNlVkSnKA8AFOOepX49bTlNrq2+2imEcrNgF71WMh45P+/yMV9UZ7R44hHFpk X-Received: by 2002:a05:6a00:f87:b0:880:e0f8:2d9d with SMTP id d2e1a72fcca58-890df9992dbmr1806155b3a.55.1791304108962; Tue, 06 Oct 2026 09:28:28 -0700 (PDT) Received: from server.lan ([168.138.199.194]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-89188a0d603sm259898b3a.19.2026.10.06.09.28.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 Oct 2026 09:28:28 -0700 (PDT) From: Coia Prant To: Vinod Koul Cc: Neil Armstrong , Manivannan Sadhasivam , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Heiko Stuebner , linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, Coia Prant Subject: [PATCH v13 2/2] phy: rockchip: naneng-combphy: add SGMII MAC selection for RK3568 Date: Wed, 7 Oct 2026 00:28:06 +0800 Message-ID: <20261006162807.2843858-3-coiaprant@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20261006162807.2843858-1-coiaprant@gmail.com> References: <20261006162807.2843858-1-coiaprant@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20261006_172832_449370_72012C8A X-CRM114-Status: GOOD ( 21.76 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org On RK3568, the SGMII interface can be routed to either GMAC0 or GMAC1 via the GRF register pipe_sgmii_mac_sel. Add support for this selection by introducing the "rockchip,sgmii-mac-sel" DT property. >From the RK3568 TRM (Part1, Page 229), the PIPE_GRF_XPCS_CON0 bit 1 (pipe_sgmii_mac_sel) is defined as: 0: SGMII routed to GMAC0 1: SGMII routed to GMAC1 The hardware reset value is 1 (GMAC1). If the property is set to 0, the driver routes SGMII to GMAC0; if set to 1, it routes to GMAC1. If the property is absent, the driver leaves the routing unchanged, so the effective value is whatever the bootloader or hardware reset left. The driver validates the value and rejects anything other than 0 or 1. This is necessary for boards such as the Ariaboard Photonicat, which uses the SGMII interface connected to GMAC0. Link: https://dl.radxa.com/rock3/docs/hw/datasheet/Rockchip%20RK3568%20TRM%20Part1%20V1.1-20210301.pdf (Page 229) Signed-off-by: Coia Prant --- .../rockchip/phy-rockchip-naneng-combphy.c | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/drivers/phy/rockchip/phy-rockchip-naneng-combphy.c b/drivers/phy/rockchip/phy-rockchip-naneng-combphy.c index 7843356a4dd47..f76b48009673d 100644 --- a/drivers/phy/rockchip/phy-rockchip-naneng-combphy.c +++ b/drivers/phy/rockchip/phy-rockchip-naneng-combphy.c @@ -186,6 +186,7 @@ struct rockchip_combphy_grfcfg { struct combphy_reg pipe_xpcs_phy_ready; struct combphy_reg pipe_pcie1l0_sel; struct combphy_reg pipe_pcie1l1_sel; + struct combphy_reg pipe_sgmii_mac_sel; struct combphy_reg u3otg0_port_en; struct combphy_reg u3otg1_port_en; }; @@ -212,6 +213,8 @@ struct rockchip_combphy_priv { bool enable_ssc; bool ext_refclk; struct clk *refclk; + bool sgmii_mac_sel_present; + u32 sgmii_mac_sel; }; static void rockchip_combphy_updatel(struct rockchip_combphy_priv *priv, @@ -341,6 +344,7 @@ static struct phy *rockchip_combphy_xlate(struct device *dev, const struct of_ph static int rockchip_combphy_parse_dt(struct device *dev, struct rockchip_combphy_priv *priv) { int i; + int ret; priv->num_clks = devm_clk_bulk_get_all(dev, &priv->clks); if (priv->num_clks < 1) @@ -375,6 +379,16 @@ static int rockchip_combphy_parse_dt(struct device *dev, struct rockchip_combphy priv->ext_refclk = device_property_present(dev, "rockchip,ext-refclk"); + if (device_property_present(dev, "rockchip,sgmii-mac-sel")) { + ret = device_property_read_u32(dev, "rockchip,sgmii-mac-sel", &priv->sgmii_mac_sel); + if (ret) { + dev_err(dev, "failed to read sgmii-mac-sel property\n"); + return ret; + } + + priv->sgmii_mac_sel_present = true; + } + priv->phy_rst = devm_reset_control_get_exclusive(dev, "phy"); /* fallback to old behaviour */ if (PTR_ERR(priv->phy_rst) == -ENOENT) @@ -803,11 +817,34 @@ static const struct rockchip_combphy_cfg rk3562_combphy_cfgs = { .combphy_cfg = rk3562_combphy_cfg, }; +static int rk3568_combphy_select_sgmii_mac(struct rockchip_combphy_priv *priv) +{ + const struct rockchip_combphy_grfcfg *cfg = priv->cfg->grfcfg; + + if (!priv->sgmii_mac_sel_present) + return 0; + + switch (priv->sgmii_mac_sel) { + case 0: + rockchip_combphy_param_write(priv->pipe_grf, &cfg->pipe_sgmii_mac_sel, false); + break; + case 1: + rockchip_combphy_param_write(priv->pipe_grf, &cfg->pipe_sgmii_mac_sel, true); + break; + default: + dev_err(priv->dev, "invalid sgmii-mac-sel value %u\n", priv->sgmii_mac_sel); + return -EINVAL; + } + + return 0; +} + static int rk3568_combphy_cfg(struct rockchip_combphy_priv *priv) { const struct rockchip_combphy_grfcfg *cfg = priv->cfg->grfcfg; unsigned long rate; u32 val; + int ret; switch (priv->type) { case PHY_TYPE_PCIE: @@ -873,6 +910,10 @@ static int rk3568_combphy_cfg(struct rockchip_combphy_priv *priv) break; case PHY_TYPE_SGMII: + ret = rk3568_combphy_select_sgmii_mac(priv); + if (ret) + return ret; + rockchip_combphy_param_write(priv->pipe_grf, &cfg->pipe_xpcs_phy_ready, true); rockchip_combphy_param_write(priv->phy_grf, &cfg->pipe_phymode_sel, true); rockchip_combphy_param_write(priv->phy_grf, &cfg->pipe_sel_qsgmii, true); @@ -984,6 +1025,7 @@ static const struct rockchip_combphy_grfcfg rk3568_combphy_grfcfgs = { .con3_for_sata = { 0x000c, 15, 0, 0x00, 0x4407 }, /* pipe-grf */ .pipe_con0_for_sata = { 0x0000, 15, 0, 0x00, 0x2220 }, + .pipe_sgmii_mac_sel = { 0x0040, 1, 1, 0x00, 0x01 }, .pipe_xpcs_phy_ready = { 0x0040, 2, 2, 0x00, 0x01 }, .u3otg0_port_en = { 0x0104, 15, 0, 0x0181, 0x1100 }, .u3otg1_port_en = { 0x0144, 15, 0, 0x0181, 0x1100 }, -- 2.47.3 _______________________________________________ Linux-rockchip mailing list Linux-rockchip@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-rockchip From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A54E2CA5FED for ; Tue, 6 Oct 2026 16:28:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Q0wvzRZ8KWO0ZRmbpJEtJtd6/HSgNEwX1hzr/X5VClg=; b=Vgldmn9TahOqhb wJubJ/cLc80DR3P8RqkEH5UMKAWCpAvgf498GXiFaCdv/nAYerkVzolfQOTt8R8By3S2ewsv0wBUL siGLFbFuNyfeuv7hVKbupOcdSKAiQJItwFwCeMRT2iu9LDPALVgTGVB35Db83/klSJpOpkLYiZPQa 0Hi1v6XKp1ijVvxSz7XXwYr1YBfzbRVVxWIJVGQfNmhN3K9hczKQOC4ujqCV1K1gSoleJ7mGUNwAS bL5Oe7UimXpHJz1el5UJ2Yn7v18M/6rJTnt5n8TayWIWxQOck9rb71kYaChh6c1WlPmtbvkJMENfF uYsgKBpSB8s7DLtDdJVg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1xE81t-000000018XN-15lc; Tue, 06 Oct 2026 16:28:37 +0000 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1xE81r-000000018W1-1Tj4 for linux-phy@bombadil.infradead.org; Tue, 06 Oct 2026 16:28:35 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=Content-Transfer-Encoding:MIME-Version :References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=C5GHjzqrk28FffPt6wY8dDf5xP519k7dLJfQtCczhyU=; b=Q4Gz/RsaXi0BHCvYMMHJNKVeaA tg0IXHwLb2Dn+h5RhqasOA7d5yb5Z1QnzzqGc1ujYAG+R5GYFAvFyTxIIhMttWRrWo7tQ7m4XVmAT 6etlksHIrzFVUOTnmXTTWld9C5yuGp/S+Y6PV47GjoTC+a1LMl0UfkemtSgVLvlw52qN+jFajj8h2 83M6SF/NaQpNR7WqYgCkLCbLQvwqfnmxqqZTVR8T+RM8t+H7qY767qaH1rsNDtwjneXiLXcutkq03 bK9LaxkQG27Q8cslIiPtequcDm0dA60PxJ4gdha/Jqikj9QfGVm4QDeDTHRVBMYD54MLf103rcL7D 9/30wD0g==; Received: from mail-pz2-x0b.google.com ([2607:f8b0:4864:3b::b]) by desiato.infradead.org with esmtps (Exim 4.99.2 #2 (Red Hat Linux)) id 1xE81n-00000008raK-17Zk for linux-phy@lists.infradead.org; Tue, 06 Oct 2026 16:28:34 +0000 Received: by mail-pz2-x0b.google.com with SMTP id 41be03b00d2f7-cc1631a57d2so425982a12.0 for ; Tue, 06 Oct 2026 09:28:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1791304109; x=1791908909; darn=lists.infradead.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:content-type; bh=C5GHjzqrk28FffPt6wY8dDf5xP519k7dLJfQtCczhyU=; b=nRP2NeO02CTJR2376uXwO1yuornSuebTw5XNQm3PjxNnM6psdjgQnnr6jvnHgjzDnY aUAsVJMZdjvG2XS0Uqqj+Kfxw8rStaWDYkRKLH+fJHUiSCYxHRJ6cQmpM8hyqt8Zu4VZ F6xkuE9l22RW9DXDfeIX+rkYEP4C6uj0qjimGdgj3KOmR6aelcl9u1FHMGYgahR+TeWj P4QFVh2ZKdWWyCLilLvDnd0Pzq1YcTW41TLwa16ZxQDcaABfPEnHBQc9BPpiQ3VOg358 ye2BqCSTbS/K6jfjtm1XO/sAZCzL6AS8P+zbgPPABra6Xsn6Rv8vlhpeYNi0+StOjeVy EBkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1791304109; x=1791908909; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=C5GHjzqrk28FffPt6wY8dDf5xP519k7dLJfQtCczhyU=; b=xGmLnpBX+waX9SO2+INARtnLy0seGvTmm3O4amIwg/vDxRekK2QuZXKqrbg3KsqiwX jgC1aeSNkib1lP6wz+/WN9oHCnTvsHKvJ1PE4ADrbzAqmJOqWEH7s9LYypBXHjBtsQIQ gEn5g4aHlLDuVsLdqJIDrBp9ItSerECXqsCmhJYWerCR3Fze/2B1cQ5mmQc7kUA8d0kw NHX+oeeVr7m15Q/K0wBJt0d9+bA1Kq9W1rNahui3pyVP753RftlGZBKXQpWffBO/pkJu t6MjOmxtgIBJfszyOGTfmV2ZerUf6ASd578T0Zu/gRL0PbVNdo8hhLumvVAL+QXQ0LZW V1jA== X-Forwarded-Encrypted: i=1; AKwUvBxsG8ebzVpdRyAt6hlbpOwfz5feCjlGmvahtf7fFhopdMnmzvYZ3DHxr+Tizx7t8O6Lr8EvVGhwguU=@lists.infradead.org X-Gm-Message-State: AFuF++kLl4StWu+12s2D4cae5hKWxspTPu/2QzJlIL9Txk+NArmg9fX7 a+7VVx1VJPdJ6DGxnW04d+GQOjZRulgqdfH928FWFtCT08rwTaSpq981 X-Gm-Gg: AYBFou2pdzYmoIicjBP8kJ+Zm8vni2j5+miJvBXXG+9vscUjT2BzZFbNC8cLv05AKYO rau7pdFZMo6O7HFEaWsRaVsJMTEQ6UJust4CTq4KOpOHTEEHBoGJTBgXQ0BeCrXEqgH+Vq9LWH5 R9Y6eCfn0oZrjoGxFTqaBjFXGHODRVnvgcyBSD5Di1rkjx0+wz1+Kjl2Z5ITjUN45Msv27/B/1h vSfaU/qWuaFsFDzXTGQ0RCOdcucAmCOy4K9ICIm5eYpQKQqeph7khtEWLQTA/HN+3zjxeQd8Suy daKAbtVjsES9bduAQX9bXMojnBego6Wgd/+9sDbDvSGxNZwMMp7NIREnxhcislMb02zoeWji3aF Rg4czsewraYDPrOBjw+v2Zb2YcRdbvoycU1MMIZp0gqJ3g2q/ew9NVastn4rHCV/OpI962Qlg78 FcHNV94J++7T3cZWI5ULyd6zWohCa1yjnrpwVWm5thCfDVi8MVkwy75otha1w5Q1Nbyevb X-Received: by 2002:a05:6a00:f87:b0:880:e0f8:2d9d with SMTP id d2e1a72fcca58-890df9992dbmr1806155b3a.55.1791304108962; Tue, 06 Oct 2026 09:28:28 -0700 (PDT) Received: from server.lan ([168.138.199.194]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-89188a0d603sm259898b3a.19.2026.10.06.09.28.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 Oct 2026 09:28:28 -0700 (PDT) From: Coia Prant To: Vinod Koul Cc: Neil Armstrong , Manivannan Sadhasivam , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Heiko Stuebner , linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, Coia Prant Subject: [PATCH v13 2/2] phy: rockchip: naneng-combphy: add SGMII MAC selection for RK3568 Date: Wed, 7 Oct 2026 00:28:06 +0800 Message-ID: <20261006162807.2843858-3-coiaprant@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20261006162807.2843858-1-coiaprant@gmail.com> References: <20261006162807.2843858-1-coiaprant@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20261006_172832_421995_1D307B84 X-CRM114-Status: GOOD ( 21.55 ) X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org On RK3568, the SGMII interface can be routed to either GMAC0 or GMAC1 via the GRF register pipe_sgmii_mac_sel. Add support for this selection by introducing the "rockchip,sgmii-mac-sel" DT property. >From the RK3568 TRM (Part1, Page 229), the PIPE_GRF_XPCS_CON0 bit 1 (pipe_sgmii_mac_sel) is defined as: 0: SGMII routed to GMAC0 1: SGMII routed to GMAC1 The hardware reset value is 1 (GMAC1). If the property is set to 0, the driver routes SGMII to GMAC0; if set to 1, it routes to GMAC1. If the property is absent, the driver leaves the routing unchanged, so the effective value is whatever the bootloader or hardware reset left. The driver validates the value and rejects anything other than 0 or 1. This is necessary for boards such as the Ariaboard Photonicat, which uses the SGMII interface connected to GMAC0. Link: https://dl.radxa.com/rock3/docs/hw/datasheet/Rockchip%20RK3568%20TRM%20Part1%20V1.1-20210301.pdf (Page 229) Signed-off-by: Coia Prant --- .../rockchip/phy-rockchip-naneng-combphy.c | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/drivers/phy/rockchip/phy-rockchip-naneng-combphy.c b/drivers/phy/rockchip/phy-rockchip-naneng-combphy.c index 7843356a4dd47..f76b48009673d 100644 --- a/drivers/phy/rockchip/phy-rockchip-naneng-combphy.c +++ b/drivers/phy/rockchip/phy-rockchip-naneng-combphy.c @@ -186,6 +186,7 @@ struct rockchip_combphy_grfcfg { struct combphy_reg pipe_xpcs_phy_ready; struct combphy_reg pipe_pcie1l0_sel; struct combphy_reg pipe_pcie1l1_sel; + struct combphy_reg pipe_sgmii_mac_sel; struct combphy_reg u3otg0_port_en; struct combphy_reg u3otg1_port_en; }; @@ -212,6 +213,8 @@ struct rockchip_combphy_priv { bool enable_ssc; bool ext_refclk; struct clk *refclk; + bool sgmii_mac_sel_present; + u32 sgmii_mac_sel; }; static void rockchip_combphy_updatel(struct rockchip_combphy_priv *priv, @@ -341,6 +344,7 @@ static struct phy *rockchip_combphy_xlate(struct device *dev, const struct of_ph static int rockchip_combphy_parse_dt(struct device *dev, struct rockchip_combphy_priv *priv) { int i; + int ret; priv->num_clks = devm_clk_bulk_get_all(dev, &priv->clks); if (priv->num_clks < 1) @@ -375,6 +379,16 @@ static int rockchip_combphy_parse_dt(struct device *dev, struct rockchip_combphy priv->ext_refclk = device_property_present(dev, "rockchip,ext-refclk"); + if (device_property_present(dev, "rockchip,sgmii-mac-sel")) { + ret = device_property_read_u32(dev, "rockchip,sgmii-mac-sel", &priv->sgmii_mac_sel); + if (ret) { + dev_err(dev, "failed to read sgmii-mac-sel property\n"); + return ret; + } + + priv->sgmii_mac_sel_present = true; + } + priv->phy_rst = devm_reset_control_get_exclusive(dev, "phy"); /* fallback to old behaviour */ if (PTR_ERR(priv->phy_rst) == -ENOENT) @@ -803,11 +817,34 @@ static const struct rockchip_combphy_cfg rk3562_combphy_cfgs = { .combphy_cfg = rk3562_combphy_cfg, }; +static int rk3568_combphy_select_sgmii_mac(struct rockchip_combphy_priv *priv) +{ + const struct rockchip_combphy_grfcfg *cfg = priv->cfg->grfcfg; + + if (!priv->sgmii_mac_sel_present) + return 0; + + switch (priv->sgmii_mac_sel) { + case 0: + rockchip_combphy_param_write(priv->pipe_grf, &cfg->pipe_sgmii_mac_sel, false); + break; + case 1: + rockchip_combphy_param_write(priv->pipe_grf, &cfg->pipe_sgmii_mac_sel, true); + break; + default: + dev_err(priv->dev, "invalid sgmii-mac-sel value %u\n", priv->sgmii_mac_sel); + return -EINVAL; + } + + return 0; +} + static int rk3568_combphy_cfg(struct rockchip_combphy_priv *priv) { const struct rockchip_combphy_grfcfg *cfg = priv->cfg->grfcfg; unsigned long rate; u32 val; + int ret; switch (priv->type) { case PHY_TYPE_PCIE: @@ -873,6 +910,10 @@ static int rk3568_combphy_cfg(struct rockchip_combphy_priv *priv) break; case PHY_TYPE_SGMII: + ret = rk3568_combphy_select_sgmii_mac(priv); + if (ret) + return ret; + rockchip_combphy_param_write(priv->pipe_grf, &cfg->pipe_xpcs_phy_ready, true); rockchip_combphy_param_write(priv->phy_grf, &cfg->pipe_phymode_sel, true); rockchip_combphy_param_write(priv->phy_grf, &cfg->pipe_sel_qsgmii, true); @@ -984,6 +1025,7 @@ static const struct rockchip_combphy_grfcfg rk3568_combphy_grfcfgs = { .con3_for_sata = { 0x000c, 15, 0, 0x00, 0x4407 }, /* pipe-grf */ .pipe_con0_for_sata = { 0x0000, 15, 0, 0x00, 0x2220 }, + .pipe_sgmii_mac_sel = { 0x0040, 1, 1, 0x00, 0x01 }, .pipe_xpcs_phy_ready = { 0x0040, 2, 2, 0x00, 0x01 }, .u3otg0_port_en = { 0x0104, 15, 0, 0x0181, 0x1100 }, .u3otg1_port_en = { 0x0144, 15, 0, 0x0181, 0x1100 }, -- 2.47.3 -- linux-phy mailing list linux-phy@lists.infradead.org https://lists.infradead.org/mailman/listinfo/linux-phy From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pz2-f9.google.com (mail-pz2-f9.google.com [74.125.228.9]) (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 AA80C4A0933 for ; Tue, 6 Oct 2026 16:28:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.228.9 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791304111; cv=none; b=EOVJpYFXOmWKCDLRMvdbYKjZpyAtWr6efW35zwycxEul0pS8EHY6/rk1fcDLCow0xNscIcXKwbmmTPqx8Qg7+QZJaNiA4D4u37dAWmgzpJGcYjWSJ6Aizdiwq90ekV0pTutNXbK+IY5TgK9S8SlmH+MPGtC0hbNFsoiJ8DHtoXY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1791304111; c=relaxed/simple; bh=KC4pnJETRVb2so59kpli9CAMHz7ARuXXj2dpj3aHMAg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=oo81euaotoztacCUfbSlO+aPJeZsbGaWaQ3g00aZWCCGFTlAajRD56GhynXmGF0M1VvtauIblU3pcjjoQzietBxLKuRWP2DpIVg7llSai1rKpL1q95/F0KNexYW19/H6tzZ+S51jBZLmKKirKSj5LGRUHztz9lseKUJAVXxZ9HM= 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=rjhyt4yf; arc=none smtp.client-ip=74.125.228.9 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="rjhyt4yf" Received: by mail-pz2-f9.google.com with SMTP id 41be03b00d2f7-cc1631a57d2so425980a12.0 for ; Tue, 06 Oct 2026 09:28:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1791304109; x=1791908909; 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:content-type; bh=C5GHjzqrk28FffPt6wY8dDf5xP519k7dLJfQtCczhyU=; b=rjhyt4yfF+r3Sz2j5yIcgGGSLulHcmRI/NVV++dr3YsxOl5sAcJnSQ5UIRnpASOmJe WSwjluMoJtGUWTeHNMBD9bZFkPBsSBZsZMBqS83EL7tmCWxrOXbl2WSnTO0ZeqsJqbtN GWUNE5y2cOhP+L6FYt4X3a9BX7cVpWK6VWCDZ8YZoym7NR2hgXJGhTn/pnQHQgorm8FG 8SV5s1epcxm/HXZqsozZdHljD9zovkeGIFRBkmcRZsrtxBVwBEusWPbNlSgcHxu2DYvN prX+/sFzRYODsdaMqgmnlEUaUQiXepRUyy+5BEVg8YA7gviQQ55I/NduVOJScp3tc+qt fFZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1791304109; x=1791908909; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=C5GHjzqrk28FffPt6wY8dDf5xP519k7dLJfQtCczhyU=; b=Qll4ZwPYkHm9GX+5K17OlZKBI++//3W9OxjoubzpcmXJSZX/zXcs6T/VOs16JRCjF2 pUHxXyrHtMfCayja5p6+p70hqiCTkbmFZ2waRNfZKM6sLDE5c25uooUEXSiEKB4pwdlL VuUybi1NKfQ4EJQnHEIw5BON3H47iYBZB+E1Sl4z7kEWj6LDUwoRskqD9CKkEQ97KLp3 qntg/7pbc+WLBaB/eiopQwaN+/4Mk69OxWhgtr76wwowr4wQQcNiB98cVT8SQtAXEdh4 OPboOo0HczPMHbFSWCJ240kVz2Mdv8xsU+iNrwZKhQpnbuUCEnpmAwEQ4w1Uc6gfQTou SIQQ== X-Forwarded-Encrypted: i=1; AKwUvBx48YC+B8aLl3t3ngY+qoQZuqWpwWX0ekjnixvEttP/9LbQ6NcMr0v4lgbYoZI0LG3CcbOmgbmZGtgY@vger.kernel.org X-Gm-Message-State: AFuF++nhpPTAlvwd0CoDrgCyaj4efAP1jEdISo05MosJVi80+dBKQEIy Q6+tlrNSdJ+eCukM95CX8LUxaKS+H8JDMlpyffLccn2MwMadwpU/4uEF X-Gm-Gg: AYBFou3RQmpE4Zwyujqat+qatLfcgBpzZNc9L6rCpCLZC8toJ06cCLS0jGK57HoVT3t PqsKgn9n8mM4kKg01aEMvZhxrtdKPc5M3gGkIT8Gn8lYYjEVkKm+ahvBOo5OLWUT7nTAn3NBo12 M/nMqEgj5zEgTZcT9q9qcxON3jFvs/idc7uE3zVskOZkvOTL3GVw1Q1PeCaNyjppq9x7kj9ahZ/ 3RdXLm/yA7dvs6HUbCMXhmoQ4NORI3jD9bQNKlhKIAvibAtgbnbMrGcrL7+DHnfvrdlOUJCklnp YVwePnsMUlxqwOvbALVcmkQJ9IguOIrj2DOM1mW4DfiDwHfX0PvAEu8edvPY80Ej3d1gJ+4Uv6c gWGc1XuO24ntn5fQSJ4pHp23TvcyHzcht2V2H5i7XYayj27E1qyiAbhIlmKGgA4ZwBhGbbhrKsF K6CdtreNZgccgtalY1rwOh9vxofmTNhvT/YWj0FKEVdtH9Z/MsZEqMCYsBPcwv5QbczR/o X-Received: by 2002:a05:6a00:f87:b0:880:e0f8:2d9d with SMTP id d2e1a72fcca58-890df9992dbmr1806155b3a.55.1791304108962; Tue, 06 Oct 2026 09:28:28 -0700 (PDT) Received: from server.lan ([168.138.199.194]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-89188a0d603sm259898b3a.19.2026.10.06.09.28.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 Oct 2026 09:28:28 -0700 (PDT) From: Coia Prant To: Vinod Koul Cc: Neil Armstrong , Manivannan Sadhasivam , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Heiko Stuebner , linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, Coia Prant Subject: [PATCH v13 2/2] phy: rockchip: naneng-combphy: add SGMII MAC selection for RK3568 Date: Wed, 7 Oct 2026 00:28:06 +0800 Message-ID: <20261006162807.2843858-3-coiaprant@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20261006162807.2843858-1-coiaprant@gmail.com> References: <20261006162807.2843858-1-coiaprant@gmail.com> Precedence: bulk X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit On RK3568, the SGMII interface can be routed to either GMAC0 or GMAC1 via the GRF register pipe_sgmii_mac_sel. Add support for this selection by introducing the "rockchip,sgmii-mac-sel" DT property. >From the RK3568 TRM (Part1, Page 229), the PIPE_GRF_XPCS_CON0 bit 1 (pipe_sgmii_mac_sel) is defined as: 0: SGMII routed to GMAC0 1: SGMII routed to GMAC1 The hardware reset value is 1 (GMAC1). If the property is set to 0, the driver routes SGMII to GMAC0; if set to 1, it routes to GMAC1. If the property is absent, the driver leaves the routing unchanged, so the effective value is whatever the bootloader or hardware reset left. The driver validates the value and rejects anything other than 0 or 1. This is necessary for boards such as the Ariaboard Photonicat, which uses the SGMII interface connected to GMAC0. Link: https://dl.radxa.com/rock3/docs/hw/datasheet/Rockchip%20RK3568%20TRM%20Part1%20V1.1-20210301.pdf (Page 229) Signed-off-by: Coia Prant --- .../rockchip/phy-rockchip-naneng-combphy.c | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/drivers/phy/rockchip/phy-rockchip-naneng-combphy.c b/drivers/phy/rockchip/phy-rockchip-naneng-combphy.c index 7843356a4dd47..f76b48009673d 100644 --- a/drivers/phy/rockchip/phy-rockchip-naneng-combphy.c +++ b/drivers/phy/rockchip/phy-rockchip-naneng-combphy.c @@ -186,6 +186,7 @@ struct rockchip_combphy_grfcfg { struct combphy_reg pipe_xpcs_phy_ready; struct combphy_reg pipe_pcie1l0_sel; struct combphy_reg pipe_pcie1l1_sel; + struct combphy_reg pipe_sgmii_mac_sel; struct combphy_reg u3otg0_port_en; struct combphy_reg u3otg1_port_en; }; @@ -212,6 +213,8 @@ struct rockchip_combphy_priv { bool enable_ssc; bool ext_refclk; struct clk *refclk; + bool sgmii_mac_sel_present; + u32 sgmii_mac_sel; }; static void rockchip_combphy_updatel(struct rockchip_combphy_priv *priv, @@ -341,6 +344,7 @@ static struct phy *rockchip_combphy_xlate(struct device *dev, const struct of_ph static int rockchip_combphy_parse_dt(struct device *dev, struct rockchip_combphy_priv *priv) { int i; + int ret; priv->num_clks = devm_clk_bulk_get_all(dev, &priv->clks); if (priv->num_clks < 1) @@ -375,6 +379,16 @@ static int rockchip_combphy_parse_dt(struct device *dev, struct rockchip_combphy priv->ext_refclk = device_property_present(dev, "rockchip,ext-refclk"); + if (device_property_present(dev, "rockchip,sgmii-mac-sel")) { + ret = device_property_read_u32(dev, "rockchip,sgmii-mac-sel", &priv->sgmii_mac_sel); + if (ret) { + dev_err(dev, "failed to read sgmii-mac-sel property\n"); + return ret; + } + + priv->sgmii_mac_sel_present = true; + } + priv->phy_rst = devm_reset_control_get_exclusive(dev, "phy"); /* fallback to old behaviour */ if (PTR_ERR(priv->phy_rst) == -ENOENT) @@ -803,11 +817,34 @@ static const struct rockchip_combphy_cfg rk3562_combphy_cfgs = { .combphy_cfg = rk3562_combphy_cfg, }; +static int rk3568_combphy_select_sgmii_mac(struct rockchip_combphy_priv *priv) +{ + const struct rockchip_combphy_grfcfg *cfg = priv->cfg->grfcfg; + + if (!priv->sgmii_mac_sel_present) + return 0; + + switch (priv->sgmii_mac_sel) { + case 0: + rockchip_combphy_param_write(priv->pipe_grf, &cfg->pipe_sgmii_mac_sel, false); + break; + case 1: + rockchip_combphy_param_write(priv->pipe_grf, &cfg->pipe_sgmii_mac_sel, true); + break; + default: + dev_err(priv->dev, "invalid sgmii-mac-sel value %u\n", priv->sgmii_mac_sel); + return -EINVAL; + } + + return 0; +} + static int rk3568_combphy_cfg(struct rockchip_combphy_priv *priv) { const struct rockchip_combphy_grfcfg *cfg = priv->cfg->grfcfg; unsigned long rate; u32 val; + int ret; switch (priv->type) { case PHY_TYPE_PCIE: @@ -873,6 +910,10 @@ static int rk3568_combphy_cfg(struct rockchip_combphy_priv *priv) break; case PHY_TYPE_SGMII: + ret = rk3568_combphy_select_sgmii_mac(priv); + if (ret) + return ret; + rockchip_combphy_param_write(priv->pipe_grf, &cfg->pipe_xpcs_phy_ready, true); rockchip_combphy_param_write(priv->phy_grf, &cfg->pipe_phymode_sel, true); rockchip_combphy_param_write(priv->phy_grf, &cfg->pipe_sel_qsgmii, true); @@ -984,6 +1025,7 @@ static const struct rockchip_combphy_grfcfg rk3568_combphy_grfcfgs = { .con3_for_sata = { 0x000c, 15, 0, 0x00, 0x4407 }, /* pipe-grf */ .pipe_con0_for_sata = { 0x0000, 15, 0, 0x00, 0x2220 }, + .pipe_sgmii_mac_sel = { 0x0040, 1, 1, 0x00, 0x01 }, .pipe_xpcs_phy_ready = { 0x0040, 2, 2, 0x00, 0x01 }, .u3otg0_port_en = { 0x0104, 15, 0, 0x0181, 0x1100 }, .u3otg1_port_en = { 0x0144, 15, 0, 0x0181, 0x1100 }, -- 2.47.3