[PATCH v4 6/6] clk: Add floor and ceiling constraints to clock rates
Tomeu Vizoso
tomeu.vizoso at collabora.com
Thu Jul 31 04:48:01 PDT 2014
On 07/22/2014 07:50 PM, Stephen Warren wrote:
> On 07/17/2014 08:13 AM, Tomeu Vizoso wrote:
>> Adds a way for clock consumers to set maximum and minimum rates. This can be
>> used for thermal drivers to set ceiling rates, or by misc. drivers to set
>> floor rates to assure a minimum performance level.
>
>> diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
>
>> +struct rate_constraint {
>> + struct hlist_node node;
>> + const char *dev_id;
>> + const char *con_id;
>> + enum constraint_type type;
>> + unsigned long rate;
>> +};
>
> I would personally still prefer either:
>
> a) The struct rate_constraints be stored in struct clk rather than
> struct clk_core, so they're stored in the container that "set" the
> constraints. This would mean iterating over a struct clk_core's
> associated struct clks, then iterating over the struct rate_constraints
> within each struct clk.
>
> or:
>
> b) struct rate_constraint to contain a pointer to the struct clk that
> created the constraint, rather than copying the dev_id/con_id from that
> struct clk into the struct rate_constraint.
>
> With either of those changes, the constraints are directly associated
> with the clock client object that created the constraint much better
> than right now, where the matching is only because the struct clk and
> struct rate_constraint "happen to" have the same dev_id/con_id values.
>
> Still, this is a pretty minor issue, and overall this series looks
> reasonable to me at a quick look.
Yeah, I agree and personally prefer a), but given the little feedback
that I have gotten so far on the refactoring, I'm starting to consider
forgetting about the per-user clk struct and go instead with a
request-based API similar to that of pm_qos, for setting floor and
ceiling frequencies.
Regards,
Tomeu
More information about the linux-rpi-kernel
mailing list