xref: /linux/include/sound/sdca_ump.h (revision 509d3f45847627f4c5cdce004c3ec79262b5239c)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * The MIPI SDCA specification is available for public downloads at
4  * https://www.mipi.org/mipi-sdca-v1-0-download
5  *
6  * Copyright (C) 2025 Cirrus Logic, Inc. and
7  *                    Cirrus Logic International Semiconductor Ltd.
8  */
9 
10 #ifndef __SDCA_UMP_H__
11 #define __SDCA_UMP_H__
12 
13 struct regmap;
14 struct sdca_control;
15 struct sdca_entity;
16 struct sdca_function_data;
17 struct snd_soc_component;
18 struct delayed_work;
19 
20 int sdca_ump_get_owner_host(struct device *dev,
21 			    struct regmap *function_regmap,
22 			    struct sdca_function_data *function,
23 			    struct sdca_entity *entity,
24 			    struct sdca_control *control);
25 int sdca_ump_set_owner_device(struct device *dev,
26 			      struct regmap *function_regmap,
27 			      struct sdca_function_data *function,
28 			      struct sdca_entity *entity,
29 			      struct sdca_control *control);
30 int sdca_ump_read_message(struct device *dev,
31 			  struct regmap *device_regmap,
32 			  struct regmap *function_regmap,
33 			  struct sdca_function_data *function,
34 			  struct sdca_entity *entity,
35 			  unsigned int offset_sel, unsigned int length_sel,
36 			  void **msg);
37 int sdca_ump_write_message(struct device *dev,
38 			   struct regmap *device_regmap,
39 			   struct regmap *function_regmap,
40 			   struct sdca_function_data *function,
41 			   struct sdca_entity *entity,
42 			   unsigned int offset_sel, unsigned int msg_offset,
43 			   unsigned int length_sel,
44 			   void *msg, int msg_len);
45 
46 void sdca_ump_cancel_timeout(struct delayed_work *work);
47 void sdca_ump_schedule_timeout(struct delayed_work *work,
48 			       unsigned int timeout_us);
49 
50 #endif // __SDCA_UMP_H__
51