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(a)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 at line 384 was first introduced by commit
:::::: 10602db812fa270fc923f5e48fb47202288828f3 Staging: add echo cancelation module
:::::: TO: David Rowe <david(a)rowetel.com>
:::::: CC: Greg Kroah-Hartman <gregkh(a)suse.de>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org