1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * Copyright 2020 Samsung Electronics Co., Ltd.
4  * Copyright 2020 Google LLC.
5  * Copyright 2024 Linaro Ltd.
6  */
7 
8 #ifndef __EXYNOS_ACPM_PROTOCOL_H
9 #define __EXYNOS_ACPM_PROTOCOL_H
10 
11 #include <linux/types.h>
12 
13 struct acpm_handle;
14 
15 struct acpm_pmic_ops {
16 	int (*read_reg)(const struct acpm_handle *handle,
17 			unsigned int acpm_chan_id, u8 type, u8 reg, u8 chan,
18 			u8 *buf);
19 	int (*bulk_read)(const struct acpm_handle *handle,
20 			 unsigned int acpm_chan_id, u8 type, u8 reg, u8 chan,
21 			 u8 count, u8 *buf);
22 	int (*write_reg)(const struct acpm_handle *handle,
23 			 unsigned int acpm_chan_id, u8 type, u8 reg, u8 chan,
24 			 u8 value);
25 	int (*bulk_write)(const struct acpm_handle *handle,
26 			  unsigned int acpm_chan_id, u8 type, u8 reg, u8 chan,
27 			  u8 count, const u8 *buf);
28 	int (*update_reg)(const struct acpm_handle *handle,
29 			  unsigned int acpm_chan_id, u8 type, u8 reg, u8 chan,
30 			  u8 value, u8 mask);
31 };
32 
33 struct acpm_ops {
34 	struct acpm_pmic_ops pmic_ops;
35 };
36 
37 /**
38  * struct acpm_handle - Reference to an initialized protocol instance
39  * @ops:
40  */
41 struct acpm_handle {
42 	struct acpm_ops ops;
43 };
44 
45 struct device;
46 
47 const struct acpm_handle *devm_acpm_get_by_phandle(struct device *dev,
48 						   const char *property);
49 #endif /* __EXYNOS_ACPM_PROTOCOL_H */
50