xref: /rk3399_ARM-atf/plat/mediatek/include/drivers/spmi_api.h (revision 06f3c7058c42a9f1a9f7df75ea2de71a000855e8)
1 /*
2  * Copyright (c) 2025, MediaTek Inc. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #ifndef SPMI_API_H
8 #define SPMI_API_H
9 
10 #include <stdint.h>
11 
12 #include <drivers/spmi/spmi_common.h>
13 
14 /* external API */
15 int spmi_register_zero_write(struct spmi_device *dev, uint8_t data);
16 int spmi_register_read(struct spmi_device *dev, uint8_t addr, uint8_t *buf);
17 int spmi_register_write(struct spmi_device *dev, uint8_t addr, uint8_t data);
18 int spmi_ext_register_read(struct spmi_device *dev, uint8_t addr, uint8_t *buf,
19 			   uint8_t len);
20 int spmi_ext_register_write(struct spmi_device *dev, uint8_t addr,
21 			    const uint8_t *buf, uint8_t len);
22 int spmi_ext_register_readl(struct spmi_device *dev, uint16_t addr,
23 			    uint8_t *buf, uint8_t len);
24 int spmi_ext_register_writel(struct spmi_device *dev, uint16_t addr,
25 			     const uint8_t *buf, uint8_t len);
26 int spmi_ext_register_readl_field(struct spmi_device *dev, uint16_t addr,
27 				  uint8_t *buf, uint16_t mask, uint16_t shift);
28 int spmi_ext_register_writel_field(struct spmi_device *dev, uint16_t addr,
29 				   uint8_t data, uint16_t mask, uint16_t shift);
30 struct spmi_device *get_spmi_device(int mstid, int slvid);
31 int spmi_device_register(struct spmi_device *platform_spmi_dev, int num_devs);
32 
33 #endif
34