Re: [PATCH v2 6/8] regulator: core: Don't attach generic coupler to Tegra SoC regulators

From: Dmitry Osipenko
Date: Tue Jun 18 2019 - 12:52:40 EST


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.