]>
Commit | Line | Data |
---|---|---|
c571d682 SA |
1 | /* |
2 | * Copyright (C) 2016 Toradex AG | |
3 | * Stefan Agner <stefan.agner@toradex.com> | |
4 | * | |
5 | * SPDX-License-Identifier: GPL-2.0+ | |
6 | */ | |
7 | ||
8 | #include <common.h> | |
9 | #include <dm.h> | |
10 | #include <errno.h> | |
11 | #include <fdtdec.h> | |
12 | #include <libfdt.h> | |
13 | #include <power/rn5t567_pmic.h> | |
14 | #include <power/pmic.h> | |
15 | ||
16 | static int rn5t567_reg_count(struct udevice *dev) | |
17 | { | |
18 | return RN5T567_NUM_OF_REGS; | |
19 | } | |
20 | ||
21 | static int rn5t567_write(struct udevice *dev, uint reg, const uint8_t *buff, | |
22 | int len) | |
23 | { | |
24 | int ret; | |
25 | ||
26 | ret = dm_i2c_write(dev, reg, buff, len); | |
27 | if (ret) { | |
28 | debug("write error to device: %p register: %#x!", dev, reg); | |
29 | return ret; | |
30 | } | |
31 | ||
32 | return 0; | |
33 | } | |
34 | ||
35 | static int rn5t567_read(struct udevice *dev, uint reg, uint8_t *buff, int len) | |
36 | { | |
37 | int ret; | |
38 | ||
39 | ret = dm_i2c_read(dev, reg, buff, len); | |
40 | if (ret) { | |
41 | debug("read error from device: %p register: %#x!", dev, reg); | |
42 | return ret; | |
43 | } | |
44 | ||
45 | return 0; | |
46 | } | |
47 | ||
48 | static struct dm_pmic_ops rn5t567_ops = { | |
49 | .reg_count = rn5t567_reg_count, | |
50 | .read = rn5t567_read, | |
51 | .write = rn5t567_write, | |
52 | }; | |
53 | ||
54 | static const struct udevice_id rn5t567_ids[] = { | |
55 | { .compatible = "ricoh,rn5t567" }, | |
56 | { } | |
57 | }; | |
58 | ||
59 | U_BOOT_DRIVER(pmic_rn5t567) = { | |
60 | .name = "rn5t567 pmic", | |
61 | .id = UCLASS_PMIC, | |
62 | .of_match = rn5t567_ids, | |
63 | .ops = &rn5t567_ops, | |
64 | }; |