19e7647b5SLucas Tanure // SPDX-License-Identifier: GPL-2.0-only 29e7647b5SLucas Tanure /* 39e7647b5SLucas Tanure * patch_cs8409-tables.c -- HD audio interface patch for Cirrus Logic CS8409 HDA bridge chip 49e7647b5SLucas Tanure * 59e7647b5SLucas Tanure * Copyright (C) 2021 Cirrus Logic, Inc. and 69e7647b5SLucas Tanure * Cirrus Logic International Semiconductor Ltd. 79e7647b5SLucas Tanure * 89e7647b5SLucas Tanure * Author: Lucas Tanure <tanureal@opensource.cirrus.com> 99e7647b5SLucas Tanure */ 109e7647b5SLucas Tanure 119e7647b5SLucas Tanure #include "patch_cs8409.h" 129e7647b5SLucas Tanure 139e7647b5SLucas Tanure /* Dell Inspiron platforms 149e7647b5SLucas Tanure * with cs8409 bridge and cs42l42 codec 159e7647b5SLucas Tanure */ 169e7647b5SLucas Tanure const struct snd_pci_quirk cs8409_fixup_tbl[] = { 179e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0A11, "Bullseye", CS8409_BULLSEYE), 189e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0A12, "Bullseye", CS8409_BULLSEYE), 199e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0A23, "Bullseye", CS8409_BULLSEYE), 209e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0A24, "Bullseye", CS8409_BULLSEYE), 219e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0A25, "Bullseye", CS8409_BULLSEYE), 229e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0A29, "Bullseye", CS8409_BULLSEYE), 239e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0A2A, "Bullseye", CS8409_BULLSEYE), 249e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0A2B, "Bullseye", CS8409_BULLSEYE), 259e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0AB0, "Warlock", CS8409_WARLOCK), 269e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0AB2, "Warlock", CS8409_WARLOCK), 279e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0AB1, "Warlock", CS8409_WARLOCK), 289e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0AB3, "Warlock", CS8409_WARLOCK), 299e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0AB4, "Warlock", CS8409_WARLOCK), 309e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0AB5, "Warlock", CS8409_WARLOCK), 319e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0AD9, "Warlock", CS8409_WARLOCK), 329e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0ADA, "Warlock", CS8409_WARLOCK), 339e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0ADB, "Warlock", CS8409_WARLOCK), 349e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0ADC, "Warlock", CS8409_WARLOCK), 359e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0AF4, "Warlock", CS8409_WARLOCK), 369e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0AF5, "Warlock", CS8409_WARLOCK), 379e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0A77, "Cyborg", CS8409_CYBORG), 389e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0A78, "Cyborg", CS8409_CYBORG), 399e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0A79, "Cyborg", CS8409_CYBORG), 409e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0A7A, "Cyborg", CS8409_CYBORG), 419e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0A7D, "Cyborg", CS8409_CYBORG), 429e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0A7E, "Cyborg", CS8409_CYBORG), 439e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0A7F, "Cyborg", CS8409_CYBORG), 449e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0A80, "Cyborg", CS8409_CYBORG), 459e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0ADF, "Cyborg", CS8409_CYBORG), 469e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0AE0, "Cyborg", CS8409_CYBORG), 479e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0AE1, "Cyborg", CS8409_CYBORG), 489e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0AE2, "Cyborg", CS8409_CYBORG), 499e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0AE9, "Cyborg", CS8409_CYBORG), 509e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0AEA, "Cyborg", CS8409_CYBORG), 519e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0AEB, "Cyborg", CS8409_CYBORG), 529e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0AEC, "Cyborg", CS8409_CYBORG), 539e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0AED, "Cyborg", CS8409_CYBORG), 549e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0AEE, "Cyborg", CS8409_CYBORG), 559e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0AEF, "Cyborg", CS8409_CYBORG), 569e7647b5SLucas Tanure SND_PCI_QUIRK(0x1028, 0x0AF0, "Cyborg", CS8409_CYBORG), 579e7647b5SLucas Tanure {} /* terminator */ 589e7647b5SLucas Tanure }; 599e7647b5SLucas Tanure 609e7647b5SLucas Tanure /* Dell Inspiron models with cs8409/cs42l42 */ 619e7647b5SLucas Tanure const struct hda_model_fixup cs8409_models[] = { 629e7647b5SLucas Tanure { .id = CS8409_BULLSEYE, .name = "bullseye" }, 639e7647b5SLucas Tanure { .id = CS8409_WARLOCK, .name = "warlock" }, 649e7647b5SLucas Tanure { .id = CS8409_CYBORG, .name = "cyborg" }, 659e7647b5SLucas Tanure {} 669e7647b5SLucas Tanure }; 679e7647b5SLucas Tanure 689e7647b5SLucas Tanure const struct hda_fixup cs8409_fixups[] = { 699e7647b5SLucas Tanure [CS8409_BULLSEYE] = { 709e7647b5SLucas Tanure .type = HDA_FIXUP_PINS, 719e7647b5SLucas Tanure .v.pins = cs8409_cs42l42_pincfgs, 729e7647b5SLucas Tanure .chained = true, 739e7647b5SLucas Tanure .chain_id = CS8409_FIXUPS, 749e7647b5SLucas Tanure }, 759e7647b5SLucas Tanure [CS8409_WARLOCK] = { 769e7647b5SLucas Tanure .type = HDA_FIXUP_PINS, 779e7647b5SLucas Tanure .v.pins = cs8409_cs42l42_pincfgs, 789e7647b5SLucas Tanure .chained = true, 799e7647b5SLucas Tanure .chain_id = CS8409_FIXUPS, 809e7647b5SLucas Tanure }, 819e7647b5SLucas Tanure [CS8409_CYBORG] = { 829e7647b5SLucas Tanure .type = HDA_FIXUP_PINS, 839e7647b5SLucas Tanure .v.pins = cs8409_cs42l42_pincfgs, 849e7647b5SLucas Tanure .chained = true, 859e7647b5SLucas Tanure .chain_id = CS8409_FIXUPS, 869e7647b5SLucas Tanure }, 879e7647b5SLucas Tanure [CS8409_FIXUPS] = { 889e7647b5SLucas Tanure .type = HDA_FIXUP_FUNC, 899e7647b5SLucas Tanure .v.func = cs8409_cs42l42_fixups, 909e7647b5SLucas Tanure }, 919e7647b5SLucas Tanure }; 929e7647b5SLucas Tanure 939e7647b5SLucas Tanure const struct hda_verb cs8409_cs42l42_init_verbs[] = { 94ccff0064SStefan Binding { CS8409_PIN_AFG, AC_VERB_SET_GPIO_WAKE_MASK, 0x0018 }, /* WAKE from GPIO 3,4 */ 95ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, AC_VERB_SET_PROC_STATE, 0x0001 }, /* Enable VPW processing */ 96ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, AC_VERB_SET_COEF_INDEX, 0x0002 }, /* Configure GPIO 6,7 */ 97ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, AC_VERB_SET_PROC_COEF, 0x0080 }, /* I2C mode */ 98ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, AC_VERB_SET_COEF_INDEX, 0x005b }, /* Set I2C bus speed */ 99ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, AC_VERB_SET_PROC_COEF, 0x0200 }, /* 100kHz I2C_STO = 2 */ 1009e7647b5SLucas Tanure {} /* terminator */ 1019e7647b5SLucas Tanure }; 1029e7647b5SLucas Tanure 1039e7647b5SLucas Tanure const struct hda_pintbl cs8409_cs42l42_pincfgs[] = { 104ccff0064SStefan Binding { CS8409_PIN_ASP1_TRANSMITTER_A, 0x042120f0 }, /* ASP-1-TX */ 105ccff0064SStefan Binding { CS8409_PIN_ASP1_RECEIVER_A, 0x04a12050 }, /* ASP-1-RX */ 106ccff0064SStefan Binding { CS8409_PIN_ASP2_TRANSMITTER_A, 0x901000f0 }, /* ASP-2-TX */ 107ccff0064SStefan Binding { CS8409_PIN_DMIC1_IN, 0x90a00090 }, /* DMIC-1 */ 1089e7647b5SLucas Tanure {} /* terminator */ 1099e7647b5SLucas Tanure }; 1109e7647b5SLucas Tanure 1119e7647b5SLucas Tanure /* Vendor specific HW configuration for CS42L42 */ 1129e7647b5SLucas Tanure const struct cs8409_i2c_param cs42l42_init_reg_seq[] = { 1139e7647b5SLucas Tanure { 0x1010, 0xB0 }, 1149e7647b5SLucas Tanure { 0x1D01, 0x00 }, 1159e7647b5SLucas Tanure { 0x1D02, 0x06 }, 1169e7647b5SLucas Tanure { 0x1D03, 0x00 }, 1179e7647b5SLucas Tanure { 0x1107, 0x01 }, 1189e7647b5SLucas Tanure { 0x1009, 0x02 }, 1199e7647b5SLucas Tanure { 0x1007, 0x03 }, 1209e7647b5SLucas Tanure { 0x1201, 0x00 }, 1219e7647b5SLucas Tanure { 0x1208, 0x13 }, 1229e7647b5SLucas Tanure { 0x1205, 0xFF }, 1239e7647b5SLucas Tanure { 0x1206, 0x00 }, 1249e7647b5SLucas Tanure { 0x1207, 0x20 }, 1259e7647b5SLucas Tanure { 0x1202, 0x0D }, 1269e7647b5SLucas Tanure { 0x2A02, 0x02 }, 1279e7647b5SLucas Tanure { 0x2A03, 0x00 }, 1289e7647b5SLucas Tanure { 0x2A04, 0x00 }, 1299e7647b5SLucas Tanure { 0x2A05, 0x02 }, 1309e7647b5SLucas Tanure { 0x2A06, 0x00 }, 1319e7647b5SLucas Tanure { 0x2A07, 0x20 }, 1329e7647b5SLucas Tanure { 0x2A08, 0x02 }, 1339e7647b5SLucas Tanure { 0x2A09, 0x00 }, 1349e7647b5SLucas Tanure { 0x2A0A, 0x80 }, 1359e7647b5SLucas Tanure { 0x2A0B, 0x02 }, 1369e7647b5SLucas Tanure { 0x2A0C, 0x00 }, 1379e7647b5SLucas Tanure { 0x2A0D, 0xA0 }, 1389e7647b5SLucas Tanure { 0x2A01, 0x0C }, 1399e7647b5SLucas Tanure { 0x2902, 0x01 }, 1409e7647b5SLucas Tanure { 0x2903, 0x02 }, 1419e7647b5SLucas Tanure { 0x2904, 0x00 }, 1429e7647b5SLucas Tanure { 0x2905, 0x00 }, 1439e7647b5SLucas Tanure { 0x2901, 0x01 }, 1449e7647b5SLucas Tanure { 0x1101, 0x0A }, 1459e7647b5SLucas Tanure { 0x1102, 0x84 }, 1469e7647b5SLucas Tanure { 0x2301, 0x00 }, 1479e7647b5SLucas Tanure { 0x2303, 0x00 }, 1489e7647b5SLucas Tanure { 0x2302, 0x3f }, 1499e7647b5SLucas Tanure { 0x2001, 0x03 }, 1509e7647b5SLucas Tanure { 0x1B75, 0xB6 }, 1519e7647b5SLucas Tanure { 0x1B73, 0xC2 }, 1529e7647b5SLucas Tanure { 0x1129, 0x01 }, 1539e7647b5SLucas Tanure { 0x1121, 0xF3 }, 1549e7647b5SLucas Tanure { 0x1103, 0x20 }, 1559e7647b5SLucas Tanure { 0x1105, 0x00 }, 1569e7647b5SLucas Tanure { 0x1112, 0xC0 }, 1579e7647b5SLucas Tanure { 0x1113, 0x80 }, 1589e7647b5SLucas Tanure { 0x1C03, 0xC0 }, 1599e7647b5SLucas Tanure { 0x1105, 0x00 }, 1609e7647b5SLucas Tanure { 0x1112, 0xC0 }, 1619e7647b5SLucas Tanure { 0x1101, 0x02 }, 162*cab82a22SStefan Binding { 0x1316, 0xff }, 163*cab82a22SStefan Binding { 0x1317, 0xff }, 164*cab82a22SStefan Binding { 0x1318, 0xff }, 165*cab82a22SStefan Binding { 0x1319, 0xff }, 166*cab82a22SStefan Binding { 0x131a, 0xff }, 167*cab82a22SStefan Binding { 0x131b, 0xff }, 168*cab82a22SStefan Binding { 0x131c, 0xff }, 169*cab82a22SStefan Binding { 0x131e, 0xff }, 170*cab82a22SStefan Binding { 0x131f, 0xff }, 171*cab82a22SStefan Binding { 0x1320, 0xff }, 172*cab82a22SStefan Binding { 0x1b79, 0xff }, 173*cab82a22SStefan Binding { 0x1b7a, 0xff }, 1749e7647b5SLucas Tanure {} /* Terminator */ 1759e7647b5SLucas Tanure }; 1769e7647b5SLucas Tanure 1779e7647b5SLucas Tanure /* Vendor specific hw configuration for CS8409 */ 1789e7647b5SLucas Tanure const struct cs8409_cir_param cs8409_cs42l42_hw_cfg[] = { 179ccff0064SStefan Binding /* +PLL1/2_EN, +I2C_EN */ 180ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_DEV_CFG1, 0xb008 }, 181ccff0064SStefan Binding /* ASP1/2_EN=0, ASP1_STP=1 */ 182ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_DEV_CFG2, 0x0002 }, 183ccff0064SStefan Binding /* ASP1/2_BUS_IDLE=10, +GPIO_I2C */ 184ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_DEV_CFG3, 0x0a80 }, 185ccff0064SStefan Binding /* ASP1.A: TX.LAP=0, TX.LSZ=24 bits, TX.LCS=0 */ 186ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, ASP1_A_TX_CTRL1, 0x0800 }, 187ccff0064SStefan Binding /* ASP1.A: TX.RAP=0, TX.RSZ=24 bits, TX.RCS=32 */ 188ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, ASP1_A_TX_CTRL2, 0x0820 }, 189ccff0064SStefan Binding /* ASP2.A: TX.LAP=0, TX.LSZ=24 bits, TX.LCS=0 */ 190ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, ASP2_A_TX_CTRL1, 0x0800 }, 191ccff0064SStefan Binding /* ASP2.A: TX.RAP=1, TX.RSZ=24 bits, TX.RCS=0 */ 192ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, ASP2_A_TX_CTRL2, 0x2800 }, 193ccff0064SStefan Binding /* ASP1.A: RX.LAP=0, RX.LSZ=24 bits, RX.LCS=0 */ 194ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, ASP1_A_RX_CTRL1, 0x0800 }, 195ccff0064SStefan Binding /* ASP1.A: RX.RAP=0, RX.RSZ=24 bits, RX.RCS=0 */ 196ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, ASP1_A_RX_CTRL2, 0x0800 }, 197ccff0064SStefan Binding /* ASP1: LCHI = 00h */ 198ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_ASP1_CLK_CTRL1, 0x8000 }, 199ccff0064SStefan Binding /* ASP1: MC/SC_SRCSEL=PLL1, LCPR=FFh */ 200ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_ASP1_CLK_CTRL2, 0x28ff }, 201ccff0064SStefan Binding /* ASP1: MCEN=0, FSD=011, SCPOL_IN/OUT=0, SCDIV=1:4 */ 202ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_ASP1_CLK_CTRL3, 0x0062 }, 203ccff0064SStefan Binding /* ASP2: LCHI=1Fh */ 204ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_ASP2_CLK_CTRL1, 0x801f }, 205ccff0064SStefan Binding /* ASP2: MC/SC_SRCSEL=PLL1, LCPR=3Fh */ 206ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_ASP2_CLK_CTRL2, 0x283f }, 207ccff0064SStefan Binding /* ASP2: 5050=1, MCEN=0, FSD=010, SCPOL_IN/OUT=1, SCDIV=1:16 */ 208ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_ASP2_CLK_CTRL3, 0x805c }, 209ccff0064SStefan Binding /* DMIC1_MO=10b, DMIC1/2_SR=1 */ 210ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_DMIC_CFG, 0x0023 }, 211ccff0064SStefan Binding /* ASP1/2_BEEP=0 */ 212ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_BEEP_CFG, 0x0000 }, 213ccff0064SStefan Binding /* ASP1/2_EN=1, ASP1_STP=1 */ 214ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_DEV_CFG2, 0x0062 }, 215ccff0064SStefan Binding /* -PLL2_EN */ 216ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_DEV_CFG1, 0x9008 }, 217ccff0064SStefan Binding /* TX2.A: pre-scale att.=0 dB */ 218ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_PRE_SCALE_ATTN2, 0x0000 }, 219ccff0064SStefan Binding /* ASP1/2_xxx_EN=1, ASP1/2_MCLK_EN=0, DMIC1_SCL_EN=1 */ 220ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_PAD_CFG_SLW_RATE_CTRL, 0xfc03 }, 221ccff0064SStefan Binding /* test mode on */ 222ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, 0xc0, 0x9999 }, 223ccff0064SStefan Binding /* GPIO hysteresis = 30 us */ 224ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, 0xc5, 0x0000 }, 225ccff0064SStefan Binding /* test mode off */ 226ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, 0xc0, 0x0000 }, 2279e7647b5SLucas Tanure {} /* Terminator */ 2289e7647b5SLucas Tanure }; 2299e7647b5SLucas Tanure 2309e7647b5SLucas Tanure const struct cs8409_cir_param cs8409_cs42l42_bullseye_atn[] = { 231ccff0064SStefan Binding /* EQ_SEL=1, EQ1/2_EN=0 */ 232ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_PFE_CTRL1, 0x4000 }, 233ccff0064SStefan Binding /* +EQ_ACC */ 234ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_PFE_COEF_W2, 0x4000 }, 235ccff0064SStefan Binding /* +EQ2_EN */ 236ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_PFE_CTRL1, 0x4010 }, 237ccff0064SStefan Binding /* EQ_DATA_HI=0x0647 */ 238ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_PFE_COEF_W1, 0x0647 }, 239ccff0064SStefan Binding /* +EQ_WRT, +EQ_ACC, EQ_ADR=0, EQ_DATA_LO=0x67 */ 240ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_PFE_COEF_W2, 0xc0c7 }, 241ccff0064SStefan Binding /* EQ_DATA_HI=0x0647 */ 242ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_PFE_COEF_W1, 0x0647 }, 243ccff0064SStefan Binding /* +EQ_WRT, +EQ_ACC, EQ_ADR=1, EQ_DATA_LO=0x67 */ 244ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_PFE_COEF_W2, 0xc1c7 }, 245ccff0064SStefan Binding /* EQ_DATA_HI=0xf370 */ 246ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_PFE_COEF_W1, 0xf370 }, 247ccff0064SStefan Binding /* +EQ_WRT, +EQ_ACC, EQ_ADR=2, EQ_DATA_LO=0x71 */ 248ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_PFE_COEF_W2, 0xc271 }, 249ccff0064SStefan Binding /* EQ_DATA_HI=0x1ef8 */ 250ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_PFE_COEF_W1, 0x1ef8 }, 251ccff0064SStefan Binding /* +EQ_WRT, +EQ_ACC, EQ_ADR=3, EQ_DATA_LO=0x48 */ 252ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_PFE_COEF_W2, 0xc348 }, 253ccff0064SStefan Binding /* EQ_DATA_HI=0xc110 */ 254ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_PFE_COEF_W1, 0xc110 }, 255ccff0064SStefan Binding /* +EQ_WRT, +EQ_ACC, EQ_ADR=4, EQ_DATA_LO=0x5a */ 256ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_PFE_COEF_W2, 0xc45a }, 257ccff0064SStefan Binding /* EQ_DATA_HI=0x1f29 */ 258ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_PFE_COEF_W1, 0x1f29 }, 259ccff0064SStefan Binding /* +EQ_WRT, +EQ_ACC, EQ_ADR=5, EQ_DATA_LO=0x74 */ 260ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_PFE_COEF_W2, 0xc574 }, 261ccff0064SStefan Binding /* EQ_DATA_HI=0x1d7a */ 262ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_PFE_COEF_W1, 0x1d7a }, 263ccff0064SStefan Binding /* +EQ_WRT, +EQ_ACC, EQ_ADR=6, EQ_DATA_LO=0x53 */ 264ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_PFE_COEF_W2, 0xc653 }, 265ccff0064SStefan Binding /* EQ_DATA_HI=0xc38c */ 266ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_PFE_COEF_W1, 0xc38c }, 267ccff0064SStefan Binding /* +EQ_WRT, +EQ_ACC, EQ_ADR=7, EQ_DATA_LO=0x14 */ 268ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_PFE_COEF_W2, 0xc714 }, 269ccff0064SStefan Binding /* EQ_DATA_HI=0x1ca3 */ 270ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_PFE_COEF_W1, 0x1ca3 }, 271ccff0064SStefan Binding /* +EQ_WRT, +EQ_ACC, EQ_ADR=8, EQ_DATA_LO=0xc7 */ 272ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_PFE_COEF_W2, 0xc8c7 }, 273ccff0064SStefan Binding /* EQ_DATA_HI=0xc38c */ 274ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_PFE_COEF_W1, 0xc38c }, 275ccff0064SStefan Binding /* +EQ_WRT, +EQ_ACC, EQ_ADR=9, EQ_DATA_LO=0x14 */ 276ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_PFE_COEF_W2, 0xc914 }, 277ccff0064SStefan Binding /* -EQ_ACC, -EQ_WRT */ 278ccff0064SStefan Binding { CS8409_PIN_VENDOR_WIDGET, CS8409_PFE_COEF_W2, 0x0000 }, 2799e7647b5SLucas Tanure {} /* Terminator */ 2809e7647b5SLucas Tanure }; 281