On Tue, May 5, 2020 at 4:29 PM Calvin Johnson <calvin.johnson@xxxxxxxxxxx> wrote: > > Extract phy_id from compatible string. This will be used by > fwnode_mdiobus_register_phy() to create phy device using the > phy_id. > +int fwnode_get_phy_id(struct fwnode_handle *fwnode, u32 *phy_id) > +{ > + const char *cp; > + unsigned int upper, lower; > + int ret; > + > + ret = fwnode_property_read_string(fwnode, "compatible", &cp); > + if (!ret) { if (ret) return ret; will help a lot with readability of this. > + if (sscanf(cp, "ethernet-phy-id%4x.%4x", > + &upper, &lower) == 2) { > + *phy_id = ((upper & 0xFFFF) << 16) | (lower & 0xFFFF); How upper can be bigger than 0xfff? Same for lower. > + return 0; > + } > + } > + return -EINVAL; > +} -- With Best Regards, Andy Shevchenko