summaryrefslogtreecommitdiff
path: root/zephyr/emul/emul_ln9310.c
diff options
context:
space:
mode:
Diffstat (limited to 'zephyr/emul/emul_ln9310.c')
-rw-r--r--zephyr/emul/emul_ln9310.c388
1 files changed, 0 insertions, 388 deletions
diff --git a/zephyr/emul/emul_ln9310.c b/zephyr/emul/emul_ln9310.c
deleted file mode 100644
index d4eaa8e38d..0000000000
--- a/zephyr/emul/emul_ln9310.c
+++ /dev/null
@@ -1,388 +0,0 @@
-/* Copyright 2021 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.
- */
-
-#define DT_DRV_COMPAT cros_ln9310_emul
-
-#include <device.h>
-#include <drivers/i2c.h>
-#include <drivers/i2c_emul.h>
-#include <emul.h>
-#include <errno.h>
-#include <sys/__assert.h>
-
-#include "driver/ln9310.h"
-#include "emul/emul_common_i2c.h"
-#include "emul/emul_ln9310.h"
-#include "i2c.h"
-
-#include <logging/log.h>
-LOG_MODULE_REGISTER(ln9310_emul, CONFIG_LN9310_EMUL_LOG_LEVEL);
-
-#define LN9310_DATA_FROM_I2C_EMUL(_emul) \
- CONTAINER_OF(CONTAINER_OF(_emul, struct i2c_common_emul_data, emul), \
- struct ln9310_emul_data, common)
-
-struct ln9310_emul_data {
- /** Common I2C data */
- struct i2c_common_emul_data common;
- /** The current emulated battery cell type */
- enum battery_cell_type battery_cell_type;
- /** Emulated INT1 MSK register */
- uint8_t int1_msk_reg;
- /** Emulated Lion control register */
- uint8_t lion_ctrl_reg;
- /** Emulated startup control register */
- uint8_t startup_ctrl_reg;
- /** Emulated BC STST B register */
- uint8_t bc_sts_b_reg;
- /** Emulated BC STST C register */
- uint8_t bc_sts_c_reg;
- /** Emulated cfg 0 register */
- uint8_t cfg_0_reg;
- /** Emulated cfg 4 register */
- uint8_t cfg_4_reg;
- /** Emulated cfg 5 register */
- uint8_t cfg_5_reg;
- /** Emulated power control register */
- uint8_t power_ctrl_reg;
- /** Emulated timer control register */
- uint8_t timer_ctrl_reg;
- /** Emulated lower bound (LB) control register */
- uint8_t lower_bound_ctrl_reg;
- /** Emulated spare 0 register */
- uint8_t spare_0_reg;
- /** Emulated swap control 0 register */
- uint8_t swap_ctrl_0_reg;
- /** Emulated swap control 1 register */
- uint8_t swap_ctrl_1_reg;
- /** Emulated swap control 2 register */
- uint8_t swap_ctrl_2_reg;
- /** Emulated swap control 3 register */
- uint8_t swap_ctrl_3_reg;
- /** Emulated track control register */
- uint8_t track_ctrl_reg;
- /** Emulated mode change register */
- uint8_t mode_change_reg;
- /** Emulated system control register */
- uint8_t sys_ctrl_reg;
-};
-
-static const struct emul *singleton;
-
-void ln9310_emul_set_context(const struct emul *emulator)
-{
- singleton = emulator;
-}
-
-void ln9310_emul_reset(const struct emul *emulator)
-{
- struct ln9310_emul_data *data = emulator->data;
-
- data->lion_ctrl_reg = 0;
- data->startup_ctrl_reg = 0;
- data->bc_sts_b_reg = 0;
- data->cfg_0_reg = 0;
- data->cfg_4_reg = 0;
- data->cfg_5_reg = 0;
- data->power_ctrl_reg = 0;
- data->timer_ctrl_reg = 0;
- data->lower_bound_ctrl_reg = 0;
- data->spare_0_reg = 0;
- data->swap_ctrl_0_reg = 0;
- data->swap_ctrl_1_reg = 0;
- data->swap_ctrl_2_reg = 0;
- data->swap_ctrl_3_reg = 0;
- data->track_ctrl_reg = 0;
- data->mode_change_reg = 0;
- data->sys_ctrl_reg = 0;
-}
-
-void ln9310_emul_set_battery_cell_type(const struct emul *emulator,
- enum battery_cell_type type)
-{
- struct ln9310_emul_data *data = emulator->data;
-
- data->battery_cell_type = type;
-}
-
-void ln9310_emul_set_version(const struct emul *emulator, int version)
-{
- struct ln9310_emul_data *data = emulator->data;
-
- data->bc_sts_c_reg |= version & LN9310_BC_STS_C_CHIP_REV_MASK;
-}
-
-void ln9310_emul_set_vin_gt_10v(const struct emul *emulator, bool is_gt_10v)
-{
- struct ln9310_emul_data *data = emulator->data;
-
- if (is_gt_10v)
- data->bc_sts_b_reg |= LN9310_BC_STS_B_INFET_OUT_SWITCH_OK;
- else
- data->bc_sts_b_reg &= ~LN9310_BC_STS_B_INFET_OUT_SWITCH_OK;
-}
-
-bool ln9310_emul_is_init(const struct emul *emulator)
-{
- struct ln9310_emul_data *data = emulator->data;
-
- return (data->int1_msk_reg & LN9310_INT1_MODE) == 0;
-}
-
-enum battery_cell_type board_get_battery_cell_type(void)
-{
- struct ln9310_emul_data *data = singleton->data;
-
- return data->battery_cell_type;
-}
-
-static struct i2c_emul_api ln9310_emul_api_i2c = {
- .transfer = i2c_common_emul_transfer,
-};
-
-static int ln9310_emul_start_write(struct i2c_emul *emul, int reg)
-{
- return 0;
-}
-
-static int ln9310_emul_finish_write(struct i2c_emul *emul, int reg, int bytes)
-{
- return 0;
-}
-
-static int ln9310_emul_write_byte(struct i2c_emul *emul, int reg, uint8_t val,
- int bytes)
-{
- struct ln9310_emul_data *data = LN9310_DATA_FROM_I2C_EMUL(emul);
-
- switch (reg) {
- case LN9310_REG_INT1_MSK:
- __ASSERT_NO_MSG(bytes == 1);
- data->int1_msk_reg = val;
- break;
- case LN9310_REG_STARTUP_CTRL:
- __ASSERT_NO_MSG(bytes == 1);
- data->startup_ctrl_reg = val;
- break;
- case LN9310_REG_LION_CTRL:
- __ASSERT_NO_MSG(bytes == 1);
- data->lion_ctrl_reg = val;
- break;
- case LN9310_REG_BC_STS_B:
- __ASSERT_NO_MSG(bytes == 1);
- data->bc_sts_b_reg = val;
- break;
- case LN9310_REG_BC_STS_C:
- LOG_ERR("Can't write to BC STS C register");
- return -EINVAL;
- case LN9310_REG_CFG_0:
- __ASSERT_NO_MSG(bytes == 1);
- data->cfg_0_reg = val;
- break;
- case LN9310_REG_CFG_4:
- __ASSERT_NO_MSG(bytes == 1);
- data->cfg_4_reg = val;
- break;
- case LN9310_REG_CFG_5:
- __ASSERT_NO_MSG(bytes == 1);
- data->cfg_5_reg = val;
- break;
- case LN9310_REG_PWR_CTRL:
- __ASSERT_NO_MSG(bytes == 1);
- data->power_ctrl_reg = val;
- break;
- case LN9310_REG_TIMER_CTRL:
- __ASSERT_NO_MSG(bytes == 1);
- data->timer_ctrl_reg = val;
- break;
- case LN9310_REG_LB_CTRL:
- __ASSERT_NO_MSG(bytes = 1);
- data->lower_bound_ctrl_reg = val;
- break;
- case LN9310_REG_SPARE_0:
- __ASSERT_NO_MSG(bytes == 1);
- data->spare_0_reg = val;
- break;
- case LN9310_REG_SWAP_CTRL_0:
- __ASSERT_NO_MSG(bytes == 1);
- data->swap_ctrl_0_reg = val;
- break;
- case LN9310_REG_SWAP_CTRL_1:
- __ASSERT_NO_MSG(bytes == 1);
- data->swap_ctrl_1_reg = val;
- break;
- case LN9310_REG_SWAP_CTRL_2:
- __ASSERT_NO_MSG(bytes == 1);
- data->swap_ctrl_2_reg = val;
- break;
- case LN9310_REG_SWAP_CTRL_3:
- __ASSERT_NO_MSG(bytes == 1);
- data->swap_ctrl_3_reg = val;
- break;
- case LN9310_REG_TRACK_CTRL:
- __ASSERT_NO_MSG(bytes == 1);
- data->track_ctrl_reg = val;
- break;
- case LN9310_REG_MODE_CHANGE_CFG:
- __ASSERT_NO_MSG(bytes == 1);
- data->mode_change_reg = val;
- break;
- case LN9310_REG_SYS_CTRL:
- __ASSERT_NO_MSG(bytes == 1);
- data->sys_ctrl_reg = val;
- break;
- default:
- return -EINVAL;
- }
- return 0;
-}
-
-static int ln9310_emul_start_read(struct i2c_emul *emul, int reg)
-{
- return 0;
-}
-
-static int ln9310_emul_finish_read(struct i2c_emul *emul, int reg, int bytes)
-{
- return 0;
-}
-
-static int ln9310_emul_read_byte(struct i2c_emul *emul, int reg, uint8_t *val,
- int bytes)
-{
- struct ln9310_emul_data *data = LN9310_DATA_FROM_I2C_EMUL(emul);
-
- switch (reg) {
- case LN9310_REG_INT1_MSK:
- __ASSERT_NO_MSG(bytes == 0);
- *val = data->int1_msk_reg;
- break;
- case LN9310_REG_STARTUP_CTRL:
- __ASSERT_NO_MSG(bytes == 0);
- *val = data->startup_ctrl_reg;
- break;
- case LN9310_REG_LION_CTRL:
- __ASSERT_NO_MSG(bytes == 0);
- *val = data->lion_ctrl_reg;
- break;
- case LN9310_REG_BC_STS_B:
- __ASSERT_NO_MSG(bytes == 0);
- *val = data->bc_sts_b_reg;
- break;
- case LN9310_REG_BC_STS_C:
- __ASSERT_NO_MSG(bytes == 0);
- *val = data->bc_sts_c_reg;
- break;
- case LN9310_REG_CFG_0:
- __ASSERT_NO_MSG(bytes == 0);
- *val = data->cfg_0_reg;
- break;
- case LN9310_REG_CFG_4:
- __ASSERT_NO_MSG(bytes == 0);
- *val = data->cfg_4_reg;
- break;
- case LN9310_REG_CFG_5:
- __ASSERT_NO_MSG(bytes == 0);
- *val = data->cfg_5_reg;
- break;
- case LN9310_REG_PWR_CTRL:
- __ASSERT_NO_MSG(bytes == 0);
- *val = data->power_ctrl_reg;
- break;
- case LN9310_REG_TIMER_CTRL:
- __ASSERT_NO_MSG(bytes == 0);
- *val = data->timer_ctrl_reg;
- break;
- case LN9310_REG_LB_CTRL:
- __ASSERT_NO_MSG(bytes == 0);
- *val = data->lower_bound_ctrl_reg;
- break;
- case LN9310_REG_SPARE_0:
- __ASSERT_NO_MSG(bytes == 0);
- *val = data->spare_0_reg;
- break;
- case LN9310_REG_SWAP_CTRL_0:
- __ASSERT_NO_MSG(bytes == 0);
- *val = data->swap_ctrl_0_reg;
- break;
- case LN9310_REG_SWAP_CTRL_1:
- __ASSERT_NO_MSG(bytes == 0);
- *val = data->swap_ctrl_1_reg;
- break;
- case LN9310_REG_SWAP_CTRL_2:
- __ASSERT_NO_MSG(bytes == 0);
- *val = data->swap_ctrl_2_reg;
- break;
- case LN9310_REG_SWAP_CTRL_3:
- __ASSERT_NO_MSG(bytes == 0);
- *val = data->swap_ctrl_3_reg;
- break;
- case LN9310_REG_TRACK_CTRL:
- __ASSERT_NO_MSG(bytes == 0);
- *val = data->track_ctrl_reg;
- break;
- case LN9310_REG_MODE_CHANGE_CFG:
- __ASSERT_NO_MSG(bytes == 0);
- *val = data->mode_change_reg;
- break;
- case LN9310_REG_SYS_CTRL:
- __ASSERT_NO_MSG(bytes == 0);
- *val = data->sys_ctrl_reg;
- break;
- default:
- return -EINVAL;
- }
- return 0;
-}
-
-static int ln9310_emul_access_reg(struct i2c_emul *emul, int reg, int bytes,
- bool read)
-{
- return 0;
-}
-
-static int emul_ln9310_init(const struct emul *emul,
- const struct device *parent)
-{
- const struct i2c_common_emul_cfg *cfg = emul->cfg;
- struct ln9310_emul_data *data = emul->data;
-
- data->common.emul.api = &ln9310_emul_api_i2c;
- data->common.emul.addr = cfg->addr;
- data->common.emul.parent = emul;
- data->common.i2c = parent;
- data->common.cfg = cfg;
- i2c_common_emul_init(&data->common);
-
- singleton = emul;
-
- return i2c_emul_register(parent, emul->dev_label, &data->common.emul);
-}
-
-#define INIT_LN9310(n) \
- const struct ln9310_config_t ln9310_config = { \
- .i2c_port = NAMED_I2C(power), \
- .i2c_addr_flags = DT_INST_REG_ADDR(n), \
- }; \
- static struct ln9310_emul_data ln9310_emul_data_##n = { \
- .common = { \
- .start_write = ln9310_emul_start_write, \
- .write_byte = ln9310_emul_write_byte, \
- .finish_write = ln9310_emul_finish_write, \
- .start_read = ln9310_emul_start_read, \
- .read_byte = ln9310_emul_read_byte, \
- .finish_read = ln9310_emul_finish_read, \
- .access_reg = ln9310_emul_access_reg, \
- }, \
- }; \
- static const struct i2c_common_emul_cfg ln9310_emul_cfg_##n = { \
- .i2c_label = DT_INST_BUS_LABEL(n), \
- .dev_label = DT_INST_LABEL(n), \
- .addr = DT_INST_REG_ADDR(n), \
- }; \
- EMUL_DEFINE(emul_ln9310_init, DT_DRV_INST(n), &ln9310_emul_cfg_##n, \
- &ln9310_emul_data_##n)
-
-DT_INST_FOREACH_STATUS_OKAY(INIT_LN9310)