Skip to content

Commit

Permalink
Input: pm8xxx-vib - handle separate enable register
Browse files Browse the repository at this point in the history
Some PMIC vibrator IPs use a separate enable register to turn the
vibrator on and off. To detect if a vibrator uses this feature, rely on
the enable_mask being non-zero.

Signed-off-by: Damien Riegel <damien.riegel@savoirfairelinux.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
  • Loading branch information
Damien Riegel authored and Dmitry Torokhov committed Apr 5, 2017
1 parent 2de3b70 commit d4c7c5c
Showing 1 changed file with 10 additions and 1 deletion.
11 changes: 10 additions & 1 deletion drivers/input/misc/pm8xxx-vibrator.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#include <linux/input.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_device.h>
#include <linux/platform_device.h>
#include <linux/regmap.h>
Expand All @@ -26,6 +27,9 @@
#define MAX_FF_SPEED 0xff

struct pm8xxx_regs {
unsigned int enable_addr;
unsigned int enable_mask;

unsigned int drv_addr;
unsigned int drv_mask;
unsigned int drv_shift;
Expand Down Expand Up @@ -82,7 +86,12 @@ static int pm8xxx_vib_set(struct pm8xxx_vib *vib, bool on)
return rc;

vib->reg_vib_drv = val;
return 0;

if (regs->enable_mask)
rc = regmap_update_bits(vib->regmap, regs->enable_addr,
on ? regs->enable_mask : 0, val);

return rc;
}

/**
Expand Down

0 comments on commit d4c7c5c

Please sign in to comment.