Sound Open Firmware
Loading...
Searching...
No Matches
module_interface.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-3-Clause */
2/*
3 * Copyright(c) 2020 - 2023 Intel Corporation. All rights reserved.
4 *
5 * Author: Jaroslaw Stelter <jaroslaw.stelter@intel.com>
6 */
7
8#ifndef __SOF_MODULE_INTERFACE__
9#define __SOF_MODULE_INTERFACE__
10
11#include <sof/compiler_attributes.h>
12#include <sof/audio/sink_api.h>
14
15/*
16 * Definition used to extend structure definitions to include fields for exclusive use by SOF.
17 * This is a temporary solution used until work on separating a common interface for loadable
18 * modules is completed.
19 */
20#define SOF_MODULE_API_PRIVATE
21
22#include <module/module/interface.h>
23
24struct comp_dev;
25struct timestamp_data;
26struct dai_ts_data;
28
42 uint64_t (*get_total_data_processed)(struct comp_dev *dev, uint32_t stream_no, bool input);
48 int (*position)(struct comp_dev *dev, struct sof_ipc_stream_posn *posn);
55 int (*dai_ts_config)(struct comp_dev *dev);
56
63 int (*dai_ts_start)(struct comp_dev *dev);
64
71 int (*dai_ts_stop)(struct comp_dev *dev);
72
80#if CONFIG_ZEPHYR_NATIVE_DRIVERS
81 int (*dai_ts_get)(struct comp_dev *dev, struct dai_ts_data *tsd);
82#else
83 int (*dai_ts_get)(struct comp_dev *dev, struct timestamp_data *tsd);
84#endif
85
95 int (*dai_get_hw_params)(struct comp_dev *dev,
96 struct sof_ipc_stream_params *params, int dir);
97
103 int (*trigger)(struct comp_dev *dev, int cmd);
104};
105
106/* Convert first_block/last_block indicator to fragment position */
107static inline enum module_cfg_fragment_position
108first_last_block_to_frag_pos(bool first_block, bool last_block)
109{
110 int frag_position = (last_block << 1) | first_block;
111
112 return (enum module_cfg_fragment_position)frag_position;
113}
114
115#endif /* __SOF_MODULE_INTERFACE__ */
static enum module_cfg_fragment_position first_last_block_to_frag_pos(bool first_block, bool last_block)
Definition module_interface.h:108
Audio component base device "class".
Definition component.h:645
Ops relevant only for the endpoint devices such as the host copier or DAI copier.
Definition module_interface.h:34
int(* trigger)(struct comp_dev *dev, int cmd)
Triggers device state.
Definition module_interface.h:103
int(* dai_ts_stop)(struct comp_dev *dev)
Stops timestamping.
Definition module_interface.h:71
int(* dai_get_hw_params)(struct comp_dev *dev, struct sof_ipc_stream_params *params, int dir)
Fetches hardware stream parameters.
Definition module_interface.h:95
uint64_t(* get_total_data_processed)(struct comp_dev *dev, uint32_t stream_no, bool input)
Returns total data processed in number bytes.
Definition module_interface.h:42
int(* dai_ts_start)(struct comp_dev *dev)
Starts timestamping.
Definition module_interface.h:63
int(* dai_ts_config)(struct comp_dev *dev)
Configures timestamping in attached DAI.
Definition module_interface.h:55
int(* position)(struct comp_dev *dev, struct sof_ipc_stream_posn *posn)
Retrieves component rendering position.
Definition module_interface.h:48
int(* dai_ts_get)(struct comp_dev *dev, struct timestamp_data *tsd)
Gets timestamp.
Definition module_interface.h:83
Definition stream.h:71
Definition stream.h:134