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