1103e83a1SJaehoon Chung /*
2103e83a1SJaehoon Chung * Copyright (C) 2016 Samsung Electronics
3103e83a1SJaehoon Chung * Jaehoon Chung <jh80.chung@samsung.com>
4103e83a1SJaehoon Chung *
5103e83a1SJaehoon Chung * SPDX-License-Identifier: GPL-2.0+
6103e83a1SJaehoon Chung */
7103e83a1SJaehoon Chung
8103e83a1SJaehoon Chung #include <common.h>
9103e83a1SJaehoon Chung #include <dm.h>
101a5a05daSJaehoon Chung #include <errno.h>
11103e83a1SJaehoon Chung #include <i2c.h>
12103e83a1SJaehoon Chung #include <power/pmic.h>
13103e83a1SJaehoon Chung #include <power/max8998_pmic.h>
14103e83a1SJaehoon Chung
15103e83a1SJaehoon Chung DECLARE_GLOBAL_DATA_PTR;
16103e83a1SJaehoon Chung
max8998_reg_count(struct udevice * dev)17103e83a1SJaehoon Chung static int max8998_reg_count(struct udevice *dev)
18103e83a1SJaehoon Chung {
19103e83a1SJaehoon Chung return PMIC_NUM_OF_REGS;
20103e83a1SJaehoon Chung }
21103e83a1SJaehoon Chung
max8998_write(struct udevice * dev,uint reg,const uint8_t * buff,int len)22103e83a1SJaehoon Chung static int max8998_write(struct udevice *dev, uint reg, const uint8_t *buff,
23103e83a1SJaehoon Chung int len)
24103e83a1SJaehoon Chung {
25103e83a1SJaehoon Chung int ret;
26103e83a1SJaehoon Chung
27103e83a1SJaehoon Chung ret = dm_i2c_write(dev, reg, buff, len);
28103e83a1SJaehoon Chung if (ret)
29*90aa625cSMasahiro Yamada pr_err("write error to device: %p register: %#x!", dev, reg);
30103e83a1SJaehoon Chung
31103e83a1SJaehoon Chung return ret;
32103e83a1SJaehoon Chung }
33103e83a1SJaehoon Chung
max8998_read(struct udevice * dev,uint reg,uint8_t * buff,int len)34103e83a1SJaehoon Chung static int max8998_read(struct udevice *dev, uint reg, uint8_t *buff, int len)
35103e83a1SJaehoon Chung {
36103e83a1SJaehoon Chung int ret;
37103e83a1SJaehoon Chung
38103e83a1SJaehoon Chung ret = dm_i2c_read(dev, reg, buff, len);
39103e83a1SJaehoon Chung if (ret)
40*90aa625cSMasahiro Yamada pr_err("read error from device: %p register: %#x!", dev, reg);
41103e83a1SJaehoon Chung
42103e83a1SJaehoon Chung return ret;
43103e83a1SJaehoon Chung }
44103e83a1SJaehoon Chung
45103e83a1SJaehoon Chung static struct dm_pmic_ops max8998_ops = {
46103e83a1SJaehoon Chung .reg_count = max8998_reg_count,
47103e83a1SJaehoon Chung .read = max8998_read,
48103e83a1SJaehoon Chung .write = max8998_write,
49103e83a1SJaehoon Chung };
50103e83a1SJaehoon Chung
51103e83a1SJaehoon Chung static const struct udevice_id max8998_ids[] = {
52103e83a1SJaehoon Chung { .compatible = "maxim,max8998" },
53103e83a1SJaehoon Chung { }
54103e83a1SJaehoon Chung };
55103e83a1SJaehoon Chung
56103e83a1SJaehoon Chung U_BOOT_DRIVER(pmic_max8998) = {
57103e83a1SJaehoon Chung .name = "max8998_pmic",
58103e83a1SJaehoon Chung .id = UCLASS_PMIC,
59103e83a1SJaehoon Chung .of_match = max8998_ids,
60103e83a1SJaehoon Chung .ops = &max8998_ops,
61103e83a1SJaehoon Chung };
62