Re: [PATCH 4/7] dt-bindings: Input: introduce new clock vibrator bindings

Stephen Boyd
2020-01-05T08:35:35Z

Quoting Brian Masney (2019-12-04 16:25:00)
> diff --git a/Documentation/devicetree/bindings/input/clk-vibrator.yaml b/Documentation/devicetree/bindings/input/clk-vibrator.yaml
> new file mode 100644
> index 000000000000..2103a5694fad
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/input/clk-vibrator.yaml
> @@ -0,0 +1,60 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/bindings/input/clk-vibrator.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Clock vibrator
> +
> +maintainers:
> + - Brian Masney <masneyb@onstation.org>
> +
> +description: |
> + Support for clock-based vibrator devices where the speed can be controlled
> + by changing the duty cycle.
> +
> +properties:
> + compatible:
> + const: clk-vibrator
> +
> + clocks:
> + maxItems: 1
> +
> + clock-names:
> + description: output clock that controls the speed
> + items:
> + - const: core
> +
> + clock-frequency: true

Can you use assigned-clock-rates for this instead? Then the driver can
call clk_get_rate() if it wants to know the rate that was actually set
on the clk.

> +
> + enable-gpios:
> + maxItems: 1
> +
> + vcc-supply:
> + description: Regulator that provides power
> +
> +required:
> + - compatible
> + - clocks
> + - clock-names
> + - clock-frequency
> +
> +examples:
> + - |
> + #include <dt-bindings/clock/qcom,mmcc-msm8974.h>
> + #include <dt-bindings/gpio/gpio.h>
> +
> + vibrator {
> + compatible = "clk-vibrator";
> +
> + vcc-supply = <&pm8941_l19>;
> +
> + clocks = <&mmcc CAMSS_GP1_CLK>;
> + clock-names = "core";
> + clock-frequency = <24000>;
> +
> + enable-gpios = <&msmgpio 60 GPIO_ACTIVE_HIGH>;
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&vibrator_pin>;

I'm still trying to wrap my head around this. I think we can have a pwm
provider in a clk controller node (so imagine &mmcc has #pwm-cells) and
then this 'clk-vibrator' binding wouldn't exist? Instead we would have
some sort of binding for a device that expects a pwm and whatever else
is required, like the enable gpio and power supply. Is there an actual
hardware block that is this way? Does it have a real product id and is
made by some company? Right now this looks a little too generic to not
just be a catch-all for something that buzzes.