Hi,

On 10/26/2016 03:48 PM, Ian Arkver wrote:
> [snip]
>>>>>>> +static int ov5645_regulators_enable(struct ov5645 *ov5645)
>>>>>>> +{
>>>>>>> +    int ret;
>>>>>>> +
>>>>>>> +    ret = regulator_enable(ov5645->io_regulator);
>>>>>>> +    if (ret < 0) {
>>>>>>> +        dev_err(ov5645->dev, "set io voltage failed\n");
>>>>>>> +        return ret;
>>>>>>> +    }
>>>>>>> +
>>>>>>> +    ret = regulator_enable(ov5645->core_regulator);
>>>>>>> +    if (ret) {
>>>>>>> +        dev_err(ov5645->dev, "set core voltage failed\n");
>>>>>>> +        goto err_disable_io;
>>>>>>> +    }
>>>>>>> +
>>>>>>> +    ret = regulator_enable(ov5645->analog_regulator);
>>>>>>> +    if (ret) {
>>>>>>> +        dev_err(ov5645->dev, "set analog voltage failed\n");
>>>>>>> +        goto err_disable_core;
>>>>>>> +    }
>>>>>> How about using the regulator bulk API ? This would simplify the enable
>>>>>> and disable functions.
>>>>> The driver must enable the regulators in this order. I can see in the
>>>>> implementation of the bulk api that they are enabled again in order
>>>>> but I don't see stated anywhere that it is guaranteed to follow the
>>>>> same order in future. I'd prefer to keep it explicit as it is now.
>>>> I believe it should be an API guarantee, otherwise many drivers using the 
>>>> bulk
>>>> API would break. Mark, could you please comment on that ?
>>> Ok, let's wait for a response from Mark.
> I don't have the OV5645 datasheet, but I do have the OV5640 and OV5647 
> datasheets. Both of these show that AVDD should come up before DVDD where 
> DVDD is externally supplied, although the minimum delay between them is 0ms. 
> Both datasheets also imply that this requirement is only to allow host SCCB 
> access on a shared I2C bus while the device is powering up. They imply that 
> if one waits 20ms after power on then SCCB will be fine without this 
> sequencing. Your code includes an msleep(20);

There is also requirement that DOVDD should become stable before AVDD (in both 
cases -
external or internal DVDD).

Aren't these requirements needed to allow I2C access to another device on the 
same I2C bus even during these 20ms?

> 
> Further, the reference schematic for the OV5647 shows three separate LDOs 
> with no sequencing between them.
> 
> I've no comment on whether the bulk regulator API needs a "keep sequencing" 
> flag or somesuch, but I don't think this device will drive that requirement.
> 
> Regards,
> Ian
> 

Best regards,
Todor

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to