xref: /linux/sound/soc/sdca/sdca_class.h (revision 84318277d6334c6981ab326d4acc87c6a6ddc9b8)
1*2d877d06SCharles Keepax /* SPDX-License-Identifier: GPL-2.0 */
2*2d877d06SCharles Keepax /*
3*2d877d06SCharles Keepax  * The MIPI SDCA specification is available for public downloads at
4*2d877d06SCharles Keepax  * https://www.mipi.org/mipi-sdca-v1-0-download
5*2d877d06SCharles Keepax  *
6*2d877d06SCharles Keepax  * Copyright (C) 2025 Cirrus Logic, Inc. and
7*2d877d06SCharles Keepax  *                    Cirrus Logic International Semiconductor Ltd.
8*2d877d06SCharles Keepax  */
9*2d877d06SCharles Keepax 
10*2d877d06SCharles Keepax #ifndef __SDCA_CLASS_H__
11*2d877d06SCharles Keepax #define __SDCA_CLASS_H__
12*2d877d06SCharles Keepax 
13*2d877d06SCharles Keepax #include <linux/completion.h>
14*2d877d06SCharles Keepax #include <linux/mutex.h>
15*2d877d06SCharles Keepax #include <linux/workqueue.h>
16*2d877d06SCharles Keepax 
17*2d877d06SCharles Keepax struct device;
18*2d877d06SCharles Keepax struct regmap;
19*2d877d06SCharles Keepax struct sdw_slave;
20*2d877d06SCharles Keepax struct sdca_function_data;
21*2d877d06SCharles Keepax 
22*2d877d06SCharles Keepax struct sdca_class_drv {
23*2d877d06SCharles Keepax 	struct device *dev;
24*2d877d06SCharles Keepax 	struct regmap *dev_regmap;
25*2d877d06SCharles Keepax 	struct sdw_slave *sdw;
26*2d877d06SCharles Keepax 
27*2d877d06SCharles Keepax 	struct sdca_function_data *functions;
28*2d877d06SCharles Keepax 	struct sdca_interrupt_info *irq_info;
29*2d877d06SCharles Keepax 
30*2d877d06SCharles Keepax 	struct mutex regmap_lock;
31*2d877d06SCharles Keepax 	struct work_struct boot_work;
32*2d877d06SCharles Keepax 	struct completion device_attach;
33*2d877d06SCharles Keepax 
34*2d877d06SCharles Keepax 	bool attached;
35*2d877d06SCharles Keepax };
36*2d877d06SCharles Keepax 
37*2d877d06SCharles Keepax #endif /* __SDCA_CLASS_H__ */
38