]> git.baikalelectronics.ru Git - uboot.git/commitdiff
net: phy: Avoid phy gpio reset sequence if DM_ETH_PHY is enabled
authorT Karthik Reddy <t.karthik.reddy@xilinx.com>
Wed, 30 Mar 2022 09:07:54 +0000 (11:07 +0200)
committerMichal Simek <michal.simek@xilinx.com>
Tue, 5 Apr 2022 13:13:13 +0000 (15:13 +0200)
If DM_ETH_PHY config is enabled PHY gpio reset is taken care by the
eth-phy-uclass driver, so use the PHY gpio reset functionality from
ethernet_id file when this config is disabled to reset the PHY.
Use debug() print instead of dev_err() to avoid warning incase if phy-id
compatible string is not present.

Signed-off-by: T Karthik Reddy <t.karthik.reddy@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Link: https://lore.kernel.org/r/4d0fd3f9f886c1d943776025e5efb5438b0eb389.1648631275.git.michal.simek@xilinx.com
drivers/net/phy/ethernet_id.c

index 44abc5bfb30155263e2ca7d8d51da01e91d79933..1a78a751ede32249ae0ef932e6976e403f351452 100644 (file)
@@ -33,31 +33,38 @@ struct phy_device *phy_connect_phy_id(struct mii_dev *bus, struct udevice *dev,
 
        ret = ofnode_read_eth_phy_id(node, &vendor, &device);
        if (ret) {
-               dev_err(dev, "Failed to read eth PHY id, err: %d\n", ret);
+               debug("Failed to read eth PHY id, err: %d\n", ret);
                return NULL;
        }
 
-       ret = gpio_request_by_name_nodev(node, "reset-gpios", 0, &gpio,
-                                        GPIOD_ACTIVE_LOW);
-       if (!ret) {
-               assert = ofnode_read_u32_default(node, "reset-assert-us", 0);
-               deassert = ofnode_read_u32_default(node,
-                                                  "reset-deassert-us", 0);
-               ret = dm_gpio_set_value(&gpio, 1);
-               if (ret) {
-                       dev_err(dev, "Failed assert gpio, err: %d\n", ret);
-                       return NULL;
-               }
+       if (!IS_ENABLED(CONFIG_DM_ETH_PHY)) {
+               ret = gpio_request_by_name_nodev(node, "reset-gpios", 0, &gpio,
+                                                GPIOD_ACTIVE_LOW);
+               if (!ret) {
+                       assert = ofnode_read_u32_default(node,
+                                                        "reset-assert-us", 0);
+                       deassert = ofnode_read_u32_default(node,
+                                                          "reset-deassert-us",
+                                                          0);
+                       ret = dm_gpio_set_value(&gpio, 1);
+                       if (ret) {
+                               dev_err(dev,
+                                       "Failed assert gpio, err: %d\n", ret);
+                               return NULL;
+                       }
 
-               udelay(assert);
+                       udelay(assert);
 
-               ret = dm_gpio_set_value(&gpio, 0);
-               if (ret) {
-                       dev_err(dev, "Failed deassert gpio, err: %d\n", ret);
-                       return NULL;
-               }
+                       ret = dm_gpio_set_value(&gpio, 0);
+                       if (ret) {
+                               dev_err(dev,
+                                       "Failed deassert gpio, err: %d\n",
+                                       ret);
+                               return NULL;
+                       }
 
-               udelay(deassert);
+                       udelay(deassert);
+               }
        }
 
        id =  vendor << 16 | device;