drivers: dmic: Intel PDM digital mic driver
Added an implementation of driver for Intel PDM digital microphone controller . Signed-off-by: Sathish Kuttan <sathish.k.kuttan@intel.com>
This commit is contained in:
parent
4ab023d31f
commit
c91faf9008
17 changed files with 3376 additions and 0 deletions
|
@ -52,3 +52,5 @@ CONFIG_UART_NS16550=y
|
|||
CONFIG_AUDIO=y
|
||||
CONFIG_AUDIO_CODEC=y
|
||||
CONFIG_AUDIO_TLV320DAC=y
|
||||
CONFIG_AUDIO_DMIC=y
|
||||
CONFIG_AUDIO_INTEL_DMIC=y
|
||||
|
|
|
@ -1,3 +1,13 @@
|
|||
zephyr_library()
|
||||
|
||||
zephyr_library_sources_ifdef(CONFIG_AUDIO_TLV320DAC tlv320dac310x.c)
|
||||
zephyr_library_sources_ifdef(CONFIG_AUDIO_INTEL_DMIC intel_dmic.c)
|
||||
zephyr_library_sources_ifdef(CONFIG_AUDIO_INTEL_DMIC decimation/pdm_decim_int32_02_4288_5100_010_095.c)
|
||||
zephyr_library_sources_ifdef(CONFIG_AUDIO_INTEL_DMIC decimation/pdm_decim_int32_02_4375_5100_010_095.c)
|
||||
zephyr_library_sources_ifdef(CONFIG_AUDIO_INTEL_DMIC decimation/pdm_decim_int32_03_3850_5100_010_095.c)
|
||||
zephyr_library_sources_ifdef(CONFIG_AUDIO_INTEL_DMIC decimation/pdm_decim_int32_03_4375_5100_010_095.c)
|
||||
zephyr_library_sources_ifdef(CONFIG_AUDIO_INTEL_DMIC decimation/pdm_decim_int32_04_4375_5100_010_095.c)
|
||||
zephyr_library_sources_ifdef(CONFIG_AUDIO_INTEL_DMIC decimation/pdm_decim_int32_05_4331_5100_010_095.c)
|
||||
zephyr_library_sources_ifdef(CONFIG_AUDIO_INTEL_DMIC decimation/pdm_decim_int32_06_4156_5100_010_095.c)
|
||||
zephyr_library_sources_ifdef(CONFIG_AUDIO_INTEL_DMIC decimation/pdm_decim_int32_08_4156_5380_010_090.c)
|
||||
zephyr_library_sources_ifdef(CONFIG_AUDIO_INTEL_DMIC decimation/pdm_decim_table.c)
|
||||
|
|
|
@ -35,4 +35,26 @@ source "subsys/logging/Kconfig.template.log_config"
|
|||
source "drivers/audio/Kconfig.tlv320dac"
|
||||
|
||||
endif # AUDIO_CODEC
|
||||
|
||||
menuconfig AUDIO_DMIC
|
||||
bool "Digital Microphone (Audio) Drivers"
|
||||
help
|
||||
Enable Digital Microphone Driver Configuration
|
||||
|
||||
if AUDIO_DMIC
|
||||
|
||||
config AUDIO_DMIC_INIT_PRIORITY
|
||||
int "Init priority"
|
||||
default 60
|
||||
help
|
||||
Audio Digital Microphone device driver initialization priority.
|
||||
|
||||
module = AUDIO_DMIC
|
||||
module-str = audio_dmic
|
||||
source "subsys/logging/Kconfig.template.log_config"
|
||||
|
||||
source "drivers/audio/Kconfig.intel_dmic"
|
||||
|
||||
endif # AUDIO_DMIC
|
||||
|
||||
endif # AUDIO
|
||||
|
|
11
drivers/audio/Kconfig.intel_dmic
Normal file
11
drivers/audio/Kconfig.intel_dmic
Normal file
|
@ -0,0 +1,11 @@
|
|||
#
|
||||
# Copyright (c) 2018 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
||||
menuconfig AUDIO_INTEL_DMIC
|
||||
bool "Intel digital PDM microphone driver support"
|
||||
depends on AUDIO_DMIC
|
||||
help
|
||||
Enable Intel digital PDM microphone driver
|
31
drivers/audio/decimation/pdm_decim_fir.h
Normal file
31
drivers/audio/decimation/pdm_decim_fir.h
Normal file
|
@ -0,0 +1,31 @@
|
|||
/*
|
||||
* Copyright (c) 2018, Intel Corporation
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
|
||||
* Sathish Kuttan <sathish.k.kuttan@intel.com>
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#ifndef __PDM_DECIM_FIR__H__
|
||||
#define __PDM_DECIM_FIR__H__
|
||||
|
||||
#define DMIC_FIR_LIST_LENGTH 8
|
||||
|
||||
/* Format for generated coefficients tables */
|
||||
|
||||
struct pdm_decim {
|
||||
int decim_factor;
|
||||
int length;
|
||||
int shift;
|
||||
int relative_passband;
|
||||
int relative_stopband;
|
||||
int passband_ripple;
|
||||
int stopband_ripple;
|
||||
const s32_t *coef;
|
||||
};
|
||||
|
||||
struct pdm_decim **pdm_decim_get_fir_list(void);
|
||||
|
||||
#endif /* __PDM_DECIM_FIR__H__ */
|
112
drivers/audio/decimation/pdm_decim_int32_02_4288_5100_010_095.c
Normal file
112
drivers/audio/decimation/pdm_decim_int32_02_4288_5100_010_095.c
Normal file
|
@ -0,0 +1,112 @@
|
|||
/*
|
||||
* Copyright (c) 2018, Intel Corporation
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
|
||||
* Sathish Kuttan <sathish.k.kuttan@intel.com>
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <zephyr.h>
|
||||
|
||||
#include "pdm_decim_fir.h"
|
||||
|
||||
static const s32_t fir_int32_02_4288_5100_010_095[91] = {
|
||||
-193886,
|
||||
104552,
|
||||
2140521,
|
||||
5355562,
|
||||
5945318,
|
||||
1216991,
|
||||
-4511367,
|
||||
-3527243,
|
||||
3415937,
|
||||
5526880,
|
||||
-1935806,
|
||||
-7515849,
|
||||
-386524,
|
||||
9252379,
|
||||
3862172,
|
||||
-10093681,
|
||||
-8251552,
|
||||
9738620,
|
||||
13536988,
|
||||
-7464432,
|
||||
-19100785,
|
||||
2935187,
|
||||
24375729,
|
||||
4314479,
|
||||
-28271418,
|
||||
-14141458,
|
||||
29999307,
|
||||
26636531,
|
||||
-28180625,
|
||||
-41208987,
|
||||
21649022,
|
||||
57264356,
|
||||
-8757879,
|
||||
-73520802,
|
||||
-12043366,
|
||||
88868414,
|
||||
43784598,
|
||||
-101162825,
|
||||
-91853580,
|
||||
106519993,
|
||||
169110273,
|
||||
-94206010,
|
||||
-317139630,
|
||||
5894310,
|
||||
739661049,
|
||||
1132200744,
|
||||
739661049,
|
||||
5894310,
|
||||
-317139630,
|
||||
-94206010,
|
||||
169110273,
|
||||
106519993,
|
||||
-91853580,
|
||||
-101162825,
|
||||
43784598,
|
||||
88868414,
|
||||
-12043366,
|
||||
-73520802,
|
||||
-8757879,
|
||||
57264356,
|
||||
21649022,
|
||||
-41208987,
|
||||
-28180625,
|
||||
26636531,
|
||||
29999307,
|
||||
-14141458,
|
||||
-28271418,
|
||||
4314479,
|
||||
24375729,
|
||||
2935187,
|
||||
-19100785,
|
||||
-7464432,
|
||||
13536988,
|
||||
9738620,
|
||||
-8251552,
|
||||
-10093681,
|
||||
3862172,
|
||||
9252379,
|
||||
-386524,
|
||||
-7515849,
|
||||
-1935806,
|
||||
5526880,
|
||||
3415937,
|
||||
-3527243,
|
||||
-4511367,
|
||||
1216991,
|
||||
5945318,
|
||||
5355562,
|
||||
2140521,
|
||||
104552,
|
||||
-193886
|
||||
|
||||
};
|
||||
|
||||
struct pdm_decim pdm_decim_int32_02_4288_5100_010_095 = {
|
||||
2, 91, 0, 4288, 5100, 10, 95, fir_int32_02_4288_5100_010_095
|
||||
};
|
122
drivers/audio/decimation/pdm_decim_int32_02_4375_5100_010_095.c
Normal file
122
drivers/audio/decimation/pdm_decim_int32_02_4375_5100_010_095.c
Normal file
|
@ -0,0 +1,122 @@
|
|||
/*
|
||||
* Copyright (c) 2018, Intel Corporation
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
|
||||
* Sathish Kuttan <sathish.k.kuttan@intel.com>
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <zephyr.h>
|
||||
|
||||
#include "pdm_decim_fir.h"
|
||||
|
||||
static const s32_t fir_int32_02_4375_5100_010_095[101] = {
|
||||
-587830,
|
||||
-2653881,
|
||||
-5154608,
|
||||
-4845367,
|
||||
-226473,
|
||||
4220832,
|
||||
2571159,
|
||||
-3184701,
|
||||
-4043579,
|
||||
2206821,
|
||||
5554546,
|
||||
-750496,
|
||||
-6923900,
|
||||
-1268584,
|
||||
8073360,
|
||||
4085183,
|
||||
-8546477,
|
||||
-7505364,
|
||||
8176185,
|
||||
11533751,
|
||||
-6471060,
|
||||
-15704256,
|
||||
3359707,
|
||||
19852409,
|
||||
1635593,
|
||||
-23144509,
|
||||
-8252640,
|
||||
25285013,
|
||||
16574479,
|
||||
-25723227,
|
||||
-26663304,
|
||||
23549736,
|
||||
38139664,
|
||||
-17943366,
|
||||
-50446983,
|
||||
8141043,
|
||||
63090267,
|
||||
7051351,
|
||||
-75166959,
|
||||
-29039894,
|
||||
85772627,
|
||||
60568979,
|
||||
-93167356,
|
||||
-106799776,
|
||||
94198973,
|
||||
180962815,
|
||||
-78385592,
|
||||
-324820245,
|
||||
-12243140,
|
||||
742491441,
|
||||
1151461281,
|
||||
742491441,
|
||||
-12243140,
|
||||
-324820245,
|
||||
-78385592,
|
||||
180962815,
|
||||
94198973,
|
||||
-106799776,
|
||||
-93167356,
|
||||
60568979,
|
||||
85772627,
|
||||
-29039894,
|
||||
-75166959,
|
||||
7051351,
|
||||
63090267,
|
||||
8141043,
|
||||
-50446983,
|
||||
-17943366,
|
||||
38139664,
|
||||
23549736,
|
||||
-26663304,
|
||||
-25723227,
|
||||
16574479,
|
||||
25285013,
|
||||
-8252640,
|
||||
-23144509,
|
||||
1635593,
|
||||
19852409,
|
||||
3359707,
|
||||
-15704256,
|
||||
-6471060,
|
||||
11533751,
|
||||
8176185,
|
||||
-7505364,
|
||||
-8546477,
|
||||
4085183,
|
||||
8073360,
|
||||
-1268584,
|
||||
-6923900,
|
||||
-750496,
|
||||
5554546,
|
||||
2206821,
|
||||
-4043579,
|
||||
-3184701,
|
||||
2571159,
|
||||
4220832,
|
||||
-226473,
|
||||
-4845367,
|
||||
-5154608,
|
||||
-2653881,
|
||||
-587830
|
||||
|
||||
};
|
||||
|
||||
struct pdm_decim pdm_decim_int32_02_4375_5100_010_095 = {
|
||||
2, 101, 0, 4375, 5100, 10, 95, fir_int32_02_4375_5100_010_095
|
||||
};
|
114
drivers/audio/decimation/pdm_decim_int32_03_3850_5100_010_095.c
Normal file
114
drivers/audio/decimation/pdm_decim_int32_03_3850_5100_010_095.c
Normal file
|
@ -0,0 +1,114 @@
|
|||
/*
|
||||
* Copyright (c) 2018, Intel Corporation
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
|
||||
* Sathish Kuttan <sathish.k.kuttan@intel.com>
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <zephyr.h>
|
||||
|
||||
#include "pdm_decim_fir.h"
|
||||
|
||||
static const s32_t fir_int32_03_3850_5100_010_095[93] = {
|
||||
44212,
|
||||
-302176,
|
||||
-1360920,
|
||||
-3291119,
|
||||
-5495374,
|
||||
-6588668,
|
||||
-5102927,
|
||||
-753403,
|
||||
4644861,
|
||||
7677973,
|
||||
5490212,
|
||||
-1618066,
|
||||
-9302333,
|
||||
-11445730,
|
||||
-4732005,
|
||||
7709057,
|
||||
17063964,
|
||||
14699335,
|
||||
-457541,
|
||||
-18980508,
|
||||
-26202607,
|
||||
-13319132,
|
||||
13695670,
|
||||
35545996,
|
||||
32740745,
|
||||
1994202,
|
||||
-37267233,
|
||||
-54079734,
|
||||
-29355959,
|
||||
25448678,
|
||||
71128406,
|
||||
67328423,
|
||||
5964667,
|
||||
-74773313,
|
||||
-111583346,
|
||||
-62643893,
|
||||
52737606,
|
||||
154899783,
|
||||
153311689,
|
||||
16759099,
|
||||
-184962926,
|
||||
-304661987,
|
||||
-201939017,
|
||||
160731847,
|
||||
673585388,
|
||||
1122541471,
|
||||
1300561761,
|
||||
1122541471,
|
||||
673585388,
|
||||
160731847,
|
||||
-201939017,
|
||||
-304661987,
|
||||
-184962926,
|
||||
16759099,
|
||||
153311689,
|
||||
154899783,
|
||||
52737606,
|
||||
-62643893,
|
||||
-111583346,
|
||||
-74773313,
|
||||
5964667,
|
||||
67328423,
|
||||
71128406,
|
||||
25448678,
|
||||
-29355959,
|
||||
-54079734,
|
||||
-37267233,
|
||||
1994202,
|
||||
32740745,
|
||||
35545996,
|
||||
13695670,
|
||||
-13319132,
|
||||
-26202607,
|
||||
-18980508,
|
||||
-457541,
|
||||
14699335,
|
||||
17063964,
|
||||
7709057,
|
||||
-4732005,
|
||||
-11445730,
|
||||
-9302333,
|
||||
-1618066,
|
||||
5490212,
|
||||
7677973,
|
||||
4644861,
|
||||
-753403,
|
||||
-5102927,
|
||||
-6588668,
|
||||
-5495374,
|
||||
-3291119,
|
||||
-1360920,
|
||||
-302176,
|
||||
44212
|
||||
|
||||
};
|
||||
|
||||
struct pdm_decim pdm_decim_int32_03_3850_5100_010_095 = {
|
||||
3, 93, 1, 3850, 5100, 10, 95, fir_int32_03_3850_5100_010_095
|
||||
};
|
178
drivers/audio/decimation/pdm_decim_int32_03_4375_5100_010_095.c
Normal file
178
drivers/audio/decimation/pdm_decim_int32_03_4375_5100_010_095.c
Normal file
|
@ -0,0 +1,178 @@
|
|||
/*
|
||||
* Copyright (c) 2018, Intel Corporation
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
|
||||
* Sathish Kuttan <sathish.k.kuttan@intel.com>
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <zephyr.h>
|
||||
|
||||
#include "pdm_decim_fir.h"
|
||||
|
||||
static const s32_t fir_int32_03_4375_5100_010_095[157] = {
|
||||
350904,
|
||||
1127891,
|
||||
2233546,
|
||||
3059556,
|
||||
2752177,
|
||||
818057,
|
||||
-2252661,
|
||||
-4944515,
|
||||
-5550704,
|
||||
-3466227,
|
||||
53089,
|
||||
2496755,
|
||||
1904111,
|
||||
-1421730,
|
||||
-4818556,
|
||||
-5204443,
|
||||
-1721082,
|
||||
3155305,
|
||||
5311444,
|
||||
2454515,
|
||||
-3518616,
|
||||
-7589471,
|
||||
-5713308,
|
||||
1327821,
|
||||
7901341,
|
||||
7958087,
|
||||
527903,
|
||||
-8633996,
|
||||
-11354795,
|
||||
-4214518,
|
||||
7627116,
|
||||
13970242,
|
||||
8263364,
|
||||
-5861946,
|
||||
-16549651,
|
||||
-13529964,
|
||||
2213919,
|
||||
17870757,
|
||||
19056207,
|
||||
2854066,
|
||||
-18029728,
|
||||
-24979102,
|
||||
-9860164,
|
||||
16175117,
|
||||
30545984,
|
||||
18605951,
|
||||
-11894271,
|
||||
-35172531,
|
||||
-28918160,
|
||||
4746528,
|
||||
38201092,
|
||||
40590666,
|
||||
5825429,
|
||||
-38712951,
|
||||
-53159148,
|
||||
-20283384,
|
||||
35723256,
|
||||
66120531,
|
||||
39265868,
|
||||
-27910967,
|
||||
-78795928,
|
||||
-63663750,
|
||||
13458962,
|
||||
90416047,
|
||||
95193346,
|
||||
10755142,
|
||||
-99897049,
|
||||
-137497231,
|
||||
-51075841,
|
||||
105457455,
|
||||
200047804,
|
||||
124561003,
|
||||
-101612190,
|
||||
-313384381,
|
||||
-297343743,
|
||||
53701878,
|
||||
639681661,
|
||||
1187800564,
|
||||
1411050887,
|
||||
1187800564,
|
||||
639681661,
|
||||
53701878,
|
||||
-297343743,
|
||||
-313384381,
|
||||
-101612190,
|
||||
124561003,
|
||||
200047804,
|
||||
105457455,
|
||||
-51075841,
|
||||
-137497231,
|
||||
-99897049,
|
||||
10755142,
|
||||
95193346,
|
||||
90416047,
|
||||
13458962,
|
||||
-63663750,
|
||||
-78795928,
|
||||
-27910967,
|
||||
39265868,
|
||||
66120531,
|
||||
35723256,
|
||||
-20283384,
|
||||
-53159148,
|
||||
-38712951,
|
||||
5825429,
|
||||
40590666,
|
||||
38201092,
|
||||
4746528,
|
||||
-28918160,
|
||||
-35172531,
|
||||
-11894271,
|
||||
18605951,
|
||||
30545984,
|
||||
16175117,
|
||||
-9860164,
|
||||
-24979102,
|
||||
-18029728,
|
||||
2854066,
|
||||
19056207,
|
||||
17870757,
|
||||
2213919,
|
||||
-13529964,
|
||||
-16549651,
|
||||
-5861946,
|
||||
8263364,
|
||||
13970242,
|
||||
7627116,
|
||||
-4214518,
|
||||
-11354795,
|
||||
-8633996,
|
||||
527903,
|
||||
7958087,
|
||||
7901341,
|
||||
1327821,
|
||||
-5713308,
|
||||
-7589471,
|
||||
-3518616,
|
||||
2454515,
|
||||
5311444,
|
||||
3155305,
|
||||
-1721082,
|
||||
-5204443,
|
||||
-4818556,
|
||||
-1421730,
|
||||
1904111,
|
||||
2496755,
|
||||
53089,
|
||||
-3466227,
|
||||
-5550704,
|
||||
-4944515,
|
||||
-2252661,
|
||||
818057,
|
||||
2752177,
|
||||
3059556,
|
||||
2233546,
|
||||
1127891,
|
||||
350904
|
||||
|
||||
};
|
||||
|
||||
struct pdm_decim pdm_decim_int32_03_4375_5100_010_095 = {
|
||||
3, 157, 1, 4375, 5100, 10, 95, fir_int32_03_4375_5100_010_095
|
||||
};
|
232
drivers/audio/decimation/pdm_decim_int32_04_4375_5100_010_095.c
Normal file
232
drivers/audio/decimation/pdm_decim_int32_04_4375_5100_010_095.c
Normal file
|
@ -0,0 +1,232 @@
|
|||
/*
|
||||
* Copyright (c) 2018, Intel Corporation
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
|
||||
* Sathish Kuttan <sathish.k.kuttan@intel.com>
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <zephyr.h>
|
||||
|
||||
#include "pdm_decim_fir.h"
|
||||
|
||||
static const s32_t fir_int32_04_4375_5100_010_095[211] = {
|
||||
126017,
|
||||
745791,
|
||||
1735783,
|
||||
3250059,
|
||||
4963537,
|
||||
6400069,
|
||||
6949502,
|
||||
6142229,
|
||||
3902336,
|
||||
705842,
|
||||
-2485787,
|
||||
-4540607,
|
||||
-4626085,
|
||||
-2636100,
|
||||
646448,
|
||||
3784383,
|
||||
5275090,
|
||||
4259502,
|
||||
1015665,
|
||||
-3045153,
|
||||
-5950963,
|
||||
-6099091,
|
||||
-3115593,
|
||||
1807814,
|
||||
6342508,
|
||||
8093924,
|
||||
5838000,
|
||||
296533,
|
||||
-6011752,
|
||||
-9879686,
|
||||
-9013045,
|
||||
-3339610,
|
||||
4700101,
|
||||
11152288,
|
||||
12461593,
|
||||
7387989,
|
||||
-2085667,
|
||||
-11448775,
|
||||
-15769545,
|
||||
-12252662,
|
||||
-1940150,
|
||||
10437445,
|
||||
18576639,
|
||||
17768944,
|
||||
7550319,
|
||||
-7626200,
|
||||
-20251921,
|
||||
-23428157,
|
||||
-14572076,
|
||||
2797464,
|
||||
20329234,
|
||||
28790530,
|
||||
22864155,
|
||||
4330980,
|
||||
-18201801,
|
||||
-33211863,
|
||||
-32081436,
|
||||
-13923851,
|
||||
13233081,
|
||||
35870337,
|
||||
41620943,
|
||||
25914222,
|
||||
-4896316,
|
||||
-35895437,
|
||||
-50712381,
|
||||
-40042952,
|
||||
-7212823,
|
||||
32428935,
|
||||
58525317,
|
||||
56015029,
|
||||
23582638,
|
||||
-24374765,
|
||||
-63897455,
|
||||
-73234460,
|
||||
-44550852,
|
||||
10604843,
|
||||
65540282,
|
||||
91054416,
|
||||
70624752,
|
||||
10408242,
|
||||
-61706258,
|
||||
-108584856,
|
||||
-102490195,
|
||||
-40744453,
|
||||
50090298,
|
||||
124919090,
|
||||
141743373,
|
||||
84173003,
|
||||
-26760833,
|
||||
-138851415,
|
||||
-191966143,
|
||||
-148464813,
|
||||
-16173880,
|
||||
148695193,
|
||||
262835505,
|
||||
254088691,
|
||||
100293640,
|
||||
-149816104,
|
||||
-385869984,
|
||||
-474827254,
|
||||
-315628113,
|
||||
112831849,
|
||||
731720961,
|
||||
1381072959,
|
||||
1872325415,
|
||||
2055132469,
|
||||
1872325415,
|
||||
1381072959,
|
||||
731720961,
|
||||
112831849,
|
||||
-315628113,
|
||||
-474827254,
|
||||
-385869984,
|
||||
-149816104,
|
||||
100293640,
|
||||
254088691,
|
||||
262835505,
|
||||
148695193,
|
||||
-16173880,
|
||||
-148464813,
|
||||
-191966143,
|
||||
-138851415,
|
||||
-26760833,
|
||||
84173003,
|
||||
141743373,
|
||||
124919090,
|
||||
50090298,
|
||||
-40744453,
|
||||
-102490195,
|
||||
-108584856,
|
||||
-61706258,
|
||||
10408242,
|
||||
70624752,
|
||||
91054416,
|
||||
65540282,
|
||||
10604843,
|
||||
-44550852,
|
||||
-73234460,
|
||||
-63897455,
|
||||
-24374765,
|
||||
23582638,
|
||||
56015029,
|
||||
58525317,
|
||||
32428935,
|
||||
-7212823,
|
||||
-40042952,
|
||||
-50712381,
|
||||
-35895437,
|
||||
-4896316,
|
||||
25914222,
|
||||
41620943,
|
||||
35870337,
|
||||
13233081,
|
||||
-13923851,
|
||||
-32081436,
|
||||
-33211863,
|
||||
-18201801,
|
||||
4330980,
|
||||
22864155,
|
||||
28790530,
|
||||
20329234,
|
||||
2797464,
|
||||
-14572076,
|
||||
-23428157,
|
||||
-20251921,
|
||||
-7626200,
|
||||
7550319,
|
||||
17768944,
|
||||
18576639,
|
||||
10437445,
|
||||
-1940150,
|
||||
-12252662,
|
||||
-15769545,
|
||||
-11448775,
|
||||
-2085667,
|
||||
7387989,
|
||||
12461593,
|
||||
11152288,
|
||||
4700101,
|
||||
-3339610,
|
||||
-9013045,
|
||||
-9879686,
|
||||
-6011752,
|
||||
296533,
|
||||
5838000,
|
||||
8093924,
|
||||
6342508,
|
||||
1807814,
|
||||
-3115593,
|
||||
-6099091,
|
||||
-5950963,
|
||||
-3045153,
|
||||
1015665,
|
||||
4259502,
|
||||
5275090,
|
||||
3784383,
|
||||
646448,
|
||||
-2636100,
|
||||
-4626085,
|
||||
-4540607,
|
||||
-2485787,
|
||||
705842,
|
||||
3902336,
|
||||
6142229,
|
||||
6949502,
|
||||
6400069,
|
||||
4963537,
|
||||
3250059,
|
||||
1735783,
|
||||
745791,
|
||||
126017
|
||||
|
||||
};
|
||||
|
||||
struct pdm_decim pdm_decim_int32_04_4375_5100_010_095 = {
|
||||
4, 211, 2, 4375, 5100, 10, 95, fir_int32_04_4375_5100_010_095
|
||||
};
|
272
drivers/audio/decimation/pdm_decim_int32_05_4331_5100_010_095.c
Normal file
272
drivers/audio/decimation/pdm_decim_int32_05_4331_5100_010_095.c
Normal file
|
@ -0,0 +1,272 @@
|
|||
/*
|
||||
* Copyright (c) 2018, Intel Corporation
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
|
||||
* Sathish Kuttan <sathish.k.kuttan@intel.com>
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <zephyr.h>
|
||||
|
||||
#include "pdm_decim_fir.h"
|
||||
|
||||
static const s32_t fir_int32_05_4331_5100_010_095[251] = {
|
||||
-250963,
|
||||
-530472,
|
||||
-956449,
|
||||
-1440505,
|
||||
-1861966,
|
||||
-2058350,
|
||||
-1862594,
|
||||
-1155766,
|
||||
78930,
|
||||
1719645,
|
||||
3501958,
|
||||
5061143,
|
||||
6013975,
|
||||
6066039,
|
||||
5113131,
|
||||
3303104,
|
||||
1032343,
|
||||
-1135681,
|
||||
-2614668,
|
||||
-2968117,
|
||||
-2057986,
|
||||
-118896,
|
||||
2276521,
|
||||
4363476,
|
||||
5409644,
|
||||
4953617,
|
||||
2982225,
|
||||
-20415,
|
||||
-3181416,
|
||||
-5487913,
|
||||
-6107986,
|
||||
-4685208,
|
||||
-1505051,
|
||||
2535666,
|
||||
6167372,
|
||||
8134966,
|
||||
7619351,
|
||||
4554012,
|
||||
-280001,
|
||||
-5435156,
|
||||
-9220394,
|
||||
-10246686,
|
||||
-7922490,
|
||||
-2726786,
|
||||
3853867,
|
||||
9734139,
|
||||
12878468,
|
||||
11991508,
|
||||
7020539,
|
||||
-717311,
|
||||
-8859727,
|
||||
-14705610,
|
||||
-16097433,
|
||||
-12195790,
|
||||
-3874308,
|
||||
6431337,
|
||||
15415517,
|
||||
19946809,
|
||||
18139792,
|
||||
10093658,
|
||||
-1980159,
|
||||
-14334496,
|
||||
-22829097,
|
||||
-24298020,
|
||||
-17696570,
|
||||
-4621840,
|
||||
11019276,
|
||||
24149376,
|
||||
30144976,
|
||||
26434112,
|
||||
13524367,
|
||||
-4930822,
|
||||
-23124320,
|
||||
-34892082,
|
||||
-35768599,
|
||||
-24626114,
|
||||
-4311380,
|
||||
19011680,
|
||||
37690383,
|
||||
45054463,
|
||||
37744852,
|
||||
17102968,
|
||||
-10919933,
|
||||
-37416293,
|
||||
-53300866,
|
||||
-52364722,
|
||||
-33596881,
|
||||
-1935268,
|
||||
32928131,
|
||||
59438198,
|
||||
67925581,
|
||||
54022129,
|
||||
20569914,
|
||||
-22737901,
|
||||
-62048140,
|
||||
-83661289,
|
||||
-78659667,
|
||||
-46330665,
|
||||
4859442,
|
||||
59276671,
|
||||
98707953,
|
||||
108233225,
|
||||
81552245,
|
||||
23955872,
|
||||
-48257755,
|
||||
-112070264,
|
||||
-144691658,
|
||||
-131171943,
|
||||
-70276392,
|
||||
23448172,
|
||||
122479978,
|
||||
193637242,
|
||||
208100323,
|
||||
151336952,
|
||||
29895897,
|
||||
-127299559,
|
||||
-274102498,
|
||||
-357874627,
|
||||
-333256339,
|
||||
-175377009,
|
||||
111180608,
|
||||
490397234,
|
||||
900786668,
|
||||
1268179136,
|
||||
1522305381,
|
||||
1613059887,
|
||||
1522305381,
|
||||
1268179136,
|
||||
900786668,
|
||||
490397234,
|
||||
111180608,
|
||||
-175377009,
|
||||
-333256339,
|
||||
-357874627,
|
||||
-274102498,
|
||||
-127299559,
|
||||
29895897,
|
||||
151336952,
|
||||
208100323,
|
||||
193637242,
|
||||
122479978,
|
||||
23448172,
|
||||
-70276392,
|
||||
-131171943,
|
||||
-144691658,
|
||||
-112070264,
|
||||
-48257755,
|
||||
23955872,
|
||||
81552245,
|
||||
108233225,
|
||||
98707953,
|
||||
59276671,
|
||||
4859442,
|
||||
-46330665,
|
||||
-78659667,
|
||||
-83661289,
|
||||
-62048140,
|
||||
-22737901,
|
||||
20569914,
|
||||
54022129,
|
||||
67925581,
|
||||
59438198,
|
||||
32928131,
|
||||
-1935268,
|
||||
-33596881,
|
||||
-52364722,
|
||||
-53300866,
|
||||
-37416293,
|
||||
-10919933,
|
||||
17102968,
|
||||
37744852,
|
||||
45054463,
|
||||
37690383,
|
||||
19011680,
|
||||
-4311380,
|
||||
-24626114,
|
||||
-35768599,
|
||||
-34892082,
|
||||
-23124320,
|
||||
-4930822,
|
||||
13524367,
|
||||
26434112,
|
||||
30144976,
|
||||
24149376,
|
||||
11019276,
|
||||
-4621840,
|
||||
-17696570,
|
||||
-24298020,
|
||||
-22829097,
|
||||
-14334496,
|
||||
-1980159,
|
||||
10093658,
|
||||
18139792,
|
||||
19946809,
|
||||
15415517,
|
||||
6431337,
|
||||
-3874308,
|
||||
-12195790,
|
||||
-16097433,
|
||||
-14705610,
|
||||
-8859727,
|
||||
-717311,
|
||||
7020539,
|
||||
11991508,
|
||||
12878468,
|
||||
9734139,
|
||||
3853867,
|
||||
-2726786,
|
||||
-7922490,
|
||||
-10246686,
|
||||
-9220394,
|
||||
-5435156,
|
||||
-280001,
|
||||
4554012,
|
||||
7619351,
|
||||
8134966,
|
||||
6167372,
|
||||
2535666,
|
||||
-1505051,
|
||||
-4685208,
|
||||
-6107986,
|
||||
-5487913,
|
||||
-3181416,
|
||||
-20415,
|
||||
2982225,
|
||||
4953617,
|
||||
5409644,
|
||||
4363476,
|
||||
2276521,
|
||||
-118896,
|
||||
-2057986,
|
||||
-2968117,
|
||||
-2614668,
|
||||
-1135681,
|
||||
1032343,
|
||||
3303104,
|
||||
5113131,
|
||||
6066039,
|
||||
6013975,
|
||||
5061143,
|
||||
3501958,
|
||||
1719645,
|
||||
78930,
|
||||
-1155766,
|
||||
-1862594,
|
||||
-2058350,
|
||||
-1861966,
|
||||
-1440505,
|
||||
-956449,
|
||||
-530472,
|
||||
-250963
|
||||
|
||||
};
|
||||
|
||||
struct pdm_decim pdm_decim_int32_05_4331_5100_010_095 = {
|
||||
5, 251, 2, 4331, 5100, 10, 95, fir_int32_05_4331_5100_010_095
|
||||
};
|
270
drivers/audio/decimation/pdm_decim_int32_06_4156_5100_010_095.c
Normal file
270
drivers/audio/decimation/pdm_decim_int32_06_4156_5100_010_095.c
Normal file
|
@ -0,0 +1,270 @@
|
|||
/*
|
||||
* Copyright (c) 2018, Intel Corporation
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
|
||||
* Sathish Kuttan <sathish.k.kuttan@intel.com>
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <zephyr.h>
|
||||
|
||||
#include "pdm_decim_fir.h"
|
||||
|
||||
static const s32_t fir_int32_06_4156_5100_010_095[249] = {
|
||||
-145670,
|
||||
-159762,
|
||||
-183049,
|
||||
-132077,
|
||||
40047,
|
||||
375196,
|
||||
897258,
|
||||
1599108,
|
||||
2433074,
|
||||
3308273,
|
||||
4097062,
|
||||
4651618,
|
||||
4829700,
|
||||
4525669,
|
||||
3700263,
|
||||
2402258,
|
||||
776038,
|
||||
-950161,
|
||||
-2496541,
|
||||
-3579851,
|
||||
-3970442,
|
||||
-3547641,
|
||||
-2337956,
|
||||
-529617,
|
||||
1547925,
|
||||
3476297,
|
||||
4827277,
|
||||
5253398,
|
||||
4572039,
|
||||
2823110,
|
||||
284249,
|
||||
-2564887,
|
||||
-5127174,
|
||||
-6808166,
|
||||
-7148614,
|
||||
-5940791,
|
||||
-3300873,
|
||||
324045,
|
||||
4222816,
|
||||
7553233,
|
||||
9518313,
|
||||
9550081,
|
||||
7459490,
|
||||
3515883,
|
||||
-1570147,
|
||||
-6764980,
|
||||
-10915019,
|
||||
-12995804,
|
||||
-12355318,
|
||||
-8895306,
|
||||
-3143626,
|
||||
3808819,
|
||||
10504528,
|
||||
15416643,
|
||||
17288185,
|
||||
15439779,
|
||||
9973227,
|
||||
1815303,
|
||||
-7421871,
|
||||
-15747713,
|
||||
-21211963,
|
||||
-22349384,
|
||||
-18551421,
|
||||
-10274491,
|
||||
976318,
|
||||
12902423,
|
||||
22867792,
|
||||
28468157,
|
||||
28093650,
|
||||
21356476,
|
||||
9275878,
|
||||
-5840836,
|
||||
-20818261,
|
||||
-32262581,
|
||||
-37311768,
|
||||
-34324420,
|
||||
-23346677,
|
||||
-6234152,
|
||||
13625405,
|
||||
31957173,
|
||||
44495096,
|
||||
47945809,
|
||||
40808741,
|
||||
23856504,
|
||||
140921,
|
||||
-25513494,
|
||||
-47455167,
|
||||
-60412143,
|
||||
-60710132,
|
||||
-47229950,
|
||||
-21869611,
|
||||
10631696,
|
||||
43519737,
|
||||
69370312,
|
||||
81696614,
|
||||
76484113,
|
||||
53307373,
|
||||
15747228,
|
||||
-29042608,
|
||||
-71597234,
|
||||
-102026296,
|
||||
-112167649,
|
||||
-97565632,
|
||||
-58831316,
|
||||
-2036750,
|
||||
62029440,
|
||||
119693403,
|
||||
157031723,
|
||||
162840122,
|
||||
131357475,
|
||||
64171528,
|
||||
-29147598,
|
||||
-131921532,
|
||||
-222701994,
|
||||
-278742412,
|
||||
-280032642,
|
||||
-213184166,
|
||||
-74440208,
|
||||
128790505,
|
||||
378234661,
|
||||
646928572,
|
||||
902966510,
|
||||
1114231037,
|
||||
1253321369,
|
||||
1301843153,
|
||||
1253321369,
|
||||
1114231037,
|
||||
902966510,
|
||||
646928572,
|
||||
378234661,
|
||||
128790505,
|
||||
-74440208,
|
||||
-213184166,
|
||||
-280032642,
|
||||
-278742412,
|
||||
-222701994,
|
||||
-131921532,
|
||||
-29147598,
|
||||
64171528,
|
||||
131357475,
|
||||
162840122,
|
||||
157031723,
|
||||
119693403,
|
||||
62029440,
|
||||
-2036750,
|
||||
-58831316,
|
||||
-97565632,
|
||||
-112167649,
|
||||
-102026296,
|
||||
-71597234,
|
||||
-29042608,
|
||||
15747228,
|
||||
53307373,
|
||||
76484113,
|
||||
81696614,
|
||||
69370312,
|
||||
43519737,
|
||||
10631696,
|
||||
-21869611,
|
||||
-47229950,
|
||||
-60710132,
|
||||
-60412143,
|
||||
-47455167,
|
||||
-25513494,
|
||||
140921,
|
||||
23856504,
|
||||
40808741,
|
||||
47945809,
|
||||
44495096,
|
||||
31957173,
|
||||
13625405,
|
||||
-6234152,
|
||||
-23346677,
|
||||
-34324420,
|
||||
-37311768,
|
||||
-32262581,
|
||||
-20818261,
|
||||
-5840836,
|
||||
9275878,
|
||||
21356476,
|
||||
28093650,
|
||||
28468157,
|
||||
22867792,
|
||||
12902423,
|
||||
976318,
|
||||
-10274491,
|
||||
-18551421,
|
||||
-22349384,
|
||||
-21211963,
|
||||
-15747713,
|
||||
-7421871,
|
||||
1815303,
|
||||
9973227,
|
||||
15439779,
|
||||
17288185,
|
||||
15416643,
|
||||
10504528,
|
||||
3808819,
|
||||
-3143626,
|
||||
-8895306,
|
||||
-12355318,
|
||||
-12995804,
|
||||
-10915019,
|
||||
-6764980,
|
||||
-1570147,
|
||||
3515883,
|
||||
7459490,
|
||||
9550081,
|
||||
9518313,
|
||||
7553233,
|
||||
4222816,
|
||||
324045,
|
||||
-3300873,
|
||||
-5940791,
|
||||
-7148614,
|
||||
-6808166,
|
||||
-5127174,
|
||||
-2564887,
|
||||
284249,
|
||||
2823110,
|
||||
4572039,
|
||||
5253398,
|
||||
4827277,
|
||||
3476297,
|
||||
1547925,
|
||||
-529617,
|
||||
-2337956,
|
||||
-3547641,
|
||||
-3970442,
|
||||
-3579851,
|
||||
-2496541,
|
||||
-950161,
|
||||
776038,
|
||||
2402258,
|
||||
3700263,
|
||||
4525669,
|
||||
4829700,
|
||||
4651618,
|
||||
4097062,
|
||||
3308273,
|
||||
2433074,
|
||||
1599108,
|
||||
897258,
|
||||
375196,
|
||||
40047,
|
||||
-132077,
|
||||
-183049,
|
||||
-159762,
|
||||
-145670
|
||||
|
||||
};
|
||||
|
||||
struct pdm_decim pdm_decim_int32_06_4156_5100_010_095 = {
|
||||
6, 249, 2, 4156, 5100, 10, 95, fir_int32_06_4156_5100_010_095
|
||||
};
|
268
drivers/audio/decimation/pdm_decim_int32_08_4156_5380_010_090.c
Normal file
268
drivers/audio/decimation/pdm_decim_int32_08_4156_5380_010_090.c
Normal file
|
@ -0,0 +1,268 @@
|
|||
/*
|
||||
* Copyright (c) 2018, Intel Corporation
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
|
||||
* Sathish Kuttan <sathish.k.kuttan@intel.com>
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <zephyr.h>
|
||||
|
||||
#include "pdm_decim_fir.h"
|
||||
|
||||
static const s32_t fir_int32_08_4156_5380_010_090[247] = {
|
||||
-337052,
|
||||
-90075,
|
||||
37780,
|
||||
310298,
|
||||
762602,
|
||||
1418014,
|
||||
2279975,
|
||||
3324413,
|
||||
4495298,
|
||||
5703536,
|
||||
6831280,
|
||||
7740936,
|
||||
8289504,
|
||||
8346168,
|
||||
7812523,
|
||||
6641741,
|
||||
4854841,
|
||||
2549644,
|
||||
-98570,
|
||||
-2847418,
|
||||
-5407472,
|
||||
-7472951,
|
||||
-8758755,
|
||||
-9040926,
|
||||
-8192669,
|
||||
-6213693,
|
||||
-3246278,
|
||||
424677,
|
||||
4395972,
|
||||
8180309,
|
||||
11265189,
|
||||
13176475,
|
||||
13545386,
|
||||
12170147,
|
||||
9059463,
|
||||
4454447,
|
||||
-1180491,
|
||||
-7196755,
|
||||
-12830960,
|
||||
-17296055,
|
||||
-19885729,
|
||||
-20077500,
|
||||
-17621714,
|
||||
-12601266,
|
||||
-5452197,
|
||||
3062539,
|
||||
11925735,
|
||||
19980775,
|
||||
26075722,
|
||||
29220338,
|
||||
28734576,
|
||||
24368837,
|
||||
16375791,
|
||||
5519930,
|
||||
-6982346,
|
||||
-19587960,
|
||||
-30609997,
|
||||
-38433685,
|
||||
-41741838,
|
||||
-39718804,
|
||||
-32202058,
|
||||
-19758650,
|
||||
-3667506,
|
||||
14195787,
|
||||
31565234,
|
||||
46060011,
|
||||
55497992,
|
||||
58207057,
|
||||
53292128,
|
||||
40817642,
|
||||
21874421,
|
||||
-1487369,
|
||||
-26460171,
|
||||
-49799428,
|
||||
-68227825,
|
||||
-78875217,
|
||||
-79697543,
|
||||
-69816864,
|
||||
-49730377,
|
||||
-21350328,
|
||||
12143051,
|
||||
46630130,
|
||||
77532435,
|
||||
100390923,
|
||||
111473843,
|
||||
108334402,
|
||||
90240198,
|
||||
58408793,
|
||||
16001822,
|
||||
-32138446,
|
||||
-79996329,
|
||||
-121085165,
|
||||
-149268412,
|
||||
-159601418,
|
||||
-149086287,
|
||||
-117235239,
|
||||
-66355092,
|
||||
-1494553,
|
||||
69965597,
|
||||
139055884,
|
||||
196228005,
|
||||
232526458,
|
||||
240790250,
|
||||
216740138,
|
||||
159811182,
|
||||
73611998,
|
||||
-34070591,
|
||||
-151754583,
|
||||
-265210746,
|
||||
-358796902,
|
||||
-417052464,
|
||||
-426388521,
|
||||
-376691518,
|
||||
-262659116,
|
||||
-84707915,
|
||||
150664267,
|
||||
431125422,
|
||||
739363099,
|
||||
1054476937,
|
||||
1353781691,
|
||||
1614844650,
|
||||
1817552687,
|
||||
1945997296,
|
||||
1989982406,
|
||||
1945997296,
|
||||
1817552687,
|
||||
1614844650,
|
||||
1353781691,
|
||||
1054476937,
|
||||
739363099,
|
||||
431125422,
|
||||
150664267,
|
||||
-84707915,
|
||||
-262659116,
|
||||
-376691518,
|
||||
-426388521,
|
||||
-417052464,
|
||||
-358796902,
|
||||
-265210746,
|
||||
-151754583,
|
||||
-34070591,
|
||||
73611998,
|
||||
159811182,
|
||||
216740138,
|
||||
240790250,
|
||||
232526458,
|
||||
196228005,
|
||||
139055884,
|
||||
69965597,
|
||||
-1494553,
|
||||
-66355092,
|
||||
-117235239,
|
||||
-149086287,
|
||||
-159601418,
|
||||
-149268412,
|
||||
-121085165,
|
||||
-79996329,
|
||||
-32138446,
|
||||
16001822,
|
||||
58408793,
|
||||
90240198,
|
||||
108334402,
|
||||
111473843,
|
||||
100390923,
|
||||
77532435,
|
||||
46630130,
|
||||
12143051,
|
||||
-21350328,
|
||||
-49730377,
|
||||
-69816864,
|
||||
-79697543,
|
||||
-78875217,
|
||||
-68227825,
|
||||
-49799428,
|
||||
-26460171,
|
||||
-1487369,
|
||||
21874421,
|
||||
40817642,
|
||||
53292128,
|
||||
58207057,
|
||||
55497992,
|
||||
46060011,
|
||||
31565234,
|
||||
14195787,
|
||||
-3667506,
|
||||
-19758650,
|
||||
-32202058,
|
||||
-39718804,
|
||||
-41741838,
|
||||
-38433685,
|
||||
-30609997,
|
||||
-19587960,
|
||||
-6982346,
|
||||
5519930,
|
||||
16375791,
|
||||
24368837,
|
||||
28734576,
|
||||
29220338,
|
||||
26075722,
|
||||
19980775,
|
||||
11925735,
|
||||
3062539,
|
||||
-5452197,
|
||||
-12601266,
|
||||
-17621714,
|
||||
-20077500,
|
||||
-19885729,
|
||||
-17296055,
|
||||
-12830960,
|
||||
-7196755,
|
||||
-1180491,
|
||||
4454447,
|
||||
9059463,
|
||||
12170147,
|
||||
13545386,
|
||||
13176475,
|
||||
11265189,
|
||||
8180309,
|
||||
4395972,
|
||||
424677,
|
||||
-3246278,
|
||||
-6213693,
|
||||
-8192669,
|
||||
-9040926,
|
||||
-8758755,
|
||||
-7472951,
|
||||
-5407472,
|
||||
-2847418,
|
||||
-98570,
|
||||
2549644,
|
||||
4854841,
|
||||
6641741,
|
||||
7812523,
|
||||
8346168,
|
||||
8289504,
|
||||
7740936,
|
||||
6831280,
|
||||
5703536,
|
||||
4495298,
|
||||
3324413,
|
||||
2279975,
|
||||
1418014,
|
||||
762602,
|
||||
310298,
|
||||
37780,
|
||||
-90075,
|
||||
-337052
|
||||
|
||||
};
|
||||
|
||||
struct pdm_decim pdm_decim_int32_08_4156_5380_010_090 = {
|
||||
8, 247, 3, 4156, 5380, 10, 90, fir_int32_08_4156_5380_010_090
|
||||
};
|
45
drivers/audio/decimation/pdm_decim_table.c
Normal file
45
drivers/audio/decimation/pdm_decim_table.c
Normal file
|
@ -0,0 +1,45 @@
|
|||
/*
|
||||
* Copyright (c) 2018, Intel Corporation
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
|
||||
* Sathish Kuttan <sathish.k.kuttan@intel.com>
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/* PDM decimation FIR filters */
|
||||
|
||||
#include <zephyr.h>
|
||||
|
||||
#include "pdm_decim_fir.h"
|
||||
|
||||
extern struct pdm_decim pdm_decim_int32_02_4375_5100_010_095;
|
||||
extern struct pdm_decim pdm_decim_int32_02_4288_5100_010_095;
|
||||
extern struct pdm_decim pdm_decim_int32_03_4375_5100_010_095;
|
||||
extern struct pdm_decim pdm_decim_int32_03_3850_5100_010_095;
|
||||
extern struct pdm_decim pdm_decim_int32_04_4375_5100_010_095;
|
||||
extern struct pdm_decim pdm_decim_int32_05_4331_5100_010_095;
|
||||
extern struct pdm_decim pdm_decim_int32_06_4156_5100_010_095;
|
||||
extern struct pdm_decim pdm_decim_int32_08_4156_5380_010_090;
|
||||
|
||||
/* Note: Higher spec filter must be before lower spec filter
|
||||
* if there are multiple filters for a decimation factor. The naming
|
||||
* scheme of coefficients set is:
|
||||
* <type>_<decim factor>_<rel passband>_<rel stopband>_<ripple>_<attenuation>
|
||||
*/
|
||||
static struct pdm_decim *fir_list[DMIC_FIR_LIST_LENGTH] = {
|
||||
&pdm_decim_int32_02_4375_5100_010_095,
|
||||
&pdm_decim_int32_02_4288_5100_010_095,
|
||||
&pdm_decim_int32_03_4375_5100_010_095,
|
||||
&pdm_decim_int32_03_3850_5100_010_095,
|
||||
&pdm_decim_int32_04_4375_5100_010_095,
|
||||
&pdm_decim_int32_05_4331_5100_010_095,
|
||||
&pdm_decim_int32_06_4156_5100_010_095,
|
||||
&pdm_decim_int32_08_4156_5380_010_090,
|
||||
};
|
||||
|
||||
struct pdm_decim **pdm_decim_get_fir_list(void)
|
||||
{
|
||||
return fir_list;
|
||||
}
|
1440
drivers/audio/intel_dmic.c
Normal file
1440
drivers/audio/intel_dmic.c
Normal file
File diff suppressed because it is too large
Load diff
237
drivers/audio/intel_dmic.h
Normal file
237
drivers/audio/intel_dmic.h
Normal file
|
@ -0,0 +1,237 @@
|
|||
/*
|
||||
* Copyright (c) 2018, Intel Corporation
|
||||
* All rights reserved.
|
||||
*
|
||||
* Author: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
|
||||
* Liam Girdwood <liam.r.girdwood@linux.intel.com>
|
||||
* Keyon Jie <yang.jie@linux.intel.com>
|
||||
* Sathish Kuttan <sathish.k.kuttan@intel.com>
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#ifndef __INTEL_DMIC_H__
|
||||
#define __INTEL_DMIC_H__
|
||||
|
||||
#include <device.h>
|
||||
|
||||
#define DMIC_HW_IOCLK 38400000
|
||||
|
||||
/* Parameters used in modes computation */
|
||||
#define DMIC_HW_BITS_CIC 26
|
||||
#define DMIC_HW_BITS_FIR_COEF 20
|
||||
#define DMIC_HW_BITS_FIR_GAIN 20
|
||||
#define DMIC_HW_BITS_FIR_INPUT 22
|
||||
#define DMIC_HW_BITS_FIR_OUTPUT 24
|
||||
#define DMIC_HW_BITS_FIR_INTERNAL 26
|
||||
#define DMIC_HW_BITS_GAIN_OUTPUT 22
|
||||
#define DMIC_HW_FIR_LENGTH_MAX 250
|
||||
#define DMIC_HW_CIC_SHIFT_MIN -8
|
||||
#define DMIC_HW_CIC_SHIFT_MAX 4
|
||||
#define DMIC_HW_FIR_SHIFT_MIN 0
|
||||
#define DMIC_HW_FIR_SHIFT_MAX 8
|
||||
#define DMIC_HW_CIC_DECIM_MIN 5
|
||||
#define DMIC_HW_CIC_DECIM_MAX 31 /* Note: Limited by BITS_CIC */
|
||||
#define DMIC_HW_FIR_DECIM_MIN 2
|
||||
#define DMIC_HW_FIR_DECIM_MAX 20 /* Note: Practical upper limit */
|
||||
#define DMIC_HW_SENS_Q28 BIT(28) /* 1.0 in Q1.28 format */
|
||||
#define DMIC_HW_PDM_CLK_MIN 100000 /* Note: Practical min value */
|
||||
#define DMIC_HW_DUTY_MIN 20 /* Note: Practical min value */
|
||||
#define DMIC_HW_DUTY_MAX 80 /* Note: Practical max value */
|
||||
|
||||
/* DMIC register offsets */
|
||||
#define PDM_REG_BASE(pdm) (((pdm) + 1) << 12)
|
||||
#define PDM_COEFF_A(pdm) (PDM_REG_BASE(pdm) + 0x400)
|
||||
#define PDM_COEFF_B(pdm) (PDM_REG_BASE(pdm) + 0x800)
|
||||
|
||||
/* Global registers */
|
||||
#define OUTCONTROL0 0x0000
|
||||
#define OUTSTAT0 0x0004
|
||||
#define OUTDATA0 0x0008
|
||||
#define OUTCONTROL1 0x0100
|
||||
#define OUTSTAT1 0x0104
|
||||
#define OUTDATA1 0x0108
|
||||
|
||||
/* Local registers in each PDMx */
|
||||
#define CIC_CONTROL(pdm) (PDM_REG_BASE(pdm) + 0x000)
|
||||
#define CIC_CONFIG(pdm) (PDM_REG_BASE(pdm) + 0x004)
|
||||
#define MIC_CONTROL(pdm) (PDM_REG_BASE(pdm) + 0x00c)
|
||||
#define FIR_CONTROL_A(pdm) (PDM_REG_BASE(pdm) + 0x020)
|
||||
#define FIR_CONFIG_A(pdm) (PDM_REG_BASE(pdm) + 0x024)
|
||||
#define DC_OFFSET_LEFT_A(pdm) (PDM_REG_BASE(pdm) + 0x028)
|
||||
#define DC_OFFSET_RIGHT_A(pdm) (PDM_REG_BASE(pdm) + 0x02c)
|
||||
#define OUT_GAIN_LEFT_A(pdm) (PDM_REG_BASE(pdm) + 0x030)
|
||||
#define OUT_GAIN_RIGHT_A(pdm) (PDM_REG_BASE(pdm) + 0x034)
|
||||
#define FIR_CONTROL_B(pdm) (PDM_REG_BASE(pdm) + 0x040)
|
||||
#define FIR_CONFIG_B(pdm) (PDM_REG_BASE(pdm) + 0x044)
|
||||
#define DC_OFFSET_LEFT_B(pdm) (PDM_REG_BASE(pdm) + 0x048)
|
||||
#define DC_OFFSET_RIGHT_B(pdm) (PDM_REG_BASE(pdm) + 0x04c)
|
||||
#define OUT_GAIN_LEFT_B(pdm) (PDM_REG_BASE(pdm) + 0x050)
|
||||
#define OUT_GAIN_RIGHT_B(pdm) (PDM_REG_BASE(pdm) + 0x054)
|
||||
|
||||
/* Register bits */
|
||||
|
||||
/* OUTCONTROL0 bits */
|
||||
#define OUTCONTROL0_TIE_BIT BIT(27)
|
||||
#define OUTCONTROL0_SIP_BIT BIT(26)
|
||||
#define OUTCONTROL0_FINIT_BIT BIT(25)
|
||||
#define OUTCONTROL0_FCI_BIT BIT(24)
|
||||
#define OUTCONTROL0_TIE(x) SET_BIT(27, x)
|
||||
#define OUTCONTROL0_SIP(x) SET_BIT(26, x)
|
||||
#define OUTCONTROL0_FINIT(x) SET_BIT(25, x)
|
||||
#define OUTCONTROL0_FCI(x) SET_BIT(24, x)
|
||||
#define OUTCONTROL0_BFTH(x) SET_BITS(23, 20, x)
|
||||
#define OUTCONTROL0_OF(x) SET_BITS(19, 18, x)
|
||||
#define OUTCONTROL0_NUMBER_OF_DECIMATORS(x) SET_BITS(17, 15, x)
|
||||
#define OUTCONTROL0_IPM_SOURCE_1(x) SET_BITS(14, 13, x)
|
||||
#define OUTCONTROL0_IPM_SOURCE_2(x) SET_BITS(12, 11, x)
|
||||
#define OUTCONTROL0_IPM_SOURCE_3(x) SET_BITS(10, 9, x)
|
||||
#define OUTCONTROL0_IPM_SOURCE_4(x) SET_BITS(8, 7, x)
|
||||
#define OUTCONTROL0_TH(x) SET_BITS(5, 0, x)
|
||||
|
||||
/* OUTCONTROL1 bits */
|
||||
#define OUTCONTROL1_TIE_BIT BIT(27)
|
||||
#define OUTCONTROL1_SIP_BIT BIT(26)
|
||||
#define OUTCONTROL1_FINIT_BIT BIT(25)
|
||||
#define OUTCONTROL1_FCI_BIT BIT(24)
|
||||
#define OUTCONTROL1_TIE(x) SET_BIT(27, x)
|
||||
#define OUTCONTROL1_SIP(x) SET_BIT(26, x)
|
||||
#define OUTCONTROL1_FINIT(x) SET_BIT(25, x)
|
||||
#define OUTCONTROL1_FCI(x) SET_BIT(24, x)
|
||||
#define OUTCONTROL1_BFTH(x) SET_BITS(23, 20, x)
|
||||
#define OUTCONTROL1_OF(x) SET_BITS(19, 18, x)
|
||||
#define OUTCONTROL1_NUMBER_OF_DECIMATORS(x) SET_BITS(17, 15, x)
|
||||
#define OUTCONTROL1_IPM_SOURCE_1(x) SET_BITS(14, 13, x)
|
||||
#define OUTCONTROL1_IPM_SOURCE_2(x) SET_BITS(12, 11, x)
|
||||
#define OUTCONTROL1_IPM_SOURCE_3(x) SET_BITS(10, 9, x)
|
||||
#define OUTCONTROL1_IPM_SOURCE_4(x) SET_BITS(8, 7, x)
|
||||
#define OUTCONTROL1_TH(x) SET_BITS(5, 0, x)
|
||||
|
||||
/* OUTSTAT0 bits */
|
||||
#define OUTSTAT0_AFE_BIT BIT(31)
|
||||
#define OUTSTAT0_ASNE_BIT BIT(29)
|
||||
#define OUTSTAT0_RFS_BIT BIT(28)
|
||||
#define OUTSTAT0_ROR_BIT BIT(27)
|
||||
#define OUTSTAT0_FL_MASK MASK(6, 0)
|
||||
|
||||
/* OUTSTAT1 bits */
|
||||
#define OUTSTAT1_AFE_BIT BIT(31)
|
||||
#define OUTSTAT1_ASNE_BIT BIT(29)
|
||||
#define OUTSTAT1_RFS_BIT BIT(28)
|
||||
#define OUTSTAT1_ROR_BIT BIT(27)
|
||||
#define OUTSTAT1_FL_MASK MASK(6, 0)
|
||||
|
||||
/* CIC_CONTROL bits */
|
||||
#define CIC_CONTROL_SOFT_RESET_BIT BIT(16)
|
||||
#define CIC_CONTROL_CIC_START_B_BIT BIT(15)
|
||||
#define CIC_CONTROL_CIC_START_A_BIT BIT(14)
|
||||
#define CIC_CONTROL_MIC_B_POLARITY_BIT BIT(3)
|
||||
#define CIC_CONTROL_MIC_A_POLARITY_BIT BIT(2)
|
||||
#define CIC_CONTROL_MIC_MUTE_BIT BIT(1)
|
||||
#define CIC_CONTROL_STEREO_MODE_BIT BIT(0)
|
||||
|
||||
#define CIC_CONTROL_SOFT_RESET(x) SET_BIT(16, x)
|
||||
#define CIC_CONTROL_CIC_START_B(x) SET_BIT(15, x)
|
||||
#define CIC_CONTROL_CIC_START_A(x) SET_BIT(14, x)
|
||||
#define CIC_CONTROL_MIC_B_POLARITY(x) SET_BIT(3, x)
|
||||
#define CIC_CONTROL_MIC_A_POLARITY(x) SET_BIT(2, x)
|
||||
#define CIC_CONTROL_MIC_MUTE(x) SET_BIT(1, x)
|
||||
#define CIC_CONTROL_STEREO_MODE(x) SET_BIT(0, x)
|
||||
|
||||
/* CIC_CONFIG bits */
|
||||
#define CIC_CONFIG_CIC_SHIFT(x) SET_BITS(27, 24, x)
|
||||
#define CIC_CONFIG_COMB_COUNT(x) SET_BITS(15, 8, x)
|
||||
|
||||
/* MIC_CONTROL bits */
|
||||
#define MIC_CONTROL_PDM_EN_B_BIT BIT(1)
|
||||
#define MIC_CONTROL_PDM_EN_A_BIT BIT(0)
|
||||
#define MIC_CONTROL_PDM_CLKDIV(x) SET_BITS(15, 8, x)
|
||||
#define MIC_CONTROL_PDM_SKEW(x) SET_BITS(7, 4, x)
|
||||
#define MIC_CONTROL_CLK_EDGE(x) SET_BIT(3, x)
|
||||
#define MIC_CONTROL_PDM_EN_B(x) SET_BIT(1, x)
|
||||
#define MIC_CONTROL_PDM_EN_A(x) SET_BIT(0, x)
|
||||
|
||||
/* FIR_CONTROL_A bits */
|
||||
#define FIR_CONTROL_A_START_BIT BIT(7)
|
||||
#define FIR_CONTROL_A_ARRAY_START_EN_BIT BIT(6)
|
||||
#define FIR_CONTROL_A_MUTE_BIT BIT(1)
|
||||
#define FIR_CONTROL_A_START(x) SET_BIT(7, x)
|
||||
#define FIR_CONTROL_A_ARRAY_START_EN(x) SET_BIT(6, x)
|
||||
#define FIR_CONTROL_A_DCCOMP(x) SET_BIT(4, x)
|
||||
#define FIR_CONTROL_A_MUTE(x) SET_BIT(1, x)
|
||||
#define FIR_CONTROL_A_STEREO(x) SET_BIT(0, x)
|
||||
|
||||
/* FIR_CONFIG_A bits */
|
||||
#define FIR_CONFIG_A_FIR_DECIMATION(x) SET_BITS(20, 16, x)
|
||||
#define FIR_CONFIG_A_FIR_SHIFT(x) SET_BITS(11, 8, x)
|
||||
#define FIR_CONFIG_A_FIR_LENGTH(x) SET_BITS(7, 0, x)
|
||||
|
||||
/* DC offset compensation time constants */
|
||||
#define DCCOMP_TC0 0
|
||||
#define DCCOMP_TC1 1
|
||||
#define DCCOMP_TC2 2
|
||||
#define DCCOMP_TC3 3
|
||||
#define DCCOMP_TC4 4
|
||||
#define DCCOMP_TC5 5
|
||||
#define DCCOMP_TC6 6
|
||||
#define DCCOMP_TC7 7
|
||||
|
||||
/* DC_OFFSET_LEFT_A bits */
|
||||
#define DC_OFFSET_LEFT_A_DC_OFFS(x) SET_BITS(21, 0, x)
|
||||
|
||||
/* DC_OFFSET_RIGHT_A bits */
|
||||
#define DC_OFFSET_RIGHT_A_DC_OFFS(x) SET_BITS(21, 0, x)
|
||||
|
||||
/* OUT_GAIN_LEFT_A bits */
|
||||
#define OUT_GAIN_LEFT_A_GAIN(x) SET_BITS(19, 0, x)
|
||||
|
||||
/* OUT_GAIN_RIGHT_A bits */
|
||||
#define OUT_GAIN_RIGHT_A_GAIN(x) SET_BITS(19, 0, x)
|
||||
|
||||
/* FIR_CONTROL_B bits */
|
||||
#define FIR_CONTROL_B_START_BIT BIT(7)
|
||||
#define FIR_CONTROL_B_ARRAY_START_EN_BIT BIT(6)
|
||||
#define FIR_CONTROL_B_MUTE_BIT BIT(1)
|
||||
#define FIR_CONTROL_B_START(x) SET_BIT(7, x)
|
||||
#define FIR_CONTROL_B_ARRAY_START_EN(x) SET_BIT(6, x)
|
||||
#define FIR_CONTROL_B_DCCOMP(x) SET_BIT(4, x)
|
||||
#define FIR_CONTROL_B_MUTE(x) SET_BIT(1, x)
|
||||
#define FIR_CONTROL_B_STEREO(x) SET_BIT(0, x)
|
||||
|
||||
/* FIR_CONFIG_B bits */
|
||||
#define FIR_CONFIG_B_FIR_DECIMATION(x) SET_BITS(20, 16, x)
|
||||
#define FIR_CONFIG_B_FIR_SHIFT(x) SET_BITS(11, 8, x)
|
||||
#define FIR_CONFIG_B_FIR_LENGTH(x) SET_BITS(7, 0, x)
|
||||
|
||||
/* DC_OFFSET_LEFT_B bits */
|
||||
#define DC_OFFSET_LEFT_B_DC_OFFS(x) SET_BITS(21, 0, x)
|
||||
|
||||
/* DC_OFFSET_RIGHT_B bits */
|
||||
#define DC_OFFSET_RIGHT_B_DC_OFFS(x) SET_BITS(21, 0, x)
|
||||
|
||||
/* OUT_GAIN_LEFT_B bits */
|
||||
#define OUT_GAIN_LEFT_B_GAIN(x) SET_BITS(19, 0, x)
|
||||
|
||||
/* OUT_GAIN_RIGHT_B bits */
|
||||
#define OUT_GAIN_RIGHT_B_GAIN(x) SET_BITS(19, 0, x)
|
||||
|
||||
/* FIR coefficients */
|
||||
#define FIR_COEF_A(x) SET_BITS(19, 0, x)
|
||||
#define FIR_COEF_B(x) SET_BITS(19, 0, x)
|
||||
|
||||
/* max number of streams supported by hardware 2 = Stream A & B */
|
||||
#define DMIC_MAX_STREAMS 2
|
||||
|
||||
#define DMIC_DMA_DEV_NAME CONFIG_DMA_0_NAME
|
||||
#define DMA_CHANNEL_DMIC_RXA 0
|
||||
#define DMA_CHANNEL_DMIC_RXB 1
|
||||
|
||||
#define DMA_HANDSHAKE_DMIC_RXA 0
|
||||
#define DMA_HANDSHAKE_DMIC_RXB 1
|
||||
|
||||
int dmic_configure_dma(struct pcm_stream_cfg *config, u8_t num_streams);
|
||||
int dmic_reload_dma(u32_t channel, void *buffer, size_t size);
|
||||
int dmic_start_dma(u32_t channel);
|
||||
int dmic_stop_dma(u32_t channel);
|
||||
|
||||
#endif /* __INTEL_DMIC_H__ */
|
|
@ -62,6 +62,8 @@
|
|||
#define CAVS_DMA1_OWNERSHIP_REG (0x00071A62)
|
||||
#define CAVS_DMA2_OWNERSHIP_REG (0x00071A64)
|
||||
|
||||
#define DMA_HANDSHAKE_DMIC_RXA 0
|
||||
#define DMA_HANDSHAKE_DMIC_RXB 1
|
||||
#define DMA_HANDSHAKE_SSP0_TX 2
|
||||
#define DMA_HANDSHAKE_SSP0_RX 3
|
||||
#define DMA_HANDSHAKE_SSP1_TX 4
|
||||
|
@ -71,6 +73,14 @@
|
|||
#define DMA_HANDSHAKE_SSP3_TX 8
|
||||
#define DMA_HANDSHAKE_SSP3_RX 9
|
||||
|
||||
/* DMA Channel Allocation
|
||||
* FIXME: I2S Driver assigns channel in Kconfig.
|
||||
* Perhaps DTS is a better option
|
||||
*/
|
||||
#define DMIC_DMA_DEV_NAME CONFIG_DMA_0_NAME
|
||||
#define DMA_CHANNEL_DMIC_RXA 0
|
||||
#define DMA_CHANNEL_DMIC_RXB 1
|
||||
|
||||
/* I2S */
|
||||
#define I2S0_CAVS_IRQ 0x00000010
|
||||
#define I2S1_CAVS_IRQ 0x00000110
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue