/* SPDX-License-Identifier: GPL-2.0 */

#ifndef __AUDIOREACH_H__
#define __AUDIOREACH_H__
#include <linux/types.h>
#include <linux/soc/qcom/apr.h>
#include <sound/soc.h>
struct q6apm;
struct q6apm_graph;

/* Module IDs */
#define MODULE_ID_WR_SHARED_MEM_EP	0x07001000
#define MODULE_ID_RD_SHARED_MEM_EP	0x07001001
#define MODULE_ID_GAIN			0x07001002
#define MODULE_ID_PCM_CNV		0x07001003
#define MODULE_ID_PCM_ENC		0x07001004
#define MODULE_ID_PCM_DEC		0x07001005
#define MODULE_ID_CODEC_DMA_SINK	0x07001023
#define MODULE_ID_CODEC_DMA_SOURCE	0x07001024
#define MODULE_ID_I2S_SINK		0x0700100A
#define MODULE_ID_I2S_SOURCE		0x0700100B
#define MODULE_ID_DATA_LOGGING		0x0700101A

#define APM_CMD_GET_SPF_STATE		0x01001021
#define APM_CMD_RSP_GET_SPF_STATE	0x02001007

#define APM_MODULE_INSTANCE_ID		0x00000001
#define PRM_MODULE_INSTANCE_ID		0x00000002
#define AMDB_MODULE_INSTANCE_ID		0x00000003
#define VCPM_MODULE_INSTANCE_ID		0x00000004
#define AR_MODULE_INSTANCE_ID_START	0x00006000
#define AR_MODULE_INSTANCE_ID_END	0x00007000
#define AR_MODULE_DYNAMIC_INSTANCE_ID_START	0x00007000
#define AR_MODULE_DYNAMIC_INSTANCE_ID_END	0x00008000
#define AR_CONT_INSTANCE_ID_START	0x00005000
#define AR_CONT_INSTANCE_ID_END		0x00006000
#define AR_SG_INSTANCE_ID_START		0x00004000

#define APM_CMD_GRAPH_OPEN			0x01001000
#define APM_CMD_GRAPH_PREPARE			0x01001001
#define APM_CMD_GRAPH_START			0x01001002
#define APM_CMD_GRAPH_STOP			0x01001003
#define APM_CMD_GRAPH_CLOSE			0x01001004
#define APM_CMD_GRAPH_FLUSH			0x01001005
#define APM_CMD_SET_CFG				0x01001006
#define APM_CMD_GET_CFG				0x01001007
#define APM_CMD_SHARED_MEM_MAP_REGIONS		0x0100100C
#define APM_CMD_SHARED_MEM_UNMAP_REGIONS	0x0100100D
#define APM_CMD_RSP_SHARED_MEM_MAP_REGIONS	0x02001001
#define APM_CMD_RSP_GET_CFG			0x02001000
#define APM_CMD_CLOSE_ALL			0x01001013
#define APM_CMD_REGISTER_SHARED_CFG		0x0100100A

#define APM_MEMORY_MAP_SHMEM8_4K_POOL		3

struct apm_cmd_shared_mem_map_regions {
	uint16_t mem_pool_id;
	uint16_t num_regions;
	uint32_t property_flag;
} __packed;

struct apm_shared_map_region_payload {
	uint32_t shm_addr_lsw;
	uint32_t shm_addr_msw;
	uint32_t mem_size_bytes;
} __packed;

struct apm_cmd_shared_mem_unmap_regions {
	uint32_t mem_map_handle;
} __packed;

struct apm_cmd_rsp_shared_mem_map_regions {
	uint32_t mem_map_handle;
} __packed;

/* APM module */
#define APM_PARAM_ID_SUB_GRAPH_LIST		0x08001005

#define APM_PARAM_ID_MODULE_LIST		0x08001002

struct apm_param_id_modules_list {
	uint32_t num_modules_list;
} __packed;

#define APM_PARAM_ID_MODULE_PROP		0x08001003

struct apm_param_id_module_prop {
	uint32_t num_modules_prop_cfg;
} __packed;

struct apm_module_prop_cfg {
	uint32_t instance_id;
	uint32_t num_props;
} __packed;

#define APM_PARAM_ID_MODULE_CONN		0x08001004

struct apm_param_id_module_conn {
	uint32_t num_connections;
} __packed;

struct apm_module_conn_obj {
	uint32_t src_mod_inst_id;
	uint32_t src_mod_op_port_id;
	uint32_t dst_mod_inst_id;
	uint32_t dst_mod_ip_port_id;
} __packed;

#define APM_PARAM_ID_GAIN			0x08001006

struct param_id_gain_cfg {
	uint16_t gain;
	uint16_t reserved;
} __packed;

#define PARAM_ID_PCM_OUTPUT_FORMAT_CFG		0x08001008

struct param_id_pcm_output_format_cfg {
	uint32_t data_format;
	uint32_t fmt_id;
	uint32_t payload_size;
} __packed;

struct payload_pcm_output_format_cfg {
	uint16_t bit_width;
	uint16_t alignment;
	uint16_t bits_per_sample;
	uint16_t q_factor;
	uint16_t endianness;
	uint16_t interleaved;
	uint16_t reserved;
	uint16_t num_channels;
	uint8_t channel_mapping[];
} __packed;

#define PARAM_ID_ENC_BITRATE			0x08001052

struct param_id_enc_bitrate_param {
	uint32_t bitrate;
} __packed;

#define DATA_FORMAT_FIXED_POINT		1
#define PCM_LSB_ALIGNED			1
#define PCM_MSB_ALIGNED			2
#define PCM_LITTLE_ENDIAN		1
#define PCM_BIT_ENDIAN			2

#define MEDIA_FMT_ID_PCM	0x09001000
#define PCM_CHANNEL_L		1
#define PCM_CHANNEL_R		2
#define SAMPLE_RATE_48K		48000
#define BIT_WIDTH_16		16

#define APM_PARAM_ID_PROP_PORT_INFO		0x08001015

struct apm_modules_prop_info {
	uint32_t max_ip_port;
	uint32_t max_op_port;
} __packed;

/* Shared memory module */
#define DATA_CMD_WR_SH_MEM_EP_DATA_BUFFER	0x04001000
#define WR_SH_MEM_EP_TIMESTAMP_VALID_FLAG	BIT(31)
#define WR_SH_MEM_EP_LAST_BUFFER_FLAG		BIT(30)
#define WR_SH_MEM_EP_TS_CONTINUE_FLAG		BIT(29)
#define WR_SH_MEM_EP_EOF_FLAG			BIT(4)

struct apm_data_cmd_wr_sh_mem_ep_data_buffer {
	uint32_t buf_addr_lsw;
	uint32_t buf_addr_msw;
	uint32_t mem_map_handle;
	uint32_t buf_size;
	uint32_t timestamp_lsw;
	uint32_t timestamp_msw;
	uint32_t flags;
} __packed;

#define DATA_CMD_WR_SH_MEM_EP_DATA_BUFFER_V2	0x0400100A

struct apm_data_cmd_wr_sh_mem_ep_data_buffer_v2 {
	uint32_t buf_addr_lsw;
	uint32_t buf_addr_msw;
	uint32_t mem_map_handle;
	uint32_t buf_size;
	uint32_t timestamp_lsw;
	uint32_t timestamp_msw;
	uint32_t flags;
	uint32_t md_addr_lsw;
	uint32_t md_addr_msw;
	uint32_t md_map_handle;
	uint32_t md_buf_size;
} __packed;

#define DATA_CMD_RSP_WR_SH_MEM_EP_DATA_BUFFER_DONE	0x05001000

struct data_cmd_rsp_wr_sh_mem_ep_data_buffer_done {
	uint32_t buf_addr_lsw;
	uint32_t buf_addr_msw;
	uint32_t mem_map_handle;
	uint32_t status;

} __packed;

#define DATA_CMD_RSP_WR_SH_MEM_EP_DATA_BUFFER_DONE_V2	0x05001004

struct data_cmd_rsp_wr_sh_mem_ep_data_buffer_done_v2 {
	uint32_t buf_addr_lsw;
	uint32_t buf_addr_msw;
	uint32_t mem_map_handle;
	uint32_t status;
	uint32_t md_buf_addr_lsw;
	uint32_t md_buf_addr_msw;
	uint32_t md_mem_map_handle;
	uint32_t md_status;
} __packed;

#define PARAM_ID_MEDIA_FORMAT				0x0800100C
#define DATA_CMD_WR_SH_MEM_EP_MEDIA_FORMAT		0x04001001

struct apm_media_format {
	uint32_t data_format;
	uint32_t fmt_id;
	uint32_t payload_size;
} __packed;

#define DATA_CMD_WR_SH_MEM_EP_EOS			0x04001002
#define WR_SH_MEM_EP_EOS_POLICY_LAST	1
#define WR_SH_MEM_EP_EOS_POLICY_EACH	2

struct data_cmd_wr_sh_mem_ep_eos {
	uint32_t policy;

} __packed;

#define DATA_CMD_RD_SH_MEM_EP_DATA_BUFFER		0x04001003

struct data_cmd_rd_sh_mem_ep_data_buffer {
	uint32_t buf_addr_lsw;
	uint32_t buf_addr_msw;
	uint32_t mem_map_handle;
	uint32_t buf_size;
} __packed;

#define DATA_CMD_RSP_RD_SH_MEM_EP_DATA_BUFFER		0x05001002

struct data_cmd_rsp_rd_sh_mem_ep_data_buffer_done {
	uint32_t status;
	uint32_t buf_addr_lsw;
	uint32_t buf_addr_msw;
	uint32_t mem_map_handle;
	uint32_t data_size;
	uint32_t offset;
	uint32_t timestamp_lsw;
	uint32_t timestamp_msw;
	uint32_t flags;
	uint32_t num_frames;
} __packed;

#define DATA_CMD_RD_SH_MEM_EP_DATA_BUFFER_V2		0x0400100B

struct data_cmd_rd_sh_mem_ep_data_buffer_v2 {
	uint32_t buf_addr_lsw;
	uint32_t buf_addr_msw;
	uint32_t mem_map_handle;
	uint32_t buf_size;
	uint32_t md_buf_addr_lsw;
	uint32_t md_buf_addr_msw;
	uint32_t md_mem_map_handle;
	uint32_t md_buf_size;
} __packed;

#define DATA_CMD_RSP_RD_SH_MEM_EP_DATA_BUFFER_V2	0x05001005

struct data_cmd_rsp_rd_sh_mem_ep_data_buffer_done_v2 {
	uint32_t status;
	uint32_t buf_addr_lsw;
	uint32_t buf_addr_msw;
	uint32_t mem_map_handle;
	uint32_t data_size;
	uint32_t offset;
	uint32_t timestamp_lsw;
	uint32_t timestamp_msw;
	uint32_t flags;
	uint32_t num_frames;
	uint32_t md_status;
	uint32_t md_buf_addr_lsw;
	uint32_t md_buf_addr_msw;
	uint32_t md_mem_map_handle;
	uint32_t md_size;
} __packed;

#define PARAM_ID_RD_SH_MEM_CFG				0x08001007

struct param_id_rd_sh_mem_cfg {
	uint32_t num_frames_per_buffer;
	uint32_t metadata_control_flags;

} __packed;

#define DATA_CMD_WR_SH_MEM_EP_EOS_RENDERED		0x05001001

struct data_cmd_wr_sh_mem_ep_eos_rendered {
	uint32_t module_instance_id;
	uint32_t render_status;
} __packed;

#define MODULE_ID_WR_SHARED_MEM_EP			0x07001000

struct apm_cmd_header {
	uint32_t payload_address_lsw;
	uint32_t payload_address_msw;
	uint32_t mem_map_handle;
	uint32_t payload_size;
} __packed;

#define APM_CMD_HDR_SIZE sizeof(struct apm_cmd_header)

struct apm_module_param_data  {
	uint32_t module_instance_id;
	uint32_t param_id;
	uint32_t param_size;
	uint32_t error_code;
} __packed;

#define APM_MODULE_PARAM_DATA_SIZE	sizeof(struct apm_module_param_data)

struct apm_module_param_shared_data  {
	uint32_t param_id;
	uint32_t param_size;
} __packed;

struct apm_prop_data {
	uint32_t prop_id;
	uint32_t prop_size;
} __packed;

/* Sub-Graph Properties */
#define APM_PARAM_ID_SUB_GRAPH_CONFIG	0x08001001

struct apm_param_id_sub_graph_cfg {
	uint32_t num_sub_graphs;
} __packed;

struct apm_sub_graph_cfg {
	uint32_t sub_graph_id;
	uint32_t num_sub_graph_prop;
} __packed;

#define APM_SUB_GRAPH_PROP_ID_PERF_MODE		0x0800100E

struct apm_sg_prop_id_perf_mode {
	uint32_t perf_mode;
} __packed;

#define APM_SG_PROP_ID_PERF_MODE_SIZE	4

#define APM_SUB_GRAPH_PROP_ID_DIRECTION	0x0800100F

struct apm_sg_prop_id_direction {
	uint32_t direction;
} __packed;

#define APM_SG_PROP_ID_DIR_SIZE		4

#define APM_SUB_GRAPH_PROP_ID_SCENARIO_ID	0x08001010
#define APM_SUB_GRAPH_SID_AUDIO_PLAYBACK	0x1
#define APM_SUB_GRAPH_SID_AUDIO_RECORD		0x2
#define APM_SUB_GRAPH_SID_AUDIO_VOICE_CALL	0x3

struct apm_sg_prop_id_scenario_id {
	uint32_t scenario_id;
} __packed;

#define APM_SG_PROP_ID_SID_SIZE			4
/* container api */
#define APM_PARAM_ID_CONTAINER_CONFIG		0x08001000

struct apm_param_id_container_cfg {
	uint32_t num_containers;
} __packed;

struct apm_container_cfg {
	uint32_t container_id;
	uint32_t num_prop;
} __packed;

struct apm_cont_capability  {
	uint32_t capability_id;
} __packed;

#define APM_CONTAINER_PROP_ID_CAPABILITY_LIST	0x08001011
#define APM_CONTAINER_PROP_ID_CAPABILITY_SIZE	8

#define APM_PROP_ID_INVALID			0x0
#define APM_CONTAINER_CAP_ID_PP			0x1
#define APM_CONTAINER_CAP_ID_PP			0x1

struct apm_cont_prop_id_cap_list  {
	uint32_t num_capability_id;
} __packed;

#define APM_CONTAINER_PROP_ID_GRAPH_POS		0x08001012

struct apm_cont_prop_id_graph_pos  {
	uint32_t graph_pos;
} __packed;

#define APM_CONTAINER_PROP_ID_STACK_SIZE	0x08001013

struct apm_cont_prop_id_stack_size  {
	uint32_t stack_size;
} __packed;

#define APM_CONTAINER_PROP_ID_PROC_DOMAIN	0x08001014

struct apm_cont_prop_id_domain  {
	uint32_t proc_domain;
} __packed;

#define CONFIG_I2S_WS_SRC_EXTERNAL		0x0
#define CONFIG_I2S_WS_SRC_INTERNAL		0x1

#define PARAM_ID_I2S_INTF_CFG			0x08001019
struct param_id_i2s_intf_cfg {
	uint32_t lpaif_type;
	uint32_t intf_idx;
	uint16_t sd_line_idx;
	uint16_t ws_src;
} __packed;

#define I2S_INTF_TYPE_PRIMARY		0
#define I2S_INTF_TYPE_SECOINDARY	1
#define I2S_INTF_TYPE_TERTINARY		2
#define I2S_INTF_TYPE_QUATERNARY	3
#define I2S_INTF_TYPE_QUINARY		4
#define I2S_SD0				1
#define I2S_SD1				2
#define I2S_SD2				3
#define I2S_SD3				4

#define PORT_ID_I2S_INPUT		2
#define PORT_ID_I2S_OUPUT		1
#define I2S_STACK_SIZE			2048

#define PARAM_ID_HW_EP_MF_CFG			0x08001017
struct param_id_hw_ep_mf {
	uint32_t sample_rate;
	uint16_t bit_width;
	uint16_t num_channels;
	uint32_t data_format;
} __packed;

#define PARAM_ID_HW_EP_FRAME_SIZE_FACTOR	0x08001018

struct param_id_fram_size_factor {
	uint32_t frame_size_factor;
} __packed;

#define APM_CONTAINER_PROP_ID_PARENT_CONTAINER_ID	0x080010CB

struct apm_cont_prop_id_parent_container  {
	uint32_t parent_container_id;
} __packed;

#define APM_CONTAINER_PROP_ID_HEAP_ID			0x08001174
#define APM_CONT_HEAP_DEFAULT				0x1
#define APM_CONT_HEAP_LOW_POWER				0x2

struct apm_cont_prop_id_headp_id  {
	uint32_t heap_id;
} __packed;

struct apm_modules_list {
	uint32_t sub_graph_id;
	uint32_t container_id;
	uint32_t num_modules;
} __packed;

struct apm_module_obj {
	uint32_t module_id;
	uint32_t instance_id;
} __packed;

#define APM_MODULE_PROP_ID_PORT_INFO		0x08001015
#define APM_MODULE_PROP_ID_PORT_INFO_SZ		8
struct apm_module_prop_id_port_info {
	uint32_t max_ip_port;
	uint32_t max_op_port;
} __packed;

#define DATA_LOGGING_MAX_INPUT_PORTS		0x1
#define DATA_LOGGING_MAX_OUTPUT_PORTS		0x1
#define DATA_LOGGING_STACK_SIZE			2048
#define PARAM_ID_DATA_LOGGING_CONFIG		0x08001031

struct data_logging_config {
	uint32_t log_code;
	uint32_t log_tap_point_id;
	uint32_t mode;
} __packed;

#define PARAM_ID_MFC_OUTPUT_MEDIA_FORMAT	0x08001024

struct param_id_mfc_media_format {
	uint32_t sample_rate;
	uint16_t bit_width;
	uint16_t num_channels;
	uint16_t channel_mapping[];
} __packed;

struct media_format {
	uint32_t data_format;
	uint32_t fmt_id;
	uint32_t payload_size;
} __packed;

struct payload_media_fmt_pcm {
	uint32_t sample_rate;
	uint16_t bit_width;
	uint16_t alignment;
	uint16_t bits_per_sample;
	uint16_t q_factor;
	uint16_t endianness;
	uint16_t num_channels;
	uint8_t channel_mapping[];
} __packed;

#define PARAM_ID_CODEC_DMA_INTF_CFG		0x08001063

struct param_id_codec_dma_intf_cfg {
	/* 1 - RXTX
	 * 2 - WSA
	 * 3 - VA
	 * 4 - AXI
	 */
	uint32_t lpaif_type;
	/*
	 *  RX0 | TX0 = 1
	 *  RX1 | TX1 = 2
	 *  RX2 | TX2 = 3... so on
	 */
	uint32_t intf_index;
	uint32_t active_channels_mask;
} __packed;

struct audio_hw_clk_cfg {
	uint32_t clock_id;
	uint32_t clock_freq;
	uint32_t clock_attri;
	uint32_t clock_root;
} __packed;

struct audio_hw_clk_rel_cfg {
	uint32_t clock_id;
} __packed;

#define PARAM_ID_HW_EP_POWER_MODE_CFG	0x8001176
#define AR_HW_EP_POWER_MODE_0	0 /* default */
#define AR_HW_EP_POWER_MODE_1	1 /* XO Shutdown allowed */
#define AR_HW_EP_POWER_MODE_2	2 /* XO Shutdown not allowed */

struct param_id_hw_ep_power_mode_cfg {
	uint32_t power_mode;
} __packed;

#define PARAM_ID_HW_EP_DMA_DATA_ALIGN	0x08001233
#define AR_HW_EP_DMA_DATA_ALIGN_MSB	0
#define AR_HW_EP_DMA_DATA_ALIGN_LSB	1
#define AR_PCM_MAX_NUM_CHANNEL		8

struct param_id_hw_ep_dma_data_align {
	uint32_t dma_data_align;
} __packed;

#define PARAM_ID_VOL_CTRL_MASTER_GAIN	0x08001035
#define VOL_CTRL_DEFAULT_GAIN		0x2000

struct param_id_vol_ctrl_master_gain {
	uint16_t master_gain;
	uint16_t reserved;
} __packed;


/* Graph */
struct audioreach_connection {
	/* Connections */
	uint32_t src_mod_inst_id;
	uint32_t src_mod_op_port_id;
	uint32_t dst_mod_inst_id;
	uint32_t dst_mod_ip_port_id;
	struct list_head node;
};

struct audioreach_graph_info {
	int id;
	uint32_t num_sub_graphs;
	struct list_head sg_list;
	struct list_head connection_list;
};

struct audioreach_sub_graph {
	uint32_t sub_graph_id;
	uint32_t perf_mode;
	uint32_t direction;
	uint32_t scenario_id;
	struct list_head node;

	struct audioreach_graph_info *info;
	uint32_t num_containers;
	struct list_head container_list;
};

struct audioreach_container {
	uint32_t container_id;
	uint32_t capability_id;
	uint32_t graph_pos;
	uint32_t stack_size;
	uint32_t proc_domain;
	struct list_head node;

	uint32_t num_modules;
	struct list_head modules_list;
	struct audioreach_sub_graph *sub_graph;
};

struct audioreach_module {
	uint32_t module_id;
	uint32_t instance_id;

	uint32_t max_ip_port;
	uint32_t max_op_port;

	uint32_t in_port;
	uint32_t out_port;

	/* Connections */
	uint32_t src_mod_inst_id;
	uint32_t src_mod_op_port_id;
	uint32_t dst_mod_inst_id;
	uint32_t dst_mod_ip_port_id;

	/* Format specifics */
	uint32_t ch_fmt;
	uint32_t rate;
	uint32_t bit_depth;

	/* I2S module */
	uint32_t hw_interface_idx;
	uint32_t sd_line_idx;
	uint32_t ws_src;
	uint32_t frame_size_factor;
	uint32_t data_format;
	uint32_t hw_interface_type;

	/* PCM module specific */
	uint32_t interleave_type;

	/* GAIN/Vol Control Module */
	uint16_t gain;

	/* Logging */
	uint32_t log_code;
	uint32_t log_tap_point_id;
	uint32_t log_mode;

	/* bookkeeping */
	struct list_head node;
	struct audioreach_container *container;
	struct snd_soc_dapm_widget *widget;
};

struct audioreach_module_config {
	int	direction;
	u32	sample_rate;
	u16	bit_width;
	u16	bits_per_sample;

	u16	data_format;
	u16	num_channels;
	u16	active_channels_mask;
	u32	sd_line_mask;
	int	fmt;
	u8 channel_map[AR_PCM_MAX_NUM_CHANNEL];
};

/* Packet Allocation routines */
void *audioreach_alloc_apm_cmd_pkt(int pkt_size, uint32_t opcode, uint32_t
				    token);
void *audioreach_alloc_cmd_pkt(int payload_size, uint32_t opcode,
			       uint32_t token, uint32_t src_port,
			       uint32_t dest_port);
void *audioreach_alloc_apm_pkt(int pkt_size, uint32_t opcode, uint32_t token,
				uint32_t src_port);
void *audioreach_alloc_pkt(int payload_size, uint32_t opcode,
			   uint32_t token, uint32_t src_port,
			   uint32_t dest_port);
void *audioreach_alloc_graph_pkt(struct q6apm *apm,
				 struct list_head *sg_list,
				  int graph_id);
/* Topology specific */
int audioreach_tplg_init(struct snd_soc_component *component);

/* Module specific */
void audioreach_graph_free_buf(struct q6apm_graph *graph);
int audioreach_map_memory_regions(struct q6apm_graph *graph,
				  unsigned int dir, size_t period_sz,
				  unsigned int periods,
				  bool is_contiguous);
int audioreach_send_cmd_sync(struct device *dev, gpr_device_t *gdev, struct gpr_ibasic_rsp_result_t *result,
			     struct mutex *cmd_lock, gpr_port_t *port, wait_queue_head_t *cmd_wait,
			     struct gpr_pkt *pkt, uint32_t rsp_opcode);
int audioreach_graph_send_cmd_sync(struct q6apm_graph *graph, struct gpr_pkt *pkt,
				   uint32_t rsp_opcode);
int audioreach_set_media_format(struct q6apm_graph *graph,
				struct audioreach_module *module,
				struct audioreach_module_config *cfg);
int audioreach_shared_memory_send_eos(struct q6apm_graph *graph);
int audioreach_gain_set_vol_ctrl(struct q6apm *apm,
				 struct audioreach_module *module, int vol);
struct audioreach_module *audioreach_get_container_last_module(
				struct audioreach_container *container);
struct audioreach_module *audioreach_get_container_first_module(
				struct audioreach_container *container);
struct audioreach_module *audioreach_get_container_next_module(
				struct audioreach_container *container,
				struct audioreach_module *module);
#define list_for_each_container_module(mod, cont) \
	for (mod = audioreach_get_container_first_module(cont); mod != NULL; \
	     mod = audioreach_get_container_next_module(cont, mod))
#endif /* __AUDIOREACH_H__ */
