>  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);

Hi Florian

Maybe it is hiding, but i don't see anywhere you check that pdata !=
NULL.

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.

Do we even want to return -EPROBE_DEFERED?

      Andrew

Reply via email to