linux/drivers/input/misc
Stephen Boyd f5546371f9 Input: pmic8xxx-pwrkey - fix algorithm for converting trigger delay
commit eda5ecc0a6 upstream.

The trigger delay algorithm that converts from microseconds to
the register value looks incorrect. According to most of the PMIC
documentation, the equation is

	delay (Seconds) = (1 / 1024) * 2 ^ (x + 4)

except for one case where the documentation looks to have a
formatting issue and the equation looks like

	delay (Seconds) = (1 / 1024) * 2 x + 4

Most likely this driver was written with the improper
documentation to begin with. According to the downstream sources
the valid delays are from 2 seconds to 1/64 second, and the
latter equation just doesn't make sense for that. Let's fix the
algorithm and the range check to match the documentation and the
downstream sources.

Reported-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Fixes: 92d57a73e4 ("input: Add support for Qualcomm PMIC8XXX power key")
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Tested-by: John Stultz <john.stultz@linaro.org>
Acked-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
History 2016-06-15 21:29:24 +01:00
..
88pm80x_onkey.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
88pm860x_onkey.c Input: 88pm860x_onkey - switch to using managed resources 2014-05-29 00:26:34 -07:00
ab8500-ponkey.c Input: ab8500-ponkey - switch to using managed resources 2014-05-29 00:26:36 -07:00
ad714x-i2c.c Input: ad714x - add CONFIG_PM_SLEEP to suspend/resume functions 2013-03-26 22:09:55 -07:00
ad714x-spi.c Input: ad714x-spi - remove redundant spi_set_drvdata 2013-09-20 09:58:24 -07:00
ad714x.c Input: delete non-required instances of include <linux/init.h> 2014-01-06 23:23:57 -08:00
ad714x.h Input: ad714x - read the interrupt status registers in a row 2011-08-22 09:59:26 -07:00
adxl34x-i2c.c Input: adxl34x - add CONFIG_PM_SLEEP to suspend/resume functions 2013-03-26 22:09:51 -07:00
adxl34x-spi.c Input: adxl34x - use spi_get_drvdata() 2013-04-07 21:02:29 -07:00
adxl34x.c Input: delete non-required instances of include <linux/init.h> 2014-01-06 23:23:57 -08:00
adxl34x.h Input: adxl34 - make enable/disable separate from suspend/resume 2010-07-03 13:13:21 -07:00
apanel.c Input: make i2c device ids constant 2010-01-09 23:28:33 -08:00
arizona-haptics.c ASoC: dapm: Add locking to snd_soc_dapm_xxxx_pin functions 2014-02-20 18:40:07 +09:00
ati_remote2.c Input: ati_remote2 - fix crashes on detecting device with invalid descriptor 2016-03-30 14:49:09 +01:00
atlas_btns.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2014-01-24 17:17:30 -08:00
bfin_rotary.c Input: delete non-required instances of include <linux/init.h> 2014-01-06 23:23:57 -08:00
bma150.c Input: bma150 - extend chip detection for bma180 2014-04-24 23:53:10 -07:00
cm109.c Input: cm109 - convert high volume dev_err() to dev_err_ratelimited() 2013-10-06 01:23:41 -07:00
cma3000_d0x.c Input: use dev_get_platdata() 2013-12-06 02:06:29 -08:00
cma3000_d0x.h Input: add CMA3000 accelerometer driver 2010-11-30 23:05:21 -08:00
cma3000_d0x_i2c.c Input: remove use of __devexit 2012-11-24 00:05:38 -08:00
cobalt_btns.c Input: delete non-required instances of include <linux/init.h> 2014-01-06 23:23:57 -08:00
da9052_onkey.c Input: da9052_onkey - use correct register bit for key status 2014-03-26 13:33:09 -07:00
da9055_onkey.c Input: da9055_onkey - remove use of regmap_irq_get_virq() 2014-04-19 13:55:41 -07:00
dm355evm_keys.c Input: delete non-required instances of include <linux/init.h> 2014-01-06 23:23:57 -08:00
gp2ap002a00f.c Input: use dev_get_platdata() 2013-12-06 02:06:29 -08:00
gpio-beeper.c Input: gpio-beeper - make of_device_id array const 2014-05-14 16:39:55 -07:00
gpio_tilt_polled.c Input: delete non-required instances of include <linux/init.h> 2014-01-06 23:23:57 -08:00
hp_sdc_rtc.c Input: hp_sdc_rtc - unlock on error in hp_sdc_rtc_read_i8042timer() 2013-11-20 21:15:31 -08:00
ideapad_slidebar.c Input: add driver for slidebar on Lenovo IdeaPad laptops 2013-08-26 09:30:03 -07:00
ims-pcu.c Input: ims-pcu - sanity check against missing interfaces 2016-05-01 00:06:01 +02:00
ixp4xx-beeper.c input: ixp4xx-beeper: don't use symbols from <mach/timex.h> 2013-12-20 11:44:21 +01:00
Kconfig Linux 3.15-rc5 2014-05-14 16:49:19 -07:00
keyspan_remote.c Input: delete non-required instances of include <linux/init.h> 2014-01-06 23:23:57 -08:00
kxtj9.c Input: use dev_get_platdata() 2013-12-06 02:06:29 -08:00
m68kspkr.c Input: m68kspkr - remove redundant platform_set_drvdata() 2013-05-28 00:57:41 -07:00
Makefile Input: add driver for SOC button array 2014-03-30 23:40:56 -07:00
max8925_onkey.c Input: max8925_onkey - switch to using managed resources 2014-05-29 00:26:35 -07:00
max8997_haptic.c Input: max8997_haptic - add error handling for regulator and pwm 2014-06-07 23:20:24 -07:00
mc13783-pwrbutton.c Input: delete non-required instances of include <linux/init.h> 2014-01-06 23:23:57 -08:00
mma8450.c Input: mma8450 - add missing i2c_set_clientdata() in mma8450_probe() 2013-11-11 00:01:44 -08:00
mpu3050.c Input: delete non-required instances of include <linux/init.h> 2014-01-06 23:23:57 -08:00
pcap_keys.c Input: delete non-required instances of include <linux/init.h> 2014-01-06 23:23:57 -08:00
pcf8574_keypad.c Input: delete non-required instances of include <linux/init.h> 2014-01-06 23:23:57 -08:00
pcf50633-input.c Input: delete non-required instances of include <linux/init.h> 2014-01-06 23:23:57 -08:00
pcspkr.c Input: delete non-required instances of include <linux/init.h> 2014-01-06 23:23:57 -08:00
pm8xxx-vibrator.c Input: pm8xxx-vibrator - add DT match table 2014-03-30 13:25:20 -07:00
pmic8xxx-pwrkey.c Input: pmic8xxx-pwrkey - fix algorithm for converting trigger delay 2016-06-15 21:29:24 +01:00
powermate.c Input: powermate - fix oops with malicious USB descriptors 2016-03-29 15:55:16 +01:00
pwm-beeper.c Input: use dev_get_platdata() 2013-12-06 02:06:29 -08:00
rb532_button.c Input: rb532_button - remove redundant dev_set_drvdata 2013-09-18 07:53:41 -07:00
retu-pwrbutton.c Input: delete non-required instances of include <linux/init.h> 2014-01-06 23:23:57 -08:00
rotary_encoder.c Input: rotary_encoder - make of_device_id array const 2014-05-14 16:39:56 -07:00
sgi_btns.c Input: delete non-required instances of include <linux/init.h> 2014-01-06 23:23:57 -08:00
sirfsoc-onkey.c Input: sirfsoc-onkey - fix GPL v2 license string typo 2014-07-18 10:19:42 -07:00
soc_button_array.c Input: soc_button_array - remove duplicate inclusion of input.h 2014-05-28 23:35:17 -07:00
sparcspkr.c Input: misc - use platform_{get,set}_drvdata() 2013-05-23 09:34:13 -07:00
twl4030-pwrbutton.c Input: twl4030-pwrbutton - ensure a wakeup event is recorded. 2015-05-06 11:33:12 +01:00
twl4030-vibra.c Input: twl4030-vibra - add missing of_node_put 2014-01-04 00:47:36 -08:00
twl6040-vibra.c Input: twl6040-vibra - use devm functions 2014-05-14 16:39:47 -07:00
uinput.c Input: uinput - add UI_GET_SYSNAME ioctl to retrieve the sysfs path 2014-02-12 15:00:34 -08:00
wistron_btns.c Input: wistron_btns - add FS AMILO Pro 8210 support 2014-01-27 22:34:42 -08:00
wm831x-on.c Input: delete non-required instances of include <linux/init.h> 2014-01-06 23:23:57 -08:00
xen-kbdfront.c xen/pvhvm: If xen_platform_pci=0 is set don't blow up (v4). 2014-01-03 14:54:18 -05:00
yealink.c Input: delete non-required instances of include <linux/init.h> 2014-01-06 23:23:57 -08:00
yealink.h tree-wide: Assorted spelling fixes 2010-02-09 11:13:56 +01:00