All of lore.kernel.org
 help / color / mirror / Atom feed
* [chrome-os:chromeos-4.19 21350/21402] drivers/misc/echo/echo.c:384:27: error: equality comparison with extraneous parentheses
@ 2020-04-14 22:09 kbuild test robot
       [not found] ` <20200415002618.GB19509@ubuntu-s3-xlarge-x86>
  0 siblings, 1 reply; 9+ messages in thread
From: kbuild test robot @ 2020-04-14 22:09 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 34049 bytes --]

tree:   https://chromium.googlesource.com/chromiumos/third_party/kernel chromeos-4.19
head:   e747fc8dfce13c501be9b7032a5a3d8249bc27ab
commit: 12bd892cc0bd4a700dd41aa4b0d1e0cfc128e3e4 [21350/21402] CHROMIUM: Merge 'v4.19.114' into chromeos-4.19
config: x86_64-randconfig-c002-20200414 (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project f3da6b7ab5698bb0b9bd208972115dbcbbc59f27)
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        git checkout 12bd892cc0bd4a700dd41aa4b0d1e0cfc128e3e4
        # save the attached .config to linux build tree
        COMPILER=clang make.cross ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

>> drivers/misc/echo/echo.c:384:27: error: equality comparison with extraneous parentheses [-Werror,-Wparentheses-equality]
           if ((ec->nonupdate_dwell == 0)) {
                ~~~~~~~~~~~~~~~~~~~~^~~~
   drivers/misc/echo/echo.c:384:27: note: remove extraneous parentheses around the comparison to silence this warning
           if ((ec->nonupdate_dwell == 0)) {
               ~                    ^   ~
   drivers/misc/echo/echo.c:384:27: note: use '=' to turn this equality comparison into an assignment
           if ((ec->nonupdate_dwell == 0)) {
                                    ^~
                                    =
   1 error generated.
--
>> net/decnet/dn_dev.c:1366:10: error: address of array 'dev->name' will always evaluate to 'true' [-Werror,-Wpointer-bool-conversion]
                                   dev->name ? dev->name : "???",
                                   ~~~~~^~~~ ~
   1 error generated.
--
>> drivers/regulator/da903x.c:395:2: error: division by zero is undefined [-Werror,-Wdivision-by-zero]
           DA9030_LDO(13, 2100, 2100, 0, INVAL, 0, 0, RCTL11, 3), /* fixed @2.1V */
           ^                          ~
   drivers/regulator/da903x.c:359:2: note: expanded from macro 'DA9030_LDO'
           DA903x_LDO(DA9030, _id, min, max, step, vreg, shift, nbits, ereg, ebit)
           ^                                 ~~~~
   drivers/regulator/da903x.c:320:39: note: expanded from macro 'DA903x_LDO'
                   .n_voltages = (step) ? ((max - min) / step + 1) : 1,    \
                                                       ^ ~~~~
   drivers/regulator/da903x.c:415:2: error: division by zero is undefined [-Werror,-Wdivision-by-zero]
           DA9034_LDO(5, 3100, 3100, 0, INVAL, 0, 0, OVER3, 7), /* fixed @3.1V */
           ^                         ~
   drivers/regulator/da903x.c:356:2: note: expanded from macro 'DA9034_LDO'
           DA903x_LDO(DA9034, _id, min, max, step, vreg, shift, nbits, ereg, ebit)
           ^                                 ~~~~
   drivers/regulator/da903x.c:320:39: note: expanded from macro 'DA903x_LDO'
                   .n_voltages = (step) ? ((max - min) / step + 1) : 1,    \
                                                       ^ ~~~~
   2 errors generated.
--
   In file included from drivers/scsi/osd/osd_uld.c:60:
   In file included from include/scsi/osd_initiator.h:18:
>> include/scsi/osd_types.h:31:21: error: 'weak' attribute only applies to variables, functions, and classes [-Werror,-Wignored-attributes]
   static const struct __weak osd_obj_id osd_root_object = {0, 0};
                       ^
   include/linux/compiler_types.h:219:33: note: expanded from macro '__weak'
   #define __weak                  __attribute__((weak))
                                                  ^
   1 error generated.

vim +384 drivers/misc/echo/echo.c

10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  273  
9d8f2d5dfbcc9d drivers/staging/echo/echo.c Tzafrir Cohen       2008-10-12  274  int16_t oslec_update(struct oslec_state *ec, int16_t tx, int16_t rx)
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  275  {
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  276  	int32_t echo_value;
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  277  	int clean_bg;
3ec50be588d773 drivers/staging/echo/echo.c Jesper Juhl         2012-06-27  278  	int tmp;
3ec50be588d773 drivers/staging/echo/echo.c Jesper Juhl         2012-06-27  279  	int tmp1;
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  280  
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  281  	/*
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  282  	 * Input scaling was found be required to prevent problems when tx
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  283  	 * starts clipping.  Another possible way to handle this would be the
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  284  	 * filter coefficent scaling.
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  285  	 */
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  286  
4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  287  	ec->tx = tx;
4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  288  	ec->rx = rx;
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  289  	tx >>= 1;
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  290  	rx >>= 1;
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  291  
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  292  	/*
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  293  	 * Filter DC, 3dB point is 160Hz (I think), note 32 bit precision
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  294  	 * required otherwise values do not track down to 0. Zero at DC, Pole
196e76e86a3a90 drivers/staging/echo/echo.c David Rowe          2009-08-23  295  	 * at (1-Beta) on real axis.  Some chip sets (like Si labs) don't
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  296  	 * need this, but something like a $10 X100P card does.  Any DC really
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  297  	 * slows down convergence.
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  298  	 *
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  299  	 * Note: removes some low frequency from the signal, this reduces the
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  300  	 * speech quality when listening to samples through headphones but may
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  301  	 * not be obvious through a telephone handset.
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  302  	 *
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  303  	 * Note that the 3dB frequency in radians is approx Beta, e.g. for Beta
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  304  	 * = 2^(-3) = 0.125, 3dB freq is 0.125 rads = 159Hz.
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  305  	 */
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  306  
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  307  	if (ec->adaption_mode & ECHO_CAN_USE_RX_HPF) {
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  308  		tmp = rx << 15;
196e76e86a3a90 drivers/staging/echo/echo.c David Rowe          2009-08-23  309  
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  310  		/*
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  311  		 * Make sure the gain of the HPF is 1.0. This can still
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  312  		 * saturate a little under impulse conditions, and it might
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  313  		 * roll to 32768 and need clipping on sustained peak level
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  314  		 * signals. However, the scale of such clipping is small, and
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  315  		 * the error due to any saturation should not markedly affect
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  316  		 * the downstream processing.
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  317  		 */
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  318  		tmp -= (tmp >> 4);
196e76e86a3a90 drivers/staging/echo/echo.c David Rowe          2009-08-23  319  
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  320  		ec->rx_1 += -(ec->rx_1 >> DC_LOG2BETA) + tmp - ec->rx_2;
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  321  
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  322  		/*
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  323  		 * hard limit filter to prevent clipping.  Note that at this
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  324  		 * stage rx should be limited to +/- 16383 due to right shift
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  325  		 * above
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  326  		 */
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  327  		tmp1 = ec->rx_1 >> 15;
4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  328  		if (tmp1 > 16383)
4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  329  			tmp1 = 16383;
4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  330  		if (tmp1 < -16383)
4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  331  			tmp1 = -16383;
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  332  		rx = tmp1;
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  333  		ec->rx_2 = tmp;
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  334  	}
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  335  
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  336  	/* Block average of power in the filter states.  Used for
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  337  	   adaption power calculation. */
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  338  
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  339  	{
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  340  		int new, old;
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  341  
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  342  		/* efficient "out with the old and in with the new" algorithm so
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  343  		   we don't have to recalculate over the whole block of
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  344  		   samples. */
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  345  		new = (int)tx * (int)tx;
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  346  		old = (int)ec->fir_state.history[ec->fir_state.curr_pos] *
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  347  		    (int)ec->fir_state.history[ec->fir_state.curr_pos];
0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  348  		ec->pstates +=
0f51010e87636e drivers/staging/echo/echo.c David Rowe          2009-05-20  349  		    ((new - old) + (1 << (ec->log2taps - 1))) >> ec->log2taps;
0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  350  		if (ec->pstates < 0)
0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  351  			ec->pstates = 0;
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  352  	}
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  353  
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  354  	/* Calculate short term average levels using simple single pole IIRs */
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  355  
0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  356  	ec->ltxacc += abs(tx) - ec->ltx;
0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  357  	ec->ltx = (ec->ltxacc + (1 << 4)) >> 5;
0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  358  	ec->lrxacc += abs(rx) - ec->lrx;
0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  359  	ec->lrx = (ec->lrxacc + (1 << 4)) >> 5;
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  360  
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  361  	/* Foreground filter */
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  362  
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  363  	ec->fir_state.coeffs = ec->fir_taps16[0];
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  364  	echo_value = fir16(&ec->fir_state, tx);
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  365  	ec->clean = rx - echo_value;
0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  366  	ec->lcleanacc += abs(ec->clean) - ec->lclean;
0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  367  	ec->lclean = (ec->lcleanacc + (1 << 4)) >> 5;
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  368  
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  369  	/* Background filter */
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  370  
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  371  	echo_value = fir16(&ec->fir_state_bg, tx);
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  372  	clean_bg = rx - echo_value;
0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  373  	ec->lclean_bgacc += abs(clean_bg) - ec->lclean_bg;
0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  374  	ec->lclean_bg = (ec->lclean_bgacc + (1 << 4)) >> 5;
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  375  
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  376  	/* Background Filter adaption */
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  377  
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  378  	/* Almost always adap bg filter, just simple DT and energy
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  379  	   detection to minimise adaption in cases of strong double talk.
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  380  	   However this is not critical for the dual path algorithm.
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  381  	 */
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  382  	ec->factor = 0;
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  383  	ec->shift = 0;
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06 @384  	if ((ec->nonupdate_dwell == 0)) {
0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  385  		int p, logp, shift;
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  386  
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  387  		/* Determine:
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  388  
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  389  		   f = Beta * clean_bg_rx/P ------ (1)
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  390  
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  391  		   where P is the total power in the filter states.
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  392  
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  393  		   The Boffins have shown that if we obey (1) we converge
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  394  		   quickly and avoid instability.
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  395  
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  396  		   The correct factor f must be in Q30, as this is the fixed
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  397  		   point format required by the lms_adapt_bg() function,
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  398  		   therefore the scaled version of (1) is:
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  399  
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  400  		   (2^30) * f  = (2^30) * Beta * clean_bg_rx/P
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  401  		   factor      = (2^30) * Beta * clean_bg_rx/P     ----- (2)
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  402  
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  403  		   We have chosen Beta = 0.25 by experiment, so:
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  404  
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  405  		   factor      = (2^30) * (2^-2) * clean_bg_rx/P
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  406  
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  407  		   (30 - 2 - log2(P))
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  408  		   factor      = clean_bg_rx 2                     ----- (3)
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  409  
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  410  		   To avoid a divide we approximate log2(P) as top_bit(P),
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  411  		   which returns the position of the highest non-zero bit in
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  412  		   P.  This approximation introduces an error as large as a
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  413  		   factor of 2, but the algorithm seems to handle it OK.
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  414  
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  415  		   Come to think of it a divide may not be a big deal on a
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  416  		   modern DSP, so its probably worth checking out the cycles
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  417  		   for a divide versus a top_bit() implementation.
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  418  		 */
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  419  
0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  420  		p = MIN_TX_POWER_FOR_ADAPTION + ec->pstates;
0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  421  		logp = top_bit(p) + ec->log2taps;
0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  422  		shift = 30 - 2 - logp;
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  423  		ec->shift = shift;
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  424  
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  425  		lms_adapt_bg(ec, clean_bg, shift);
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  426  	}
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  427  
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  428  	/* very simple DTD to make sure we dont try and adapt with strong
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  429  	   near end speech */
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  430  
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  431  	ec->adapt = 0;
0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  432  	if ((ec->lrx > MIN_RX_POWER_FOR_ADAPTION) && (ec->lrx > ec->ltx))
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  433  		ec->nonupdate_dwell = DTD_HANGOVER;
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  434  	if (ec->nonupdate_dwell)
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  435  		ec->nonupdate_dwell--;
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  436  
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  437  	/* Transfer logic */
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  438  
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  439  	/* These conditions are from the dual path paper [1], I messed with
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  440  	   them a bit to improve performance. */
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  441  
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  442  	if ((ec->adaption_mode & ECHO_CAN_USE_ADAPTION) &&
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  443  	    (ec->nonupdate_dwell == 0) &&
dc57a3ea80a85a drivers/staging/echo/echo.c Alexander Beregalov 2009-03-12  444  	    /* (ec->Lclean_bg < 0.875*ec->Lclean) */
0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  445  	    (8 * ec->lclean_bg < 7 * ec->lclean) &&
dc57a3ea80a85a drivers/staging/echo/echo.c Alexander Beregalov 2009-03-12  446  	    /* (ec->Lclean_bg < 0.125*ec->Ltx) */
0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  447  	    (8 * ec->lclean_bg < ec->ltx)) {
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  448  		if (ec->cond_met == 6) {
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  449  			/*
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  450  			 * BG filter has had better results for 6 consecutive
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  451  			 * samples
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  452  			 */
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  453  			ec->adapt = 1;
4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  454  			memcpy(ec->fir_taps16[0], ec->fir_taps16[1],
4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  455  			       ec->taps * sizeof(int16_t));
4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  456  		} else
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  457  			ec->cond_met++;
4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  458  	} else
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  459  		ec->cond_met = 0;
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  460  
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  461  	/* Non-Linear Processing */
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  462  
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  463  	ec->clean_nlp = ec->clean;
4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  464  	if (ec->adaption_mode & ECHO_CAN_USE_NLP) {
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  465  		/*
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  466  		 * Non-linear processor - a fancy way to say "zap small
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  467  		 * signals, to avoid residual echo due to (uLaw/ALaw)
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  468  		 * non-linearity in the channel.".
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  469  		 */
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  470  
0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  471  		if ((16 * ec->lclean < ec->ltx)) {
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  472  			/*
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  473  			 * Our e/c has improved echo by at least 24 dB (each
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  474  			 * factor of 2 is 6dB, so 2*2*2*2=16 is the same as
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  475  			 * 6+6+6+6=24dB)
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  476  			 */
4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  477  			if (ec->adaption_mode & ECHO_CAN_USE_CNG) {
0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  478  				ec->cng_level = ec->lbgn;
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  479  
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  480  				/*
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  481  				 * Very elementary comfort noise generation.
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  482  				 * Just random numbers rolled off very vaguely
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  483  				 * Hoth-like.  DR: This noise doesn't sound
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  484  				 * quite right to me - I suspect there are some
83aa3c7bf3f04a drivers/staging/echo/echo.c Jonathan Neuschäfer 2011-03-01  485  				 * overflow issues in the filtering as it's too
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  486  				 * "crackly".
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  487  				 * TODO: debug this, maybe just play noise at
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  488  				 * high level or look at spectrum.
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  489  				 */
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  490  
4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  491  				ec->cng_rndnum =
4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  492  				    1664525U * ec->cng_rndnum + 1013904223U;
4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  493  				ec->cng_filter =
4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  494  				    ((ec->cng_rndnum & 0xFFFF) - 32768 +
4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  495  				     5 * ec->cng_filter) >> 3;
4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  496  				ec->clean_nlp =
4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  497  				    (ec->cng_filter * ec->cng_level * 8) >> 14;
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  498  
4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  499  			} else if (ec->adaption_mode & ECHO_CAN_USE_CLIP) {
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  500  				/* This sounds much better than CNG */
0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  501  				if (ec->clean_nlp > ec->lbgn)
0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  502  					ec->clean_nlp = ec->lbgn;
0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  503  				if (ec->clean_nlp < -ec->lbgn)
0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  504  					ec->clean_nlp = -ec->lbgn;
4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  505  			} else {
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  506  				/*
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  507  				 * just mute the residual, doesn't sound very
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  508  				 * good, used mainly in G168 tests
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  509  				 */
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  510  				ec->clean_nlp = 0;
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  511  			}
4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  512  		} else {
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  513  			/*
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  514  			 * Background noise estimator.  I tried a few
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  515  			 * algorithms here without much luck.  This very simple
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  516  			 * one seems to work best, we just average the level
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  517  			 * using a slow (1 sec time const) filter if the
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  518  			 * current level is less than a (experimentally
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  519  			 * derived) constant.  This means we dont include high
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  520  			 * level signals like near end speech.  When combined
49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  521  			 * with CNG or especially CLIP seems to work OK.
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  522  			 */
0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  523  			if (ec->lclean < 40) {
0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  524  				ec->lbgn_acc += abs(ec->clean) - ec->lbgn;
0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  525  				ec->lbgn = (ec->lbgn_acc + (1 << 11)) >> 12;
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  526  			}
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  527  		}
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  528  	}
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  529  
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  530  	/* Roll around the taps buffer */
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  531  	if (ec->curr_pos <= 0)
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  532  		ec->curr_pos = ec->taps;
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  533  	ec->curr_pos--;
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  534  
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  535  	if (ec->adaption_mode & ECHO_CAN_DISABLE)
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  536  		ec->clean_nlp = rx;
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  537  
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  538  	/* Output scaled back up again to match input scaling */
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  539  
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  540  	return (int16_t) ec->clean_nlp << 1;
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  541  }
9d8f2d5dfbcc9d drivers/staging/echo/echo.c Tzafrir Cohen       2008-10-12  542  EXPORT_SYMBOL_GPL(oslec_update);
10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  543  

:::::: The code@line 384 was first introduced by commit
:::::: 10602db812fa270fc923f5e48fb47202288828f3 Staging: add echo cancelation module

:::::: TO: David Rowe <david@rowetel.com>
:::::: CC: Greg Kroah-Hartman <gregkh@suse.de>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 30775 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [chrome-os:chromeos-4.19 21350/21402] drivers/misc/echo/echo.c:384:27: error: equality comparison with extraneous parentheses
       [not found] ` <20200415002618.GB19509@ubuntu-s3-xlarge-x86>
@ 2020-04-15  0:56   ` Guenter Roeck
  2020-04-15 17:51       ` Nick Desaulniers
  0 siblings, 1 reply; 9+ messages in thread
From: Guenter Roeck @ 2020-04-15  0:56 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 39323 bytes --]

On Tue, Apr 14, 2020 at 5:26 PM Nathan Chancellor
<natechancellor@gmail.com> wrote:
>
> Hi all,
>
> Sorry for yet another convergeance on this commit... :/ hopefully this
> does not continue for much longer. None of the warnings are obviously
> caused by the patch below.
>
No worries.

I noticed that the problems are pretty much all fixed in the upstream
kernel. I just wasn't sure if it would be worthwhile sending a request
to stable@ to have them applied to 4.19.y (and if necessary 5.4.y).
Any suggestions ?

Thanks,
Guenter


Guenter

> On Wed, Apr 15, 2020 at 06:09:47AM +0800, kbuild test robot wrote:
> > tree:   https://chromium.googlesource.com/chromiumos/third_party/kernel chromeos-4.19
> > head:   e747fc8dfce13c501be9b7032a5a3d8249bc27ab
> > commit: 12bd892cc0bd4a700dd41aa4b0d1e0cfc128e3e4 [21350/21402] CHROMIUM: Merge 'v4.19.114' into chromeos-4.19
> > config: x86_64-randconfig-c002-20200414 (attached as .config)
> > compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project f3da6b7ab5698bb0b9bd208972115dbcbbc59f27)
> > reproduce:
> >         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> >         chmod +x ~/bin/make.cross
> >         git checkout 12bd892cc0bd4a700dd41aa4b0d1e0cfc128e3e4
> >         # save the attached .config to linux build tree
> >         COMPILER=clang make.cross ARCH=x86_64
> >
> > If you fix the issue, kindly add following tag as appropriate
> > Reported-by: kbuild test robot <lkp@intel.com>
> >
> > All errors (new ones prefixed by >>):
> >
> > >> drivers/misc/echo/echo.c:384:27: error: equality comparison with extraneous parentheses [-Werror,-Wparentheses-equality]
> >            if ((ec->nonupdate_dwell == 0)) {
> >                 ~~~~~~~~~~~~~~~~~~~~^~~~
> >    drivers/misc/echo/echo.c:384:27: note: remove extraneous parentheses around the comparison to silence this warning
> >            if ((ec->nonupdate_dwell == 0)) {
> >                ~                    ^   ~
> >    drivers/misc/echo/echo.c:384:27: note: use '=' to turn this equality comparison into an assignment
> >            if ((ec->nonupdate_dwell == 0)) {
> >                                     ^~
> >                                     =
> >    1 error generated.
>
> Fixed by commit 85dc2c65e6c9 ("misc: echo: Remove unnecessary
> parentheses and simplify check for zero").
>
> > >> net/decnet/dn_dev.c:1366:10: error: address of array 'dev->name' will always evaluate to 'true' [-Werror,-Wpointer-bool-conversion]
> >                                    dev->name ? dev->name : "???",
> >                                    ~~~~~^~~~ ~
> >    1 error generated.
>
> Fixed by commit 5b9b0a80aa1a ("decnet: Remove unnecessary check for
> dev->name").
>
> > >> drivers/regulator/da903x.c:395:2: error: division by zero is undefined [-Werror,-Wdivision-by-zero]
> >            DA9030_LDO(13, 2100, 2100, 0, INVAL, 0, 0, RCTL11, 3), /* fixed @2.1V */
> >            ^                          ~
> >    drivers/regulator/da903x.c:359:2: note: expanded from macro 'DA9030_LDO'
> >            DA903x_LDO(DA9030, _id, min, max, step, vreg, shift, nbits, ereg, ebit)
> >            ^                                 ~~~~
> >    drivers/regulator/da903x.c:320:39: note: expanded from macro 'DA903x_LDO'
> >                    .n_voltages = (step) ? ((max - min) / step + 1) : 1,    \
> >                                                        ^ ~~~~
> >    drivers/regulator/da903x.c:415:2: error: division by zero is undefined [-Werror,-Wdivision-by-zero]
> >            DA9034_LDO(5, 3100, 3100, 0, INVAL, 0, 0, OVER3, 7), /* fixed @3.1V */
> >            ^                         ~
> >    drivers/regulator/da903x.c:356:2: note: expanded from macro 'DA9034_LDO'
> >            DA903x_LDO(DA9034, _id, min, max, step, vreg, shift, nbits, ereg, ebit)
> >            ^                                 ~~~~
> >    drivers/regulator/da903x.c:320:39: note: expanded from macro 'DA903x_LDO'
> >                    .n_voltages = (step) ? ((max - min) / step + 1) : 1,    \
> >                                                        ^ ~~~~
> >    2 errors generated.
>
> "Fixed" by commit 0077aaaeeb69 ("regulator: da903x: don't build with
> clang"). I do not think the Clang fix ever got finalized.
>
> >    In file included from drivers/scsi/osd/osd_uld.c:60:
> >    In file included from include/scsi/osd_initiator.h:18:
> > >> include/scsi/osd_types.h:31:21: error: 'weak' attribute only applies to variables, functions, and classes [-Werror,-Wignored-attributes]
> >    static const struct __weak osd_obj_id osd_root_object = {0, 0};
> >                        ^
> >    include/linux/compiler_types.h:219:33: note: expanded from macro '__weak'
> >    #define __weak                  __attribute__((weak))
> >                                                   ^
> >    1 error generated.
>
> "Fixed" by just deleting the driver in commit 19fcae3d4f2d ("scsi:
> remove the SCSI OSD library"). I did send a patch to fix it which
> spurred the deletion, if we wanted to take it in stable if we care:
>
> https://lore.kernel.org/lkml/20190126064740.12949-1-natechancellor(a)gmail.com/
>
> > vim +384 drivers/misc/echo/echo.c
> >
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  273
> > 9d8f2d5dfbcc9d drivers/staging/echo/echo.c Tzafrir Cohen       2008-10-12  274  int16_t oslec_update(struct oslec_state *ec, int16_t tx, int16_t rx)
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  275  {
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  276        int32_t echo_value;
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  277        int clean_bg;
> > 3ec50be588d773 drivers/staging/echo/echo.c Jesper Juhl         2012-06-27  278        int tmp;
> > 3ec50be588d773 drivers/staging/echo/echo.c Jesper Juhl         2012-06-27  279        int tmp1;
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  280
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  281        /*
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  282         * Input scaling was found be required to prevent problems when tx
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  283         * starts clipping.  Another possible way to handle this would be the
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  284         * filter coefficent scaling.
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  285         */
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  286
> > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  287        ec->tx = tx;
> > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  288        ec->rx = rx;
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  289        tx >>= 1;
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  290        rx >>= 1;
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  291
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  292        /*
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  293         * Filter DC, 3dB point is 160Hz (I think), note 32 bit precision
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  294         * required otherwise values do not track down to 0. Zero at DC, Pole
> > 196e76e86a3a90 drivers/staging/echo/echo.c David Rowe          2009-08-23  295         * at (1-Beta) on real axis.  Some chip sets (like Si labs) don't
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  296         * need this, but something like a $10 X100P card does.  Any DC really
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  297         * slows down convergence.
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  298         *
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  299         * Note: removes some low frequency from the signal, this reduces the
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  300         * speech quality when listening to samples through headphones but may
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  301         * not be obvious through a telephone handset.
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  302         *
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  303         * Note that the 3dB frequency in radians is approx Beta, e.g. for Beta
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  304         * = 2^(-3) = 0.125, 3dB freq is 0.125 rads = 159Hz.
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  305         */
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  306
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  307        if (ec->adaption_mode & ECHO_CAN_USE_RX_HPF) {
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  308                tmp = rx << 15;
> > 196e76e86a3a90 drivers/staging/echo/echo.c David Rowe          2009-08-23  309
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  310                /*
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  311                 * Make sure the gain of the HPF is 1.0. This can still
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  312                 * saturate a little under impulse conditions, and it might
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  313                 * roll to 32768 and need clipping on sustained peak level
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  314                 * signals. However, the scale of such clipping is small, and
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  315                 * the error due to any saturation should not markedly affect
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  316                 * the downstream processing.
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  317                 */
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  318                tmp -= (tmp >> 4);
> > 196e76e86a3a90 drivers/staging/echo/echo.c David Rowe          2009-08-23  319
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  320                ec->rx_1 += -(ec->rx_1 >> DC_LOG2BETA) + tmp - ec->rx_2;
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  321
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  322                /*
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  323                 * hard limit filter to prevent clipping.  Note that at this
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  324                 * stage rx should be limited to +/- 16383 due to right shift
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  325                 * above
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  326                 */
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  327                tmp1 = ec->rx_1 >> 15;
> > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  328                if (tmp1 > 16383)
> > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  329                        tmp1 = 16383;
> > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  330                if (tmp1 < -16383)
> > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  331                        tmp1 = -16383;
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  332                rx = tmp1;
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  333                ec->rx_2 = tmp;
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  334        }
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  335
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  336        /* Block average of power in the filter states.  Used for
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  337           adaption power calculation. */
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  338
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  339        {
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  340                int new, old;
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  341
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  342                /* efficient "out with the old and in with the new" algorithm so
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  343                   we don't have to recalculate over the whole block of
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  344                   samples. */
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  345                new = (int)tx * (int)tx;
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  346                old = (int)ec->fir_state.history[ec->fir_state.curr_pos] *
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  347                    (int)ec->fir_state.history[ec->fir_state.curr_pos];
> > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  348                ec->pstates +=
> > 0f51010e87636e drivers/staging/echo/echo.c David Rowe          2009-05-20  349                    ((new - old) + (1 << (ec->log2taps - 1))) >> ec->log2taps;
> > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  350                if (ec->pstates < 0)
> > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  351                        ec->pstates = 0;
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  352        }
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  353
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  354        /* Calculate short term average levels using simple single pole IIRs */
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  355
> > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  356        ec->ltxacc += abs(tx) - ec->ltx;
> > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  357        ec->ltx = (ec->ltxacc + (1 << 4)) >> 5;
> > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  358        ec->lrxacc += abs(rx) - ec->lrx;
> > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  359        ec->lrx = (ec->lrxacc + (1 << 4)) >> 5;
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  360
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  361        /* Foreground filter */
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  362
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  363        ec->fir_state.coeffs = ec->fir_taps16[0];
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  364        echo_value = fir16(&ec->fir_state, tx);
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  365        ec->clean = rx - echo_value;
> > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  366        ec->lcleanacc += abs(ec->clean) - ec->lclean;
> > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  367        ec->lclean = (ec->lcleanacc + (1 << 4)) >> 5;
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  368
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  369        /* Background filter */
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  370
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  371        echo_value = fir16(&ec->fir_state_bg, tx);
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  372        clean_bg = rx - echo_value;
> > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  373        ec->lclean_bgacc += abs(clean_bg) - ec->lclean_bg;
> > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  374        ec->lclean_bg = (ec->lclean_bgacc + (1 << 4)) >> 5;
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  375
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  376        /* Background Filter adaption */
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  377
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  378        /* Almost always adap bg filter, just simple DT and energy
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  379           detection to minimise adaption in cases of strong double talk.
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  380           However this is not critical for the dual path algorithm.
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  381         */
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  382        ec->factor = 0;
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  383        ec->shift = 0;
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06 @384        if ((ec->nonupdate_dwell == 0)) {
> > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  385                int p, logp, shift;
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  386
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  387                /* Determine:
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  388
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  389                   f = Beta * clean_bg_rx/P ------ (1)
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  390
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  391                   where P is the total power in the filter states.
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  392
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  393                   The Boffins have shown that if we obey (1) we converge
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  394                   quickly and avoid instability.
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  395
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  396                   The correct factor f must be in Q30, as this is the fixed
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  397                   point format required by the lms_adapt_bg() function,
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  398                   therefore the scaled version of (1) is:
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  399
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  400                   (2^30) * f  = (2^30) * Beta * clean_bg_rx/P
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  401                   factor      = (2^30) * Beta * clean_bg_rx/P     ----- (2)
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  402
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  403                   We have chosen Beta = 0.25 by experiment, so:
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  404
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  405                   factor      = (2^30) * (2^-2) * clean_bg_rx/P
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  406
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  407                   (30 - 2 - log2(P))
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  408                   factor      = clean_bg_rx 2                     ----- (3)
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  409
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  410                   To avoid a divide we approximate log2(P) as top_bit(P),
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  411                   which returns the position of the highest non-zero bit in
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  412                   P.  This approximation introduces an error as large as a
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  413                   factor of 2, but the algorithm seems to handle it OK.
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  414
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  415                   Come to think of it a divide may not be a big deal on a
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  416                   modern DSP, so its probably worth checking out the cycles
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  417                   for a divide versus a top_bit() implementation.
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  418                 */
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  419
> > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  420                p = MIN_TX_POWER_FOR_ADAPTION + ec->pstates;
> > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  421                logp = top_bit(p) + ec->log2taps;
> > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  422                shift = 30 - 2 - logp;
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  423                ec->shift = shift;
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  424
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  425                lms_adapt_bg(ec, clean_bg, shift);
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  426        }
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  427
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  428        /* very simple DTD to make sure we dont try and adapt with strong
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  429           near end speech */
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  430
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  431        ec->adapt = 0;
> > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  432        if ((ec->lrx > MIN_RX_POWER_FOR_ADAPTION) && (ec->lrx > ec->ltx))
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  433                ec->nonupdate_dwell = DTD_HANGOVER;
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  434        if (ec->nonupdate_dwell)
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  435                ec->nonupdate_dwell--;
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  436
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  437        /* Transfer logic */
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  438
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  439        /* These conditions are from the dual path paper [1], I messed with
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  440           them a bit to improve performance. */
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  441
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  442        if ((ec->adaption_mode & ECHO_CAN_USE_ADAPTION) &&
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  443            (ec->nonupdate_dwell == 0) &&
> > dc57a3ea80a85a drivers/staging/echo/echo.c Alexander Beregalov 2009-03-12  444            /* (ec->Lclean_bg < 0.875*ec->Lclean) */
> > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  445            (8 * ec->lclean_bg < 7 * ec->lclean) &&
> > dc57a3ea80a85a drivers/staging/echo/echo.c Alexander Beregalov 2009-03-12  446            /* (ec->Lclean_bg < 0.125*ec->Ltx) */
> > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  447            (8 * ec->lclean_bg < ec->ltx)) {
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  448                if (ec->cond_met == 6) {
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  449                        /*
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  450                         * BG filter has had better results for 6 consecutive
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  451                         * samples
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  452                         */
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  453                        ec->adapt = 1;
> > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  454                        memcpy(ec->fir_taps16[0], ec->fir_taps16[1],
> > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  455                               ec->taps * sizeof(int16_t));
> > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  456                } else
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  457                        ec->cond_met++;
> > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  458        } else
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  459                ec->cond_met = 0;
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  460
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  461        /* Non-Linear Processing */
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  462
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  463        ec->clean_nlp = ec->clean;
> > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  464        if (ec->adaption_mode & ECHO_CAN_USE_NLP) {
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  465                /*
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  466                 * Non-linear processor - a fancy way to say "zap small
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  467                 * signals, to avoid residual echo due to (uLaw/ALaw)
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  468                 * non-linearity in the channel.".
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  469                 */
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  470
> > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  471                if ((16 * ec->lclean < ec->ltx)) {
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  472                        /*
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  473                         * Our e/c has improved echo by at least 24 dB (each
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  474                         * factor of 2 is 6dB, so 2*2*2*2=16 is the same as
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  475                         * 6+6+6+6=24dB)
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  476                         */
> > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  477                        if (ec->adaption_mode & ECHO_CAN_USE_CNG) {
> > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  478                                ec->cng_level = ec->lbgn;
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  479
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  480                                /*
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  481                                 * Very elementary comfort noise generation.
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  482                                 * Just random numbers rolled off very vaguely
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  483                                 * Hoth-like.  DR: This noise doesn't sound
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  484                                 * quite right to me - I suspect there are some
> > 83aa3c7bf3f04a drivers/staging/echo/echo.c Jonathan Neuschäfer 2011-03-01  485                                 * overflow issues in the filtering as it's too
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  486                                 * "crackly".
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  487                                 * TODO: debug this, maybe just play noise at
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  488                                 * high level or look at spectrum.
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  489                                 */
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  490
> > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  491                                ec->cng_rndnum =
> > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  492                                    1664525U * ec->cng_rndnum + 1013904223U;
> > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  493                                ec->cng_filter =
> > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  494                                    ((ec->cng_rndnum & 0xFFFF) - 32768 +
> > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  495                                     5 * ec->cng_filter) >> 3;
> > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  496                                ec->clean_nlp =
> > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  497                                    (ec->cng_filter * ec->cng_level * 8) >> 14;
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  498
> > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  499                        } else if (ec->adaption_mode & ECHO_CAN_USE_CLIP) {
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  500                                /* This sounds much better than CNG */
> > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  501                                if (ec->clean_nlp > ec->lbgn)
> > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  502                                        ec->clean_nlp = ec->lbgn;
> > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  503                                if (ec->clean_nlp < -ec->lbgn)
> > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  504                                        ec->clean_nlp = -ec->lbgn;
> > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  505                        } else {
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  506                                /*
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  507                                 * just mute the residual, doesn't sound very
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  508                                 * good, used mainly in G168 tests
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  509                                 */
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  510                                ec->clean_nlp = 0;
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  511                        }
> > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  512                } else {
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  513                        /*
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  514                         * Background noise estimator.  I tried a few
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  515                         * algorithms here without much luck.  This very simple
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  516                         * one seems to work best, we just average the level
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  517                         * using a slow (1 sec time const) filter if the
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  518                         * current level is less than a (experimentally
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  519                         * derived) constant.  This means we dont include high
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  520                         * level signals like near end speech.  When combined
> > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  521                         * with CNG or especially CLIP seems to work OK.
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  522                         */
> > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  523                        if (ec->lclean < 40) {
> > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  524                                ec->lbgn_acc += abs(ec->clean) - ec->lbgn;
> > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  525                                ec->lbgn = (ec->lbgn_acc + (1 << 11)) >> 12;
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  526                        }
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  527                }
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  528        }
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  529
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  530        /* Roll around the taps buffer */
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  531        if (ec->curr_pos <= 0)
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  532                ec->curr_pos = ec->taps;
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  533        ec->curr_pos--;
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  534
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  535        if (ec->adaption_mode & ECHO_CAN_DISABLE)
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  536                ec->clean_nlp = rx;
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  537
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  538        /* Output scaled back up again to match input scaling */
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  539
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  540        return (int16_t) ec->clean_nlp << 1;
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  541  }
> > 9d8f2d5dfbcc9d drivers/staging/echo/echo.c Tzafrir Cohen       2008-10-12  542  EXPORT_SYMBOL_GPL(oslec_update);
> > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  543
> >
> > :::::: The code at line 384 was first introduced by commit
> > :::::: 10602db812fa270fc923f5e48fb47202288828f3 Staging: add echo cancelation module
> >
> > :::::: TO: David Rowe <david@rowetel.com>
> > :::::: CC: Greg Kroah-Hartman <gregkh@suse.de>
> >
> > ---
> > 0-DAY CI Kernel Test Service, Intel Corporation
> > https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
> >
>
> Cheers,
> Nathan

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [chrome-os:chromeos-4.19 21350/21402] drivers/misc/echo/echo.c:384:27: error: equality comparison with extraneous parentheses
  2020-04-15  0:56   ` Guenter Roeck
@ 2020-04-15 17:51       ` Nick Desaulniers
  0 siblings, 0 replies; 9+ messages in thread
From: Nick Desaulniers @ 2020-04-15 17:51 UTC (permalink / raw)
  To: Greg KH, Sasha Levin, # 3.4.x, Guenter Roeck, Nathan Chancellor
  Cc: kbuild test robot, cros-kernel-buildreports, kbuild-all,
	clang-built-linux

On Tue, Apr 14, 2020 at 5:56 PM 'Guenter Roeck' via Clang Built Linux
<clang-built-linux@googlegroups.com> wrote:
>
> On Tue, Apr 14, 2020 at 5:26 PM Nathan Chancellor
> <natechancellor@gmail.com> wrote:
> >
> > Hi all,
> >
> > Sorry for yet another convergeance on this commit... :/ hopefully this
> > does not continue for much longer. None of the warnings are obviously
> > caused by the patch below.
>> Fixed by commit 85dc2c65e6c9 ("misc: echo: Remove unnecessary
>> parentheses and simplify check for zero").
> >
> No worries.
>
> I noticed that the problems are pretty much all fixed in the upstream
> kernel. I just wasn't sure if it would be worthwhile sending a request
> to stable@ to have them applied to 4.19.y (and if necessary 5.4.y).
> Any suggestions ?

We should strive to be warning free on stable.  Thanks for identifying
the fix Nathan.

Greg, Sasha,
Would you please cherry pick 85dc2c65e6c9 to 4.19.y, 4.14.y, 4.9.y,
and 4.4.y (maybe 3.18, didn't check that one)? It applies cleanly and
is a trivial fix for a warning that landed in v4.20-rc1.

`git describe --contains "$tag" | sed 's/~.*//'` is my trick for
finding the first tag that contained a commit.

>
> Thanks,
> Guenter
>
>
> Guenter
>
> > On Wed, Apr 15, 2020 at 06:09:47AM +0800, kbuild test robot wrote:
> > > tree:   https://chromium.googlesource.com/chromiumos/third_party/kernel chromeos-4.19
> > > head:   e747fc8dfce13c501be9b7032a5a3d8249bc27ab
> > > commit: 12bd892cc0bd4a700dd41aa4b0d1e0cfc128e3e4 [21350/21402] CHROMIUM: Merge 'v4.19.114' into chromeos-4.19
> > > config: x86_64-randconfig-c002-20200414 (attached as .config)
> > > compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project f3da6b7ab5698bb0b9bd208972115dbcbbc59f27)
> > > reproduce:
> > >         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> > >         chmod +x ~/bin/make.cross
> > >         git checkout 12bd892cc0bd4a700dd41aa4b0d1e0cfc128e3e4
> > >         # save the attached .config to linux build tree
> > >         COMPILER=clang make.cross ARCH=x86_64
> > >
> > > If you fix the issue, kindly add following tag as appropriate
> > > Reported-by: kbuild test robot <lkp@intel.com>
> > >
> > > All errors (new ones prefixed by >>):
> > >
> > > >> drivers/misc/echo/echo.c:384:27: error: equality comparison with extraneous parentheses [-Werror,-Wparentheses-equality]
> > >            if ((ec->nonupdate_dwell == 0)) {
> > >                 ~~~~~~~~~~~~~~~~~~~~^~~~
> > >    drivers/misc/echo/echo.c:384:27: note: remove extraneous parentheses around the comparison to silence this warning
> > >            if ((ec->nonupdate_dwell == 0)) {
> > >                ~                    ^   ~
> > >    drivers/misc/echo/echo.c:384:27: note: use '=' to turn this equality comparison into an assignment
> > >            if ((ec->nonupdate_dwell == 0)) {
> > >                                     ^~
> > >                                     =
> > >    1 error generated.
> >
> > Fixed by commit 85dc2c65e6c9 ("misc: echo: Remove unnecessary
> > parentheses and simplify check for zero").
> >
> > > >> net/decnet/dn_dev.c:1366:10: error: address of array 'dev->name' will always evaluate to 'true' [-Werror,-Wpointer-bool-conversion]
> > >                                    dev->name ? dev->name : "???",
> > >                                    ~~~~~^~~~ ~
> > >    1 error generated.
> >
> > Fixed by commit 5b9b0a80aa1a ("decnet: Remove unnecessary check for
> > dev->name").
> >
> > > >> drivers/regulator/da903x.c:395:2: error: division by zero is undefined [-Werror,-Wdivision-by-zero]
> > >            DA9030_LDO(13, 2100, 2100, 0, INVAL, 0, 0, RCTL11, 3), /* fixed @2.1V */
> > >            ^                          ~
> > >    drivers/regulator/da903x.c:359:2: note: expanded from macro 'DA9030_LDO'
> > >            DA903x_LDO(DA9030, _id, min, max, step, vreg, shift, nbits, ereg, ebit)
> > >            ^                                 ~~~~
> > >    drivers/regulator/da903x.c:320:39: note: expanded from macro 'DA903x_LDO'
> > >                    .n_voltages = (step) ? ((max - min) / step + 1) : 1,    \
> > >                                                        ^ ~~~~
> > >    drivers/regulator/da903x.c:415:2: error: division by zero is undefined [-Werror,-Wdivision-by-zero]
> > >            DA9034_LDO(5, 3100, 3100, 0, INVAL, 0, 0, OVER3, 7), /* fixed @3.1V */
> > >            ^                         ~
> > >    drivers/regulator/da903x.c:356:2: note: expanded from macro 'DA9034_LDO'
> > >            DA903x_LDO(DA9034, _id, min, max, step, vreg, shift, nbits, ereg, ebit)
> > >            ^                                 ~~~~
> > >    drivers/regulator/da903x.c:320:39: note: expanded from macro 'DA903x_LDO'
> > >                    .n_voltages = (step) ? ((max - min) / step + 1) : 1,    \
> > >                                                        ^ ~~~~
> > >    2 errors generated.
> >
> > "Fixed" by commit 0077aaaeeb69 ("regulator: da903x: don't build with
> > clang"). I do not think the Clang fix ever got finalized.
> >
> > >    In file included from drivers/scsi/osd/osd_uld.c:60:
> > >    In file included from include/scsi/osd_initiator.h:18:
> > > >> include/scsi/osd_types.h:31:21: error: 'weak' attribute only applies to variables, functions, and classes [-Werror,-Wignored-attributes]
> > >    static const struct __weak osd_obj_id osd_root_object = {0, 0};
> > >                        ^
> > >    include/linux/compiler_types.h:219:33: note: expanded from macro '__weak'
> > >    #define __weak                  __attribute__((weak))
> > >                                                   ^
> > >    1 error generated.
> >
> > "Fixed" by just deleting the driver in commit 19fcae3d4f2d ("scsi:
> > remove the SCSI OSD library"). I did send a patch to fix it which
> > spurred the deletion, if we wanted to take it in stable if we care:
> >
> > https://lore.kernel.org/lkml/20190126064740.12949-1-natechancellor@gmail.com/
> >
> > > vim +384 drivers/misc/echo/echo.c
> > >
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  273
> > > 9d8f2d5dfbcc9d drivers/staging/echo/echo.c Tzafrir Cohen       2008-10-12  274  int16_t oslec_update(struct oslec_state *ec, int16_t tx, int16_t rx)
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  275  {
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  276        int32_t echo_value;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  277        int clean_bg;
> > > 3ec50be588d773 drivers/staging/echo/echo.c Jesper Juhl         2012-06-27  278        int tmp;
> > > 3ec50be588d773 drivers/staging/echo/echo.c Jesper Juhl         2012-06-27  279        int tmp1;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  280
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  281        /*
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  282         * Input scaling was found be required to prevent problems when tx
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  283         * starts clipping.  Another possible way to handle this would be the
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  284         * filter coefficent scaling.
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  285         */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  286
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  287        ec->tx = tx;
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  288        ec->rx = rx;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  289        tx >>= 1;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  290        rx >>= 1;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  291
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  292        /*
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  293         * Filter DC, 3dB point is 160Hz (I think), note 32 bit precision
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  294         * required otherwise values do not track down to 0. Zero at DC, Pole
> > > 196e76e86a3a90 drivers/staging/echo/echo.c David Rowe          2009-08-23  295         * at (1-Beta) on real axis.  Some chip sets (like Si labs) don't
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  296         * need this, but something like a $10 X100P card does.  Any DC really
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  297         * slows down convergence.
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  298         *
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  299         * Note: removes some low frequency from the signal, this reduces the
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  300         * speech quality when listening to samples through headphones but may
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  301         * not be obvious through a telephone handset.
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  302         *
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  303         * Note that the 3dB frequency in radians is approx Beta, e.g. for Beta
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  304         * = 2^(-3) = 0.125, 3dB freq is 0.125 rads = 159Hz.
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  305         */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  306
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  307        if (ec->adaption_mode & ECHO_CAN_USE_RX_HPF) {
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  308                tmp = rx << 15;
> > > 196e76e86a3a90 drivers/staging/echo/echo.c David Rowe          2009-08-23  309
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  310                /*
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  311                 * Make sure the gain of the HPF is 1.0. This can still
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  312                 * saturate a little under impulse conditions, and it might
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  313                 * roll to 32768 and need clipping on sustained peak level
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  314                 * signals. However, the scale of such clipping is small, and
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  315                 * the error due to any saturation should not markedly affect
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  316                 * the downstream processing.
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  317                 */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  318                tmp -= (tmp >> 4);
> > > 196e76e86a3a90 drivers/staging/echo/echo.c David Rowe          2009-08-23  319
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  320                ec->rx_1 += -(ec->rx_1 >> DC_LOG2BETA) + tmp - ec->rx_2;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  321
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  322                /*
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  323                 * hard limit filter to prevent clipping.  Note that at this
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  324                 * stage rx should be limited to +/- 16383 due to right shift
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  325                 * above
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  326                 */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  327                tmp1 = ec->rx_1 >> 15;
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  328                if (tmp1 > 16383)
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  329                        tmp1 = 16383;
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  330                if (tmp1 < -16383)
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  331                        tmp1 = -16383;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  332                rx = tmp1;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  333                ec->rx_2 = tmp;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  334        }
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  335
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  336        /* Block average of power in the filter states.  Used for
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  337           adaption power calculation. */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  338
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  339        {
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  340                int new, old;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  341
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  342                /* efficient "out with the old and in with the new" algorithm so
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  343                   we don't have to recalculate over the whole block of
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  344                   samples. */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  345                new = (int)tx * (int)tx;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  346                old = (int)ec->fir_state.history[ec->fir_state.curr_pos] *
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  347                    (int)ec->fir_state.history[ec->fir_state.curr_pos];
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  348                ec->pstates +=
> > > 0f51010e87636e drivers/staging/echo/echo.c David Rowe          2009-05-20  349                    ((new - old) + (1 << (ec->log2taps - 1))) >> ec->log2taps;
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  350                if (ec->pstates < 0)
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  351                        ec->pstates = 0;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  352        }
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  353
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  354        /* Calculate short term average levels using simple single pole IIRs */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  355
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  356        ec->ltxacc += abs(tx) - ec->ltx;
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  357        ec->ltx = (ec->ltxacc + (1 << 4)) >> 5;
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  358        ec->lrxacc += abs(rx) - ec->lrx;
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  359        ec->lrx = (ec->lrxacc + (1 << 4)) >> 5;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  360
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  361        /* Foreground filter */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  362
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  363        ec->fir_state.coeffs = ec->fir_taps16[0];
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  364        echo_value = fir16(&ec->fir_state, tx);
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  365        ec->clean = rx - echo_value;
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  366        ec->lcleanacc += abs(ec->clean) - ec->lclean;
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  367        ec->lclean = (ec->lcleanacc + (1 << 4)) >> 5;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  368
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  369        /* Background filter */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  370
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  371        echo_value = fir16(&ec->fir_state_bg, tx);
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  372        clean_bg = rx - echo_value;
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  373        ec->lclean_bgacc += abs(clean_bg) - ec->lclean_bg;
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  374        ec->lclean_bg = (ec->lclean_bgacc + (1 << 4)) >> 5;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  375
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  376        /* Background Filter adaption */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  377
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  378        /* Almost always adap bg filter, just simple DT and energy
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  379           detection to minimise adaption in cases of strong double talk.
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  380           However this is not critical for the dual path algorithm.
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  381         */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  382        ec->factor = 0;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  383        ec->shift = 0;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06 @384        if ((ec->nonupdate_dwell == 0)) {
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  385                int p, logp, shift;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  386
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  387                /* Determine:
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  388
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  389                   f = Beta * clean_bg_rx/P ------ (1)
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  390
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  391                   where P is the total power in the filter states.
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  392
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  393                   The Boffins have shown that if we obey (1) we converge
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  394                   quickly and avoid instability.
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  395
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  396                   The correct factor f must be in Q30, as this is the fixed
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  397                   point format required by the lms_adapt_bg() function,
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  398                   therefore the scaled version of (1) is:
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  399
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  400                   (2^30) * f  = (2^30) * Beta * clean_bg_rx/P
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  401                   factor      = (2^30) * Beta * clean_bg_rx/P     ----- (2)
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  402
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  403                   We have chosen Beta = 0.25 by experiment, so:
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  404
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  405                   factor      = (2^30) * (2^-2) * clean_bg_rx/P
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  406
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  407                   (30 - 2 - log2(P))
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  408                   factor      = clean_bg_rx 2                     ----- (3)
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  409
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  410                   To avoid a divide we approximate log2(P) as top_bit(P),
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  411                   which returns the position of the highest non-zero bit in
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  412                   P.  This approximation introduces an error as large as a
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  413                   factor of 2, but the algorithm seems to handle it OK.
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  414
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  415                   Come to think of it a divide may not be a big deal on a
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  416                   modern DSP, so its probably worth checking out the cycles
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  417                   for a divide versus a top_bit() implementation.
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  418                 */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  419
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  420                p = MIN_TX_POWER_FOR_ADAPTION + ec->pstates;
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  421                logp = top_bit(p) + ec->log2taps;
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  422                shift = 30 - 2 - logp;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  423                ec->shift = shift;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  424
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  425                lms_adapt_bg(ec, clean_bg, shift);
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  426        }
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  427
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  428        /* very simple DTD to make sure we dont try and adapt with strong
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  429           near end speech */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  430
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  431        ec->adapt = 0;
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  432        if ((ec->lrx > MIN_RX_POWER_FOR_ADAPTION) && (ec->lrx > ec->ltx))
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  433                ec->nonupdate_dwell = DTD_HANGOVER;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  434        if (ec->nonupdate_dwell)
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  435                ec->nonupdate_dwell--;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  436
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  437        /* Transfer logic */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  438
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  439        /* These conditions are from the dual path paper [1], I messed with
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  440           them a bit to improve performance. */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  441
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  442        if ((ec->adaption_mode & ECHO_CAN_USE_ADAPTION) &&
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  443            (ec->nonupdate_dwell == 0) &&
> > > dc57a3ea80a85a drivers/staging/echo/echo.c Alexander Beregalov 2009-03-12  444            /* (ec->Lclean_bg < 0.875*ec->Lclean) */
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  445            (8 * ec->lclean_bg < 7 * ec->lclean) &&
> > > dc57a3ea80a85a drivers/staging/echo/echo.c Alexander Beregalov 2009-03-12  446            /* (ec->Lclean_bg < 0.125*ec->Ltx) */
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  447            (8 * ec->lclean_bg < ec->ltx)) {
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  448                if (ec->cond_met == 6) {
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  449                        /*
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  450                         * BG filter has had better results for 6 consecutive
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  451                         * samples
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  452                         */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  453                        ec->adapt = 1;
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  454                        memcpy(ec->fir_taps16[0], ec->fir_taps16[1],
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  455                               ec->taps * sizeof(int16_t));
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  456                } else
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  457                        ec->cond_met++;
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  458        } else
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  459                ec->cond_met = 0;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  460
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  461        /* Non-Linear Processing */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  462
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  463        ec->clean_nlp = ec->clean;
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  464        if (ec->adaption_mode & ECHO_CAN_USE_NLP) {
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  465                /*
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  466                 * Non-linear processor - a fancy way to say "zap small
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  467                 * signals, to avoid residual echo due to (uLaw/ALaw)
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  468                 * non-linearity in the channel.".
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  469                 */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  470
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  471                if ((16 * ec->lclean < ec->ltx)) {
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  472                        /*
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  473                         * Our e/c has improved echo by at least 24 dB (each
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  474                         * factor of 2 is 6dB, so 2*2*2*2=16 is the same as
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  475                         * 6+6+6+6=24dB)
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  476                         */
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  477                        if (ec->adaption_mode & ECHO_CAN_USE_CNG) {
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  478                                ec->cng_level = ec->lbgn;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  479
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  480                                /*
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  481                                 * Very elementary comfort noise generation.
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  482                                 * Just random numbers rolled off very vaguely
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  483                                 * Hoth-like.  DR: This noise doesn't sound
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  484                                 * quite right to me - I suspect there are some
> > > 83aa3c7bf3f04a drivers/staging/echo/echo.c Jonathan Neuschäfer 2011-03-01  485                                 * overflow issues in the filtering as it's too
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  486                                 * "crackly".
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  487                                 * TODO: debug this, maybe just play noise at
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  488                                 * high level or look at spectrum.
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  489                                 */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  490
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  491                                ec->cng_rndnum =
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  492                                    1664525U * ec->cng_rndnum + 1013904223U;
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  493                                ec->cng_filter =
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  494                                    ((ec->cng_rndnum & 0xFFFF) - 32768 +
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  495                                     5 * ec->cng_filter) >> 3;
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  496                                ec->clean_nlp =
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  497                                    (ec->cng_filter * ec->cng_level * 8) >> 14;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  498
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  499                        } else if (ec->adaption_mode & ECHO_CAN_USE_CLIP) {
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  500                                /* This sounds much better than CNG */
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  501                                if (ec->clean_nlp > ec->lbgn)
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  502                                        ec->clean_nlp = ec->lbgn;
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  503                                if (ec->clean_nlp < -ec->lbgn)
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  504                                        ec->clean_nlp = -ec->lbgn;
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  505                        } else {
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  506                                /*
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  507                                 * just mute the residual, doesn't sound very
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  508                                 * good, used mainly in G168 tests
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  509                                 */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  510                                ec->clean_nlp = 0;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  511                        }
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  512                } else {
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  513                        /*
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  514                         * Background noise estimator.  I tried a few
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  515                         * algorithms here without much luck.  This very simple
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  516                         * one seems to work best, we just average the level
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  517                         * using a slow (1 sec time const) filter if the
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  518                         * current level is less than a (experimentally
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  519                         * derived) constant.  This means we dont include high
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  520                         * level signals like near end speech.  When combined
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  521                         * with CNG or especially CLIP seems to work OK.
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  522                         */
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  523                        if (ec->lclean < 40) {
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  524                                ec->lbgn_acc += abs(ec->clean) - ec->lbgn;
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  525                                ec->lbgn = (ec->lbgn_acc + (1 << 11)) >> 12;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  526                        }
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  527                }
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  528        }
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  529
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  530        /* Roll around the taps buffer */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  531        if (ec->curr_pos <= 0)
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  532                ec->curr_pos = ec->taps;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  533        ec->curr_pos--;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  534
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  535        if (ec->adaption_mode & ECHO_CAN_DISABLE)
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  536                ec->clean_nlp = rx;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  537
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  538        /* Output scaled back up again to match input scaling */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  539
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  540        return (int16_t) ec->clean_nlp << 1;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  541  }
> > > 9d8f2d5dfbcc9d drivers/staging/echo/echo.c Tzafrir Cohen       2008-10-12  542  EXPORT_SYMBOL_GPL(oslec_update);
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  543
> > >
> > > :::::: The code at line 384 was first introduced by commit
> > > :::::: 10602db812fa270fc923f5e48fb47202288828f3 Staging: add echo cancelation module
> > >
> > > :::::: TO: David Rowe <david@rowetel.com>
> > > :::::: CC: Greg Kroah-Hartman <gregkh@suse.de>
> > >
> > > ---
> > > 0-DAY CI Kernel Test Service, Intel Corporation
> > > https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
> > >


-- 
Thanks,
~Nick Desaulniers

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [chrome-os:chromeos-4.19 21350/21402] drivers/misc/echo/echo.c:384:27: error: equality comparison with extraneous parentheses
@ 2020-04-15 17:51       ` Nick Desaulniers
  0 siblings, 0 replies; 9+ messages in thread
From: Nick Desaulniers @ 2020-04-15 17:51 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 40758 bytes --]

On Tue, Apr 14, 2020 at 5:56 PM 'Guenter Roeck' via Clang Built Linux
<clang-built-linux@googlegroups.com> wrote:
>
> On Tue, Apr 14, 2020 at 5:26 PM Nathan Chancellor
> <natechancellor@gmail.com> wrote:
> >
> > Hi all,
> >
> > Sorry for yet another convergeance on this commit... :/ hopefully this
> > does not continue for much longer. None of the warnings are obviously
> > caused by the patch below.
>> Fixed by commit 85dc2c65e6c9 ("misc: echo: Remove unnecessary
>> parentheses and simplify check for zero").
> >
> No worries.
>
> I noticed that the problems are pretty much all fixed in the upstream
> kernel. I just wasn't sure if it would be worthwhile sending a request
> to stable@ to have them applied to 4.19.y (and if necessary 5.4.y).
> Any suggestions ?

We should strive to be warning free on stable.  Thanks for identifying
the fix Nathan.

Greg, Sasha,
Would you please cherry pick 85dc2c65e6c9 to 4.19.y, 4.14.y, 4.9.y,
and 4.4.y (maybe 3.18, didn't check that one)? It applies cleanly and
is a trivial fix for a warning that landed in v4.20-rc1.

`git describe --contains "$tag" | sed 's/~.*//'` is my trick for
finding the first tag that contained a commit.

>
> Thanks,
> Guenter
>
>
> Guenter
>
> > On Wed, Apr 15, 2020 at 06:09:47AM +0800, kbuild test robot wrote:
> > > tree:   https://chromium.googlesource.com/chromiumos/third_party/kernel chromeos-4.19
> > > head:   e747fc8dfce13c501be9b7032a5a3d8249bc27ab
> > > commit: 12bd892cc0bd4a700dd41aa4b0d1e0cfc128e3e4 [21350/21402] CHROMIUM: Merge 'v4.19.114' into chromeos-4.19
> > > config: x86_64-randconfig-c002-20200414 (attached as .config)
> > > compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project f3da6b7ab5698bb0b9bd208972115dbcbbc59f27)
> > > reproduce:
> > >         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> > >         chmod +x ~/bin/make.cross
> > >         git checkout 12bd892cc0bd4a700dd41aa4b0d1e0cfc128e3e4
> > >         # save the attached .config to linux build tree
> > >         COMPILER=clang make.cross ARCH=x86_64
> > >
> > > If you fix the issue, kindly add following tag as appropriate
> > > Reported-by: kbuild test robot <lkp@intel.com>
> > >
> > > All errors (new ones prefixed by >>):
> > >
> > > >> drivers/misc/echo/echo.c:384:27: error: equality comparison with extraneous parentheses [-Werror,-Wparentheses-equality]
> > >            if ((ec->nonupdate_dwell == 0)) {
> > >                 ~~~~~~~~~~~~~~~~~~~~^~~~
> > >    drivers/misc/echo/echo.c:384:27: note: remove extraneous parentheses around the comparison to silence this warning
> > >            if ((ec->nonupdate_dwell == 0)) {
> > >                ~                    ^   ~
> > >    drivers/misc/echo/echo.c:384:27: note: use '=' to turn this equality comparison into an assignment
> > >            if ((ec->nonupdate_dwell == 0)) {
> > >                                     ^~
> > >                                     =
> > >    1 error generated.
> >
> > Fixed by commit 85dc2c65e6c9 ("misc: echo: Remove unnecessary
> > parentheses and simplify check for zero").
> >
> > > >> net/decnet/dn_dev.c:1366:10: error: address of array 'dev->name' will always evaluate to 'true' [-Werror,-Wpointer-bool-conversion]
> > >                                    dev->name ? dev->name : "???",
> > >                                    ~~~~~^~~~ ~
> > >    1 error generated.
> >
> > Fixed by commit 5b9b0a80aa1a ("decnet: Remove unnecessary check for
> > dev->name").
> >
> > > >> drivers/regulator/da903x.c:395:2: error: division by zero is undefined [-Werror,-Wdivision-by-zero]
> > >            DA9030_LDO(13, 2100, 2100, 0, INVAL, 0, 0, RCTL11, 3), /* fixed @2.1V */
> > >            ^                          ~
> > >    drivers/regulator/da903x.c:359:2: note: expanded from macro 'DA9030_LDO'
> > >            DA903x_LDO(DA9030, _id, min, max, step, vreg, shift, nbits, ereg, ebit)
> > >            ^                                 ~~~~
> > >    drivers/regulator/da903x.c:320:39: note: expanded from macro 'DA903x_LDO'
> > >                    .n_voltages = (step) ? ((max - min) / step + 1) : 1,    \
> > >                                                        ^ ~~~~
> > >    drivers/regulator/da903x.c:415:2: error: division by zero is undefined [-Werror,-Wdivision-by-zero]
> > >            DA9034_LDO(5, 3100, 3100, 0, INVAL, 0, 0, OVER3, 7), /* fixed @3.1V */
> > >            ^                         ~
> > >    drivers/regulator/da903x.c:356:2: note: expanded from macro 'DA9034_LDO'
> > >            DA903x_LDO(DA9034, _id, min, max, step, vreg, shift, nbits, ereg, ebit)
> > >            ^                                 ~~~~
> > >    drivers/regulator/da903x.c:320:39: note: expanded from macro 'DA903x_LDO'
> > >                    .n_voltages = (step) ? ((max - min) / step + 1) : 1,    \
> > >                                                        ^ ~~~~
> > >    2 errors generated.
> >
> > "Fixed" by commit 0077aaaeeb69 ("regulator: da903x: don't build with
> > clang"). I do not think the Clang fix ever got finalized.
> >
> > >    In file included from drivers/scsi/osd/osd_uld.c:60:
> > >    In file included from include/scsi/osd_initiator.h:18:
> > > >> include/scsi/osd_types.h:31:21: error: 'weak' attribute only applies to variables, functions, and classes [-Werror,-Wignored-attributes]
> > >    static const struct __weak osd_obj_id osd_root_object = {0, 0};
> > >                        ^
> > >    include/linux/compiler_types.h:219:33: note: expanded from macro '__weak'
> > >    #define __weak                  __attribute__((weak))
> > >                                                   ^
> > >    1 error generated.
> >
> > "Fixed" by just deleting the driver in commit 19fcae3d4f2d ("scsi:
> > remove the SCSI OSD library"). I did send a patch to fix it which
> > spurred the deletion, if we wanted to take it in stable if we care:
> >
> > https://lore.kernel.org/lkml/20190126064740.12949-1-natechancellor(a)gmail.com/
> >
> > > vim +384 drivers/misc/echo/echo.c
> > >
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  273
> > > 9d8f2d5dfbcc9d drivers/staging/echo/echo.c Tzafrir Cohen       2008-10-12  274  int16_t oslec_update(struct oslec_state *ec, int16_t tx, int16_t rx)
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  275  {
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  276        int32_t echo_value;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  277        int clean_bg;
> > > 3ec50be588d773 drivers/staging/echo/echo.c Jesper Juhl         2012-06-27  278        int tmp;
> > > 3ec50be588d773 drivers/staging/echo/echo.c Jesper Juhl         2012-06-27  279        int tmp1;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  280
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  281        /*
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  282         * Input scaling was found be required to prevent problems when tx
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  283         * starts clipping.  Another possible way to handle this would be the
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  284         * filter coefficent scaling.
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  285         */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  286
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  287        ec->tx = tx;
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  288        ec->rx = rx;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  289        tx >>= 1;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  290        rx >>= 1;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  291
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  292        /*
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  293         * Filter DC, 3dB point is 160Hz (I think), note 32 bit precision
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  294         * required otherwise values do not track down to 0. Zero at DC, Pole
> > > 196e76e86a3a90 drivers/staging/echo/echo.c David Rowe          2009-08-23  295         * at (1-Beta) on real axis.  Some chip sets (like Si labs) don't
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  296         * need this, but something like a $10 X100P card does.  Any DC really
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  297         * slows down convergence.
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  298         *
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  299         * Note: removes some low frequency from the signal, this reduces the
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  300         * speech quality when listening to samples through headphones but may
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  301         * not be obvious through a telephone handset.
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  302         *
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  303         * Note that the 3dB frequency in radians is approx Beta, e.g. for Beta
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  304         * = 2^(-3) = 0.125, 3dB freq is 0.125 rads = 159Hz.
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  305         */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  306
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  307        if (ec->adaption_mode & ECHO_CAN_USE_RX_HPF) {
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  308                tmp = rx << 15;
> > > 196e76e86a3a90 drivers/staging/echo/echo.c David Rowe          2009-08-23  309
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  310                /*
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  311                 * Make sure the gain of the HPF is 1.0. This can still
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  312                 * saturate a little under impulse conditions, and it might
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  313                 * roll to 32768 and need clipping on sustained peak level
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  314                 * signals. However, the scale of such clipping is small, and
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  315                 * the error due to any saturation should not markedly affect
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  316                 * the downstream processing.
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  317                 */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  318                tmp -= (tmp >> 4);
> > > 196e76e86a3a90 drivers/staging/echo/echo.c David Rowe          2009-08-23  319
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  320                ec->rx_1 += -(ec->rx_1 >> DC_LOG2BETA) + tmp - ec->rx_2;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  321
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  322                /*
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  323                 * hard limit filter to prevent clipping.  Note that at this
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  324                 * stage rx should be limited to +/- 16383 due to right shift
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  325                 * above
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  326                 */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  327                tmp1 = ec->rx_1 >> 15;
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  328                if (tmp1 > 16383)
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  329                        tmp1 = 16383;
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  330                if (tmp1 < -16383)
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  331                        tmp1 = -16383;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  332                rx = tmp1;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  333                ec->rx_2 = tmp;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  334        }
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  335
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  336        /* Block average of power in the filter states.  Used for
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  337           adaption power calculation. */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  338
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  339        {
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  340                int new, old;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  341
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  342                /* efficient "out with the old and in with the new" algorithm so
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  343                   we don't have to recalculate over the whole block of
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  344                   samples. */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  345                new = (int)tx * (int)tx;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  346                old = (int)ec->fir_state.history[ec->fir_state.curr_pos] *
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  347                    (int)ec->fir_state.history[ec->fir_state.curr_pos];
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  348                ec->pstates +=
> > > 0f51010e87636e drivers/staging/echo/echo.c David Rowe          2009-05-20  349                    ((new - old) + (1 << (ec->log2taps - 1))) >> ec->log2taps;
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  350                if (ec->pstates < 0)
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  351                        ec->pstates = 0;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  352        }
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  353
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  354        /* Calculate short term average levels using simple single pole IIRs */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  355
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  356        ec->ltxacc += abs(tx) - ec->ltx;
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  357        ec->ltx = (ec->ltxacc + (1 << 4)) >> 5;
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  358        ec->lrxacc += abs(rx) - ec->lrx;
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  359        ec->lrx = (ec->lrxacc + (1 << 4)) >> 5;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  360
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  361        /* Foreground filter */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  362
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  363        ec->fir_state.coeffs = ec->fir_taps16[0];
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  364        echo_value = fir16(&ec->fir_state, tx);
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  365        ec->clean = rx - echo_value;
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  366        ec->lcleanacc += abs(ec->clean) - ec->lclean;
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  367        ec->lclean = (ec->lcleanacc + (1 << 4)) >> 5;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  368
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  369        /* Background filter */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  370
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  371        echo_value = fir16(&ec->fir_state_bg, tx);
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  372        clean_bg = rx - echo_value;
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  373        ec->lclean_bgacc += abs(clean_bg) - ec->lclean_bg;
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  374        ec->lclean_bg = (ec->lclean_bgacc + (1 << 4)) >> 5;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  375
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  376        /* Background Filter adaption */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  377
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  378        /* Almost always adap bg filter, just simple DT and energy
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  379           detection to minimise adaption in cases of strong double talk.
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  380           However this is not critical for the dual path algorithm.
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  381         */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  382        ec->factor = 0;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  383        ec->shift = 0;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06 @384        if ((ec->nonupdate_dwell == 0)) {
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  385                int p, logp, shift;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  386
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  387                /* Determine:
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  388
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  389                   f = Beta * clean_bg_rx/P ------ (1)
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  390
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  391                   where P is the total power in the filter states.
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  392
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  393                   The Boffins have shown that if we obey (1) we converge
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  394                   quickly and avoid instability.
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  395
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  396                   The correct factor f must be in Q30, as this is the fixed
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  397                   point format required by the lms_adapt_bg() function,
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  398                   therefore the scaled version of (1) is:
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  399
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  400                   (2^30) * f  = (2^30) * Beta * clean_bg_rx/P
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  401                   factor      = (2^30) * Beta * clean_bg_rx/P     ----- (2)
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  402
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  403                   We have chosen Beta = 0.25 by experiment, so:
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  404
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  405                   factor      = (2^30) * (2^-2) * clean_bg_rx/P
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  406
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  407                   (30 - 2 - log2(P))
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  408                   factor      = clean_bg_rx 2                     ----- (3)
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  409
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  410                   To avoid a divide we approximate log2(P) as top_bit(P),
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  411                   which returns the position of the highest non-zero bit in
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  412                   P.  This approximation introduces an error as large as a
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  413                   factor of 2, but the algorithm seems to handle it OK.
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  414
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  415                   Come to think of it a divide may not be a big deal on a
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  416                   modern DSP, so its probably worth checking out the cycles
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  417                   for a divide versus a top_bit() implementation.
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  418                 */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  419
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  420                p = MIN_TX_POWER_FOR_ADAPTION + ec->pstates;
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  421                logp = top_bit(p) + ec->log2taps;
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  422                shift = 30 - 2 - logp;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  423                ec->shift = shift;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  424
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  425                lms_adapt_bg(ec, clean_bg, shift);
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  426        }
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  427
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  428        /* very simple DTD to make sure we dont try and adapt with strong
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  429           near end speech */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  430
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  431        ec->adapt = 0;
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  432        if ((ec->lrx > MIN_RX_POWER_FOR_ADAPTION) && (ec->lrx > ec->ltx))
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  433                ec->nonupdate_dwell = DTD_HANGOVER;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  434        if (ec->nonupdate_dwell)
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  435                ec->nonupdate_dwell--;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  436
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  437        /* Transfer logic */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  438
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  439        /* These conditions are from the dual path paper [1], I messed with
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  440           them a bit to improve performance. */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  441
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  442        if ((ec->adaption_mode & ECHO_CAN_USE_ADAPTION) &&
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  443            (ec->nonupdate_dwell == 0) &&
> > > dc57a3ea80a85a drivers/staging/echo/echo.c Alexander Beregalov 2009-03-12  444            /* (ec->Lclean_bg < 0.875*ec->Lclean) */
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  445            (8 * ec->lclean_bg < 7 * ec->lclean) &&
> > > dc57a3ea80a85a drivers/staging/echo/echo.c Alexander Beregalov 2009-03-12  446            /* (ec->Lclean_bg < 0.125*ec->Ltx) */
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  447            (8 * ec->lclean_bg < ec->ltx)) {
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  448                if (ec->cond_met == 6) {
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  449                        /*
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  450                         * BG filter has had better results for 6 consecutive
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  451                         * samples
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  452                         */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  453                        ec->adapt = 1;
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  454                        memcpy(ec->fir_taps16[0], ec->fir_taps16[1],
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  455                               ec->taps * sizeof(int16_t));
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  456                } else
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  457                        ec->cond_met++;
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  458        } else
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  459                ec->cond_met = 0;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  460
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  461        /* Non-Linear Processing */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  462
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  463        ec->clean_nlp = ec->clean;
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  464        if (ec->adaption_mode & ECHO_CAN_USE_NLP) {
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  465                /*
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  466                 * Non-linear processor - a fancy way to say "zap small
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  467                 * signals, to avoid residual echo due to (uLaw/ALaw)
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  468                 * non-linearity in the channel.".
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  469                 */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  470
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  471                if ((16 * ec->lclean < ec->ltx)) {
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  472                        /*
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  473                         * Our e/c has improved echo by at least 24 dB (each
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  474                         * factor of 2 is 6dB, so 2*2*2*2=16 is the same as
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  475                         * 6+6+6+6=24dB)
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  476                         */
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  477                        if (ec->adaption_mode & ECHO_CAN_USE_CNG) {
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  478                                ec->cng_level = ec->lbgn;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  479
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  480                                /*
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  481                                 * Very elementary comfort noise generation.
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  482                                 * Just random numbers rolled off very vaguely
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  483                                 * Hoth-like.  DR: This noise doesn't sound
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  484                                 * quite right to me - I suspect there are some
> > > 83aa3c7bf3f04a drivers/staging/echo/echo.c Jonathan Neuschäfer 2011-03-01  485                                 * overflow issues in the filtering as it's too
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  486                                 * "crackly".
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  487                                 * TODO: debug this, maybe just play noise at
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  488                                 * high level or look at spectrum.
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  489                                 */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  490
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  491                                ec->cng_rndnum =
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  492                                    1664525U * ec->cng_rndnum + 1013904223U;
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  493                                ec->cng_filter =
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  494                                    ((ec->cng_rndnum & 0xFFFF) - 32768 +
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  495                                     5 * ec->cng_filter) >> 3;
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  496                                ec->clean_nlp =
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  497                                    (ec->cng_filter * ec->cng_level * 8) >> 14;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  498
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  499                        } else if (ec->adaption_mode & ECHO_CAN_USE_CLIP) {
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  500                                /* This sounds much better than CNG */
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  501                                if (ec->clean_nlp > ec->lbgn)
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  502                                        ec->clean_nlp = ec->lbgn;
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  503                                if (ec->clean_nlp < -ec->lbgn)
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  504                                        ec->clean_nlp = -ec->lbgn;
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  505                        } else {
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  506                                /*
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  507                                 * just mute the residual, doesn't sound very
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  508                                 * good, used mainly in G168 tests
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  509                                 */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  510                                ec->clean_nlp = 0;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  511                        }
> > > 4460a860f72898 drivers/staging/echo/echo.c J.R. Mauro          2008-10-20  512                } else {
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  513                        /*
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  514                         * Background noise estimator.  I tried a few
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  515                         * algorithms here without much luck.  This very simple
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  516                         * one seems to work best, we just average the level
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  517                         * using a slow (1 sec time const) filter if the
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  518                         * current level is less than a (experimentally
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  519                         * derived) constant.  This means we dont include high
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  520                         * level signals like near end speech.  When combined
> > > 49bb9e6d753469 drivers/staging/echo/echo.c Greg Kroah-Hartman  2009-08-10  521                         * with CNG or especially CLIP seems to work OK.
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  522                         */
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  523                        if (ec->lclean < 40) {
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  524                                ec->lbgn_acc += abs(ec->clean) - ec->lbgn;
> > > 0c474826cfdd24 drivers/staging/echo/echo.c Lisa Nguyen         2013-05-05  525                                ec->lbgn = (ec->lbgn_acc + (1 << 11)) >> 12;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  526                        }
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  527                }
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  528        }
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  529
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  530        /* Roll around the taps buffer */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  531        if (ec->curr_pos <= 0)
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  532                ec->curr_pos = ec->taps;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  533        ec->curr_pos--;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  534
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  535        if (ec->adaption_mode & ECHO_CAN_DISABLE)
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  536                ec->clean_nlp = rx;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  537
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  538        /* Output scaled back up again to match input scaling */
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  539
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  540        return (int16_t) ec->clean_nlp << 1;
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  541  }
> > > 9d8f2d5dfbcc9d drivers/staging/echo/echo.c Tzafrir Cohen       2008-10-12  542  EXPORT_SYMBOL_GPL(oslec_update);
> > > 10602db812fa27 drivers/staging/echo/echo.c David Rowe          2008-10-06  543
> > >
> > > :::::: The code at line 384 was first introduced by commit
> > > :::::: 10602db812fa270fc923f5e48fb47202288828f3 Staging: add echo cancelation module
> > >
> > > :::::: TO: David Rowe <david@rowetel.com>
> > > :::::: CC: Greg Kroah-Hartman <gregkh@suse.de>
> > >
> > > ---
> > > 0-DAY CI Kernel Test Service, Intel Corporation
> > > https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
> > >


-- 
Thanks,
~Nick Desaulniers

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [chrome-os:chromeos-4.19 21350/21402] drivers/misc/echo/echo.c:384:27: error: equality comparison with extraneous parentheses
  2020-04-15 17:51       ` Nick Desaulniers
@ 2020-04-15 18:08         ` Kees Cook
  -1 siblings, 0 replies; 9+ messages in thread
From: Kees Cook @ 2020-04-15 18:08 UTC (permalink / raw)
  To: Nick Desaulniers
  Cc: Greg KH, Sasha Levin, # 3.4.x, Guenter Roeck, Nathan Chancellor,
	kbuild test robot, cros-kernel-buildreports, kbuild-all,
	clang-built-linux

On Wed, Apr 15, 2020 at 10:51:37AM -0700, 'Nick Desaulniers' via Clang Built Linux wrote:
> `git describe --contains "$tag" | sed 's/~.*//'` is my trick for
> finding the first tag that contained a commit.

BTW, this might be a useful tweak: since I have so many tags in my tree
beyond just Linus's tags (e.g. from linux-next), I also include "--match
'v*'". My ~/bin/git-contains is:

git describe --match 'v*' --contains "$1" | cut -d~ -f1 | cut -d^ -f1

(without this, my "git contains 85dc2c65e6c9" would report "next-20180927")

-- 
Kees Cook

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [chrome-os:chromeos-4.19 21350/21402] drivers/misc/echo/echo.c:384:27: error: equality comparison with extraneous parentheses
@ 2020-04-15 18:08         ` Kees Cook
  0 siblings, 0 replies; 9+ messages in thread
From: Kees Cook @ 2020-04-15 18:08 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 560 bytes --]

On Wed, Apr 15, 2020 at 10:51:37AM -0700, 'Nick Desaulniers' via Clang Built Linux wrote:
> `git describe --contains "$tag" | sed 's/~.*//'` is my trick for
> finding the first tag that contained a commit.

BTW, this might be a useful tweak: since I have so many tags in my tree
beyond just Linus's tags (e.g. from linux-next), I also include "--match
'v*'". My ~/bin/git-contains is:

git describe --match 'v*' --contains "$1" | cut -d~ -f1 | cut -d^ -f1

(without this, my "git contains 85dc2c65e6c9" would report "next-20180927")

-- 
Kees Cook

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [chrome-os:chromeos-4.19 21350/21402] drivers/misc/echo/echo.c:384:27: error: equality comparison with extraneous parentheses
  2020-04-15 17:51       ` Nick Desaulniers
@ 2020-04-16  3:31         ` Sasha Levin
  -1 siblings, 0 replies; 9+ messages in thread
From: Sasha Levin @ 2020-04-16  3:31 UTC (permalink / raw)
  To: Nick Desaulniers
  Cc: Greg KH, # 3.4.x, Guenter Roeck, Nathan Chancellor,
	kbuild test robot, cros-kernel-buildreports, kbuild-all,
	clang-built-linux

On Wed, Apr 15, 2020 at 10:51:37AM -0700, Nick Desaulniers wrote:
>On Tue, Apr 14, 2020 at 5:56 PM 'Guenter Roeck' via Clang Built Linux
><clang-built-linux@googlegroups.com> wrote:
>>
>> On Tue, Apr 14, 2020 at 5:26 PM Nathan Chancellor
>> <natechancellor@gmail.com> wrote:
>> >
>> > Hi all,
>> >
>> > Sorry for yet another convergeance on this commit... :/ hopefully this
>> > does not continue for much longer. None of the warnings are obviously
>> > caused by the patch below.
>>> Fixed by commit 85dc2c65e6c9 ("misc: echo: Remove unnecessary
>>> parentheses and simplify check for zero").
>> >
>> No worries.
>>
>> I noticed that the problems are pretty much all fixed in the upstream
>> kernel. I just wasn't sure if it would be worthwhile sending a request
>> to stable@ to have them applied to 4.19.y (and if necessary 5.4.y).
>> Any suggestions ?
>
>We should strive to be warning free on stable.  Thanks for identifying
>the fix Nathan.
>
>Greg, Sasha,
>Would you please cherry pick 85dc2c65e6c9 to 4.19.y, 4.14.y, 4.9.y,
>and 4.4.y (maybe 3.18, didn't check that one)? It applies cleanly and
>is a trivial fix for a warning that landed in v4.20-rc1.

I'll grab it, but could we please look into disabling some clang
warnings?

I understand warnings that might warn us about dangerous code, but this
reads to me like something checkpatch might complain about...

-- 
Thanks,
Sasha

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [chrome-os:chromeos-4.19 21350/21402] drivers/misc/echo/echo.c:384:27: error: equality comparison with extraneous parentheses
@ 2020-04-16  3:31         ` Sasha Levin
  0 siblings, 0 replies; 9+ messages in thread
From: Sasha Levin @ 2020-04-16  3:31 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 1428 bytes --]

On Wed, Apr 15, 2020 at 10:51:37AM -0700, Nick Desaulniers wrote:
>On Tue, Apr 14, 2020 at 5:56 PM 'Guenter Roeck' via Clang Built Linux
><clang-built-linux@googlegroups.com> wrote:
>>
>> On Tue, Apr 14, 2020 at 5:26 PM Nathan Chancellor
>> <natechancellor@gmail.com> wrote:
>> >
>> > Hi all,
>> >
>> > Sorry for yet another convergeance on this commit... :/ hopefully this
>> > does not continue for much longer. None of the warnings are obviously
>> > caused by the patch below.
>>> Fixed by commit 85dc2c65e6c9 ("misc: echo: Remove unnecessary
>>> parentheses and simplify check for zero").
>> >
>> No worries.
>>
>> I noticed that the problems are pretty much all fixed in the upstream
>> kernel. I just wasn't sure if it would be worthwhile sending a request
>> to stable@ to have them applied to 4.19.y (and if necessary 5.4.y).
>> Any suggestions ?
>
>We should strive to be warning free on stable.  Thanks for identifying
>the fix Nathan.
>
>Greg, Sasha,
>Would you please cherry pick 85dc2c65e6c9 to 4.19.y, 4.14.y, 4.9.y,
>and 4.4.y (maybe 3.18, didn't check that one)? It applies cleanly and
>is a trivial fix for a warning that landed in v4.20-rc1.

I'll grab it, but could we please look into disabling some clang
warnings?

I understand warnings that might warn us about dangerous code, but this
reads to me like something checkpatch might complain about...

-- 
Thanks,
Sasha

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [chrome-os:chromeos-4.19 21350/21402] drivers/misc/echo/echo.c:384:27: error: equality comparison with extraneous parentheses
  2020-04-16  3:31         ` Sasha Levin
  (?)
@ 2020-04-16  3:39         ` Nathan Chancellor
  -1 siblings, 0 replies; 9+ messages in thread
From: Nathan Chancellor @ 2020-04-16  3:39 UTC (permalink / raw)
  To: Sasha Levin
  Cc: Nick Desaulniers, Greg KH, # 3.4.x, Guenter Roeck,
	kbuild test robot, cros-kernel-buildreports, kbuild-all,
	clang-built-linux

On Wed, Apr 15, 2020 at 11:31:00PM -0400, Sasha Levin wrote:
> On Wed, Apr 15, 2020 at 10:51:37AM -0700, Nick Desaulniers wrote:
> > On Tue, Apr 14, 2020 at 5:56 PM 'Guenter Roeck' via Clang Built Linux
> > <clang-built-linux@googlegroups.com> wrote:
> > > 
> > > On Tue, Apr 14, 2020 at 5:26 PM Nathan Chancellor
> > > <natechancellor@gmail.com> wrote:
> > > >
> > > > Hi all,
> > > >
> > > > Sorry for yet another convergeance on this commit... :/ hopefully this
> > > > does not continue for much longer. None of the warnings are obviously
> > > > caused by the patch below.
> > > > Fixed by commit 85dc2c65e6c9 ("misc: echo: Remove unnecessary
> > > > parentheses and simplify check for zero").
> > > >
> > > No worries.
> > > 
> > > I noticed that the problems are pretty much all fixed in the upstream
> > > kernel. I just wasn't sure if it would be worthwhile sending a request
> > > to stable@ to have them applied to 4.19.y (and if necessary 5.4.y).
> > > Any suggestions ?
> > 
> > We should strive to be warning free on stable.  Thanks for identifying
> > the fix Nathan.
> > 
> > Greg, Sasha,
> > Would you please cherry pick 85dc2c65e6c9 to 4.19.y, 4.14.y, 4.9.y,
> > and 4.4.y (maybe 3.18, didn't check that one)? It applies cleanly and
> > is a trivial fix for a warning that landed in v4.20-rc1.
> 
> I'll grab it, but could we please look into disabling some clang
> warnings?
> 
> I understand warnings that might warn us about dangerous code, but this
> reads to me like something checkpatch might complain about...
> 
> -- 
> Thanks,
> Sasha

For what it's worth, I have fixed all of these (at least that I know of)
in mainline so there is no point in disabling it there. If you want to
disable it in stable, that's a different discussion. Another option
would be asking the 0day team not to run randconfig builds with clang on
stable trees. I'd prefer that over disabling the warning.

This warning wants to make sure that (a == b) and ((a = b)) do not get
mixed up, which seems worthwhile: https://godbolt.org/z/GUdL5X

Cheers,
Nathan

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2020-04-16  3:39 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-14 22:09 [chrome-os:chromeos-4.19 21350/21402] drivers/misc/echo/echo.c:384:27: error: equality comparison with extraneous parentheses kbuild test robot
     [not found] ` <20200415002618.GB19509@ubuntu-s3-xlarge-x86>
2020-04-15  0:56   ` Guenter Roeck
2020-04-15 17:51     ` Nick Desaulniers
2020-04-15 17:51       ` Nick Desaulniers
2020-04-15 18:08       ` Kees Cook
2020-04-15 18:08         ` Kees Cook
2020-04-16  3:31       ` Sasha Levin
2020-04-16  3:31         ` Sasha Levin
2020-04-16  3:39         ` Nathan Chancellor

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.