diff options
author | Jaehoon Chung <jh80.chung@samsung.com> | 2016-12-15 18:21:10 +0900 |
---|---|---|
committer | Minkyu Kang <mk7.kang@samsung.com> | 2016-12-22 13:34:01 +0900 |
commit | 103e83a1b0a3f2ef5d82d86711ea3d6b2bbf2a16 (patch) | |
tree | c1b3393a3c1ced3cdea3a2a2ad2c41bcf5bca18c /drivers/power/pmic/max8998.c | |
parent | 0d92f2141ac5ef5c80d13e9501890f914525d43c (diff) | |
download | u-boot-imx-103e83a1b0a3f2ef5d82d86711ea3d6b2bbf2a16.zip u-boot-imx-103e83a1b0a3f2ef5d82d86711ea3d6b2bbf2a16.tar.gz u-boot-imx-103e83a1b0a3f2ef5d82d86711ea3d6b2bbf2a16.tar.bz2 |
power: pmic: add the max8998 controller for DM
Add the max8998 controller for Driver model.
Samsung S5P series are using max8998 pmic controller.
In future, it should be supported the regulator framework.
Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
Diffstat (limited to 'drivers/power/pmic/max8998.c')
-rw-r--r-- | drivers/power/pmic/max8998.c | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/drivers/power/pmic/max8998.c b/drivers/power/pmic/max8998.c new file mode 100644 index 0000000..3baa8da --- /dev/null +++ b/drivers/power/pmic/max8998.c @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2016 Samsung Electronics + * Jaehoon Chung <jh80.chung@samsung.com> + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include <common.h> +#include <dm.h> +#include <i2c.h> +#include <power/pmic.h> +#include <power/max8998_pmic.h> +#include <errno.h> + +DECLARE_GLOBAL_DATA_PTR; + +static int max8998_reg_count(struct udevice *dev) +{ + return PMIC_NUM_OF_REGS; +} + +static int max8998_write(struct udevice *dev, uint reg, const uint8_t *buff, + int len) +{ + int ret; + + ret = dm_i2c_write(dev, reg, buff, len); + if (ret) + error("write error to device: %p register: %#x!", dev, reg); + + return ret; +} + +static int max8998_read(struct udevice *dev, uint reg, uint8_t *buff, int len) +{ + int ret; + + ret = dm_i2c_read(dev, reg, buff, len); + if (ret) + error("read error from device: %p register: %#x!", dev, reg); + + return ret; +} + +static struct dm_pmic_ops max8998_ops = { + .reg_count = max8998_reg_count, + .read = max8998_read, + .write = max8998_write, +}; + +static const struct udevice_id max8998_ids[] = { + { .compatible = "maxim,max8998" }, + { } +}; + +U_BOOT_DRIVER(pmic_max8998) = { + .name = "max8998_pmic", + .id = UCLASS_PMIC, + .of_match = max8998_ids, + .ops = &max8998_ops, +}; |