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