* [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
* 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
* [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
* 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
* [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 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