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?

Attachment: signature.asc
Description: Digital signature

Reply via email to