xref: /linux/include/linux/firmware/samsung/exynos-acpm-protocol.h (revision 297d9111e9fcf47dd1dcc6f79bba915f35378d01)
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 struct device_node;
15 
16 struct acpm_pmic_ops {
17 	int (*read_reg)(const struct acpm_handle *handle,
18 			unsigned int acpm_chan_id, u8 type, u8 reg, u8 chan,
19 			u8 *buf);
20 	int (*bulk_read)(const struct acpm_handle *handle,
21 			 unsigned int acpm_chan_id, u8 type, u8 reg, u8 chan,
22 			 u8 count, u8 *buf);
23 	int (*write_reg)(const struct acpm_handle *handle,
24 			 unsigned int acpm_chan_id, u8 type, u8 reg, u8 chan,
25 			 u8 value);
26 	int (*bulk_write)(const struct acpm_handle *handle,
27 			  unsigned int acpm_chan_id, u8 type, u8 reg, u8 chan,
28 			  u8 count, const u8 *buf);
29 	int (*update_reg)(const struct acpm_handle *handle,
30 			  unsigned int acpm_chan_id, u8 type, u8 reg, u8 chan,
31 			  u8 value, u8 mask);
32 };
33 
34 struct acpm_ops {
35 	struct acpm_pmic_ops pmic_ops;
36 };
37 
38 /**
39  * struct acpm_handle - Reference to an initialized protocol instance
40  * @ops:
41  */
42 struct acpm_handle {
43 	struct acpm_ops ops;
44 };
45 
46 struct device;
47 
48 const struct acpm_handle *devm_acpm_get_by_node(struct device *dev,
49 						struct device_node *np);
50 
51 #endif /* __EXYNOS_ACPM_PROTOCOL_H */
52