Re: [PATCH anybus v1 2/4] dt-bindings: anybus-bridge: document devicetree binding.

From: David Lechner
Date: Thu Oct 25 2018 - 11:31:31 EST


On 10/25/2018 08:55 AM, thesven73@xxxxxxxxx wrote:
> Hi Linus, thank you for the patch review !!
>
>>> + - pwms : the pwm connected to the bridge's 'pwm input'.
>>
>> That is really unintuitive and needs a detailed explanation. What
>> is a bridge doing with a PWM? Is it 100% certain this is a PWM,
>> it's not just a .... clock? A pwm is a pule WIDTH modulator and
>> I can't for my life understand why a bus bridge needs a signal
>> with variable pulse width, but surprise me! :D
>
> You are 100% correct, this is a clock !
> The hardware designers attached the bridge's clock input to an iMX pwm output,
> and instructed us to provide a clock with 50% duty cycle and a certain freq.
>
> The only way I know to activate a pwm is to connect it to a driver in the fdt,
> then inside the driver enable the pwm, like so:
>
> + /* PWM */
> + pwm = devm_pwm_get(dev, NULL);
> + if (IS_ERR(pwm)) {
> + dev_err(dev, "pwm not found\n");
> + return -EINVAL;
> + }
> + pwm_get_args(pwm, &pargs);
> + period = pargs.period;
> + err = pwm_config(pwm, period/2, period);
> + if (err)
> + return err;
> + err = pwm_enable(pwm);
> + if (err)
> + return err;
>
> This is why the bridge driver has a dependency on a pwm.
> If the pwm could be enabled individually, I could drop this dependency.
> Can you think of a way?


How about using the pwm-clock device tree binding to turn the PWM into
a clock?

Documentation/devicetree/bindings/clock/pwm-clock.txt