]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/power/pm2301_charger.h
drivers/rtc: dump small buffers via %*ph
[karo-tx-linux.git] / drivers / power / pm2301_charger.h
index bef38a3552b5c625f8e1d24b31b22c2a86491d0d..e6319cdbc94fd6a6aac822f86b902ff6b7939e5e 100644 (file)
@@ -32,7 +32,9 @@
 
 /* Watchdog timeout constant */
 #define WD_TIMER                       0x30 /* 4min */
-#define WD_KICK_INTERVAL               (60 * HZ)
+#define WD_KICK_INTERVAL               (30 * HZ)
+
+#define PM2XXX_NUM_INT_REG             0x6
 
 /* Constant voltage/current */
 #define PM2XXX_CONST_CURR              0x0
 #define PM2XXX_VPWR2_OVV_10            0x2
 #define PM2XXX_VPWR2_OVV_NONE          0x3
 
+/* Input charger drop VPWR2 */
+#define PM2XXX_VPWR2_HW_OPT_EN         (0x1<<4)
+#define PM2XXX_VPWR2_HW_OPT_DIS                (0x0<<4)
+
+#define PM2XXX_VPWR2_VALID_EN          (0x1<<3)
+#define PM2XXX_VPWR2_VALID_DIS         (0x0<<3)
+
+#define PM2XXX_VPWR2_DROP_EN           (0x1<<2)
+#define PM2XXX_VPWR2_DROP_DIS          (0x0<<2)
+
 /* Input charger voltage VPWR1 */
 #define PM2XXX_VPWR1_OVV_6_0           0x0
 #define PM2XXX_VPWR1_OVV_6_3           0x1
 #define PM2XXX_VPWR1_OVV_10            0x2
 #define PM2XXX_VPWR1_OVV_NONE          0x3
 
+/* Input charger drop VPWR1 */
+#define PM2XXX_VPWR1_HW_OPT_EN         (0x1<<4)
+#define PM2XXX_VPWR1_HW_OPT_DIS                (0x0<<4)
+
+#define PM2XXX_VPWR1_VALID_EN          (0x1<<3)
+#define PM2XXX_VPWR1_VALID_DIS         (0x0<<3)
+
+#define PM2XXX_VPWR1_DROP_EN           (0x1<<2)
+#define PM2XXX_VPWR1_DROP_DIS          (0x0<<2)
+
 /* Battery low level comparator control register */
 #define PM2XXX_VBAT_LOW_MONITORING_DIS 0x0
 #define PM2XXX_VBAT_LOW_MONITORING_ENA 0x1
@@ -434,7 +456,6 @@ enum pm2xxx_source_reg_int6 {
 struct pm2xxx_charger_info {
        int charger_connected;
        int charger_online;
-       int charger_voltage;
        int cv_active;
        bool wd_expired;
 };
@@ -446,6 +467,11 @@ struct pm2xxx_charger_event_flags {
        bool chgwdexp;
 };
 
+struct pm2xxx_interrupts {
+       u8 reg[PM2XXX_NUM_INT_REG];
+       int (*handler[PM2XXX_NUM_INT_REG])(void *, int);
+};
+
 struct pm2xxx_config {
        struct i2c_client *pm2xxx_i2c;
        struct i2c_device_id *pm2xxx_id;
@@ -467,7 +493,8 @@ struct pm2xxx_charger {
        int old_vbat;
        int failure_case;
        int failure_input_ovv;
-       u8 pm2_int[6];
+       unsigned int lpn_pin;
+       struct pm2xxx_interrupts *pm2_int;
        struct ab8500_gpadc *gpadc;
        struct regulator *regu;
        struct pm2xxx_bm_data *bat;