1392f1045SVinod Koul /* SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause) */
2392f1045SVinod Koul /* Copyright(c) 2015-17 Intel Corporation. */
371bb8a1bSVinod Koul 
471bb8a1bSVinod Koul #ifndef __SDW_INTEL_H
571bb8a1bSVinod Koul #define __SDW_INTEL_H
671bb8a1bSVinod Koul 
771bb8a1bSVinod Koul /**
8c46302ecSVinod Koul  * struct sdw_intel_ops: Intel audio driver callback ops
9c46302ecSVinod Koul  *
10c46302ecSVinod Koul  * @config_stream: configure the stream with the hw_params
11c46302ecSVinod Koul  */
12c46302ecSVinod Koul struct sdw_intel_ops {
13c46302ecSVinod Koul 	int (*config_stream)(void *arg, void *substream,
14c46302ecSVinod Koul 			void *dai, void *hw_params, int stream_num);
15c46302ecSVinod Koul };
16c46302ecSVinod Koul 
17c46302ecSVinod Koul /**
1871bb8a1bSVinod Koul  * struct sdw_intel_res - Soundwire Intel resource structure
1971bb8a1bSVinod Koul  * @mmio_base: mmio base of SoundWire registers
2071bb8a1bSVinod Koul  * @irq: interrupt number
2171bb8a1bSVinod Koul  * @handle: ACPI parent handle
2271bb8a1bSVinod Koul  * @parent: parent device
23c46302ecSVinod Koul  * @ops: callback ops
24c46302ecSVinod Koul  * @arg: callback arg
2571bb8a1bSVinod Koul  */
2671bb8a1bSVinod Koul struct sdw_intel_res {
2771bb8a1bSVinod Koul 	void __iomem *mmio_base;
2871bb8a1bSVinod Koul 	int irq;
2971bb8a1bSVinod Koul 	acpi_handle handle;
3071bb8a1bSVinod Koul 	struct device *parent;
31c46302ecSVinod Koul 	const struct sdw_intel_ops *ops;
32c46302ecSVinod Koul 	void *arg;
3371bb8a1bSVinod Koul };
3471bb8a1bSVinod Koul 
35d62a7d41SVinod Koul void *sdw_intel_init(acpi_handle *parent_handle, struct sdw_intel_res *res);
36d62a7d41SVinod Koul void sdw_intel_exit(void *arg);
37d62a7d41SVinod Koul 
3871bb8a1bSVinod Koul #endif
39