Re: [PATCH RESEND] ARM: dts: qcom: msm8974-hammerhead: add device tree bindings for vibrator

From: Stephen Boyd
Date: Thu Jun 27 2019 - 19:49:36 EST


Quoting Brian Masney (2019-06-24 17:54:34)
> On Tue, Jun 25, 2019 at 12:29:29AM +0200, Linus Walleij wrote:
> > On Sun, Jun 23, 2019 at 12:53 PM Brian Masney <masneyb@xxxxxxxxxxxxx> wrote:
> >
> > > 2) Do what Linus suggests above. We can use v1 of this series from last
> > > September (see below for link) that adds this to the pwm subsystem.
> > > The locking would need to be added so that it won't conflict with the
> > > clk subsystem. This can be tied into the input subsystem with the
> > > existing pwm-vibra driver.
> >
> > What I imagined was that the clk driver would double as a pwm driver.
> > Just register both interfaces.
> >
> > There are already plenty of combines clk+reset drivers for example.
> >
> > Otherwise I'm all for this approach (but that's just me).
>
> I agree that this makes sense. I especially like that it'll allow us
> to use the existing pwm-vibra driver in the input subsystem with this
> approach.
>

This whole discussion is ignoring that clk_set_duty_cycle() exists.
Maybe you can look back on the history of why the duty cycle API was
added to the clk framework to make a strong argument for the replacement
of this API with your proposal of registering to two different
frameworks instead?

Here's the first few parts of the commit text of 9fba738a53dd ("clk: add
duty cycle support"):

Add the possibility to apply and query the clock signal duty cycle ratio.

This is useful when the duty cycle of the clock signal depends on some
other parameters controlled by the clock framework.

For example, the duty cycle of a divider may depends on the raw divider
setting (ratio = N / div) , which is controlled by the CCF. In such case,
going through the pwm framework to control the duty cycle ratio of this
clock would be a burden.

In the case of qcom clks, I seem to recall the frequency of the clk
depends on the duty cycle settings. The duty cycle is constrained by the
M/N values which determine the frequency of the clk after it's
pre-divided. We did some sort of bit trick to set the duty cycle to the
N value inverted or something so that we always got 50% duty cycle.