[PATCH net-next v2 08/10] net: dsa: Add support for platform data
From: f.fainelli@gmail.com (Florian Fainelli)
Date: 2017-01-13 22:39:19
Also in:
lkml, netdev
On 01/13/2017 06:11 AM, Andrew Lunn wrote:
quoted
static int _dsa_register_switch(struct dsa_switch *ds, struct device *dev) { + struct dsa_chip_data *pdata = dev->platform_data; struct device_node *np = dev->of_node; struct dsa_switch_tree *dst; struct device_node *ports; u32 tree, index; int i, err; - err = dsa_parse_member_dn(np, &tree, &index); - if (err) - return err; + if (np) { + err = dsa_parse_member_dn(np, &tree, &index); + if (err) + return err; - ports = dsa_get_ports(ds, np); - if (IS_ERR(ports)) - return PTR_ERR(ports); + ports = dsa_get_ports(ds, np); + if (IS_ERR(ports)) + return PTR_ERR(ports); - err = dsa_parse_ports_dn(ports, ds); - if (err) - return err; + err = dsa_parse_ports_dn(ports, ds); + if (err) + return err; + } else { + err = dsa_parse_member(pdata, &tree, &index);
Hello Andrew,
Hi Florian Maybe it is hiding, but i don't see anywhere you check that pdata != NULL.
You are right, there is not such a check, it should probably be added early on.
At least for x86 platforms, i don't expect we are booting using platform data like ARM systems used to do. I think it is more likely a glue module will be loaded. It looks up the MDIO bus and appends a platform data to an MDIO device. The switch driver then needs to load and use the platform data. But if things happen in a different order, it could be the switch driver probes before the glue driver, meaning pdata is NULL.
That's very valid, I will fix this, thanks!
Do we even want to return -EPROBE_DEFERED?
I was trying to exercise that code path a little bit, but could not quite make sense of what I was seeing, let me try again with more tracing. -- Florian