summaryrefslogtreecommitdiffstats
path: root/drivers/input
diff options
context:
space:
mode:
authorPaul Kocialkowski <contact@paulk.fr>2015-07-20 15:17:08 +0200
committerTom Rini <trini@konsulko.com>2015-08-12 20:47:35 -0400
commit7d5ac91832918a5fda0277aacb8c62421efdeaa2 (patch)
tree928da385cc21facbdd7c3a655e5090675cc01472 /drivers/input
parent6dc443e6d7bc2e7e9e2145ba5657dbf309c27c62 (diff)
downloadu-boot-7d5ac91832918a5fda0277aacb8c62421efdeaa2.tar.gz
u-boot-7d5ac91832918a5fda0277aacb8c62421efdeaa2.tar.xz
u-boot-7d5ac91832918a5fda0277aacb8c62421efdeaa2.zip
input: TWL4030 input support for power button, USB and charger
This adds support for detecting a few inputs exported by the TWL4030. Currently-supported inputs are the power button, USB and charger presence. Reviewed-by: Tom Rini <trini@konsulko.com> Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
Diffstat (limited to 'drivers/input')
-rw-r--r--drivers/input/Makefile1
-rw-r--r--drivers/input/twl4030.c49
2 files changed, 50 insertions, 0 deletions
diff --git a/drivers/input/Makefile b/drivers/input/Makefile
index a8e9be2f7f..24fec9b83e 100644
--- a/drivers/input/Makefile
+++ b/drivers/input/Makefile
@@ -7,6 +7,7 @@
obj-$(CONFIG_I8042_KBD) += i8042.o
obj-$(CONFIG_TEGRA_KEYBOARD) += tegra-kbc.o
+obj-$(CONFIG_TWL4030_INPUT) += twl4030.o
obj-$(CONFIG_CROS_EC_KEYB) += cros_ec_keyb.o
ifdef CONFIG_PS2KBD
obj-y += keyboard.o pc_keyb.o
diff --git a/drivers/input/twl4030.c b/drivers/input/twl4030.c
new file mode 100644
index 0000000000..a5ded35d92
--- /dev/null
+++ b/drivers/input/twl4030.c
@@ -0,0 +1,49 @@
+/*
+ * TWL4030 input
+ *
+ * Copyright (C) 2015 Paul Kocialkowski <contact@paulk.fr>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <twl4030.h>
+
+int twl4030_input_power_button(void)
+{
+ u8 data;
+
+ twl4030_i2c_read_u8(TWL4030_CHIP_PM_MASTER,
+ TWL4030_PM_MASTER_STS_HW_CONDITIONS, &data);
+
+ if (data & TWL4030_PM_MASTER_STS_HW_CONDITIONS_PWON)
+ return 1;
+
+ return 0;
+}
+
+int twl4030_input_charger(void)
+{
+ u8 data;
+
+ twl4030_i2c_read_u8(TWL4030_CHIP_PM_MASTER,
+ TWL4030_PM_MASTER_STS_HW_CONDITIONS, &data);
+
+ if (data & TWL4030_PM_MASTER_STS_HW_CONDITIONS_CHG)
+ return 1;
+
+ return 0;
+}
+
+int twl4030_input_usb(void)
+{
+ u8 data;
+
+ twl4030_i2c_read_u8(TWL4030_CHIP_PM_MASTER,
+ TWL4030_PM_MASTER_STS_HW_CONDITIONS, &data);
+
+ if (data & TWL4030_PM_MASTER_STS_HW_CONDITIONS_USB ||
+ data & TWL4030_PM_MASTER_STS_HW_CONDITIONS_VBUS)
+ return 1;
+
+ return 0;
+}