xref: /rk3399_rockchip-uboot/drivers/input/twl4030.c (revision 7d5ac91832918a5fda0277aacb8c62421efdeaa2)
1*7d5ac918SPaul Kocialkowski /*
2*7d5ac918SPaul Kocialkowski  * TWL4030 input
3*7d5ac918SPaul Kocialkowski  *
4*7d5ac918SPaul Kocialkowski  * Copyright (C) 2015 Paul Kocialkowski <contact@paulk.fr>
5*7d5ac918SPaul Kocialkowski  *
6*7d5ac918SPaul Kocialkowski  * SPDX-License-Identifier:	GPL-2.0+
7*7d5ac918SPaul Kocialkowski  */
8*7d5ac918SPaul Kocialkowski 
9*7d5ac918SPaul Kocialkowski #include <twl4030.h>
10*7d5ac918SPaul Kocialkowski 
11*7d5ac918SPaul Kocialkowski int twl4030_input_power_button(void)
12*7d5ac918SPaul Kocialkowski {
13*7d5ac918SPaul Kocialkowski 	u8 data;
14*7d5ac918SPaul Kocialkowski 
15*7d5ac918SPaul Kocialkowski 	twl4030_i2c_read_u8(TWL4030_CHIP_PM_MASTER,
16*7d5ac918SPaul Kocialkowski 			    TWL4030_PM_MASTER_STS_HW_CONDITIONS, &data);
17*7d5ac918SPaul Kocialkowski 
18*7d5ac918SPaul Kocialkowski 	if (data & TWL4030_PM_MASTER_STS_HW_CONDITIONS_PWON)
19*7d5ac918SPaul Kocialkowski 		return 1;
20*7d5ac918SPaul Kocialkowski 
21*7d5ac918SPaul Kocialkowski 	return 0;
22*7d5ac918SPaul Kocialkowski }
23*7d5ac918SPaul Kocialkowski 
24*7d5ac918SPaul Kocialkowski int twl4030_input_charger(void)
25*7d5ac918SPaul Kocialkowski {
26*7d5ac918SPaul Kocialkowski 	u8 data;
27*7d5ac918SPaul Kocialkowski 
28*7d5ac918SPaul Kocialkowski 	twl4030_i2c_read_u8(TWL4030_CHIP_PM_MASTER,
29*7d5ac918SPaul Kocialkowski 			    TWL4030_PM_MASTER_STS_HW_CONDITIONS, &data);
30*7d5ac918SPaul Kocialkowski 
31*7d5ac918SPaul Kocialkowski 	if (data & TWL4030_PM_MASTER_STS_HW_CONDITIONS_CHG)
32*7d5ac918SPaul Kocialkowski 		return 1;
33*7d5ac918SPaul Kocialkowski 
34*7d5ac918SPaul Kocialkowski 	return 0;
35*7d5ac918SPaul Kocialkowski }
36*7d5ac918SPaul Kocialkowski 
37*7d5ac918SPaul Kocialkowski int twl4030_input_usb(void)
38*7d5ac918SPaul Kocialkowski {
39*7d5ac918SPaul Kocialkowski 	u8 data;
40*7d5ac918SPaul Kocialkowski 
41*7d5ac918SPaul Kocialkowski 	twl4030_i2c_read_u8(TWL4030_CHIP_PM_MASTER,
42*7d5ac918SPaul Kocialkowski 			    TWL4030_PM_MASTER_STS_HW_CONDITIONS, &data);
43*7d5ac918SPaul Kocialkowski 
44*7d5ac918SPaul Kocialkowski 	if (data & TWL4030_PM_MASTER_STS_HW_CONDITIONS_USB ||
45*7d5ac918SPaul Kocialkowski 	    data & TWL4030_PM_MASTER_STS_HW_CONDITIONS_VBUS)
46*7d5ac918SPaul Kocialkowski 		return 1;
47*7d5ac918SPaul Kocialkowski 
48*7d5ac918SPaul Kocialkowski 	return 0;
49*7d5ac918SPaul Kocialkowski }
50