mirror of
https://github.com/smaeul/u-boot.git
synced 2025-10-14 04:46:01 +01:00
driver: net: ti: keystone_net: Deduplicate code
Deduplicate common code in ks2_eth_bind_slaves(). Signed-off-by: Marek Behún <marek.behun@nic.cz> Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
This commit is contained in:
parent
1ffe366881
commit
71f473916d
@ -621,58 +621,51 @@ static const struct eth_ops ks2_eth_ops = {
|
|||||||
.write_hwaddr = ks2_eth_write_hwaddr,
|
.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;
|
const void *fdt = gd->fdt_blob;
|
||||||
struct udevice *sl_dev;
|
|
||||||
int interfaces;
|
|
||||||
int sec_slave;
|
|
||||||
int slave;
|
|
||||||
int ret;
|
|
||||||
char *slave_name;
|
char *slave_name;
|
||||||
|
|
||||||
interfaces = fdt_subnode_offset(fdt, gbe, "interfaces");
|
|
||||||
fdt_for_each_subnode(slave, fdt, interfaces) {
|
|
||||||
int slave_no;
|
int slave_no;
|
||||||
|
int ret;
|
||||||
|
|
||||||
slave_no = fdtdec_get_int(fdt, slave, "slave-port", -ENOENT);
|
slave_no = fdtdec_get_int(fdt, slave, "slave-port", -ENOENT);
|
||||||
if (slave_no == -ENOENT)
|
if (slave_no == -ENOENT)
|
||||||
continue;
|
return 0;
|
||||||
|
|
||||||
if (slave_no == 0) {
|
if (gbe_0 && slave_no == 0) {
|
||||||
/* This is the current eth device */
|
/* This is the current eth device */
|
||||||
*gbe_0 = slave;
|
*gbe_0 = slave;
|
||||||
} else {
|
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),
|
|
||||||
&sl_dev);
|
|
||||||
if (ret) {
|
|
||||||
pr_err("ks2_net - not able to bind slave interfaces\n");
|
|
||||||
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 devices to be registered */
|
||||||
slave_name = malloc(20);
|
slave_name = malloc(20);
|
||||||
snprintf(slave_name, 20, "netcp@slave-%d", slave_no);
|
snprintf(slave_name, 20, "netcp@slave-%d", slave_no);
|
||||||
ret = device_bind_driver_to_node(dev, "eth_ks2_sl", slave_name,
|
ret = device_bind_driver_to_node(dev, "eth_ks2_sl", slave_name,
|
||||||
offset_to_ofnode(slave), &sl_dev);
|
offset_to_ofnode(slave), NULL);
|
||||||
if (ret) {
|
if (ret)
|
||||||
pr_err("ks2_net - not able to bind slave interfaces\n");
|
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) {
|
||||||
|
ret = ks2_bind_one_slave(dev, slave, gbe_0);
|
||||||
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sec_slave = fdt_subnode_offset(fdt, gbe, "secondary-slave-ports");
|
||||||
|
fdt_for_each_subnode(slave, fdt, sec_slave) {
|
||||||
|
ret = ks2_bind_one_slave(dev, slave, NULL);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user