From f3dd213e151ece2a382e730f5e75156536b2419d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Beh=C3=BAn?= Date: Thu, 7 Apr 2022 00:32:57 +0200 Subject: net: introduce helpers to get PHY ofnode from MAC MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add helpers ofnode_get_phy_node() and dev_get_phy_node() and use it in net/mdio-uclass.c function dm_eth_connect_phy_handle(). Also add corresponding UT test. This is useful because other part's of U-Boot may want to get PHY ofnode without connecting a PHY. Signed-off-by: Marek Behún Reviewed-by: Ramon Fried Reviewed-by: Simon Glass --- drivers/core/ofnode.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'drivers/core/ofnode.c') diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c index 8042847f3c1..445b7ad5add 100644 --- a/drivers/core/ofnode.c +++ b/drivers/core/ofnode.c @@ -1198,3 +1198,24 @@ const char *ofnode_conf_read_str(const char *prop_name) return ofnode_read_string(node, prop_name); } + +ofnode ofnode_get_phy_node(ofnode node) +{ + /* DT node properties that reference a PHY node */ + static const char * const phy_handle_str[] = { + "phy-handle", "phy", "phy-device", + }; + struct ofnode_phandle_args args = { + .node = ofnode_null() + }; + int i; + + assert(ofnode_valid(node)); + + for (i = 0; i < ARRAY_SIZE(phy_handle_str); i++) + if (!ofnode_parse_phandle_with_args(node, phy_handle_str[i], + NULL, 0, 0, &args)) + break; + + return args.node; +} -- cgit v1.2.3 From 123ca114e07ecf28aa2538748d733e2b22d8b8b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Beh=C3=BAn?= Date: Thu, 7 Apr 2022 00:33:01 +0200 Subject: net: introduce helpers to get PHY interface mode from a device/ofnode MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add helpers ofnode_read_phy_mode() and dev_read_phy_mode() to parse the "phy-mode" / "phy-connection-type" property. Add corresponding UT test. Use them treewide. This allows us to inline the phy_get_interface_by_name() into ofnode_read_phy_mode(), since the former is not used anymore. Signed-off-by: Marek Behún Reviewed-by: Ramon Fried Tested-by: Patrice Chotard --- drivers/core/ofnode.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'drivers/core/ofnode.c') diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c index 445b7ad5add..f644a593d32 100644 --- a/drivers/core/ofnode.c +++ b/drivers/core/ofnode.c @@ -1219,3 +1219,26 @@ ofnode ofnode_get_phy_node(ofnode node) return args.node; } + +phy_interface_t ofnode_read_phy_mode(ofnode node) +{ + const char *mode; + int i; + + assert(ofnode_valid(node)); + + mode = ofnode_read_string(node, "phy-mode"); + if (!mode) + mode = ofnode_read_string(node, "phy-connection-type"); + + if (!mode) + return PHY_INTERFACE_MODE_NONE; + + for (i = 0; i < PHY_INTERFACE_MODE_COUNT; i++) + if (!strcmp(mode, phy_interface_strings[i])) + return i; + + debug("%s: Invalid PHY interface '%s'\n", __func__, mode); + + return PHY_INTERFACE_MODE_NONE; +} -- cgit v1.2.3 From 6706d7dcbee15ac41f3ddb50b31ff96d16567883 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Beh=C3=BAn?= Date: Thu, 7 Apr 2022 00:33:02 +0200 Subject: treewide: Rename PHY_INTERFACE_MODE_COUNT to PHY_INTERFACE_MODE_MAX MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rename constant PHY_INTERFACE_MODE_COUNT to PHY_INTERFACE_MODE_MAX to make it compatible with Linux' naming. Signed-off-by: Marek Behún Reviewed-by: Stefan Roese Reviewed-by: Vladimir Oltean --- drivers/core/ofnode.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'drivers/core/ofnode.c') diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c index f644a593d32..d9ccb1bad26 100644 --- a/drivers/core/ofnode.c +++ b/drivers/core/ofnode.c @@ -1234,7 +1234,7 @@ phy_interface_t ofnode_read_phy_mode(ofnode node) if (!mode) return PHY_INTERFACE_MODE_NONE; - for (i = 0; i < PHY_INTERFACE_MODE_COUNT; i++) + for (i = 0; i < PHY_INTERFACE_MODE_MAX; i++) if (!strcmp(mode, phy_interface_strings[i])) return i; -- cgit v1.2.3 From ffb0f6f488b9eee2822c3c691778a26e1590694c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Beh=C3=BAn?= Date: Thu, 7 Apr 2022 00:33:03 +0200 Subject: treewide: Rename PHY_INTERFACE_MODE_NONE to PHY_INTERFACE_MODE_NA MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rename constant PHY_INTERFACE_MODE_NONE to PHY_INTERFACE_MODE_NA to make it compatible with Linux' naming. Signed-off-by: Marek Behún Reviewed-by: Stefan Roese Reviewed-by: Ramon Fried Reviewed-by: Vladimir Oltean --- drivers/core/ofnode.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'drivers/core/ofnode.c') diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c index d9ccb1bad26..a59832ebbfb 100644 --- a/drivers/core/ofnode.c +++ b/drivers/core/ofnode.c @@ -1232,7 +1232,7 @@ phy_interface_t ofnode_read_phy_mode(ofnode node) mode = ofnode_read_string(node, "phy-connection-type"); if (!mode) - return PHY_INTERFACE_MODE_NONE; + return PHY_INTERFACE_MODE_NA; for (i = 0; i < PHY_INTERFACE_MODE_MAX; i++) if (!strcmp(mode, phy_interface_strings[i])) @@ -1240,5 +1240,5 @@ phy_interface_t ofnode_read_phy_mode(ofnode node) debug("%s: Invalid PHY interface '%s'\n", __func__, mode); - return PHY_INTERFACE_MODE_NONE; + return PHY_INTERFACE_MODE_NA; } -- cgit v1.2.3