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>
This commit is contained in:
parent
6dc443e6d7
commit
7d5ac91832
@ -7,6 +7,7 @@
|
|||||||
|
|
||||||
obj-$(CONFIG_I8042_KBD) += i8042.o
|
obj-$(CONFIG_I8042_KBD) += i8042.o
|
||||||
obj-$(CONFIG_TEGRA_KEYBOARD) += tegra-kbc.o
|
obj-$(CONFIG_TEGRA_KEYBOARD) += tegra-kbc.o
|
||||||
|
obj-$(CONFIG_TWL4030_INPUT) += twl4030.o
|
||||||
obj-$(CONFIG_CROS_EC_KEYB) += cros_ec_keyb.o
|
obj-$(CONFIG_CROS_EC_KEYB) += cros_ec_keyb.o
|
||||||
ifdef CONFIG_PS2KBD
|
ifdef CONFIG_PS2KBD
|
||||||
obj-y += keyboard.o pc_keyb.o
|
obj-y += keyboard.o pc_keyb.o
|
||||||
|
49
drivers/input/twl4030.c
Normal file
49
drivers/input/twl4030.c
Normal file
@ -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;
|
||||||
|
}
|
@ -208,6 +208,12 @@
|
|||||||
#define TWL4030_PM_MASTER_SW_EVENTS_DEVSLP (1 << 1)
|
#define TWL4030_PM_MASTER_SW_EVENTS_DEVSLP (1 << 1)
|
||||||
#define TWL4030_PM_MASTER_SW_EVENTS_DEVOFF (1 << 0)
|
#define TWL4030_PM_MASTER_SW_EVENTS_DEVOFF (1 << 0)
|
||||||
|
|
||||||
|
/* HW conditions */
|
||||||
|
#define TWL4030_PM_MASTER_STS_HW_CONDITIONS_PWON (1 << 0)
|
||||||
|
#define TWL4030_PM_MASTER_STS_HW_CONDITIONS_CHG (1 << 1)
|
||||||
|
#define TWL4030_PM_MASTER_STS_HW_CONDITIONS_USB (1 << 2)
|
||||||
|
#define TWL4030_PM_MASTER_STS_HW_CONDITIONS_VBUS (1 << 7)
|
||||||
|
|
||||||
/* Power transition */
|
/* Power transition */
|
||||||
#define TWL4030_PM_MASTER_CFG_TRANSITION_STARTON_PWON (1 << 0)
|
#define TWL4030_PM_MASTER_CFG_TRANSITION_STARTON_PWON (1 << 0)
|
||||||
#define TWL4030_PM_MASTER_CFG_TRANSITION_STARTON_CHG (1 << 1)
|
#define TWL4030_PM_MASTER_CFG_TRANSITION_STARTON_CHG (1 << 1)
|
||||||
@ -669,6 +675,14 @@ void twl4030_power_init(void);
|
|||||||
/* For initializing mmc power */
|
/* For initializing mmc power */
|
||||||
void twl4030_power_mmc_init(int dev_index);
|
void twl4030_power_mmc_init(int dev_index);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Input
|
||||||
|
*/
|
||||||
|
|
||||||
|
int twl4030_input_power_button(void);
|
||||||
|
int twl4030_input_charger(void);
|
||||||
|
int twl4030_input_usb(void);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* LED
|
* LED
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user