On Wed, Jan 20, 2021 at 08:33:48AM +0000, Lee Jones wrote: > On Wed, 13 Jan 2021, Cristian Ciocaltea wrote: > > > Add initial support for the Actions Semi ATC260x PMICs which integrates > > Audio Codec, Power management, Clock generation and GPIO controller > > blocks. > > [...] > > + /* Initialize the hardware */ > > + atc260x->dev_init(atc260x); > > + > > + ret = regmap_read(atc260x->regmap, atc260x->rev_reg, &chip_rev); > > + if (ret) { > > + dev_err(dev, "Failed to get chip revision\n"); > > + return ret; > > + } > > + > > + if (chip_rev > 31) { > > Nit: If you have to respin this, please define this magic number. > [...] > > +static struct i2c_driver atc260x_i2c_driver = { > > + .driver = { > > + .name = "atc260x", > > + .of_match_table = of_match_ptr(atc260x_i2c_of_match), > > + }, > > + .probe = atc260x_i2c_probe, > > +}; > > Nit: These spacings/line-ups just look odd. > > Please stick to one ' ' after the '='. [...] > > + const char *type_name; > > + unsigned int rev_reg; > > + > > + int (*dev_init)(struct atc260x *atc260x); > > Ah, I didn't see this before. > > Call-backs of this nature are the devil. Please populate a struct > with the differentiating register addresses/values instead and always > call a generic deivce_init(). I have implemented this, including the other 2 suggestions above, in the already submitted revision v6. Thanks, Cristi > > +}; > > + > > +struct regmap_config; > > + > > +int atc260x_match_device(struct atc260x *atc260x, struct regmap_config *regmap_cfg); > > +int atc260x_device_probe(struct atc260x *atc260x); > > + > > +#endif /* __LINUX_MFD_ATC260X_CORE_H */ > > -- > Lee Jones [李琼斯] > Senior Technical Lead - Developer Services > Linaro.org │ Open source software for Arm SoCs > Follow Linaro: Facebook | Twitter | Blog