On Mon, Sep 09, 2013 at 06:29:11PM +0800, Wei Ni wrote:
> + reg = devm_regulator_get_optional(dev, "vcc");
> + if (!IS_ERR(reg)) {
> + err = regulator_enable(reg);
> + if (err < 0) {
> + dev_err(&client->dev,
> + "Failed to enable regulator: %d\n", err);
> + return err;
> + }
> + msleep(25);
> + } else {
> + if (PTR_ERR(reg) == -EPROBE_DEFER)
> + return -EPROBE_DEFER;
> + }This doesn't look good, it is going to ignore actual errors - I *really* doubt that vcc is optional, it looks like it's the main power supply for the device. You should use normal regulator_get(), _optional() is for supplies which could physically not be provided in a system (eg, if the device can generate them internally if required). Also do you really need 25ms after power on?
signature.asc
Description: Digital signature

