Re: [PATCH u-boot-marvell 07/19] arm: mvebu: turris_mox: Use DM registered MDIO

2022-05-02 Thread Stefan Roese

On 27.04.22 12:41, Marek Behún wrote:

From: Marek Behún 

In order to be able to get rid of the non-DM MDIO bus registered in
mvneta driver, start using the DM registered one in Turris MOX board
code.

This also allows us to drop the hack introduced in MOX' -u-boot.dtsi
file.

Signed-off-by: Marek Behún 


Reviewed-by: Stefan Roese 

Thanks,
Stefan



---
  .../dts/armada-3720-turris-mox-u-boot.dtsi| 19 
  board/CZ.NIC/turris_mox/turris_mox.c  | 88 +--
  2 files changed, 44 insertions(+), 63 deletions(-)

diff --git a/arch/arm/dts/armada-3720-turris-mox-u-boot.dtsi 
b/arch/arm/dts/armada-3720-turris-mox-u-boot.dtsi
index 28a36a6103..71d5e70ca4 100644
--- a/arch/arm/dts/armada-3720-turris-mox-u-boot.dtsi
+++ b/arch/arm/dts/armada-3720-turris-mox-u-boot.dtsi
@@ -3,25 +3,6 @@
   * 2022 by Marek Behún 
   */
  
-/ {

-   mdio {
-   #address-cells = <1>;
-   #size-cells = <0>;
-
-   old_binding_phy1: ethernet-phy@1 {
-   reg = <1>;
-   };
-   };
-};
-
- {
-   pinctrl-0 = <_pins>, <_pins>;
-   /delete-property/ phy-handle;
-   phy = <_binding_phy1>;
-};
-
-/delete-node/ 
-
   {
vbus-supply = <_usb3_vbus>;
  };
diff --git a/board/CZ.NIC/turris_mox/turris_mox.c 
b/board/CZ.NIC/turris_mox/turris_mox.c
index 9702d1fc78..a4738b3a3c 100644
--- a/board/CZ.NIC/turris_mox/turris_mox.c
+++ b/board/CZ.NIC/turris_mox/turris_mox.c
@@ -13,6 +13,7 @@
  #include 
  #include 
  #include 
+#include 
  #include 
  #include 
  #include 
@@ -216,35 +217,35 @@ static int mox_get_topology(const u8 **ptopology, int 
*psize, int *pis_sd)
  #define SW_SMI_CMD_R(d, r)(0x9800 | (((d) & 0x1f) << 5) | ((r) & 0x1f))
  #define SW_SMI_CMD_W(d, r)(0x9400 | (((d) & 0x1f) << 5) | ((r) & 0x1f))
  
-static int sw_multi_read(struct mii_dev *bus, int sw, int dev, int reg)

+static int sw_multi_read(struct udevice *bus, int sw, int dev, int reg)
  {
-   bus->write(bus, sw, 0, 0, SW_SMI_CMD_R(dev, reg));
+   dm_mdio_write(bus, sw, MDIO_DEVAD_NONE, 0, SW_SMI_CMD_R(dev, reg));
mdelay(5);
-   return bus->read(bus, sw, 0, 1);
+   return dm_mdio_read(bus, sw, MDIO_DEVAD_NONE, 1);
  }
  
-static void sw_multi_write(struct mii_dev *bus, int sw, int dev, int reg,

+static void sw_multi_write(struct udevice *bus, int sw, int dev, int reg,
   u16 val)
  {
-   bus->write(bus, sw, 0, 1, val);
-   bus->write(bus, sw, 0, 0, SW_SMI_CMD_W(dev, reg));
+   dm_mdio_write(bus, sw, MDIO_DEVAD_NONE, 1, val);
+   dm_mdio_write(bus, sw, MDIO_DEVAD_NONE, 0, SW_SMI_CMD_W(dev, reg));
mdelay(5);
  }
  
-static int sw_scratch_read(struct mii_dev *bus, int sw, int reg)

+static int sw_scratch_read(struct udevice *bus, int sw, int reg)
  {
sw_multi_write(bus, sw, 0x1c, 0x1a, (reg & 0x7f) << 8);
return sw_multi_read(bus, sw, 0x1c, 0x1a) & 0xff;
  }
  
-static void sw_led_write(struct mii_dev *bus, int sw, int port, int reg,

+static void sw_led_write(struct udevice *bus, int sw, int port, int reg,
 u16 val)
  {
sw_multi_write(bus, sw, port, 0x16, 0x8000 | ((reg & 7) << 12)
| (val & 0x7ff));
  }
  
-static void sw_blink_leds(struct mii_dev *bus, int peridot, int topaz)

+static void sw_blink_leds(struct udevice *bus, int peridot, int topaz)
  {
int i, p;
struct {
@@ -275,7 +276,7 @@ static void sw_blink_leds(struct mii_dev *bus, int peridot, 
int topaz)
}
  }
  
-static void check_switch_address(struct mii_dev *bus, int addr)

+static void check_switch_address(struct udevice *bus, int addr)
  {
if (sw_scratch_read(bus, addr, 0x70) >> 3 != addr)
printf("Check of switch MDIO address failed for 0x%02x\n",
@@ -374,36 +375,22 @@ static void mox_phy_modify(struct phy_device *phydev, int 
page, int reg,
  static void mox_phy_leds_start_blinking(void)
  {
struct phy_device *phydev;
-   struct mii_dev *bus;
-   const char *node_name;
-   int node;
+   ofnode phy_node;
  
-	node = fdt_path_offset(gd->fdt_blob, "ethernet0");

-   if (node < 0) {
-   printf("Cannot get eth0!\n");
-   return;
-   }
+   phy_node = ofnode_get_phy_node(ofnode_path("ethernet0"));
+   if (!ofnode_valid(phy_node))
+   goto err;
  
-	node_name = fdt_get_name(gd->fdt_blob, node, NULL);

-   if (!node_name) {
-   printf("Cannot get eth0 node name!\n");
-   return;
-   }
-
-   bus = miiphy_get_dev_by_name(node_name);
-   if (!bus) {
-   printf("Cannot get MDIO bus device!\n");
-   return;
-   }
-
-   phydev = phy_find_by_mask(bus, BIT(1));
-   if (!phydev) {
-   printf("Cannot get ethernet PHY!\n");
-   return;
-   }
+   phydev = dm_phy_find_by_ofnode(phy_node);
+   if (!phydev)
+   

[PATCH u-boot-marvell 07/19] arm: mvebu: turris_mox: Use DM registered MDIO

2022-04-27 Thread Marek Behún
From: Marek Behún 

In order to be able to get rid of the non-DM MDIO bus registered in
mvneta driver, start using the DM registered one in Turris MOX board
code.

This also allows us to drop the hack introduced in MOX' -u-boot.dtsi
file.

Signed-off-by: Marek Behún 
---
 .../dts/armada-3720-turris-mox-u-boot.dtsi| 19 
 board/CZ.NIC/turris_mox/turris_mox.c  | 88 +--
 2 files changed, 44 insertions(+), 63 deletions(-)

diff --git a/arch/arm/dts/armada-3720-turris-mox-u-boot.dtsi 
b/arch/arm/dts/armada-3720-turris-mox-u-boot.dtsi
index 28a36a6103..71d5e70ca4 100644
--- a/arch/arm/dts/armada-3720-turris-mox-u-boot.dtsi
+++ b/arch/arm/dts/armada-3720-turris-mox-u-boot.dtsi
@@ -3,25 +3,6 @@
  * 2022 by Marek Behún 
  */
 
-/ {
-   mdio {
-   #address-cells = <1>;
-   #size-cells = <0>;
-
-   old_binding_phy1: ethernet-phy@1 {
-   reg = <1>;
-   };
-   };
-};
-
- {
-   pinctrl-0 = <_pins>, <_pins>;
-   /delete-property/ phy-handle;
-   phy = <_binding_phy1>;
-};
-
-/delete-node/ 
-
  {
vbus-supply = <_usb3_vbus>;
 };
diff --git a/board/CZ.NIC/turris_mox/turris_mox.c 
b/board/CZ.NIC/turris_mox/turris_mox.c
index 9702d1fc78..a4738b3a3c 100644
--- a/board/CZ.NIC/turris_mox/turris_mox.c
+++ b/board/CZ.NIC/turris_mox/turris_mox.c
@@ -13,6 +13,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -216,35 +217,35 @@ static int mox_get_topology(const u8 **ptopology, int 
*psize, int *pis_sd)
 #define SW_SMI_CMD_R(d, r) (0x9800 | (((d) & 0x1f) << 5) | ((r) & 0x1f))
 #define SW_SMI_CMD_W(d, r) (0x9400 | (((d) & 0x1f) << 5) | ((r) & 0x1f))
 
-static int sw_multi_read(struct mii_dev *bus, int sw, int dev, int reg)
+static int sw_multi_read(struct udevice *bus, int sw, int dev, int reg)
 {
-   bus->write(bus, sw, 0, 0, SW_SMI_CMD_R(dev, reg));
+   dm_mdio_write(bus, sw, MDIO_DEVAD_NONE, 0, SW_SMI_CMD_R(dev, reg));
mdelay(5);
-   return bus->read(bus, sw, 0, 1);
+   return dm_mdio_read(bus, sw, MDIO_DEVAD_NONE, 1);
 }
 
-static void sw_multi_write(struct mii_dev *bus, int sw, int dev, int reg,
+static void sw_multi_write(struct udevice *bus, int sw, int dev, int reg,
   u16 val)
 {
-   bus->write(bus, sw, 0, 1, val);
-   bus->write(bus, sw, 0, 0, SW_SMI_CMD_W(dev, reg));
+   dm_mdio_write(bus, sw, MDIO_DEVAD_NONE, 1, val);
+   dm_mdio_write(bus, sw, MDIO_DEVAD_NONE, 0, SW_SMI_CMD_W(dev, reg));
mdelay(5);
 }
 
-static int sw_scratch_read(struct mii_dev *bus, int sw, int reg)
+static int sw_scratch_read(struct udevice *bus, int sw, int reg)
 {
sw_multi_write(bus, sw, 0x1c, 0x1a, (reg & 0x7f) << 8);
return sw_multi_read(bus, sw, 0x1c, 0x1a) & 0xff;
 }
 
-static void sw_led_write(struct mii_dev *bus, int sw, int port, int reg,
+static void sw_led_write(struct udevice *bus, int sw, int port, int reg,
 u16 val)
 {
sw_multi_write(bus, sw, port, 0x16, 0x8000 | ((reg & 7) << 12)
| (val & 0x7ff));
 }
 
-static void sw_blink_leds(struct mii_dev *bus, int peridot, int topaz)
+static void sw_blink_leds(struct udevice *bus, int peridot, int topaz)
 {
int i, p;
struct {
@@ -275,7 +276,7 @@ static void sw_blink_leds(struct mii_dev *bus, int peridot, 
int topaz)
}
 }
 
-static void check_switch_address(struct mii_dev *bus, int addr)
+static void check_switch_address(struct udevice *bus, int addr)
 {
if (sw_scratch_read(bus, addr, 0x70) >> 3 != addr)
printf("Check of switch MDIO address failed for 0x%02x\n",
@@ -374,36 +375,22 @@ static void mox_phy_modify(struct phy_device *phydev, int 
page, int reg,
 static void mox_phy_leds_start_blinking(void)
 {
struct phy_device *phydev;
-   struct mii_dev *bus;
-   const char *node_name;
-   int node;
+   ofnode phy_node;
 
-   node = fdt_path_offset(gd->fdt_blob, "ethernet0");
-   if (node < 0) {
-   printf("Cannot get eth0!\n");
-   return;
-   }
+   phy_node = ofnode_get_phy_node(ofnode_path("ethernet0"));
+   if (!ofnode_valid(phy_node))
+   goto err;
 
-   node_name = fdt_get_name(gd->fdt_blob, node, NULL);
-   if (!node_name) {
-   printf("Cannot get eth0 node name!\n");
-   return;
-   }
-
-   bus = miiphy_get_dev_by_name(node_name);
-   if (!bus) {
-   printf("Cannot get MDIO bus device!\n");
-   return;
-   }
-
-   phydev = phy_find_by_mask(bus, BIT(1));
-   if (!phydev) {
-   printf("Cannot get ethernet PHY!\n");
-   return;
-   }
+   phydev = dm_phy_find_by_ofnode(phy_node);
+   if (!phydev)
+   goto err;
 
mox_phy_modify(phydev, 3, 0x12, 0x700, 0x400);
mox_phy_modify(phydev, 3, 0x10, 0xff, 0xbb);
+