Prepare v2024.10
[platform/kernel/u-boot.git] / include / spmi / spmi.h
1 #ifndef _SPMI_SPMI_H
2 #define _SPMI_SPMI_H
3
4 /**
5  * struct dm_spmi_ops - SPMI device I/O interface
6  *
7  * Should be implemented by UCLASS_SPMI device drivers. The standard
8  * device operations provides the I/O interface for it's childs.
9  *
10  * @read:      read register 'reg' of slave 'usid' and peripheral 'pid'
11  * @write:     write register 'reg' of slave 'usid' and peripheral 'pid'
12  *
13  * Each register is 8-bit, both read and write can return negative values
14  * on error.
15  */
16 struct dm_spmi_ops {
17         int (*read)(struct udevice *dev, int usid, int pid, int reg);
18         int (*write)(struct udevice *dev, int usid, int pid, int reg,
19                      uint8_t value);
20 };
21
22 /**
23  * spmi_reg_read() - read a register from specific slave/peripheral
24  *
25  * @dev:        SPMI bus to read
26  * @usid        SlaveID
27  * @pid         Peripheral ID
28  * @reg:        Register to read
29  * Return: value read on success or negative value of errno.
30  */
31 int spmi_reg_read(struct udevice *dev, int usid, int pid, int reg);
32
33 /**
34  * spmi_reg_write() - write a register of specific slave/peripheral
35  *
36  * @dev:        SPMI bus to write
37  * @usid        SlaveID
38  * @pid         Peripheral ID
39  * @reg:        Register to write
40  * @value:      Value to write
41  * Return: 0 on success or negative value of errno.
42  */
43 int spmi_reg_write(struct udevice *dev, int usid, int pid, int reg,
44                    uint8_t value);
45
46 #endif