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