@@ -139,9 +139,8 @@ static inline void set_s32_fir(struct comp_data *cd)
139139static inline int set_fir_func (struct comp_dev * dev )
140140{
141141 struct comp_data * cd = comp_get_drvdata (dev );
142- struct sof_ipc_comp_config * config = COMP_GET_CONFIG (dev );
143142
144- switch (config -> frame_fmt ) {
143+ switch (dev -> params . frame_fmt ) {
145144 case SOF_IPC_FRAME_S16_LE :
146145 trace_eq ("f16" );
147146 set_s16_fir (cd );
@@ -194,9 +193,8 @@ static void eq_fir_s32_passthrough(struct fir_state_32x16 fir[],
194193static inline int set_pass_func (struct comp_dev * dev )
195194{
196195 struct comp_data * cd = comp_get_drvdata (dev );
197- struct sof_ipc_comp_config * config = COMP_GET_CONFIG (dev );
198196
199- switch (config -> frame_fmt ) {
197+ switch (dev -> params . frame_fmt ) {
200198 case SOF_IPC_FRAME_S16_LE :
201199 trace_eq ("p16" );
202200 cd -> eq_fir_func_even = eq_fir_s16_passthrough ;
@@ -515,7 +513,7 @@ static int fir_cmd_set_data(struct comp_dev *dev,
515513 int ret = 0 ;
516514
517515 /* Check version from ABI header */
518- if (cdata -> data -> comp_abi != SOF_EQ_FIR_ABI_VERSION ) {
516+ if (cdata -> data -> comp_abi != SOF_ABI_VERSION ) {
519517 trace_eq_error ("eab" );
520518 return - EINVAL ;
521519 }
@@ -671,6 +669,8 @@ static int eq_fir_copy(struct comp_dev *dev)
671669static int eq_fir_prepare (struct comp_dev * dev )
672670{
673671 struct comp_data * cd = comp_get_drvdata (dev );
672+ struct sof_ipc_comp_config * config = COMP_GET_CONFIG (dev );
673+ struct comp_buffer * sourceb , * sinkb ;
674674 int ret ;
675675
676676 trace_eq ("pre" );
@@ -679,6 +679,26 @@ static int eq_fir_prepare(struct comp_dev *dev)
679679 if (ret < 0 )
680680 return ret ;
681681
682+ /* EQ components will only ever have 1 source and 1 sink buffer */
683+ sourceb = list_first_item (& dev -> bsource_list ,
684+ struct comp_buffer , sink_list );
685+ sinkb = list_first_item (& dev -> bsink_list ,
686+ struct comp_buffer , source_list );
687+
688+ /* set period bytes and frame format */
689+ comp_set_period_bytes (sourceb -> source , dev -> frames ,
690+ & dev -> params .frame_fmt , & cd -> period_bytes );
691+
692+ /* rewrite frame_bytes for all downstream */
693+ dev -> frame_bytes = cd -> period_bytes / dev -> frames ;
694+
695+ /* set downstream buffer size */
696+ ret = buffer_set_size (sinkb , cd -> period_bytes * config -> periods_sink );
697+ if (ret < 0 ) {
698+ trace_eq_error ("ef0" );
699+ return ret ;
700+ }
701+
682702 /* Initialize EQ */
683703 if (cd -> config ) {
684704 ret = eq_fir_setup (cd , dev -> params .channels );
0 commit comments