public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [PATCH u-boot-net 0/3] A tiny batch of keystone_net changes
@ 2022-04-11 19:20 Marek Behún
  2022-04-11 19:20 ` [PATCH u-boot-net 1/3] driver: net: ti: keystone_net: Deduplicate code Marek Behún
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Marek Behún @ 2022-04-11 19:20 UTC (permalink / raw)
  To: Ramon Fried; +Cc: Joe Hershberger, u-boot, Marek Behún

From: Marek Behún <marek.behun@nic.cz>

Hello Ramon,

here comes a tiny batch of changes for keystone_net.
Applicable on top of net/next.

Marek

Marek Behún (3):
  driver: net: ti: keystone_net: Deduplicate code
  driver: net: ti: keystone_net: Convert to ofnode functions
  driver: net: ti: keystone_net: Change priv member type

 drivers/net/ti/keystone_net.c | 172 +++++++++++++++-------------------
 1 file changed, 74 insertions(+), 98 deletions(-)

-- 
2.35.1


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH u-boot-net 1/3] driver: net: ti: keystone_net: Deduplicate code
  2022-04-11 19:20 [PATCH u-boot-net 0/3] A tiny batch of keystone_net changes Marek Behún
@ 2022-04-11 19:20 ` Marek Behún
  2022-04-12 19:53   ` Ramon Fried
  2022-04-11 19:20 ` [PATCH u-boot-net 2/3] driver: net: ti: keystone_net: Convert to ofnode functions Marek Behún
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 8+ messages in thread
From: Marek Behún @ 2022-04-11 19:20 UTC (permalink / raw)
  To: Ramon Fried
  Cc: Joe Hershberger, u-boot, Marek Behún, Grygorii Strashko,
	Murali Karicheri

From: Marek Behún <marek.behun@nic.cz>

Deduplicate common code in ks2_eth_bind_slaves().

Signed-off-by: Marek Behún <marek.behun@nic.cz>
---
 drivers/net/ti/keystone_net.c | 75 ++++++++++++++++-------------------
 1 file changed, 34 insertions(+), 41 deletions(-)

diff --git a/drivers/net/ti/keystone_net.c b/drivers/net/ti/keystone_net.c
index 16e3f32bb0..3ee4740ec5 100644
--- a/drivers/net/ti/keystone_net.c
+++ b/drivers/net/ti/keystone_net.c
@@ -621,58 +621,51 @@ static const struct eth_ops ks2_eth_ops = {
 	.write_hwaddr		= ks2_eth_write_hwaddr,
 };
 
-static int ks2_eth_bind_slaves(struct udevice *dev, int gbe, int *gbe_0)
+static int ks2_bind_one_slave(struct udevice *dev, int slave, int *gbe_0)
 {
 	const void *fdt = gd->fdt_blob;
-	struct udevice *sl_dev;
-	int interfaces;
-	int sec_slave;
-	int slave;
-	int ret;
 	char *slave_name;
+	int slave_no;
+	int ret;
+
+	slave_no = fdtdec_get_int(fdt, slave, "slave-port", -ENOENT);
+	if (slave_no == -ENOENT)
+		return 0;
+
+	if (gbe_0 && slave_no == 0) {
+		/* This is the current eth device */
+		*gbe_0 = slave;
+		return 0;
+	}
+
+	/* Slave devices to be registered */
+	slave_name = malloc(20);
+	snprintf(slave_name, 20, "netcp@slave-%d", slave_no);
+	ret = device_bind_driver_to_node(dev, "eth_ks2_sl", slave_name,
+					 offset_to_ofnode(slave), NULL);
+	if (ret)
+		pr_err("ks2_net - not able to bind slave interfaces\n");
+
+	return ret;
+}
+
+static int ks2_eth_bind_slaves(struct udevice *dev, int gbe, int *gbe_0)
+{
+	int interfaces, sec_slave, slave, ret;
+	const void *fdt = gd->fdt_blob;
 
 	interfaces = fdt_subnode_offset(fdt, gbe, "interfaces");
 	fdt_for_each_subnode(slave, fdt, interfaces) {
-		int slave_no;
-
-		slave_no = fdtdec_get_int(fdt, slave, "slave-port", -ENOENT);
-		if (slave_no == -ENOENT)
-			continue;
-
-		if (slave_no == 0) {
-			/* This is the current eth device */
-			*gbe_0 = slave;
-		} else {
-			/* Slave devices to be registered */
-			slave_name = malloc(20);
-			snprintf(slave_name, 20, "netcp@slave-%d", slave_no);
-			ret = device_bind_driver_to_node(dev, "eth_ks2_sl",
-					slave_name, offset_to_ofnode(slave),
-					&sl_dev);
-			if (ret) {
-				pr_err("ks2_net - not able to bind slave interfaces\n");
-				return ret;
-			}
-		}
+		ret = ks2_bind_one_slave(dev, slave, gbe_0);
+		if (ret)
+			return ret;
 	}
 
 	sec_slave = fdt_subnode_offset(fdt, gbe, "secondary-slave-ports");
 	fdt_for_each_subnode(slave, fdt, sec_slave) {
-		int slave_no;
-
-		slave_no = fdtdec_get_int(fdt, slave, "slave-port", -ENOENT);
-		if (slave_no == -ENOENT)
-			continue;
-
-		/* Slave devices to be registered */
-		slave_name = malloc(20);
-		snprintf(slave_name, 20, "netcp@slave-%d", slave_no);
-		ret = device_bind_driver_to_node(dev, "eth_ks2_sl", slave_name,
-					offset_to_ofnode(slave), &sl_dev);
-		if (ret) {
-			pr_err("ks2_net - not able to bind slave interfaces\n");
+		ret = ks2_bind_one_slave(dev, slave, NULL);
+		if (ret)
 			return ret;
-		}
 	}
 
 	return 0;
-- 
2.35.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH u-boot-net 2/3] driver: net: ti: keystone_net: Convert to ofnode functions
  2022-04-11 19:20 [PATCH u-boot-net 0/3] A tiny batch of keystone_net changes Marek Behún
  2022-04-11 19:20 ` [PATCH u-boot-net 1/3] driver: net: ti: keystone_net: Deduplicate code Marek Behún
@ 2022-04-11 19:20 ` Marek Behún
  2022-04-12 19:54   ` Ramon Fried
  2022-04-11 19:20 ` [PATCH u-boot-net 3/3] driver: net: ti: keystone_net: Change priv member type Marek Behún
  2022-04-12 19:57 ` [PATCH u-boot-net 0/3] A tiny batch of keystone_net changes Ramon Fried
  3 siblings, 1 reply; 8+ messages in thread
From: Marek Behún @ 2022-04-11 19:20 UTC (permalink / raw)
  To: Ramon Fried
  Cc: Joe Hershberger, u-boot, Marek Behún, Grygorii Strashko,
	Murali Karicheri

From: Marek Behún <marek.behun@nic.cz>

Convert fdt parsing functions to ofnode parsing functions.

Signed-off-by: Marek Behún <marek.behun@nic.cz>
---
 drivers/net/ti/keystone_net.c | 113 +++++++++++++++-------------------
 1 file changed, 48 insertions(+), 65 deletions(-)

diff --git a/drivers/net/ti/keystone_net.c b/drivers/net/ti/keystone_net.c
index 3ee4740ec5..3c1f616086 100644
--- a/drivers/net/ti/keystone_net.c
+++ b/drivers/net/ti/keystone_net.c
@@ -23,7 +23,6 @@
 #include <asm/ti-common/keystone_net.h>
 #include <asm/ti-common/keystone_serdes.h>
 #include <asm/arch/psc_defs.h>
-#include <linux/libfdt.h>
 
 #include "cpsw_mdio.h"
 
@@ -91,9 +90,9 @@ struct ks2_eth_priv {
 	struct mii_dev			*mdio_bus;
 	int				phy_addr;
 	phy_interface_t			phy_if;
-	int				phy_of_handle;
+	ofnode				phy_ofnode;
 	int				sgmii_link_type;
-	void				*mdio_base;
+	void *				mdio_base;
 	struct rx_buff_desc		net_rx_buffs;
 	struct pktdma_cfg		*netcp_pktdma;
 	void				*hd;
@@ -593,8 +592,8 @@ static int ks2_eth_probe(struct udevice *dev)
 		priv->phydev = phy_connect(priv->mdio_bus, priv->phy_addr,
 					   dev, priv->phy_if);
 #ifdef CONFIG_DM_ETH
-	if (priv->phy_of_handle)
-		priv->phydev->node = offset_to_ofnode(priv->phy_of_handle);
+	if (ofnode_valid(priv->phy_ofnode))
+		priv->phydev->node = priv->phy_ofnode;
 #endif
 		phy_config(priv->phydev);
 	}
@@ -621,15 +620,13 @@ static const struct eth_ops ks2_eth_ops = {
 	.write_hwaddr		= ks2_eth_write_hwaddr,
 };
 
-static int ks2_bind_one_slave(struct udevice *dev, int slave, int *gbe_0)
+static int ks2_bind_one_slave(struct udevice *dev, ofnode slave, ofnode *gbe_0)
 {
-	const void *fdt = gd->fdt_blob;
 	char *slave_name;
-	int slave_no;
+	u32 slave_no;
 	int ret;
 
-	slave_no = fdtdec_get_int(fdt, slave, "slave-port", -ENOENT);
-	if (slave_no == -ENOENT)
+	if (ofnode_read_u32(slave, "slave-port", &slave_no))
 		return 0;
 
 	if (gbe_0 && slave_no == 0) {
@@ -641,28 +638,28 @@ static int ks2_bind_one_slave(struct udevice *dev, int slave, int *gbe_0)
 	/* Slave devices to be registered */
 	slave_name = malloc(20);
 	snprintf(slave_name, 20, "netcp@slave-%d", slave_no);
-	ret = device_bind_driver_to_node(dev, "eth_ks2_sl", slave_name,
-					 offset_to_ofnode(slave), NULL);
+	ret = device_bind_driver_to_node(dev, "eth_ks2_sl", slave_name, slave,
+					 NULL);
 	if (ret)
 		pr_err("ks2_net - not able to bind slave interfaces\n");
 
 	return ret;
 }
 
-static int ks2_eth_bind_slaves(struct udevice *dev, int gbe, int *gbe_0)
+static int ks2_eth_bind_slaves(struct udevice *dev, ofnode gbe, ofnode *gbe_0)
 {
-	int interfaces, sec_slave, slave, ret;
-	const void *fdt = gd->fdt_blob;
+	ofnode interfaces, sec_slave, slave;
+	int ret;
 
-	interfaces = fdt_subnode_offset(fdt, gbe, "interfaces");
-	fdt_for_each_subnode(slave, fdt, interfaces) {
+	interfaces = ofnode_find_subnode(gbe, "interfaces");
+	ofnode_for_each_subnode(slave, interfaces) {
 		ret = ks2_bind_one_slave(dev, slave, gbe_0);
 		if (ret)
 			return ret;
 	}
 
-	sec_slave = fdt_subnode_offset(fdt, gbe, "secondary-slave-ports");
-	fdt_for_each_subnode(slave, fdt, sec_slave) {
+	sec_slave = ofnode_find_subnode(gbe, "secondary-slave-ports");
+	ofnode_for_each_subnode(slave, sec_slave) {
 		ret = ks2_bind_one_slave(dev, slave, NULL);
 		if (ret)
 			return ret;
@@ -671,47 +668,40 @@ static int ks2_eth_bind_slaves(struct udevice *dev, int gbe, int *gbe_0)
 	return 0;
 }
 
-static int ks2_eth_parse_slave_interface(int netcp, int slave,
+static int ks2_eth_parse_slave_interface(ofnode netcp, ofnode slave,
 					 struct ks2_eth_priv *priv,
 					 struct eth_pdata *pdata)
 {
-	const void *fdt = gd->fdt_blob;
-	int mdio;
-	int phy;
+	struct ofnode_phandle_args dma_args;
+	ofnode phy, mdio;
 	int dma_count;
-	u32 dma_channel[8];
 
-	priv->slave_port = fdtdec_get_int(fdt, slave, "slave-port", -1);
+	priv->slave_port = ofnode_read_s32_default(slave, "slave-port", -1);
 	priv->net_rx_buffs.rx_flow = priv->slave_port * 8;
 
 	/* U-Boot slave port number starts with 1 instead of 0 */
 	priv->slave_port += 1;
 
-	dma_count = fdtdec_get_int_array_count(fdt, netcp,
-					       "ti,navigator-dmas",
-					       dma_channel, 8);
-
-	if (dma_count > (2 * priv->slave_port)) {
-		int dma_idx;
-
-		dma_idx = priv->slave_port * 2 - 1;
-		priv->net_rx_buffs.rx_flow = dma_channel[dma_idx];
-	}
-
-	priv->link_type = fdtdec_get_int(fdt, slave, "link-interface", -1);
+	dma_count = ofnode_count_phandle_with_args(netcp, "ti,navigator-dmas",
+						   NULL, 1);
+	if (priv->slave_port < dma_count &&
+	    !ofnode_parse_phandle_with_args(netcp, "ti,navigator-dmas", NULL, 1,
+					    priv->slave_port - 1, &dma_args))
+		priv->net_rx_buffs.rx_flow = dma_args.args[0];
 
-	phy = fdtdec_lookup_phandle(fdt, slave, "phy-handle");
+	priv->link_type = ofnode_read_s32_default(slave, "link-interface", -1);
 
-	if (phy >= 0) {
-		priv->phy_of_handle = phy;
-		priv->phy_addr = fdtdec_get_int(fdt, phy, "reg", -1);
+	phy = ofnode_get_phy_node(slave);
+	priv->phy_ofnode = phy;
+	if (ofnode_valid(phy)) {
+		priv->phy_addr = ofnode_read_s32_default(phy, "reg", -1);
 
-		mdio = fdt_parent_offset(fdt, phy);
-		if (mdio < 0) {
+		mdio = ofnode_get_parent(phy);
+		if (!ofnode_valid(mdio)) {
 			pr_err("mdio dt not found\n");
 			return -ENODEV;
 		}
-		priv->mdio_base = (void *)fdtdec_get_addr(fdt, mdio, "reg");
+		priv->mdio_base = (void *)ofnode_get_addr(mdio);
 	}
 
 	if (priv->link_type == LINK_TYPE_SGMII_MAC_TO_PHY_MODE) {
@@ -720,7 +710,7 @@ static int ks2_eth_parse_slave_interface(int netcp, int slave,
 		priv->sgmii_link_type = SGMII_LINK_MAC_PHY;
 		priv->has_mdio = true;
 	} else if (priv->link_type == LINK_TYPE_RGMII_LINK_MAC_PHY) {
-		priv->phy_if = ofnode_read_phy_mode(offset_to_ofnode(slave));
+		priv->phy_if = ofnode_read_phy_mode(slave);
 		if (priv->phy_if == PHY_INTERFACE_MODE_NA)
 			priv->phy_if = PHY_INTERFACE_MODE_RGMII;
 		pdata->phy_interface = priv->phy_if;
@@ -741,23 +731,19 @@ static int ks2_eth_parse_slave_interface(int netcp, int slave,
 
 static int ks2_sl_eth_of_to_plat(struct udevice *dev)
 {
+	ofnode slave, interfaces, gbe, netcp_devices, netcp;
 	struct ks2_eth_priv *priv = dev_get_priv(dev);
 	struct eth_pdata *pdata = dev_get_plat(dev);
-	const void *fdt = gd->fdt_blob;
-	int slave = dev_of_offset(dev);
-	int interfaces;
-	int gbe;
-	int netcp_devices;
-	int netcp;
-
-	interfaces = fdt_parent_offset(fdt, slave);
-	gbe = fdt_parent_offset(fdt, interfaces);
-	netcp_devices = fdt_parent_offset(fdt, gbe);
-	netcp = fdt_parent_offset(fdt, netcp_devices);
+
+	slave = dev_ofnode(dev);
+	interfaces = ofnode_get_parent(slave);
+	gbe = ofnode_get_parent(interfaces);
+	netcp_devices = ofnode_get_parent(gbe);
+	netcp = ofnode_get_parent(netcp_devices);
 
 	ks2_eth_parse_slave_interface(netcp, slave, priv, pdata);
 
-	pdata->iobase = fdtdec_get_addr(fdt, netcp, "reg");
+	pdata->iobase = ofnode_get_addr(netcp);
 
 	return 0;
 }
@@ -766,18 +752,15 @@ static int ks2_eth_of_to_plat(struct udevice *dev)
 {
 	struct ks2_eth_priv *priv = dev_get_priv(dev);
 	struct eth_pdata *pdata = dev_get_plat(dev);
-	const void *fdt = gd->fdt_blob;
-	int gbe_0 = -ENODEV;
-	int netcp_devices;
-	int gbe;
+	ofnode netcp_devices, gbe, gbe_0;
 
-	netcp_devices = fdt_subnode_offset(fdt, dev_of_offset(dev),
-					   "netcp-devices");
-	gbe = fdt_subnode_offset(fdt, netcp_devices, "gbe");
+	netcp_devices = dev_read_subnode(dev, "netcp-devices");
+	gbe = ofnode_find_subnode(netcp_devices, "gbe");
 
+	gbe_0 = ofnode_null();
 	ks2_eth_bind_slaves(dev, gbe, &gbe_0);
 
-	ks2_eth_parse_slave_interface(dev_of_offset(dev), gbe_0, priv, pdata);
+	ks2_eth_parse_slave_interface(dev_ofnode(dev), gbe_0, priv, pdata);
 
 	pdata->iobase = dev_read_addr(dev);
 
-- 
2.35.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH u-boot-net 3/3] driver: net: ti: keystone_net: Change priv member type
  2022-04-11 19:20 [PATCH u-boot-net 0/3] A tiny batch of keystone_net changes Marek Behún
  2022-04-11 19:20 ` [PATCH u-boot-net 1/3] driver: net: ti: keystone_net: Deduplicate code Marek Behún
  2022-04-11 19:20 ` [PATCH u-boot-net 2/3] driver: net: ti: keystone_net: Convert to ofnode functions Marek Behún
@ 2022-04-11 19:20 ` Marek Behún
  2022-04-12 19:54   ` Ramon Fried
  2022-04-12 19:57 ` [PATCH u-boot-net 0/3] A tiny batch of keystone_net changes Ramon Fried
  3 siblings, 1 reply; 8+ messages in thread
From: Marek Behún @ 2022-04-11 19:20 UTC (permalink / raw)
  To: Ramon Fried
  Cc: Joe Hershberger, u-boot, Marek Behún, Grygorii Strashko,
	Murali Karicheri

From: Marek Behún <marek.behun@nic.cz>

Change type of private struct member mdio_base from void * to
phys_addr_t. This allows us to drop 2 casts.

Signed-off-by: Marek Behún <marek.behun@nic.cz>
---
 drivers/net/ti/keystone_net.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ti/keystone_net.c b/drivers/net/ti/keystone_net.c
index 3c1f616086..fbec69f571 100644
--- a/drivers/net/ti/keystone_net.c
+++ b/drivers/net/ti/keystone_net.c
@@ -92,7 +92,7 @@ struct ks2_eth_priv {
 	phy_interface_t			phy_if;
 	ofnode				phy_ofnode;
 	int				sgmii_link_type;
-	void *				mdio_base;
+	phys_addr_t			mdio_base;
 	struct rx_buff_desc		net_rx_buffs;
 	struct pktdma_cfg		*netcp_pktdma;
 	void				*hd;
@@ -569,7 +569,7 @@ static int ks2_eth_probe(struct udevice *dev)
 		 * to re-use the same
 		 */
 		mdio_bus = cpsw_mdio_init("ethernet-mdio",
-					  (u32)priv->mdio_base,
+					  priv->mdio_base,
 					  EMAC_MDIO_CLOCK_FREQ,
 					  EMAC_MDIO_BUS_FREQ);
 		if (!mdio_bus) {
@@ -701,7 +701,7 @@ static int ks2_eth_parse_slave_interface(ofnode netcp, ofnode slave,
 			pr_err("mdio dt not found\n");
 			return -ENODEV;
 		}
-		priv->mdio_base = (void *)ofnode_get_addr(mdio);
+		priv->mdio_base = ofnode_get_addr(mdio);
 	}
 
 	if (priv->link_type == LINK_TYPE_SGMII_MAC_TO_PHY_MODE) {
-- 
2.35.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH u-boot-net 1/3] driver: net: ti: keystone_net: Deduplicate code
  2022-04-11 19:20 ` [PATCH u-boot-net 1/3] driver: net: ti: keystone_net: Deduplicate code Marek Behún
@ 2022-04-12 19:53   ` Ramon Fried
  0 siblings, 0 replies; 8+ messages in thread
From: Ramon Fried @ 2022-04-12 19:53 UTC (permalink / raw)
  To: Marek Behún
  Cc: Joe Hershberger, U-Boot Mailing List, Marek Behún,
	Grygorii Strashko, Murali Karicheri

On Mon, Apr 11, 2022 at 10:21 PM Marek Behún <kabel@kernel.org> wrote:
>
> From: Marek Behún <marek.behun@nic.cz>
>
> Deduplicate common code in ks2_eth_bind_slaves().
>
> Signed-off-by: Marek Behún <marek.behun@nic.cz>
> ---
>  drivers/net/ti/keystone_net.c | 75 ++++++++++++++++-------------------
>  1 file changed, 34 insertions(+), 41 deletions(-)
>
> diff --git a/drivers/net/ti/keystone_net.c b/drivers/net/ti/keystone_net.c
> index 16e3f32bb0..3ee4740ec5 100644
> --- a/drivers/net/ti/keystone_net.c
> +++ b/drivers/net/ti/keystone_net.c
> @@ -621,58 +621,51 @@ static const struct eth_ops ks2_eth_ops = {
>         .write_hwaddr           = ks2_eth_write_hwaddr,
>  };
>
> -static int ks2_eth_bind_slaves(struct udevice *dev, int gbe, int *gbe_0)
> +static int ks2_bind_one_slave(struct udevice *dev, int slave, int *gbe_0)
>  {
>         const void *fdt = gd->fdt_blob;
> -       struct udevice *sl_dev;
> -       int interfaces;
> -       int sec_slave;
> -       int slave;
> -       int ret;
>         char *slave_name;
> +       int slave_no;
> +       int ret;
> +
> +       slave_no = fdtdec_get_int(fdt, slave, "slave-port", -ENOENT);
> +       if (slave_no == -ENOENT)
> +               return 0;
> +
> +       if (gbe_0 && slave_no == 0) {
> +               /* This is the current eth device */
> +               *gbe_0 = slave;
> +               return 0;
> +       }
> +
> +       /* Slave devices to be registered */
> +       slave_name = malloc(20);
> +       snprintf(slave_name, 20, "netcp@slave-%d", slave_no);
> +       ret = device_bind_driver_to_node(dev, "eth_ks2_sl", slave_name,
> +                                        offset_to_ofnode(slave), NULL);
> +       if (ret)
> +               pr_err("ks2_net - not able to bind slave interfaces\n");
> +
> +       return ret;
> +}
> +
> +static int ks2_eth_bind_slaves(struct udevice *dev, int gbe, int *gbe_0)
> +{
> +       int interfaces, sec_slave, slave, ret;
> +       const void *fdt = gd->fdt_blob;
>
>         interfaces = fdt_subnode_offset(fdt, gbe, "interfaces");
>         fdt_for_each_subnode(slave, fdt, interfaces) {
> -               int slave_no;
> -
> -               slave_no = fdtdec_get_int(fdt, slave, "slave-port", -ENOENT);
> -               if (slave_no == -ENOENT)
> -                       continue;
> -
> -               if (slave_no == 0) {
> -                       /* This is the current eth device */
> -                       *gbe_0 = slave;
> -               } else {
> -                       /* Slave devices to be registered */
> -                       slave_name = malloc(20);
> -                       snprintf(slave_name, 20, "netcp@slave-%d", slave_no);
> -                       ret = device_bind_driver_to_node(dev, "eth_ks2_sl",
> -                                       slave_name, offset_to_ofnode(slave),
> -                                       &sl_dev);
> -                       if (ret) {
> -                               pr_err("ks2_net - not able to bind slave interfaces\n");
> -                               return ret;
> -                       }
> -               }
> +               ret = ks2_bind_one_slave(dev, slave, gbe_0);
> +               if (ret)
> +                       return ret;
>         }
>
>         sec_slave = fdt_subnode_offset(fdt, gbe, "secondary-slave-ports");
>         fdt_for_each_subnode(slave, fdt, sec_slave) {
> -               int slave_no;
> -
> -               slave_no = fdtdec_get_int(fdt, slave, "slave-port", -ENOENT);
> -               if (slave_no == -ENOENT)
> -                       continue;
> -
> -               /* Slave devices to be registered */
> -               slave_name = malloc(20);
> -               snprintf(slave_name, 20, "netcp@slave-%d", slave_no);
> -               ret = device_bind_driver_to_node(dev, "eth_ks2_sl", slave_name,
> -                                       offset_to_ofnode(slave), &sl_dev);
> -               if (ret) {
> -                       pr_err("ks2_net - not able to bind slave interfaces\n");
> +               ret = ks2_bind_one_slave(dev, slave, NULL);
> +               if (ret)
>                         return ret;
> -               }
>         }
>
>         return 0;
> --
> 2.35.1
>
Reviewed-by: Ramon Fried <rfried.dev@gmail.com>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH u-boot-net 2/3] driver: net: ti: keystone_net: Convert to ofnode functions
  2022-04-11 19:20 ` [PATCH u-boot-net 2/3] driver: net: ti: keystone_net: Convert to ofnode functions Marek Behún
@ 2022-04-12 19:54   ` Ramon Fried
  0 siblings, 0 replies; 8+ messages in thread
From: Ramon Fried @ 2022-04-12 19:54 UTC (permalink / raw)
  To: Marek Behún
  Cc: Joe Hershberger, U-Boot Mailing List, Marek Behún,
	Grygorii Strashko, Murali Karicheri

On Mon, Apr 11, 2022 at 10:21 PM Marek Behún <kabel@kernel.org> wrote:
>
> From: Marek Behún <marek.behun@nic.cz>
>
> Convert fdt parsing functions to ofnode parsing functions.
>
> Signed-off-by: Marek Behún <marek.behun@nic.cz>
> ---
>  drivers/net/ti/keystone_net.c | 113 +++++++++++++++-------------------
>  1 file changed, 48 insertions(+), 65 deletions(-)
>
> diff --git a/drivers/net/ti/keystone_net.c b/drivers/net/ti/keystone_net.c
> index 3ee4740ec5..3c1f616086 100644
> --- a/drivers/net/ti/keystone_net.c
> +++ b/drivers/net/ti/keystone_net.c
> @@ -23,7 +23,6 @@
>  #include <asm/ti-common/keystone_net.h>
>  #include <asm/ti-common/keystone_serdes.h>
>  #include <asm/arch/psc_defs.h>
> -#include <linux/libfdt.h>
>
>  #include "cpsw_mdio.h"
>
> @@ -91,9 +90,9 @@ struct ks2_eth_priv {
>         struct mii_dev                  *mdio_bus;
>         int                             phy_addr;
>         phy_interface_t                 phy_if;
> -       int                             phy_of_handle;
> +       ofnode                          phy_ofnode;
>         int                             sgmii_link_type;
> -       void                            *mdio_base;
> +       void *                          mdio_base;
>         struct rx_buff_desc             net_rx_buffs;
>         struct pktdma_cfg               *netcp_pktdma;
>         void                            *hd;
> @@ -593,8 +592,8 @@ static int ks2_eth_probe(struct udevice *dev)
>                 priv->phydev = phy_connect(priv->mdio_bus, priv->phy_addr,
>                                            dev, priv->phy_if);
>  #ifdef CONFIG_DM_ETH
> -       if (priv->phy_of_handle)
> -               priv->phydev->node = offset_to_ofnode(priv->phy_of_handle);
> +       if (ofnode_valid(priv->phy_ofnode))
> +               priv->phydev->node = priv->phy_ofnode;
>  #endif
>                 phy_config(priv->phydev);
>         }
> @@ -621,15 +620,13 @@ static const struct eth_ops ks2_eth_ops = {
>         .write_hwaddr           = ks2_eth_write_hwaddr,
>  };
>
> -static int ks2_bind_one_slave(struct udevice *dev, int slave, int *gbe_0)
> +static int ks2_bind_one_slave(struct udevice *dev, ofnode slave, ofnode *gbe_0)
>  {
> -       const void *fdt = gd->fdt_blob;
>         char *slave_name;
> -       int slave_no;
> +       u32 slave_no;
>         int ret;
>
> -       slave_no = fdtdec_get_int(fdt, slave, "slave-port", -ENOENT);
> -       if (slave_no == -ENOENT)
> +       if (ofnode_read_u32(slave, "slave-port", &slave_no))
>                 return 0;
>
>         if (gbe_0 && slave_no == 0) {
> @@ -641,28 +638,28 @@ static int ks2_bind_one_slave(struct udevice *dev, int slave, int *gbe_0)
>         /* Slave devices to be registered */
>         slave_name = malloc(20);
>         snprintf(slave_name, 20, "netcp@slave-%d", slave_no);
> -       ret = device_bind_driver_to_node(dev, "eth_ks2_sl", slave_name,
> -                                        offset_to_ofnode(slave), NULL);
> +       ret = device_bind_driver_to_node(dev, "eth_ks2_sl", slave_name, slave,
> +                                        NULL);
>         if (ret)
>                 pr_err("ks2_net - not able to bind slave interfaces\n");
>
>         return ret;
>  }
>
> -static int ks2_eth_bind_slaves(struct udevice *dev, int gbe, int *gbe_0)
> +static int ks2_eth_bind_slaves(struct udevice *dev, ofnode gbe, ofnode *gbe_0)
>  {
> -       int interfaces, sec_slave, slave, ret;
> -       const void *fdt = gd->fdt_blob;
> +       ofnode interfaces, sec_slave, slave;
> +       int ret;
>
> -       interfaces = fdt_subnode_offset(fdt, gbe, "interfaces");
> -       fdt_for_each_subnode(slave, fdt, interfaces) {
> +       interfaces = ofnode_find_subnode(gbe, "interfaces");
> +       ofnode_for_each_subnode(slave, interfaces) {
>                 ret = ks2_bind_one_slave(dev, slave, gbe_0);
>                 if (ret)
>                         return ret;
>         }
>
> -       sec_slave = fdt_subnode_offset(fdt, gbe, "secondary-slave-ports");
> -       fdt_for_each_subnode(slave, fdt, sec_slave) {
> +       sec_slave = ofnode_find_subnode(gbe, "secondary-slave-ports");
> +       ofnode_for_each_subnode(slave, sec_slave) {
>                 ret = ks2_bind_one_slave(dev, slave, NULL);
>                 if (ret)
>                         return ret;
> @@ -671,47 +668,40 @@ static int ks2_eth_bind_slaves(struct udevice *dev, int gbe, int *gbe_0)
>         return 0;
>  }
>
> -static int ks2_eth_parse_slave_interface(int netcp, int slave,
> +static int ks2_eth_parse_slave_interface(ofnode netcp, ofnode slave,
>                                          struct ks2_eth_priv *priv,
>                                          struct eth_pdata *pdata)
>  {
> -       const void *fdt = gd->fdt_blob;
> -       int mdio;
> -       int phy;
> +       struct ofnode_phandle_args dma_args;
> +       ofnode phy, mdio;
>         int dma_count;
> -       u32 dma_channel[8];
>
> -       priv->slave_port = fdtdec_get_int(fdt, slave, "slave-port", -1);
> +       priv->slave_port = ofnode_read_s32_default(slave, "slave-port", -1);
>         priv->net_rx_buffs.rx_flow = priv->slave_port * 8;
>
>         /* U-Boot slave port number starts with 1 instead of 0 */
>         priv->slave_port += 1;
>
> -       dma_count = fdtdec_get_int_array_count(fdt, netcp,
> -                                              "ti,navigator-dmas",
> -                                              dma_channel, 8);
> -
> -       if (dma_count > (2 * priv->slave_port)) {
> -               int dma_idx;
> -
> -               dma_idx = priv->slave_port * 2 - 1;
> -               priv->net_rx_buffs.rx_flow = dma_channel[dma_idx];
> -       }
> -
> -       priv->link_type = fdtdec_get_int(fdt, slave, "link-interface", -1);
> +       dma_count = ofnode_count_phandle_with_args(netcp, "ti,navigator-dmas",
> +                                                  NULL, 1);
> +       if (priv->slave_port < dma_count &&
> +           !ofnode_parse_phandle_with_args(netcp, "ti,navigator-dmas", NULL, 1,
> +                                           priv->slave_port - 1, &dma_args))
> +               priv->net_rx_buffs.rx_flow = dma_args.args[0];
>
> -       phy = fdtdec_lookup_phandle(fdt, slave, "phy-handle");
> +       priv->link_type = ofnode_read_s32_default(slave, "link-interface", -1);
>
> -       if (phy >= 0) {
> -               priv->phy_of_handle = phy;
> -               priv->phy_addr = fdtdec_get_int(fdt, phy, "reg", -1);
> +       phy = ofnode_get_phy_node(slave);
> +       priv->phy_ofnode = phy;
> +       if (ofnode_valid(phy)) {
> +               priv->phy_addr = ofnode_read_s32_default(phy, "reg", -1);
>
> -               mdio = fdt_parent_offset(fdt, phy);
> -               if (mdio < 0) {
> +               mdio = ofnode_get_parent(phy);
> +               if (!ofnode_valid(mdio)) {
>                         pr_err("mdio dt not found\n");
>                         return -ENODEV;
>                 }
> -               priv->mdio_base = (void *)fdtdec_get_addr(fdt, mdio, "reg");
> +               priv->mdio_base = (void *)ofnode_get_addr(mdio);
>         }
>
>         if (priv->link_type == LINK_TYPE_SGMII_MAC_TO_PHY_MODE) {
> @@ -720,7 +710,7 @@ static int ks2_eth_parse_slave_interface(int netcp, int slave,
>                 priv->sgmii_link_type = SGMII_LINK_MAC_PHY;
>                 priv->has_mdio = true;
>         } else if (priv->link_type == LINK_TYPE_RGMII_LINK_MAC_PHY) {
> -               priv->phy_if = ofnode_read_phy_mode(offset_to_ofnode(slave));
> +               priv->phy_if = ofnode_read_phy_mode(slave);
>                 if (priv->phy_if == PHY_INTERFACE_MODE_NA)
>                         priv->phy_if = PHY_INTERFACE_MODE_RGMII;
>                 pdata->phy_interface = priv->phy_if;
> @@ -741,23 +731,19 @@ static int ks2_eth_parse_slave_interface(int netcp, int slave,
>
>  static int ks2_sl_eth_of_to_plat(struct udevice *dev)
>  {
> +       ofnode slave, interfaces, gbe, netcp_devices, netcp;
>         struct ks2_eth_priv *priv = dev_get_priv(dev);
>         struct eth_pdata *pdata = dev_get_plat(dev);
> -       const void *fdt = gd->fdt_blob;
> -       int slave = dev_of_offset(dev);
> -       int interfaces;
> -       int gbe;
> -       int netcp_devices;
> -       int netcp;
> -
> -       interfaces = fdt_parent_offset(fdt, slave);
> -       gbe = fdt_parent_offset(fdt, interfaces);
> -       netcp_devices = fdt_parent_offset(fdt, gbe);
> -       netcp = fdt_parent_offset(fdt, netcp_devices);
> +
> +       slave = dev_ofnode(dev);
> +       interfaces = ofnode_get_parent(slave);
> +       gbe = ofnode_get_parent(interfaces);
> +       netcp_devices = ofnode_get_parent(gbe);
> +       netcp = ofnode_get_parent(netcp_devices);
>
>         ks2_eth_parse_slave_interface(netcp, slave, priv, pdata);
>
> -       pdata->iobase = fdtdec_get_addr(fdt, netcp, "reg");
> +       pdata->iobase = ofnode_get_addr(netcp);
>
>         return 0;
>  }
> @@ -766,18 +752,15 @@ static int ks2_eth_of_to_plat(struct udevice *dev)
>  {
>         struct ks2_eth_priv *priv = dev_get_priv(dev);
>         struct eth_pdata *pdata = dev_get_plat(dev);
> -       const void *fdt = gd->fdt_blob;
> -       int gbe_0 = -ENODEV;
> -       int netcp_devices;
> -       int gbe;
> +       ofnode netcp_devices, gbe, gbe_0;
>
> -       netcp_devices = fdt_subnode_offset(fdt, dev_of_offset(dev),
> -                                          "netcp-devices");
> -       gbe = fdt_subnode_offset(fdt, netcp_devices, "gbe");
> +       netcp_devices = dev_read_subnode(dev, "netcp-devices");
> +       gbe = ofnode_find_subnode(netcp_devices, "gbe");
>
> +       gbe_0 = ofnode_null();
>         ks2_eth_bind_slaves(dev, gbe, &gbe_0);
>
> -       ks2_eth_parse_slave_interface(dev_of_offset(dev), gbe_0, priv, pdata);
> +       ks2_eth_parse_slave_interface(dev_ofnode(dev), gbe_0, priv, pdata);
>
>         pdata->iobase = dev_read_addr(dev);
>
> --
> 2.35.1
>
Reviewed-by: Ramon Fried <rfried.dev@gmail.com>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH u-boot-net 3/3] driver: net: ti: keystone_net: Change priv member type
  2022-04-11 19:20 ` [PATCH u-boot-net 3/3] driver: net: ti: keystone_net: Change priv member type Marek Behún
@ 2022-04-12 19:54   ` Ramon Fried
  0 siblings, 0 replies; 8+ messages in thread
From: Ramon Fried @ 2022-04-12 19:54 UTC (permalink / raw)
  To: Marek Behún
  Cc: Joe Hershberger, U-Boot Mailing List, Marek Behún,
	Grygorii Strashko, Murali Karicheri

On Mon, Apr 11, 2022 at 10:21 PM Marek Behún <kabel@kernel.org> wrote:
>
> From: Marek Behún <marek.behun@nic.cz>
>
> Change type of private struct member mdio_base from void * to
> phys_addr_t. This allows us to drop 2 casts.
>
> Signed-off-by: Marek Behún <marek.behun@nic.cz>
> ---
>  drivers/net/ti/keystone_net.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/ti/keystone_net.c b/drivers/net/ti/keystone_net.c
> index 3c1f616086..fbec69f571 100644
> --- a/drivers/net/ti/keystone_net.c
> +++ b/drivers/net/ti/keystone_net.c
> @@ -92,7 +92,7 @@ struct ks2_eth_priv {
>         phy_interface_t                 phy_if;
>         ofnode                          phy_ofnode;
>         int                             sgmii_link_type;
> -       void *                          mdio_base;
> +       phys_addr_t                     mdio_base;
>         struct rx_buff_desc             net_rx_buffs;
>         struct pktdma_cfg               *netcp_pktdma;
>         void                            *hd;
> @@ -569,7 +569,7 @@ static int ks2_eth_probe(struct udevice *dev)
>                  * to re-use the same
>                  */
>                 mdio_bus = cpsw_mdio_init("ethernet-mdio",
> -                                         (u32)priv->mdio_base,
> +                                         priv->mdio_base,
>                                           EMAC_MDIO_CLOCK_FREQ,
>                                           EMAC_MDIO_BUS_FREQ);
>                 if (!mdio_bus) {
> @@ -701,7 +701,7 @@ static int ks2_eth_parse_slave_interface(ofnode netcp, ofnode slave,
>                         pr_err("mdio dt not found\n");
>                         return -ENODEV;
>                 }
> -               priv->mdio_base = (void *)ofnode_get_addr(mdio);
> +               priv->mdio_base = ofnode_get_addr(mdio);
>         }
>
>         if (priv->link_type == LINK_TYPE_SGMII_MAC_TO_PHY_MODE) {
> --
> 2.35.1
>
Reviewed-by: Ramon Fried <rfried.dev@gmail.com>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH u-boot-net 0/3] A tiny batch of keystone_net changes
  2022-04-11 19:20 [PATCH u-boot-net 0/3] A tiny batch of keystone_net changes Marek Behún
                   ` (2 preceding siblings ...)
  2022-04-11 19:20 ` [PATCH u-boot-net 3/3] driver: net: ti: keystone_net: Change priv member type Marek Behún
@ 2022-04-12 19:57 ` Ramon Fried
  3 siblings, 0 replies; 8+ messages in thread
From: Ramon Fried @ 2022-04-12 19:57 UTC (permalink / raw)
  To: Marek Behún; +Cc: Joe Hershberger, U-Boot Mailing List, Marek Behún

On Mon, Apr 11, 2022 at 10:21 PM Marek Behún <kabel@kernel.org> wrote:
>
> From: Marek Behún <marek.behun@nic.cz>
>
> Hello Ramon,
>
> here comes a tiny batch of changes for keystone_net.
> Applicable on top of net/next.
>
> Marek
>
> Marek Behún (3):
>   driver: net: ti: keystone_net: Deduplicate code
>   driver: net: ti: keystone_net: Convert to ofnode functions
>   driver: net: ti: keystone_net: Change priv member type
>
>  drivers/net/ti/keystone_net.c | 172 +++++++++++++++-------------------
>  1 file changed, 74 insertions(+), 98 deletions(-)
>
> --
> 2.35.1
>
Applied to u-boot-net/next,
Thanks,
Ramon

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2022-04-12 19:57 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-04-11 19:20 [PATCH u-boot-net 0/3] A tiny batch of keystone_net changes Marek Behún
2022-04-11 19:20 ` [PATCH u-boot-net 1/3] driver: net: ti: keystone_net: Deduplicate code Marek Behún
2022-04-12 19:53   ` Ramon Fried
2022-04-11 19:20 ` [PATCH u-boot-net 2/3] driver: net: ti: keystone_net: Convert to ofnode functions Marek Behún
2022-04-12 19:54   ` Ramon Fried
2022-04-11 19:20 ` [PATCH u-boot-net 3/3] driver: net: ti: keystone_net: Change priv member type Marek Behún
2022-04-12 19:54   ` Ramon Fried
2022-04-12 19:57 ` [PATCH u-boot-net 0/3] A tiny batch of keystone_net changes Ramon Fried

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox