component: New function comp_get_base_module_cfg

Created new function comp_get_base_module_cfg which allows
to get component's base configuration. This function is still
access a component's private data in ugly way but it allows
solve this issue easier in the future.

Signed-off-by: Adrian Warecki <adrian.warecki@intel.com>
This commit is contained in:
Adrian Warecki 2022-07-01 22:51:03 +02:00 committed by Liam Girdwood
parent 95f6f88be7
commit e8c34fd62e
8 changed files with 26 additions and 7 deletions

View File

@ -71,8 +71,8 @@ DECLARE_TR_CTX(asrc_tr, SOF_UUID(asrc_uuid), LOG_LEVEL_INFO);
/* asrc component private data */
struct comp_data {
#if CONFIG_IPC_MAJOR_4
/* Must be the 1st field, function ipc4_create_buffer casts components private data as
* ipc4_base_module_cfg!
/* Must be the 1st field, function ipc4_comp_get_base_module_cfg casts components
* private data as ipc4_base_module_cfg!
*/
struct ipc4_asrc_module_cfg ipc_config;
#else

View File

@ -48,8 +48,8 @@ DECLARE_SOF_RT_UUID("copier", copier_comp_uuid, 0x9ba00c83, 0xca12, 0x4a83,
DECLARE_TR_CTX(copier_comp_tr, SOF_UUID(copier_comp_uuid), LOG_LEVEL_INFO);
struct copier_data {
/* Must be the 1st field, function ipc4_create_buffer casts components private data
* as ipc4_base_module_cfg!
/* Must be the 1st field, function ipc4_comp_get_base_module_cfg casts components
* private data as ipc4_base_module_cfg!
*/
struct ipc4_copier_module_cfg config;
struct comp_dev *endpoint[IPC4_COPIER_MODULE_OUTPUT_PINS_COUNT];

View File

@ -54,6 +54,9 @@ DECLARE_TR_CTX(mixer_tr, SOF_UUID(mixer_uuid), LOG_LEVEL_INFO);
/* mixer component private data */
struct mixer_data {
#if CONFIG_IPC_MAJOR_4
/* Must be the 1st field, function ipc4_comp_get_base_module_cfg casts components
* private data as ipc4_base_module_cfg!
*/
struct ipc4_base_module_cfg base_cfg;
#endif

View File

@ -86,8 +86,8 @@ struct ipc4_config_src {
struct comp_data {
#if CONFIG_IPC_MAJOR_4
/* Must be the 1st field, function ipc4_create_buffer casts components private data as
* ipc4_base_module_cfg!
/* Must be the 1st field, function ipc4_comp_get_base_module_cfg casts components
* private data as ipc4_base_module_cfg!
*/
struct ipc4_config_src ipc_config;
#else

View File

@ -53,6 +53,9 @@ int aria_process_data(struct comp_dev *dev, int32_t *__restrict dst,
* \brief Aria component private data.
*/
struct aria_data {
/* Must be the 1st field, function ipc4_comp_get_base_module_cfg casts components
* private data as ipc4_base_module_cfg!
*/
struct ipc4_base_module_cfg base;
/* channels count */

View File

@ -936,6 +936,16 @@ static inline int comp_get_state(struct comp_dev *req_dev, struct comp_dev *dev)
int comp_verify_params(struct comp_dev *dev, uint32_t flag,
struct sof_ipc_stream_params *params);
#if CONFIG_IPC_MAJOR_4
/**
* Temporary ugly function to get components base configuration. Fix me!
*/
static inline struct ipc4_base_module_cfg *ipc4_comp_get_base_module_cfg(struct comp_dev *dev)
{
return (struct ipc4_base_module_cfg *)comp_get_drvdata(dev);
}
#endif
/** @}*/
#endif /* __SOF_AUDIO_COMPONENT_H__ */

View File

@ -114,6 +114,9 @@ static inline enum ipc4_channel_index get_channel_index(const channel_map map,
* \brief up_down_mixer component private data.
*/
struct up_down_mixer_data {
/* Must be the 1st field, function ipc4_comp_get_base_module_cfg casts components
* private data as ipc4_base_module_cfg!
*/
struct ipc4_base_module_cfg base;
/** Number of channels in the input buffer. */
size_t in_channel_no;

View File

@ -240,7 +240,7 @@ static struct comp_buffer *ipc4_create_buffer(struct comp_dev *src, struct comp_
struct sof_ipc_buffer ipc_buf;
int buf_size;
src_cfg = (struct ipc4_base_module_cfg *)comp_get_drvdata(src);
src_cfg = ipc4_comp_get_base_module_cfg(src);
/* double it since obs is single buffer size */
buf_size = src_cfg->obs * 2;