blob: aeb6fe734e69e0797bffbd8b5079f09b4a1fe9ae [file] [log] [blame]
Svyatoslav Ryhel9c58dd62024-10-06 14:50:02 +03001// SPDX-License-Identifier: GPL-2.0+
2/*
3 * Copyright(C) 2024 Svyatoslav Ryhel <clamor95@gmail.com>
4 */
5
6#include <dm.h>
7#include <dm/lists.h>
8#include <power/pmic.h>
9
10static int max8907_write(struct udevice *dev, uint reg, const uint8_t *buff, int len)
11{
12 int ret;
13
14 ret = dm_i2c_write(dev, reg, buff, len);
15 if (ret) {
16 log_debug("%s: write error to device: %p register: %#x!\n",
17 __func__, dev, reg);
18 return ret;
19 }
20
21 return 0;
22}
23
24static int max8907_read(struct udevice *dev, uint reg, uint8_t *buff, int len)
25{
26 int ret;
27
28 ret = dm_i2c_read(dev, reg, buff, len);
29 if (ret) {
30 log_debug("%s: read error from device: %p register: %#x!\n",
31 __func__, dev, reg);
32 return ret;
33 }
34
35 return 0;
36}
37
38static struct dm_pmic_ops max8907_ops = {
39 .read = max8907_read,
40 .write = max8907_write,
41};
42
43static const struct udevice_id max8907_ids[] = {
44 { .compatible = "maxim,max8907" },
45 { }
46};
47
48U_BOOT_DRIVER(pmic_max8907) = {
49 .name = "max8907_pmic",
50 .id = UCLASS_PMIC,
51 .of_match = max8907_ids,
52 .ops = &max8907_ops,
53};