2020#include <ipc/stream.h>
2121#include <ipc/topology.h>
2222#include <module/module/llext.h>
23- #include <rtos/alloc.h>
2423#include <rtos/init.h>
2524#include <rtos/panic.h>
2625#include <rtos/string.h>
@@ -43,11 +42,11 @@ extern const struct sof_uuid drc_uuid;
4342extern struct tr_ctx drc_tr ;
4443
4544/* Called from drc_setup() from drc_process(), so cannot be __cold */
46- void drc_reset_state (struct drc_state * state )
45+ void drc_reset_state (struct processing_module * mod , struct drc_state * state )
4746{
4847 int i ;
4948
50- rfree ( state -> pre_delay_buffers [0 ]);
49+ mod_free ( mod , state -> pre_delay_buffers [0 ]);
5150 for (i = 0 ; i < PLATFORM_MAX_CHANNELS ; ++ i ) {
5251 state -> pre_delay_buffers [i ] = NULL ;
5352 }
@@ -67,7 +66,8 @@ void drc_reset_state(struct drc_state *state)
6766 state -> max_attack_compression_diff_db = INT32_MIN ;
6867}
6968
70- int drc_init_pre_delay_buffers (struct drc_state * state ,
69+ int drc_init_pre_delay_buffers (struct processing_module * mod ,
70+ struct drc_state * state ,
7171 size_t sample_bytes ,
7272 int channels )
7373{
@@ -76,7 +76,7 @@ int drc_init_pre_delay_buffers(struct drc_state *state,
7676 int i ;
7777
7878 /* Allocate pre-delay (lookahead) buffers */
79- state -> pre_delay_buffers [0 ] = rballoc ( SOF_MEM_FLAG_USER , bytes_total );
79+ state -> pre_delay_buffers [0 ] = mod_alloc ( mod , bytes_total );
8080 if (!state -> pre_delay_buffers [0 ])
8181 return - ENOMEM ;
8282
@@ -121,16 +121,17 @@ int drc_set_pre_delay_time(struct drc_state *state,
121121}
122122
123123/* Called from drc_process(), so cannot be __cold */
124- static int drc_setup (struct drc_comp_data * cd , uint16_t channels , uint32_t rate )
124+ static int drc_setup (struct processing_module * mod , uint16_t channels , uint32_t rate )
125125{
126+ struct drc_comp_data * cd = module_get_private_data (mod );
126127 uint32_t sample_bytes = get_sample_bytes (cd -> source_format );
127128 int ret ;
128129
129130 /* Reset any previous state */
130- drc_reset_state (& cd -> state );
131+ drc_reset_state (mod , & cd -> state );
131132
132133 /* Allocate pre-delay buffers */
133- ret = drc_init_pre_delay_buffers (& cd -> state , (size_t )sample_bytes , (int )channels );
134+ ret = drc_init_pre_delay_buffers (mod , & cd -> state , (size_t )sample_bytes , (int )channels );
134135 if (ret < 0 )
135136 return ret ;
136137
@@ -164,28 +165,27 @@ __cold static int drc_init(struct processing_module *mod)
164165 return - EINVAL ;
165166 }
166167
167- cd = rzalloc ( SOF_MEM_FLAG_USER , sizeof (* cd ));
168+ cd = mod_zalloc ( mod , sizeof (* cd ));
168169 if (!cd )
169170 return - ENOMEM ;
170171
171172 md -> private = cd ;
172173
173174 /* Handler for configuration data */
174- cd -> model_handler = comp_data_blob_handler_new ( dev );
175+ cd -> model_handler = mod_data_blob_handler_new ( mod );
175176 if (!cd -> model_handler ) {
176177 comp_err (dev , "comp_data_blob_handler_new() failed." );
177- ret = - ENOMEM ;
178- goto cd_fail ;
178+ return - ENOMEM ;
179179 }
180180
181181 /* Get configuration data and reset DRC state */
182182 ret = comp_init_data_blob (cd -> model_handler , bs , cfg -> data );
183183 if (ret < 0 ) {
184184 comp_err (dev , "comp_init_data_blob() failed." );
185- goto cd_fail ;
185+ return ret ;
186186 }
187187
188- drc_reset_state (& cd -> state );
188+ drc_reset_state (mod , & cd -> state );
189189
190190 /* Initialize DRC to enabled. If defined by topology, a control may set
191191 * enabled to false before prepare() or during streaming with the switch
@@ -194,21 +194,12 @@ __cold static int drc_init(struct processing_module *mod)
194194 cd -> enabled = true;
195195 cd -> enable_switch = true;
196196 return 0 ;
197-
198- cd_fail :
199- comp_data_blob_handler_free (cd -> model_handler );
200- rfree (cd );
201- return ret ;
202197}
203198
204199__cold static int drc_free (struct processing_module * mod )
205200{
206- struct drc_comp_data * cd = module_get_private_data (mod );
207-
208201 assert_can_be_cold ();
209202
210- comp_data_blob_handler_free (cd -> model_handler );
211- rfree (cd );
212203 return 0 ;
213204}
214205
@@ -284,7 +275,7 @@ static int drc_process(struct processing_module *mod,
284275 /* Check for changed configuration */
285276 if (comp_is_new_data_blob_available (cd -> model_handler )) {
286277 cd -> config = comp_get_data_blob (cd -> model_handler , NULL , NULL );
287- ret = drc_setup (cd , audio_stream_get_channels (source ),
278+ ret = drc_setup (mod , audio_stream_get_channels (source ),
288279 audio_stream_get_rate (source ));
289280 if (ret < 0 ) {
290281 comp_err (dev , "drc_copy(), failed DRC setup" );
@@ -370,7 +361,7 @@ static int drc_prepare(struct processing_module *mod,
370361 comp_info (dev , "drc_prepare(), source_format=%d" , cd -> source_format );
371362 cd -> config = comp_get_data_blob (cd -> model_handler , NULL , NULL );
372363 if (cd -> config ) {
373- ret = drc_setup (cd , channels , rate );
364+ ret = drc_setup (mod , channels , rate );
374365 if (ret < 0 ) {
375366 comp_err (dev , "drc_prepare() error: drc_setup failed." );
376367 return ret ;
@@ -403,7 +394,7 @@ static int drc_reset(struct processing_module *mod)
403394{
404395 struct drc_comp_data * cd = module_get_private_data (mod );
405396
406- drc_reset_state (& cd -> state );
397+ drc_reset_state (mod , & cd -> state );
407398
408399 return 0 ;
409400}
0 commit comments