blob: b44ba53f1e74c40a752c99ae730e17d9d951b220 [file] [log] [blame]
/*
* sound/soc/amlogic/auge/pdm_hw_coeff.c
*
* Copyright (C) 2017 Amlogic, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
*/
/* LPF coefficent
* For filter 1 and filter 3, it's only relative with coefficent mode
* For filter 2, it's only relative with osr and hcic stage number
*/
static const int lpf2_osr64[] = {
0x00050a, 0xfff004, 0x0002c1, 0x003c12, 0xffa818,
0xffc87d, 0x010aef, 0xff5223, 0xfebd93, 0x028f41,
0xff5c0e, 0xfc63f8, 0x055f81, 0x000000, 0xf478a0,
0x11c5e3, 0x2ea74d, 0x11c5e3, 0xf478a0, 0x000000,
0x055f81, 0xfc63f8, 0xff5c0e, 0x028f41, 0xfebd93,
0xff5223, 0x010aef, 0xffc87d, 0xffa818, 0x003c12,
0x0002c1, 0xfff004, 0x00050a,
};
static const int lpf2_osr96[] = {
0x00050a, 0xfff004, 0x0002c1, 0x003c12, 0xffa818,
0xffc87d, 0x010aef, 0xff5223, 0xfebd93, 0x028f41,
0xff5c0e, 0xfc63f8, 0x055f81, 0x000000, 0xf478a0,
0x11c5e3, 0x2ea74d, 0x11c5e3, 0xf478a0, 0x000000,
0x055f81, 0xfc63f8, 0xff5c0e, 0x028f41, 0xfebd93,
0xff5223, 0x010aef, 0xffc87d, 0xffa818, 0x003c12,
0x0002c1, 0xfff004, 0x00050a
};
static const int lpf2_osr128[] = {
0x00050b, 0xfff002, 0x0002c6, 0x003c15, 0xffa7fc,
0xffc899, 0x010b29, 0xff518f, 0xfebd98, 0x02909c,
0xff5ab8, 0xfc6254, 0x0563b2, 0x000000, 0xf46f16,
0x11c6a2, 0x2eb45a, 0x11c6a2, 0xf46f16, 0x000000,
0x0563b2, 0xfc6254, 0xff5ab8, 0x02909c, 0xfebd98,
0xff518f, 0x010b29, 0xffc899, 0xffa7fc, 0x003c15,
0x0002c6, 0xfff002, 0x00050b
};
static const int lpf2_osr192[] = {
0x00050b, 0xfff002, 0x0002c7, 0x003c16, 0xffa7f7,
0xffc89f, 0x010b35, 0xff516f, 0xfebd9a, 0x0290e8,
0xff5a6d, 0xfc61f8, 0x05649b, 0x000000, 0xf46d02,
0x11c6cc, 0x2eb731, 0x11c6cc, 0xf46d02, 0x000000,
0x05649b, 0xfc61f8, 0xff5a6d, 0x0290e8, 0xfebd9a,
0xff516f, 0x010b35, 0xffc89f, 0xffa7f7, 0x003c16,
0x0002c7, 0xfff002, 0x00050b
};
static const int lpf2_osr256[] = {
0x00050b, 0xfff002, 0x0002c7, 0x003c16, 0xffa7f6,
0xffc8a0, 0x010b37, 0xff516a, 0xfebd9a, 0x0290f4,
0xff5a62, 0xfc61ea, 0x0564bf, 0x000000, 0xf46cb0,
0x11c6d2, 0x2eb7a1, 0x11c6d2, 0xf46cb0, 0x000000,
0x0564bf, 0xfc61ea, 0xff5a62, 0x0290f4, 0xfebd9a,
0xff516a, 0x010b37, 0xffc8a0, 0xffa7f6, 0x003c16,
0x0002c7, 0xfff002, 0x00050b
};
static const int lpf2_osr384[] = {
0x00050b, 0xfff002, 0x0002c7, 0x003c16, 0xffa7f6,
0xffc8a0, 0x010b37, 0xff516a, 0xfebd9a, 0x0290f4,
0xff5a62, 0xfc61ea, 0x0564bf, 0x000000, 0xf46cb0,
0x11c6d2, 0x2eb7a1, 0x11c6d2, 0xf46cb0, 0x000000,
0x0564bf, 0xfc61ea, 0xff5a62, 0x0290f4, 0xfebd9a,
0xff516a, 0x010b37, 0xffc8a0, 0xffa7f6, 0x003c16,
0x0002c7, 0xfff002, 0x00050b
};
static const int lpf1_mode0[] = {
0x000006, 0x000002, 0xffffeb, 0xffffbe, 0xffff8a,
0xffff76, 0xffffb4, 0x00006b, 0x000187, 0x0002a7,
0x00031d, 0x00022c, 0xffff6b, 0xfffb35, 0xfff6e7,
0xfff4aa, 0xfff6b8, 0xfffe3f, 0x000a43, 0x00172a,
0x001f54, 0x001cfd, 0x000ce4, 0xfff0d0, 0xffd098,
0xffb8cd, 0xffb6b8, 0xffd2b1, 0x000adb, 0x0050ad,
0x008b46, 0x009ee9, 0x0077e0, 0x001506, 0xff8d7a,
0xff0dc4, 0xfecb6c, 0xfef1b8, 0xff8da0, 0x0080db,
0x0182b7, 0x0231a8, 0x023283, 0x0154bd, 0xffaf64,
0xfdab1a, 0xfbf20a, 0xfb46e9, 0xfc4cb4, 0xff4f72,
0x041fa5, 0x0a0e12, 0x100c37, 0x14eab3, 0x17a4fe,
0x17a4fe, 0x14eab3, 0x100c37, 0x0a0e12, 0x041fa5,
0xff4f72, 0xfc4cb4, 0xfb46e9, 0xfbf20a, 0xfdab1a,
0xffaf64, 0x0154bd, 0x023283, 0x0231a8, 0x0182b7,
0x0080db, 0xff8da0, 0xfef1b8, 0xfecb6c, 0xff0dc4,
0xff8d7a, 0x001506, 0x0077e0, 0x009ee9, 0x008b46,
0x0050ad, 0x000adb, 0xffd2b1, 0xffb6b8, 0xffb8cd,
0xffd098, 0xfff0d0, 0x000ce4, 0x001cfd, 0x001f54,
0x00172a, 0x000a43, 0xfffe3f, 0xfff6b8, 0xfff4aa,
0xfff6e7, 0xfffb35, 0xffff6b, 0x00022c, 0x00031d,
0x0002a7, 0x000187, 0x00006b, 0xffffb4, 0xffff76,
0xffff8a, 0xffffbe, 0xffffeb, 0x000002, 0x000006,
};
static const int lpf3_mode0[] = {
0x000007, 0x000000, 0xffffe8, 0x000000, 0x000038,
0x000000, 0xffff94, 0x000000, 0x0000c0, 0x000000,
0xfffec1, 0x000000, 0x0001f7, 0x000000, 0xfffd05,
0x000000, 0x000460, 0x000000, 0xfff9c1, 0x000000,
0x0008b7, 0x000000, 0xfff416, 0x000000, 0x000fff,
0x000000, 0xffeadc, 0x000000, 0x001b8a, 0x000000,
0xffdc97, 0x000000, 0x002d01, 0x000000, 0xffc767,
0x000000, 0x00467f, 0x000000, 0xffa8f1, 0x000000,
0x006ab0, 0x000000, 0xff7e26, 0x000000, 0x009d20,
0x000000, 0xff42ce, 0x000000, 0x00e2f1, 0x000000,
0xfef07e, 0x000000, 0x014470, 0x000000, 0xfe7c1b,
0x000000, 0x01d10f, 0x000000, 0xfdcf39, 0x000000,
0x02aaeb, 0x000000, 0xfcb2e7, 0x000000, 0x04311d,
0x000000, 0xfa719c, 0x000000, 0x07f53f, 0x000000,
0xf288b5, 0x000000, 0x28b482, 0x3fffff, 0x28b482,
0x000000, 0xf288b5, 0x000000, 0x07f53f, 0x000000,
0xfa719c, 0x000000, 0x04311d, 0x000000, 0xfcb2e7,
0x000000, 0x02aaeb, 0x000000, 0xfdcf39, 0x000000,
0x01d10f, 0x000000, 0xfe7c1b, 0x000000, 0x014470,
0x000000, 0xfef07e, 0x000000, 0x00e2f1, 0x000000,
0xff42ce, 0x000000, 0x009d20, 0x000000, 0xff7e26,
0x000000, 0x006ab0, 0x000000, 0xffa8f1, 0x000000,
0x00467f, 0x000000, 0xffc767, 0x000000, 0x002d01,
0x000000, 0xffdc97, 0x000000, 0x001b8a, 0x000000,
0xffeadc, 0x000000, 0x000fff, 0x000000, 0xfff416,
0x000000, 0x0008b7, 0x000000, 0xfff9c1, 0x000000,
0x000460, 0x000000, 0xfffd05, 0x000000, 0x0001f7,
0x000000, 0xfffec1, 0x000000, 0x0000c0, 0x000000,
0xffff94, 0x000000, 0x000038, 0x000000, 0xffffe8,
0x000000, 0x000007
};
static const int lpf1_mode1[] = {
0x000014, 0xffffb2, 0xfffed9, 0xfffdce, 0xfffd45,
0xfffe32, 0x000147, 0x000645, 0x000b86, 0x000e21,
0x000ae3, 0x000000, 0xffeece, 0xffdca8, 0xffd212,
0xffd7d1, 0xfff2a7, 0x001f4c, 0x0050c2, 0x0072aa,
0x006ff1, 0x003c32, 0xffdc4e, 0xff6a18, 0xff0fef,
0xfefbaf, 0xff4c40, 0x000000, 0x00ebc8, 0x01c077,
0x02209e, 0x01c1a4, 0x008e60, 0xfebe52, 0xfcd690,
0xfb8fa5, 0xfba498, 0xfd9812, 0x0181ce, 0x06f5f3,
0x0d112f, 0x12a958, 0x169686, 0x18000e, 0x169686,
0x12a958, 0x0d112f, 0x06f5f3, 0x0181ce, 0xfd9812,
0xfba498, 0xfb8fa5, 0xfcd690, 0xfebe52, 0x008e60,
0x01c1a4, 0x02209e, 0x01c077, 0x00ebc8, 0x000000,
0xff4c40, 0xfefbaf, 0xff0fef, 0xff6a18, 0xffdc4e,
0x003c32, 0x006ff1, 0x0072aa, 0x0050c2, 0x001f4c,
0xfff2a7, 0xffd7d1, 0xffd212, 0xffdca8, 0xffeece,
0x000000, 0x000ae3, 0x000e21, 0x000b86, 0x000645,
0x000147, 0xfffe32, 0xfffd45, 0xfffdce, 0xfffed9,
0xffffb2, 0x000014,
};
static const int lpf3_mode1[] = {
0x000000, 0x000081, 0x000000, 0xfffedb, 0x000000,
0x00022d, 0x000000, 0xfffc46, 0x000000, 0x0005f7,
0x000000, 0xfff6eb, 0x000000, 0x000d4e, 0x000000,
0xffed1e, 0x000000, 0x001a1c, 0x000000, 0xffdcb0,
0x000000, 0x002ede, 0x000000, 0xffc2d1, 0x000000,
0x004ebe, 0x000000, 0xff9beb, 0x000000, 0x007dd7,
0x000000, 0xff633a, 0x000000, 0x00c1d2, 0x000000,
0xff11d5, 0x000000, 0x012368, 0x000000, 0xfe9c45,
0x000000, 0x01b252, 0x000000, 0xfdebf6, 0x000000,
0x0290b8, 0x000000, 0xfcca0d, 0x000000, 0x041d7c,
0x000000, 0xfa8152, 0x000000, 0x07e9c6, 0x000000,
0xf28fb5, 0x000000, 0x28b216, 0x3fffde, 0x28b216,
0x000000, 0xf28fb5, 0x000000, 0x07e9c6, 0x000000,
0xfa8152, 0x000000, 0x041d7c, 0x000000, 0xfcca0d,
0x000000, 0x0290b8, 0x000000, 0xfdebf6, 0x000000,
0x01b252, 0x000000, 0xfe9c45, 0x000000, 0x012368,
0x000000, 0xff11d5, 0x000000, 0x00c1d2, 0x000000,
0xff633a, 0x000000, 0x007dd7, 0x000000, 0xff9beb,
0x000000, 0x004ebe, 0x000000, 0xffc2d1, 0x000000,
0x002ede, 0x000000, 0xffdcb0, 0x000000, 0x001a1c,
0x000000, 0xffed1e, 0x000000, 0x000d4e, 0x000000,
0xfff6eb, 0x000000, 0x0005f7, 0x000000, 0xfffc46,
0x000000, 0x00022d, 0x000000, 0xfffedb, 0x000000,
0x000081, 0x000000,
};
static const int lpf1_mode2[] = {
0x000014, 0xffffb2, 0xfffed9, 0xfffdce, 0xfffd45,
0xfffe32, 0x000147, 0x000645, 0x000b86, 0x000e21,
0x000ae3, 0x000000, 0xffeece, 0xffdca8, 0xffd212,
0xffd7d1, 0xfff2a7, 0x001f4c, 0x0050c2, 0x0072aa,
0x006ff1, 0x003c32, 0xffdc4e, 0xff6a18, 0xff0fef,
0xfefbaf, 0xff4c40, 0x000000, 0x00ebc8, 0x01c077,
0x02209e, 0x01c1a4, 0x008e60, 0xfebe52, 0xfcd690,
0xfb8fa5, 0xfba498, 0xfd9812, 0x0181ce, 0x06f5f3,
0x0d112f, 0x12a958, 0x169686, 0x18000e, 0x169686,
0x12a958, 0x0d112f, 0x06f5f3, 0x0181ce, 0xfd9812,
0xfba498, 0xfb8fa5, 0xfcd690, 0xfebe52, 0x008e60,
0x01c1a4, 0x02209e, 0x01c077, 0x00ebc8, 0x000000,
0xff4c40, 0xfefbaf, 0xff0fef, 0xff6a18, 0xffdc4e,
0x003c32, 0x006ff1, 0x0072aa, 0x0050c2, 0x001f4c,
0xfff2a7, 0xffd7d1, 0xffd212, 0xffdca8, 0xffeece,
0x000000, 0x000ae3, 0x000e21, 0x000b86, 0x000645,
0x000147, 0xfffe32, 0xfffd45, 0xfffdce, 0xfffed9,
0xffffb2, 0x000014
};
static const int lpf3_mode2[] = {
0x00005e, 0xffff19, 0xfffe3e, 0x00030a, 0x0004de,
0xfff899, 0xfff531, 0x000f4a, 0x001510, 0xffe39e,
0xffda78, 0x0030d1, 0x003e97, 0xffb0c5, 0xff9cd2,
0x007aec, 0x009706, 0xff47dd, 0xff20f2, 0x010cbd,
0x01426b, 0xfe7e4e, 0xfe3340, 0x0226a1, 0x0293d1,
0xfce4d3, 0xfc382d, 0x04ad05, 0x05ef42, 0xf82315,
0xf4bde1, 0x130bdd, 0x399128, 0x399128, 0x130bdd,
0xf4bde1, 0xf82315, 0x05ef42, 0x04ad05, 0xfc382d,
0xfce4d3, 0x0293d1, 0x0226a1, 0xfe3340, 0xfe7e4e,
0x01426b, 0x010cbd, 0xff20f2, 0xff47dd, 0x009706,
0x007aec, 0xff9cd2, 0xffb0c5, 0x003e97, 0x0030d1,
0xffda78, 0xffe39e, 0x001510, 0x000f4a, 0xfff531,
0xfff899, 0x0004de, 0x00030a, 0xfffe3e, 0xffff19,
0x00005e
};
static const int lpf1_mode3[] = {
0x000000, 0xfffc12, 0xfff5cb, 0xfff022, 0xffeffa,
0xfffa03, 0x000f84, 0x002b96, 0x00429d, 0x00455c,
0x00277a, 0xffe762, 0xff93e1, 0xff4bc4, 0xff3567,
0xff6f81, 0x000000, 0x00c850, 0x018619, 0x01e3e3,
0x01972b, 0x008323, 0xfed332, 0xfd00e8, 0xfbbe66,
0xfbc791, 0xfda631, 0x017bb2, 0x06e40b, 0x0cfe8e,
0x129dfd, 0x1693d6, 0x18011b, 0x1693d6, 0x129dfd,
0x0cfe8e, 0x06e40b, 0x017bb2, 0xfda631, 0xfbc791,
0xfbbe66, 0xfd00e8, 0xfed332, 0x008323, 0x01972b,
0x01e3e3, 0x018619, 0x00c850, 0x000000, 0xff6f81,
0xff3567, 0xff4bc4, 0xff93e1, 0xffe762, 0x00277a,
0x00455c, 0x00429d, 0x002b96, 0x000f84, 0xfffa03,
0xffeffa, 0xfff022, 0xfff5cb, 0xfffc12, 0x000000,
};
static const int lpf3_mode3[] = {
0x000000, 0xfff4f6, 0x000000, 0x001e36, 0x000000,
0xffbfb6, 0x000000, 0x007789, 0x000000, 0xff3423,
0x000000, 0x0147cc, 0x000000, 0xfe0523, 0x000000,
0x02ffbb, 0x000000, 0xfb728b, 0x000000, 0x0732af,
0x000000, 0xf301d5, 0x000000, 0x288c99, 0x40023d,
0x288c99, 0x000000, 0xf301d5, 0x000000, 0x0732af,
0x000000, 0xfb728b, 0x000000, 0x02ffbb, 0x000000,
0xfe0523, 0x000000, 0x0147cc, 0x000000, 0xff3423,
0x000000, 0x007789, 0x000000, 0xffbfb6, 0x000000,
0x001e36, 0x000000, 0xfff4f6, 0x000000
};
static const int lpf1_mode4[] = {
0xfff71d, 0xffd0ad, 0xffa4b6, 0xff8cdb, 0xffa5d4,
0x000000, 0x009021, 0x012899, 0x0181ac, 0x0151f3,
0x0070b6, 0xfef591, 0xfd46bc, 0xfc0b63, 0xfc00d4,
0xfdbd02, 0x017215, 0x06c95c, 0x0ce665, 0x1295f9,
0x169d63, 0x181214, 0x169d63, 0x1295f9, 0x0ce665,
0x06c95c, 0x017215, 0xfdbd02, 0xfc00d4, 0xfc0b63,
0xfd46bc, 0xfef591, 0x0070b6, 0x0151f3, 0x0181ac,
0x012899, 0x009021, 0x000000, 0xffa5d4, 0xff8cdb,
0xffa4b6, 0xffd0ad, 0xfff71d
};
static const int lpf3_mode4[] = {
0xffd46b, 0xffb7a1, 0x006ded, 0x009ddb, 0xff25e9,
0xfedaef, 0x018208, 0x01f591, 0xfd7972, 0xfcbff4,
0x043527, 0x058a27, 0xf872cb, 0xf4f5a2, 0x12ef7c,
0x399f1f, 0x399f1f, 0x12ef7c, 0xf4f5a2, 0xf872cb,
0x058a27, 0x043527, 0xfcbff4, 0xfd7972, 0x01f591,
0x018208, 0xfedaef, 0xff25e9, 0x009ddb, 0x006ded,
0xffb7a1, 0xffd46b
};