* [PATCH v5 1/4] dt-bindings: input: gpio-vibrator: Don't require enable-gpios
2020-07-30 13:24 [PATCH v5 0/4] Add support for vibrator motor for TBS A711 Tablet Ondrej Jirman
@ 2020-07-30 13:24 ` Ondrej Jirman
2020-07-30 13:24 ` [PATCH v5 2/4] input: gpio-vibra: Allow to use vcc-supply alone to control the vibrator Ondrej Jirman
` (2 subsequent siblings)
3 siblings, 0 replies; 6+ messages in thread
From: Ondrej Jirman @ 2020-07-30 13:24 UTC (permalink / raw)
To: Dmitry Torokhov, Rob Herring, Mark Rutland, Maxime Ripard, Chen-Yu Tsai
Cc: Ondrej Jirman, Luca Weiss, Tomas Novotny, linux-input,
devicetree, linux-kernel, linux-arm-kernel, Rob Herring
It is possible to turn the motor on/off just by enabling/disabling
the vcc-supply. Change the binding to require either enable-gpios
or vcc-supply or both.
Signed-off-by: Ondrej Jirman <megous@megous.com>
Reviewed-by: Rob Herring <robh@kernel.org>
---
Documentation/devicetree/bindings/input/gpio-vibrator.yaml | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/input/gpio-vibrator.yaml b/Documentation/devicetree/bindings/input/gpio-vibrator.yaml
index 2384465eaa19..082ac06471db 100644
--- a/Documentation/devicetree/bindings/input/gpio-vibrator.yaml
+++ b/Documentation/devicetree/bindings/input/gpio-vibrator.yaml
@@ -24,7 +24,12 @@ properties:
required:
- compatible
- - enable-gpios
+
+anyOf:
+ - required:
+ - enable-gpios
+ - required:
+ - vcc-supply
additionalProperties: false
--
2.27.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v5 2/4] input: gpio-vibra: Allow to use vcc-supply alone to control the vibrator
2020-07-30 13:24 [PATCH v5 0/4] Add support for vibrator motor for TBS A711 Tablet Ondrej Jirman
2020-07-30 13:24 ` [PATCH v5 1/4] dt-bindings: input: gpio-vibrator: Don't require enable-gpios Ondrej Jirman
@ 2020-07-30 13:24 ` Ondrej Jirman
2020-07-30 13:24 ` [PATCH v5 3/4] ARM: dts: sun8i-a83t-tbs-a711: Add support for the vibrator motor Ondrej Jirman
2020-07-30 13:24 ` [PATCH v5 4/4] ARM: dts: sun8i-a83t-tbs-a711: Increase voltage on the vibrator Ondrej Jirman
3 siblings, 0 replies; 6+ messages in thread
From: Ondrej Jirman @ 2020-07-30 13:24 UTC (permalink / raw)
To: Dmitry Torokhov, Rob Herring, Mark Rutland, Maxime Ripard, Chen-Yu Tsai
Cc: Ondrej Jirman, Luca Weiss, Tomas Novotny, linux-input,
devicetree, linux-kernel, linux-arm-kernel
Make enable-gpio optional to allow using this driver with boards that
have vibrator connected to a power supply without intermediate gpio
based enable circuitry.
Also avoid a case where neither regulator nor enable gpio is specified,
and bail out in probe in such a case.
Signed-off-by: Ondrej Jirman <megous@megous.com>
---
drivers/input/misc/gpio-vibra.c | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)
diff --git a/drivers/input/misc/gpio-vibra.c b/drivers/input/misc/gpio-vibra.c
index f79f75595dd7..87508c3939e9 100644
--- a/drivers/input/misc/gpio-vibra.c
+++ b/drivers/input/misc/gpio-vibra.c
@@ -39,7 +39,7 @@ static int gpio_vibrator_start(struct gpio_vibrator *vibrator)
struct device *pdev = vibrator->input->dev.parent;
int err;
- if (!vibrator->vcc_on) {
+ if (vibrator->vcc && !vibrator->vcc_on) {
err = regulator_enable(vibrator->vcc);
if (err) {
dev_err(pdev, "failed to enable regulator: %d\n", err);
@@ -57,7 +57,7 @@ static void gpio_vibrator_stop(struct gpio_vibrator *vibrator)
{
gpiod_set_value_cansleep(vibrator->gpio, 0);
- if (vibrator->vcc_on) {
+ if (vibrator->vcc && vibrator->vcc_on) {
regulator_disable(vibrator->vcc);
vibrator->vcc_on = false;
}
@@ -112,16 +112,19 @@ static int gpio_vibrator_probe(struct platform_device *pdev)
if (!vibrator->input)
return -ENOMEM;
- vibrator->vcc = devm_regulator_get(&pdev->dev, "vcc");
+ vibrator->vcc = devm_regulator_get_optional(&pdev->dev, "vcc");
err = PTR_ERR_OR_ZERO(vibrator->vcc);
- if (err) {
+ if (err == -ENODEV) {
+ vibrator->vcc = NULL;
+ } else if (err) {
if (err != -EPROBE_DEFER)
dev_err(&pdev->dev, "Failed to request regulator: %d\n",
err);
return err;
}
- vibrator->gpio = devm_gpiod_get(&pdev->dev, "enable", GPIOD_OUT_LOW);
+ vibrator->gpio = devm_gpiod_get_optional(&pdev->dev, "enable",
+ GPIOD_OUT_LOW);
err = PTR_ERR_OR_ZERO(vibrator->gpio);
if (err) {
if (err != -EPROBE_DEFER)
@@ -130,6 +133,11 @@ static int gpio_vibrator_probe(struct platform_device *pdev)
return err;
}
+ if (!vibrator->vcc && !vibrator->gpio) {
+ dev_err(&pdev->dev, "Neither gpio nor regulator provided\n");
+ return -EINVAL;
+ }
+
INIT_WORK(&vibrator->play_work, gpio_vibrator_play_work);
vibrator->input->name = "gpio-vibrator";
--
2.27.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v5 3/4] ARM: dts: sun8i-a83t-tbs-a711: Add support for the vibrator motor
2020-07-30 13:24 [PATCH v5 0/4] Add support for vibrator motor for TBS A711 Tablet Ondrej Jirman
2020-07-30 13:24 ` [PATCH v5 1/4] dt-bindings: input: gpio-vibrator: Don't require enable-gpios Ondrej Jirman
2020-07-30 13:24 ` [PATCH v5 2/4] input: gpio-vibra: Allow to use vcc-supply alone to control the vibrator Ondrej Jirman
@ 2020-07-30 13:24 ` Ondrej Jirman
2020-07-31 5:41 ` Marco Felsch
2020-07-30 13:24 ` [PATCH v5 4/4] ARM: dts: sun8i-a83t-tbs-a711: Increase voltage on the vibrator Ondrej Jirman
3 siblings, 1 reply; 6+ messages in thread
From: Ondrej Jirman @ 2020-07-30 13:24 UTC (permalink / raw)
To: Dmitry Torokhov, Rob Herring, Mark Rutland, Maxime Ripard, Chen-Yu Tsai
Cc: Ondrej Jirman, Luca Weiss, Tomas Novotny, linux-input,
devicetree, linux-kernel, linux-arm-kernel
The board has a vibrator motor. Hook it to the input subsystem.
According to the PMIC specification, LDO needs to be enabled (value 0b11)
to achieve the specified max driving current of 150mA. We can't drive
the motor with just GPIO mode.
In GPIO mode the chip is probably just using the regular CMOS logic
output circuitry (typically limited to around 20-35mA, but not specified
in this datasheet).
Signed-off-by: Ondrej Jirman <megous@megous.com>
---
arch/arm/boot/dts/sun8i-a83t-tbs-a711.dts | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/arch/arm/boot/dts/sun8i-a83t-tbs-a711.dts b/arch/arm/boot/dts/sun8i-a83t-tbs-a711.dts
index bfc9bb277a49..a278a1e33930 100644
--- a/arch/arm/boot/dts/sun8i-a83t-tbs-a711.dts
+++ b/arch/arm/boot/dts/sun8i-a83t-tbs-a711.dts
@@ -99,6 +99,11 @@ panel_input: endpoint {
};
};
+ vibrator {
+ compatible = "gpio-vibrator";
+ vcc-supply = <®_ldo_io1>;
+ };
+
reg_gps: reg-gps {
compatible = "regulator-fixed";
regulator-name = "gps";
--
2.27.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v5 3/4] ARM: dts: sun8i-a83t-tbs-a711: Add support for the vibrator motor
2020-07-30 13:24 ` [PATCH v5 3/4] ARM: dts: sun8i-a83t-tbs-a711: Add support for the vibrator motor Ondrej Jirman
@ 2020-07-31 5:41 ` Marco Felsch
0 siblings, 0 replies; 6+ messages in thread
From: Marco Felsch @ 2020-07-31 5:41 UTC (permalink / raw)
To: Ondrej Jirman
Cc: Dmitry Torokhov, Rob Herring, Mark Rutland, Maxime Ripard,
Chen-Yu Tsai, Luca Weiss, Tomas Novotny, linux-input, devicetree,
linux-kernel, linux-arm-kernel
Hi Ondrej,
On 20-07-30 15:24, Ondrej Jirman wrote:
> The board has a vibrator motor. Hook it to the input subsystem.
>
> According to the PMIC specification, LDO needs to be enabled (value 0b11)
> to achieve the specified max driving current of 150mA. We can't drive
> the motor with just GPIO mode.
>
> In GPIO mode the chip is probably just using the regular CMOS logic
> output circuitry (typically limited to around 20-35mA, but not specified
> in this datasheet).
>
> Signed-off-by: Ondrej Jirman <megous@megous.com>
> ---
> arch/arm/boot/dts/sun8i-a83t-tbs-a711.dts | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/arch/arm/boot/dts/sun8i-a83t-tbs-a711.dts b/arch/arm/boot/dts/sun8i-a83t-tbs-a711.dts
> index bfc9bb277a49..a278a1e33930 100644
> --- a/arch/arm/boot/dts/sun8i-a83t-tbs-a711.dts
> +++ b/arch/arm/boot/dts/sun8i-a83t-tbs-a711.dts
> @@ -99,6 +99,11 @@ panel_input: endpoint {
> };
> };
>
> + vibrator {
> + compatible = "gpio-vibrator";
> + vcc-supply = <®_ldo_io1>;
> + };
Please keep the alphabetical order. I also would merge patch 3 and 4
into one since they are realted changes.
Regards,
Marco
> +
> reg_gps: reg-gps {
> compatible = "regulator-fixed";
> regulator-name = "gps";
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v5 4/4] ARM: dts: sun8i-a83t-tbs-a711: Increase voltage on the vibrator
2020-07-30 13:24 [PATCH v5 0/4] Add support for vibrator motor for TBS A711 Tablet Ondrej Jirman
` (2 preceding siblings ...)
2020-07-30 13:24 ` [PATCH v5 3/4] ARM: dts: sun8i-a83t-tbs-a711: Add support for the vibrator motor Ondrej Jirman
@ 2020-07-30 13:24 ` Ondrej Jirman
3 siblings, 0 replies; 6+ messages in thread
From: Ondrej Jirman @ 2020-07-30 13:24 UTC (permalink / raw)
To: Dmitry Torokhov, Rob Herring, Mark Rutland, Maxime Ripard, Chen-Yu Tsai
Cc: Ondrej Jirman, Luca Weiss, Tomas Novotny, linux-input,
devicetree, linux-kernel, linux-arm-kernel
Vibrator motor is weak at the current voltage. Increase the voltage.
Signed-off-by: Ondrej Jirman <megous@megous.com>
---
arch/arm/boot/dts/sun8i-a83t-tbs-a711.dts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm/boot/dts/sun8i-a83t-tbs-a711.dts b/arch/arm/boot/dts/sun8i-a83t-tbs-a711.dts
index a278a1e33930..1e086e979348 100644
--- a/arch/arm/boot/dts/sun8i-a83t-tbs-a711.dts
+++ b/arch/arm/boot/dts/sun8i-a83t-tbs-a711.dts
@@ -434,8 +434,8 @@ ®_ldo_io0 {
};
®_ldo_io1 {
- regulator-min-microvolt = <3100000>;
- regulator-max-microvolt = <3100000>;
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
regulator-name = "vcc-vb";
status = "okay";
};
--
2.27.0
^ permalink raw reply related [flat|nested] 6+ messages in thread