mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 15:14:43 +00:00
net: dsa: ensure dsa driver has proper ops
Add a function to sanity check a dsa driver having proper ops. Suggested-by: Vladimir Oltean <vladimir.oltean@nxp.com> Signed-off-by: Tim Harvey <tharvey@gateworks.com> Reviewed-by: Vladimir Oltean <vladimir.oltean@nxp.com> Reviewed-by: Fabio Estevam <festevam@denx.de>
This commit is contained in:
parent
c5868fcd25
commit
43c2a00a14
1 changed files with 17 additions and 0 deletions
|
@ -342,6 +342,19 @@ U_BOOT_DRIVER(dsa_port) = {
|
|||
.plat_auto = sizeof(struct eth_pdata),
|
||||
};
|
||||
|
||||
static int dsa_sanitize_ops(struct udevice *dev)
|
||||
{
|
||||
struct dsa_ops *ops = dsa_get_ops(dev);
|
||||
|
||||
if ((!ops->xmit || !ops->rcv) &&
|
||||
(!ops->port_enable && !ops->port_disable)) {
|
||||
dev_err(dev, "Packets cannot be steered to ports\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* This function mostly deals with pulling information out of the device tree
|
||||
* into the pdata structure.
|
||||
|
@ -358,6 +371,10 @@ static int dsa_post_bind(struct udevice *dev)
|
|||
if (!ofnode_valid(node))
|
||||
return -ENODEV;
|
||||
|
||||
err = dsa_sanitize_ops(dev);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
pdata->master_node = ofnode_null();
|
||||
|
||||
node = ofnode_find_subnode(node, "ports");
|
||||
|
|
Loading…
Reference in a new issue