summaryrefslogtreecommitdiff
path: root/common/mock_charger.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/mock_charger.c')
-rw-r--r--common/mock_charger.c102
1 files changed, 102 insertions, 0 deletions
diff --git a/common/mock_charger.c b/common/mock_charger.c
new file mode 100644
index 0000000000..b930835dcd
--- /dev/null
+++ b/common/mock_charger.c
@@ -0,0 +1,102 @@
+/* Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ *
+ * Mock battery charger driver.
+ */
+
+#include "board.h"
+#include "charger.h"
+#include "console.h"
+#include "common.h"
+#include "smart_battery.h"
+#include "uart.h"
+#include "util.h"
+
+static const struct charger_info mock_charger_info = {
+ .name = "MockCharger",
+ .voltage_max = 19200,
+ .voltage_min = 1024,
+ .voltage_step = 16,
+ .current_max = 8192,
+ .current_min = 128,
+ .current_step = 128,
+ .input_current_max = 8064,
+ .input_current_min = 128,
+ .input_current_step = 128,
+};
+
+#define OPTION_CHARGE_INHIBIT (1 << 0)
+
+static uint32_t mock_option = 0;
+static uint32_t mock_current = 0;
+static uint32_t mock_voltage = 0;
+
+const struct charger_info *charger_get_info(void)
+{
+ return &mock_charger_info;
+}
+
+
+int charger_get_status(int *status)
+{
+ *status = CHARGER_LEVEL_2;
+ if (mock_option & CHARGE_FLAG_INHIBIT_CHARGE)
+ *status |= CHARGER_CHARGE_INHIBITED;
+
+ return EC_SUCCESS;
+}
+
+
+int charger_set_mode(int mode)
+{
+ if (mode & CHARGE_FLAG_INHIBIT_CHARGE)
+ mock_option |= OPTION_CHARGE_INHIBIT;
+ else
+ mock_option &= ~OPTION_CHARGE_INHIBIT;
+ return EC_SUCCESS;
+}
+
+
+int charger_get_current(int *current)
+{
+ *current = mock_current;
+ return EC_SUCCESS;
+}
+
+
+int charger_set_current(int current)
+{
+ const struct charger_info *info = charger_get_info();
+
+ if (current > 0 && current < info->current_min)
+ current = info->current_min;
+ if (current > info->current_max)
+ current = info->current_max;
+
+ mock_current = current;
+ uart_printf("Charger set current: %d\n", current);
+ return EC_SUCCESS;
+}
+
+
+int charger_get_voltage(int *voltage)
+{
+ *voltage = mock_voltage;
+ return EC_SUCCESS;
+}
+
+
+int charger_set_voltage(int voltage)
+{
+ mock_voltage = voltage;
+ uart_printf("Charger set voltage: %d\n", voltage);
+ return EC_SUCCESS;
+}
+
+
+int charger_post_init(void)
+{
+ mock_current = CONFIG_CHARGER_INPUT_CURRENT;
+ return EC_SUCCESS;
+}