The wrong register bit of the DA9052/3 PMIC registers was used to determine the status on the ONKEY. Signed-off-by: Anthony Olech <anthony.olech.opensource@xxxxxxxxxxx> Signed-off-by: David Dajun Chen <david.chen@xxxxxxxxxxx> --- This patch is relative to linux-next repository tag next-20140206 The bug that this patch fixes affects only the DA9052 ONKEY driver. The problem was detected whilst running a scripted set of functional regression tests whilst investigating a different problem. This patch has been test compiled on an amd64 server for both x86 and arm targets. This patch has been spot verified using an SMDK6410 platform fly-wired to a Dialog da9053 EVB. drivers/input/misc/da9052_onkey.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/drivers/input/misc/da9052_onkey.c b/drivers/input/misc/da9052_onkey.c index 1f695f2..7e78334 100644 --- a/drivers/input/misc/da9052_onkey.c +++ b/drivers/input/misc/da9052_onkey.c @@ -27,19 +27,23 @@ struct da9052_onkey { static void da9052_onkey_query(struct da9052_onkey *onkey) { - int key_stat; + int ret, key_stat; - key_stat = da9052_reg_read(onkey->da9052, DA9052_EVENT_B_REG); - if (key_stat < 0) { + ret = da9052_reg_read(onkey->da9052, DA9052_STATUS_A_REG); + if (ret < 0) { dev_err(onkey->da9052->dev, - "Failed to read onkey event %d\n", key_stat); + "Failed to read onkey event err=%d\n", ret); + key_stat = false; } else { /* * Since interrupt for deassertion of ONKEY pin is not * generated, onkey event state determines the onkey * button state. */ - key_stat &= DA9052_EVENTB_ENONKEY; + if (ret & DA9052_STATUSA_NONKEY) + key_stat = false; + else + key_stat = true; input_report_key(onkey->input, KEY_POWER, key_stat); input_sync(onkey->input); } -- end-of-patch for da9052: ONKEY: use correct register bit for key status V1 -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html