Input: pmic8xxx-pwrkey - fix algorithm for converting trigger delay
authorStephen Boyd <sboyd@codeaurora.org>
Sun, 17 Apr 2016 12:21:42 +0000 (05:21 -0700)
committerBen Hutchings <ben@decadent.org.uk>
Wed, 15 Jun 2016 20:28:12 +0000 (21:28 +0100)
commit2f58d46cf07011aec2a6f840c9cc235d39b294b7
treecbf6f3b75db857145ebb04fb90acde68719dcbad
parent4af9256c89c8dc0b3ada0475debba40ff5303b23
Input: pmic8xxx-pwrkey - fix algorithm for converting trigger delay

commit eda5ecc0a6b865561997e177c393f0b0136fe3b7 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: 92d57a73e410 ("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>
[bwh: Backported to 3.2: use pdata->kpd_trigger_delay_us not kpd_delay]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
drivers/input/misc/pmic8xxx-pwrkey.c