Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/dev/i2c define control register and associated bits for ...
details: https://anonhg.NetBSD.org/src/rev/f488b9a3d21b
branches: trunk
changeset: 353617:f488b9a3d21b
user: tnn <tnn%NetBSD.org@localhost>
date: Sun May 14 11:39:17 2017 +0000
description:
define control register and associated bits for RTC supercap charger
diffstat:
sys/dev/i2c/axp20x.c | 43 +++++++++++++++++++++++++++++++++++++++++--
1 files changed, 41 insertions(+), 2 deletions(-)
diffs (71 lines):
diff -r 3198b2d3e18b -r f488b9a3d21b sys/dev/i2c/axp20x.c
--- a/sys/dev/i2c/axp20x.c Sun May 14 11:28:49 2017 +0000
+++ b/sys/dev/i2c/axp20x.c Sun May 14 11:39:17 2017 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: axp20x.c,v 1.4 2015/10/15 13:48:57 bouyer Exp $ */
+/* $NetBSD: axp20x.c,v 1.5 2017/05/14 11:39:17 tnn Exp $ */
/*-
* Copyright (c) 2014 Jared D. McNeill <jmcneill%invisible.ca@localhost>
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: axp20x.c,v 1.4 2015/10/15 13:48:57 bouyer Exp $");
+__KERNEL_RCSID(0, "$NetBSD: axp20x.c,v 1.5 2017/05/14 11:39:17 tnn Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -99,6 +99,33 @@
#define AXP_LDO3_VOLT_MASK __BITS(0,6)
#define AXP_LDO3_VOLT_SHIFT 0
+#define AXP_BKUP_CTRL 0x35
+#define AXP_BKUP_CTRL_ENABLE __BIT(7)
+#define AXP_BKUP_CTRL_VOLT_MASK __BITS(5,6)
+#define AXP_BKUP_CTRL_VOLT_SHIFT 5
+#define AXP_BKUP_CTRL_VOLT_3V1 0
+#define AXP_BKUP_CTRL_VOLT_3V0 1
+#define AXP_BKUP_CTRL_VOLT_3V6 2
+#define AXP_BKUP_CTRL_VOLT_2V5 3
+static int bkup_volt[] = {
+ 3100,
+ 3000,
+ 3600,
+ 2500
+};
+#define AXP_BKUP_CTRL_CURR_MASK __BITS(0,1)
+#define AXP_BKUP_CTRL_CURR_SHIFT 0
+#define AXP_BKUP_CTRL_CURR_50U 0
+#define AXP_BKUP_CTRL_CURR_100U 1
+#define AXP_BKUP_CTRL_CURR_200U 2
+#define AXP_BKUP_CTRL_CURR_400U 3
+static int bkup_curr[] = {
+ 50,
+ 100,
+ 200,
+ 400
+};
+
#define AXP_ACV_MON_REG 0x56 /* 2 bytes */
#define AXP_ACI_MON_REG 0x58 /* 2 bytes */
#define AXP_VBUSV_MON_REG 0x5a /* 2 bytes */
@@ -347,6 +374,18 @@
(int)(700 + (value & AXP_LDO3_VOLT_MASK) * 25));
}
}
+
+ if (axp20x_read(sc, AXP_BKUP_CTRL, &value, 1, I2C_F_POLL) == 0) {
+ if (value & AXP_BKUP_CTRL_ENABLE) {
+ aprint_verbose_dev(sc->sc_dev,
+ "RTC supercap charger enabled: %dmV at %duA\n",
+ bkup_volt[(value & AXP_BKUP_CTRL_VOLT_MASK) >>
+ AXP_BKUP_CTRL_VOLT_SHIFT],
+ bkup_curr[(value & AXP_BKUP_CTRL_CURR_MASK) >>
+ AXP_BKUP_CTRL_CURR_SHIFT]
+ );
+ }
+ }
}
static void
Home |
Main Index |
Thread Index |
Old Index