From patchwork Mon Jan 4 21:28:24 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Pawe=C5=82_Dembicki?= X-Patchwork-Id: 1422281 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=U6+Uckba; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4D8qyL1w5Dz9sVq for ; Tue, 5 Jan 2021 09:27:45 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 98BB982573; Mon, 4 Jan 2021 23:27:33 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="U6+Uckba"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id C1C6282644; Mon, 4 Jan 2021 22:28:42 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-lf1-x12e.google.com (mail-lf1-x12e.google.com [IPv6:2a00:1450:4864:20::12e]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 0456982462 for ; Mon, 4 Jan 2021 22:28:39 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=paweldembicki@gmail.com Received: by mail-lf1-x12e.google.com with SMTP id s26so67771061lfc.8 for ; Mon, 04 Jan 2021 13:28:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=NsfHwi2b1dEMk7LdTEOc5W1Y1KRVGTeGx3jxZ1mnQ4I=; b=U6+UckbaCYewWjMbIABqjGBE6ggwr+aIHjOMcaAmgjBEZKF5wulOOFpXHC4HKINrA/ Lch8+EcWvfygg62C/qBUU2iFuOPZppBMclIo3AWf2FCuuguzFVNmnzTUA1nsFE466Ju8 i9FVuADuMS5824AD2TUyEdep3gy2QQzEAsYa/vp+XTVEjcMiuQDhxN4Ilo7XQevstPGW hn6x3AEhPtxNHMHvJjY/TousFvQn51Fkw+gfC28t5E0itO7wbkY6N1apIAIwTBm0r6bf BfBfwe1aMxQEZQQV+j20IYqii0PPXQZpCdQnTP1cgE7ZvrDTX3lsL+opLXU6mW+Np48J tKhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=NsfHwi2b1dEMk7LdTEOc5W1Y1KRVGTeGx3jxZ1mnQ4I=; b=gBI+joq7G8SP4rf0oY1PyUFAcUJZWOeX5OpAM5WIcq1CXVeCwOpzI57neNoFoOj8LR oLZ5HK6j9oBZcrsdx0FcoO5W3KgZ9Voctz+KSeitMeUksafNfoO2Xz9M33XfbFaOUTOZ S9sf2lxProY6ChbYYBqEhUeOyhbyTl8DqwWhL9OtDeQCf8COmqo4yhMG6Y65YMvftEuM VWFArPd8xeT1aREpb9hERlG7BwaPf0XM7cpi9zljBW7l2IlevjB866K0HWxOQH+H4q9e ESQA7kdINjp5sOWlOlF7oxKBVQfgUDRU83MIqEZVu22B4T119xhg0fwUS8BkhVw67E1d onmw== X-Gm-Message-State: AOAM533gvp0SoseP5UKr3EhDX2DitNQXX78w0FDH3BhXyWnSgXmSdcQb hg9gvPpDP0Kd+LmZF9bNl4xRc1LP1sI1Lpiz X-Google-Smtp-Source: ABdhPJz5NQguGjgj/H/UASQNmixEpHY4IiThq3dB+dk8XekntTIHuGxlZKZuxYIVuE6xHDEww1Z6Gg== X-Received: by 2002:ac2:5ff1:: with SMTP id s17mr31947841lfg.139.1609795719046; Mon, 04 Jan 2021 13:28:39 -0800 (PST) Received: from localhost.localdomain ([185.188.71.122]) by smtp.gmail.com with ESMTPSA id t15sm7429808lfl.33.2021.01.04.13.28.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Jan 2021 13:28:38 -0800 (PST) From: Pawel Dembicki To: u-boot@lists.denx.de Cc: Pawel Dembicki , Chris Packham , Joe Hershberger , Anatolij Gustschin , Tim Harvey , Tom Rini Subject: [PATCH v3 1/2] phy: mv88e61xx: add support for RGMII TX/RX delay Date: Mon, 4 Jan 2021 22:28:24 +0100 Message-Id: <20210104212825.1091375-1-paweldembicki@gmail.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-Mailman-Approved-At: Mon, 04 Jan 2021 23:27:32 +0100 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de X-Virus-Status: Clean Clock delay in RGMII is required for some boards. Clock delay is read from phy-mode dts property. Delay is configured via proper bits in PORT_REG_PHYS_CTRL register. Cc: Chris Packham Cc: Joe Hershberger Cc: Anatolij Gustschin Cc: Tim Harvey Cc: Tom Rini Signed-off-by: Pawel Dembicki Reviewed-by: Chris Packham --- Changes in v3: - clear initial values of RX and TX delay bit Changes in v2: - change source info about delay: from hardcode to phy-mode propoperty in dts drivers/net/phy/mv88e61xx.c | 66 ++++++++++++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/drivers/net/phy/mv88e61xx.c b/drivers/net/phy/mv88e61xx.c index 7eff37b244..3bcd2ba242 100644 --- a/drivers/net/phy/mv88e61xx.c +++ b/drivers/net/phy/mv88e61xx.c @@ -97,6 +97,8 @@ #define PORT_REG_STATUS_CMODE_1000BASE_X 0x9 #define PORT_REG_STATUS_CMODE_SGMII 0xa +#define PORT_REG_PHYS_CTRL_RGMII_RX_DELAY BIT(15) +#define PORT_REG_PHYS_CTRL_RGMII_TX_DELAY BIT(14) #define PORT_REG_PHYS_CTRL_PCS_AN_EN BIT(10) #define PORT_REG_PHYS_CTRL_PCS_AN_RST BIT(9) #define PORT_REG_PHYS_CTRL_FC_VALUE BIT(7) @@ -729,7 +731,45 @@ unforce: static int mv88e61xx_fixed_port_setup(struct phy_device *phydev, u8 port) { struct mv88e61xx_phy_priv *priv = phydev->priv; - int val; + ofnode node; + const char *str; + int val, phy_mode; + u32 phy_handle; + + if (!ofnode_valid(phydev->node)) { + node = dev_ofnode(phydev->dev); + phy_handle = ofnode_read_u32_default(node, "phy-handle", -ENXIO); + + if (phy_handle == -ENXIO) { + node = ofnode_first_subnode(node); + + while (ofnode_valid(node)) { + phy_handle = ofnode_read_u32_default(node, "phy-handle", -ENXIO); + if (phy_handle != -ENXIO) + break; + node = ofnode_next_subnode(node); + } + } + + if (phy_handle != -ENXIO) + node = ofnode_get_by_phandle(phy_handle); + else + node = ofnode_null(); + } else { + node = phy_get_ofnode(phydev); + } + + node = ofnode_find_subnode(node, "ports"); + node = ofnode_first_subnode(node); + + while (ofnode_valid(node)) { + u8 port_no = (u8)ofnode_read_u32_default(node, "reg", -1); + + if (port_no == port) + break; + + node = ofnode_next_subnode(node); + } val = mv88e61xx_port_read(phydev, port, PORT_REG_PHYS_CTRL); if (val < 0) @@ -754,6 +794,30 @@ static int mv88e61xx_fixed_port_setup(struct phy_device *phydev, u8 port) val |= PORT_REG_PHYS_CTRL_LINK_VALUE | PORT_REG_PHYS_CTRL_LINK_FORCE; + if (ofnode_valid(node)) { + str = ofnode_read_string(node, "phy-mode"); + if (str) { + phy_mode = phy_get_interface_by_name(str); + val &= ~(PORT_REG_PHYS_CTRL_RGMII_RX_DELAY | + PORT_REG_PHYS_CTRL_RGMII_TX_DELAY); + + switch (phy_mode) { + case PHY_INTERFACE_MODE_RGMII_ID: + val |= PORT_REG_PHYS_CTRL_RGMII_RX_DELAY; + val |= PORT_REG_PHYS_CTRL_RGMII_TX_DELAY; + break; + case PHY_INTERFACE_MODE_RGMII_RXID: + val |= PORT_REG_PHYS_CTRL_RGMII_RX_DELAY; + break; + case PHY_INTERFACE_MODE_RGMII_TXID: + val |= PORT_REG_PHYS_CTRL_RGMII_TX_DELAY; + break; + default: + break; + } + } + } + return mv88e61xx_port_write(phydev, port, PORT_REG_PHYS_CTRL, val); } From patchwork Mon Jan 4 21:28:25 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Pawe=C5=82_Dembicki?= X-Patchwork-Id: 1422280 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=CImXAkEi; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4D8qyK1zYXz9sVk for ; Tue, 5 Jan 2021 09:27:51 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 7163D82653; Mon, 4 Jan 2021 23:27:35 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="CImXAkEi"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 65E3082644; Mon, 4 Jan 2021 22:28:47 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-lf1-x132.google.com (mail-lf1-x132.google.com [IPv6:2a00:1450:4864:20::132]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id C884382573 for ; Mon, 4 Jan 2021 22:28:44 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=paweldembicki@gmail.com Received: by mail-lf1-x132.google.com with SMTP id m25so67772273lfc.11 for ; Mon, 04 Jan 2021 13:28:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=swfa/ppwBqcmKj793qhcDLW4c0zmxMTdINisM6ZawQQ=; b=CImXAkEiLSyRgq4N+SKtUobz4GDWNC106z5a/0MomPJcr+WOw7AQDTPlVxoOtsKucQ XfvvvjHCItTI1F16BBJiU/mmkBstVbHDsnSadtgAd6oU3GRc0UQKMGiL+jaXUuOUUuo5 G8KjPJJ4LxhC4mmt/5FTmbjRcWDpEBr+WNOY+l3HJDyFKBbybrOK6wOZgkZV8hIV0/AW uLVxoWwPodRWtMXuDmieHes7eTmtX0d3KB+5Jk9h7KXxKLDN260VDLO1ZDUt2qsTIKkd DG56Dz/LqU642MpSngN1MLXohqwM9mx8pPvkiXFt7YXRNy7G2h9T63yrrJJ+zSLbxq/t xvfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=swfa/ppwBqcmKj793qhcDLW4c0zmxMTdINisM6ZawQQ=; b=ccNKRs7cL2WDoqiV0w9FkUW0ecg0baUzfLeIhdhQZUVVEdEOrUCAZSXHIw55tEFuqc 5cC4kD7CXEvnQK5nW8HECANbmpJsKGf/m0f8FCaNn6EBYLJnlDX32Gq7gRmluYne/zLO uafaK/PELaK+JnaETykav87w3azSCBwJ7mlOPNjA70XFqKjaGh3TWiDcJH2x+fuf36x/ DQZqQsip344/zhBVVf/aQbiaECZNrLQY8QzJSpog7eUcbvfVVvuzfNQEAm4fD6GspCJU YfMLi7GhP6N0cNSk2ZKRKMrsGM7IiETjnE0LPPh9371Wd2LecCWBpJZAaaSyTFPFGX+b cPdA== X-Gm-Message-State: AOAM533HHx8dnelQXNNWGr7BEzEDXBhLtT1G5lCntT/zqivrftPKcRk2 SiRoj4PQb6Ij/ERqFX23B3mT+hjJf3yzLTev X-Google-Smtp-Source: ABdhPJwtxz5xAlWGfLX5vQbOx2AJu+7+IuILDXzlGWs6BokiUalnEp+Psp+IyaU7KsCfi6tTCXZ3MQ== X-Received: by 2002:a05:651c:107c:: with SMTP id y28mr38287365ljm.164.1609795724005; Mon, 04 Jan 2021 13:28:44 -0800 (PST) Received: from localhost.localdomain ([185.188.71.122]) by smtp.gmail.com with ESMTPSA id t15sm7429808lfl.33.2021.01.04.13.28.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Jan 2021 13:28:43 -0800 (PST) From: Pawel Dembicki To: u-boot@lists.denx.de Cc: Pawel Dembicki , Chris Packham , Joe Hershberger , Anatolij Gustschin , Tim Harvey Subject: [PATCH v3 2/2] phy: mv88e61xx: add support for MV88E6171 Date: Mon, 4 Jan 2021 22:28:25 +0100 Message-Id: <20210104212825.1091375-2-paweldembicki@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210104212825.1091375-1-paweldembicki@gmail.com> References: <20210104212825.1091375-1-paweldembicki@gmail.com> MIME-Version: 1.0 X-Mailman-Approved-At: Mon, 04 Jan 2021 23:27:32 +0100 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de X-Virus-Status: Clean This patch add MV88E6171 id to driver data. Tested on Checkpoint L-50 board. Cc: Chris Packham Cc: Joe Hershberger Cc: Anatolij Gustschin Cc: Tim Harvey Signed-off-by: Pawel Dembicki Reviewed-by: Chris Packham --- Changes in v3,v2: - resend only drivers/net/phy/mv88e61xx.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/net/phy/mv88e61xx.c b/drivers/net/phy/mv88e61xx.c index 3bcd2ba242..82f1587ff5 100644 --- a/drivers/net/phy/mv88e61xx.c +++ b/drivers/net/phy/mv88e61xx.c @@ -183,6 +183,7 @@ #define PORT_SWITCH_ID_6071 0x0710 #define PORT_SWITCH_ID_6096 0x0980 #define PORT_SWITCH_ID_6097 0x0990 +#define PORT_SWITCH_ID_6171 0x1710 #define PORT_SWITCH_ID_6172 0x1720 #define PORT_SWITCH_ID_6176 0x1760 #define PORT_SWITCH_ID_6220 0x2200 @@ -1055,6 +1056,7 @@ static int mv88e61xx_probe(struct phy_device *phydev) switch (priv->id) { case PORT_SWITCH_ID_6096: case PORT_SWITCH_ID_6097: + case PORT_SWITCH_ID_6171: case PORT_SWITCH_ID_6172: case PORT_SWITCH_ID_6176: case PORT_SWITCH_ID_6240: @@ -1210,6 +1212,17 @@ static struct phy_driver mv88e61xx_driver = { .shutdown = &genphy_shutdown, }; +static struct phy_driver mv88e617x_driver = { + .name = "Marvell MV88E617x", + .uid = 0x01410e70, + .mask = 0xfffffff0, + .features = PHY_GBIT_FEATURES, + .probe = mv88e61xx_probe, + .config = mv88e61xx_phy_config, + .startup = mv88e61xx_phy_startup, + .shutdown = &genphy_shutdown, +}; + static struct phy_driver mv88e609x_driver = { .name = "Marvell MV88E609x", .uid = 0x1410c89, @@ -1235,6 +1248,7 @@ static struct phy_driver mv88e6071_driver = { int phy_mv88e61xx_init(void) { phy_register(&mv88e61xx_driver); + phy_register(&mv88e617x_driver); phy_register(&mv88e609x_driver); phy_register(&mv88e6071_driver);