xref: /rk3399_rockchip-uboot/drivers/power/pmic/max8998.c (revision 90aa625c9a9e1fb7a2f001fd8e50099bacaf92b8)
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