17.06.2019 18:44, Mark Brown пишет:
> On Tue, Jun 04, 2019 at 02:59:02AM +0300, Dmitry Osipenko wrote:
> 
>>  static int generic_coupler_attach(struct regulator_coupler *coupler,
>>                                struct regulator_dev *rdev)
>>  {
>> +    /*
>> +     * Generic coupler isn't suitable for NVIVIA Tegra SoC's, at least
>> +     * for now. Hence filter out the unwanted regulators as they shall be
>> +     * managed by a platform-specific coupler.
>> +     */
>> +    if (of_property_read_bool(rdev->dev.of_node, "tegra-core-regulator") ||
>> +        of_property_read_bool(rdev->dev.of_node, "tegra-rtc-regulator") ||
>> +        of_property_read_bool(rdev->dev.of_node, "tegra-cpu-regulator"))
>> +            return -EPERM;
>> +
> 
> I'm having a hard time loving this as it requires explicit DT changes
> for implementation.  I'm thinking that since the couplers are going to
> need to be built in it'd be better to make sure that any custom ones get
> registered first and then only bind the generic coupler to anything they
> reject.
> 

Actually, the current implementation at first tries all the custom couplers and 
then
falls back to the generic.

What's currently missing is that any error code of the attach_regulator() 
callback is
treated as "go try next coupler", but we probably need a special error code for 
the
"skip me" case to differentiate from a error that should abort the coupler's 
lookup
process.

I'll re-work this in v3.

Reply via email to