Commit a081546d authored by Bin Meng's avatar Bin Meng Committed by Priyanka Jain
Browse files

net: tsec: Support <reg> property from the subnode "queue-group"



At present the tsec driver uses a non-standard DT bindings to get
its <reg> base / size. The upstream Linux kernel seems to require
the <reg> base / size to be put under a subnode of the eTSEC node
with a name prefix "queue-group". This is not documented in the
kernel DT bindings, but it looks every dtsi file that contains the
eTSEC node was written like this.

This commit updates the tsec driver to handle this case.
Signed-off-by: Bin Meng's avatarBin Meng <bmeng.cn@gmail.com>
Reviewed-by: Ramon Fried's avatarRamon Fried <rfried.dev@gmail.com>
Reviewed-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: Priyanka Jain's avatarPriyanka Jain <priyanka.jain@nxp.com>
parent 05153702
......@@ -826,15 +826,39 @@ int tsec_probe(struct udevice *dev)
u32 tbiaddr = CONFIG_SYS_TBIPA_VALUE;
struct tsec_data *data;
const char *phy_mode;
ofnode parent, child;
fdt_addr_t reg;
ofnode parent;
int ret;
data = (struct tsec_data *)dev_get_driver_data(dev);
pdata->iobase = (phys_addr_t)dev_read_addr(dev);
if (pdata->iobase == FDT_ADDR_T_NONE)
return -ENOENT;
if (pdata->iobase == FDT_ADDR_T_NONE) {
ofnode_for_each_subnode(child, dev_ofnode(dev)) {
if (strncmp(ofnode_get_name(child), "queue-group",
strlen("queue-group")))
continue;
reg = ofnode_get_addr(child);
if (reg == FDT_ADDR_T_NONE) {
printf("No 'reg' property of <queue-group>\n");
return -ENOENT;
}
pdata->iobase = reg;
/*
* if there are multiple queue groups,
* only the first one is used.
*/
break;
}
if (!ofnode_valid(child)) {
printf("No child node for <queue-group>?\n");
return -ENOENT;
}
}
priv->regs = map_physmem(pdata->iobase, 0, MAP_NOCACHE);
ret = dev_read_phandle_with_args(dev, "tbi-handle", NULL, 0, 0,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment