ASoC: sdm660_cdc: Add writeable registers for Dig_cdc and sdw codec regmap
Add Writeable registers list for Digital codec and soundwire codec regmap config to avoid invalid register access during reg_cache_sync. Ensure digital codec clock is enabled before regcache sync to avoid AHB access errors.Modify mutex use to avoid clock disabling during regmap register access. Change-Id: I8ab84f80298e01d145395f1347352afe5cfbcc9e Signed-off-by: Ramprasad Katkam <katkam@codeaurora.org>
This commit is contained in:
parent
60be71604a
commit
9c650d99af
6 changed files with 270 additions and 5 deletions
|
@ -220,3 +220,100 @@ const u8 msm_sdw_reg_readable[MSM_SDW_MAX_REGISTER] = {
|
|||
[MSM_SDW_TOP_I2S_RESET] = 1,
|
||||
[MSM_SDW_TOP_BLOCKS_RESET] = 1,
|
||||
};
|
||||
|
||||
const u8 msm_sdw_reg_writeable[MSM_SDW_MAX_REGISTER] = {
|
||||
[MSM_SDW_PAGE_REGISTER] = 1,
|
||||
[MSM_SDW_TX9_SPKR_PROT_PATH_CTL] = 1,
|
||||
[MSM_SDW_TX9_SPKR_PROT_PATH_CFG0] = 1,
|
||||
[MSM_SDW_TX10_SPKR_PROT_PATH_CTL] = 1,
|
||||
[MSM_SDW_TX10_SPKR_PROT_PATH_CFG0] = 1,
|
||||
[MSM_SDW_TX11_SPKR_PROT_PATH_CTL] = 1,
|
||||
[MSM_SDW_TX11_SPKR_PROT_PATH_CFG0] = 1,
|
||||
[MSM_SDW_TX12_SPKR_PROT_PATH_CTL] = 1,
|
||||
[MSM_SDW_TX12_SPKR_PROT_PATH_CFG0] = 1,
|
||||
[MSM_SDW_COMPANDER7_CTL0] = 1,
|
||||
[MSM_SDW_COMPANDER7_CTL1] = 1,
|
||||
[MSM_SDW_COMPANDER7_CTL2] = 1,
|
||||
[MSM_SDW_COMPANDER7_CTL3] = 1,
|
||||
[MSM_SDW_COMPANDER7_CTL4] = 1,
|
||||
[MSM_SDW_COMPANDER7_CTL5] = 1,
|
||||
[MSM_SDW_COMPANDER7_CTL7] = 1,
|
||||
[MSM_SDW_COMPANDER8_CTL0] = 1,
|
||||
[MSM_SDW_COMPANDER8_CTL1] = 1,
|
||||
[MSM_SDW_COMPANDER8_CTL2] = 1,
|
||||
[MSM_SDW_COMPANDER8_CTL3] = 1,
|
||||
[MSM_SDW_COMPANDER8_CTL4] = 1,
|
||||
[MSM_SDW_COMPANDER8_CTL5] = 1,
|
||||
[MSM_SDW_COMPANDER8_CTL7] = 1,
|
||||
[MSM_SDW_RX7_RX_PATH_CTL] = 1,
|
||||
[MSM_SDW_RX7_RX_PATH_CFG0] = 1,
|
||||
[MSM_SDW_RX7_RX_PATH_CFG1] = 1,
|
||||
[MSM_SDW_RX7_RX_PATH_CFG2] = 1,
|
||||
[MSM_SDW_RX7_RX_VOL_CTL] = 1,
|
||||
[MSM_SDW_RX7_RX_PATH_MIX_CTL] = 1,
|
||||
[MSM_SDW_RX7_RX_PATH_MIX_CFG] = 1,
|
||||
[MSM_SDW_RX7_RX_VOL_MIX_CTL] = 1,
|
||||
[MSM_SDW_RX7_RX_PATH_SEC0] = 1,
|
||||
[MSM_SDW_RX7_RX_PATH_SEC1] = 1,
|
||||
[MSM_SDW_RX7_RX_PATH_SEC2] = 1,
|
||||
[MSM_SDW_RX7_RX_PATH_SEC3] = 1,
|
||||
[MSM_SDW_RX7_RX_PATH_SEC5] = 1,
|
||||
[MSM_SDW_RX7_RX_PATH_SEC6] = 1,
|
||||
[MSM_SDW_RX7_RX_PATH_SEC7] = 1,
|
||||
[MSM_SDW_RX7_RX_PATH_MIX_SEC0] = 1,
|
||||
[MSM_SDW_RX7_RX_PATH_MIX_SEC1] = 1,
|
||||
[MSM_SDW_RX8_RX_PATH_CTL] = 1,
|
||||
[MSM_SDW_RX8_RX_PATH_CFG0] = 1,
|
||||
[MSM_SDW_RX8_RX_PATH_CFG1] = 1,
|
||||
[MSM_SDW_RX8_RX_PATH_CFG2] = 1,
|
||||
[MSM_SDW_RX8_RX_VOL_CTL] = 1,
|
||||
[MSM_SDW_RX8_RX_PATH_MIX_CTL] = 1,
|
||||
[MSM_SDW_RX8_RX_PATH_MIX_CFG] = 1,
|
||||
[MSM_SDW_RX8_RX_VOL_MIX_CTL] = 1,
|
||||
[MSM_SDW_RX8_RX_PATH_SEC0] = 1,
|
||||
[MSM_SDW_RX8_RX_PATH_SEC1] = 1,
|
||||
[MSM_SDW_RX8_RX_PATH_SEC2] = 1,
|
||||
[MSM_SDW_RX8_RX_PATH_SEC3] = 1,
|
||||
[MSM_SDW_RX8_RX_PATH_SEC5] = 1,
|
||||
[MSM_SDW_RX8_RX_PATH_SEC6] = 1,
|
||||
[MSM_SDW_RX8_RX_PATH_SEC7] = 1,
|
||||
[MSM_SDW_RX8_RX_PATH_MIX_SEC0] = 1,
|
||||
[MSM_SDW_RX8_RX_PATH_MIX_SEC1] = 1,
|
||||
[MSM_SDW_BOOST0_BOOST_PATH_CTL] = 1,
|
||||
[MSM_SDW_BOOST0_BOOST_CTL] = 1,
|
||||
[MSM_SDW_BOOST0_BOOST_CFG1] = 1,
|
||||
[MSM_SDW_BOOST0_BOOST_CFG2] = 1,
|
||||
[MSM_SDW_BOOST1_BOOST_PATH_CTL] = 1,
|
||||
[MSM_SDW_BOOST1_BOOST_CTL] = 1,
|
||||
[MSM_SDW_BOOST1_BOOST_CFG1] = 1,
|
||||
[MSM_SDW_BOOST1_BOOST_CFG2] = 1,
|
||||
[MSM_SDW_AHB_BRIDGE_WR_DATA_0] = 1,
|
||||
[MSM_SDW_AHB_BRIDGE_WR_DATA_1] = 1,
|
||||
[MSM_SDW_AHB_BRIDGE_WR_DATA_2] = 1,
|
||||
[MSM_SDW_AHB_BRIDGE_WR_DATA_3] = 1,
|
||||
[MSM_SDW_AHB_BRIDGE_WR_ADDR_0] = 1,
|
||||
[MSM_SDW_AHB_BRIDGE_WR_ADDR_1] = 1,
|
||||
[MSM_SDW_AHB_BRIDGE_WR_ADDR_2] = 1,
|
||||
[MSM_SDW_AHB_BRIDGE_WR_ADDR_3] = 1,
|
||||
[MSM_SDW_AHB_BRIDGE_RD_ADDR_0] = 1,
|
||||
[MSM_SDW_AHB_BRIDGE_RD_ADDR_1] = 1,
|
||||
[MSM_SDW_AHB_BRIDGE_RD_ADDR_2] = 1,
|
||||
[MSM_SDW_AHB_BRIDGE_RD_ADDR_3] = 1,
|
||||
[MSM_SDW_AHB_BRIDGE_ACCESS_CFG] = 1,
|
||||
[MSM_SDW_CLK_RST_CTRL_MCLK_CONTROL] = 1,
|
||||
[MSM_SDW_CLK_RST_CTRL_FS_CNT_CONTROL] = 1,
|
||||
[MSM_SDW_CLK_RST_CTRL_SWR_CONTROL] = 1,
|
||||
[MSM_SDW_TOP_TOP_CFG0] = 1,
|
||||
[MSM_SDW_TOP_TOP_CFG1] = 1,
|
||||
[MSM_SDW_TOP_RX_I2S_CTL] = 1,
|
||||
[MSM_SDW_TOP_TX_I2S_CTL] = 1,
|
||||
[MSM_SDW_TOP_RX7_PATH_INPUT0_MUX] = 1,
|
||||
[MSM_SDW_TOP_RX7_PATH_INPUT1_MUX] = 1,
|
||||
[MSM_SDW_TOP_RX8_PATH_INPUT0_MUX] = 1,
|
||||
[MSM_SDW_TOP_RX8_PATH_INPUT1_MUX] = 1,
|
||||
[MSM_SDW_TOP_FREQ_MCLK] = 1,
|
||||
[MSM_SDW_TOP_DEBUG_BUS_SEL] = 1,
|
||||
[MSM_SDW_TOP_DEBUG_EN] = 1,
|
||||
[MSM_SDW_TOP_I2S_RESET] = 1,
|
||||
[MSM_SDW_TOP_BLOCKS_RESET] = 1,
|
||||
};
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
extern const struct regmap_config msm_sdw_regmap_config;
|
||||
extern const u8 msm_sdw_page_map[MSM_SDW_MAX_REGISTER];
|
||||
extern const u8 msm_sdw_reg_readable[MSM_SDW_MAX_REGISTER];
|
||||
extern const u8 msm_sdw_reg_writeable[MSM_SDW_MAX_REGISTER];
|
||||
|
||||
enum {
|
||||
MSM_SDW_RX4 = 0,
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2016, The Linux Foundation. All rights reserved.
|
||||
/* Copyright (c) 2016-2017, The Linux Foundation. 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 version 2 and
|
||||
|
@ -115,6 +115,11 @@ static bool msm_sdw_is_readable_register(struct device *dev, unsigned int reg)
|
|||
return msm_sdw_reg_readable[reg];
|
||||
}
|
||||
|
||||
static bool msm_sdw_is_writeable_register(struct device *dev, unsigned int reg)
|
||||
{
|
||||
return msm_sdw_reg_writeable[reg];
|
||||
}
|
||||
|
||||
static bool msm_sdw_is_volatile_register(struct device *dev, unsigned int reg)
|
||||
{
|
||||
switch (reg) {
|
||||
|
@ -150,6 +155,7 @@ const struct regmap_config msm_sdw_regmap_config = {
|
|||
.reg_defaults = msm_sdw_defaults,
|
||||
.num_reg_defaults = ARRAY_SIZE(msm_sdw_defaults),
|
||||
.max_register = MSM_SDW_MAX_REGISTER,
|
||||
.writeable_reg = msm_sdw_is_writeable_register,
|
||||
.volatile_reg = msm_sdw_is_volatile_register,
|
||||
.readable_reg = msm_sdw_is_readable_register,
|
||||
};
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2016, The Linux Foundation. All rights reserved.
|
||||
/* Copyright (c) 2017, The Linux Foundation. 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 version 2 and
|
||||
|
@ -19,6 +19,7 @@ extern struct reg_default
|
|||
msm89xx_pmic_cdc_defaults[MSM89XX_PMIC_CDC_CACHE_SIZE];
|
||||
|
||||
bool msm89xx_cdc_core_readable_reg(struct device *dev, unsigned int reg);
|
||||
bool msm89xx_cdc_core_writeable_reg(struct device *dev, unsigned int reg);
|
||||
bool msm89xx_cdc_core_volatile_reg(struct device *dev, unsigned int reg);
|
||||
|
||||
enum {
|
||||
|
|
|
@ -77,8 +77,8 @@ static int msm_digcdc_clock_control(bool flag)
|
|||
|
||||
pdata = snd_soc_card_get_drvdata(registered_digcodec->component.card);
|
||||
|
||||
mutex_lock(&pdata->cdc_int_mclk0_mutex);
|
||||
if (flag) {
|
||||
mutex_lock(&pdata->cdc_int_mclk0_mutex);
|
||||
if (atomic_read(&pdata->int_mclk0_enabled) == false) {
|
||||
pdata->digital_cdc_core_clk.enable = 1;
|
||||
ret = afe_set_lpass_clock_v2(
|
||||
|
@ -93,7 +93,6 @@ static int msm_digcdc_clock_control(bool flag)
|
|||
*/
|
||||
if (ret == -ENODEV)
|
||||
msm_dig_cdc->regmap->cache_only = true;
|
||||
mutex_unlock(&pdata->cdc_int_mclk0_mutex);
|
||||
return ret;
|
||||
}
|
||||
pr_debug("enabled digital codec core clk\n");
|
||||
|
@ -102,10 +101,10 @@ static int msm_digcdc_clock_control(bool flag)
|
|||
50);
|
||||
}
|
||||
} else {
|
||||
mutex_unlock(&pdata->cdc_int_mclk0_mutex);
|
||||
dev_dbg(registered_digcodec->dev,
|
||||
"disable MCLK, workq to disable set already\n");
|
||||
}
|
||||
mutex_unlock(&pdata->cdc_int_mclk0_mutex);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -116,6 +115,7 @@ static void enable_digital_callback(void *flag)
|
|||
|
||||
static void disable_digital_callback(void *flag)
|
||||
{
|
||||
msm_digcdc_clock_control(false);
|
||||
pr_debug("disable mclk happens in workq\n");
|
||||
}
|
||||
|
||||
|
@ -982,6 +982,7 @@ static int msm_dig_cdc_event_notify(struct notifier_block *block,
|
|||
struct snd_soc_codec *codec = registered_digcodec;
|
||||
struct msm_dig_priv *msm_dig_cdc = snd_soc_codec_get_drvdata(codec);
|
||||
struct msm_asoc_mach_data *pdata = NULL;
|
||||
int ret = -EINVAL;
|
||||
|
||||
pdata = snd_soc_card_get_drvdata(codec->component.card);
|
||||
|
||||
|
@ -1073,7 +1074,28 @@ static int msm_dig_cdc_event_notify(struct notifier_block *block,
|
|||
case DIG_CDC_EVENT_SSR_UP:
|
||||
regcache_cache_only(msm_dig_cdc->regmap, false);
|
||||
regcache_mark_dirty(msm_dig_cdc->regmap);
|
||||
|
||||
mutex_lock(&pdata->cdc_int_mclk0_mutex);
|
||||
pdata->digital_cdc_core_clk.enable = 1;
|
||||
ret = afe_set_lpass_clock_v2(
|
||||
AFE_PORT_ID_INT0_MI2S_RX,
|
||||
&pdata->digital_cdc_core_clk);
|
||||
if (ret < 0) {
|
||||
pr_err("%s:failed to enable the MCLK\n",
|
||||
__func__);
|
||||
mutex_unlock(&pdata->cdc_int_mclk0_mutex);
|
||||
break;
|
||||
}
|
||||
mutex_unlock(&pdata->cdc_int_mclk0_mutex);
|
||||
|
||||
regcache_sync(msm_dig_cdc->regmap);
|
||||
|
||||
mutex_lock(&pdata->cdc_int_mclk0_mutex);
|
||||
pdata->digital_cdc_core_clk.enable = 0;
|
||||
afe_set_lpass_clock_v2(
|
||||
AFE_PORT_ID_INT0_MI2S_RX,
|
||||
&pdata->digital_cdc_core_clk);
|
||||
mutex_unlock(&pdata->cdc_int_mclk0_mutex);
|
||||
break;
|
||||
case DIG_CDC_EVENT_INVALID:
|
||||
default:
|
||||
|
@ -2033,6 +2055,7 @@ const struct regmap_config msm_digital_regmap_config = {
|
|||
.cache_type = REGCACHE_FLAT,
|
||||
.reg_defaults = msm89xx_cdc_core_defaults,
|
||||
.num_reg_defaults = MSM89XX_CDC_CORE_MAX_REGISTER,
|
||||
.writeable_reg = msm89xx_cdc_core_writeable_reg,
|
||||
.readable_reg = msm89xx_cdc_core_readable_reg,
|
||||
.volatile_reg = msm89xx_cdc_core_volatile_reg,
|
||||
.reg_format_endian = REGMAP_ENDIAN_NATIVE,
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
*/
|
||||
|
||||
#include <linux/regmap.h>
|
||||
#include "msm-cdc-common.h"
|
||||
#include "sdm660-cdc-registers.h"
|
||||
|
||||
/*
|
||||
|
@ -444,11 +445,147 @@ static const u8 msm89xx_cdc_core_reg_readable[MSM89XX_CDC_CORE_CACHE_SIZE] = {
|
|||
[MSM89XX_CDC_CORE_TX4_DMIC_CTL] = 1,
|
||||
};
|
||||
|
||||
static const u8 msm89xx_cdc_core_reg_writeable[MSM89XX_CDC_CORE_CACHE_SIZE] = {
|
||||
[MSM89XX_CDC_CORE_CLK_RX_RESET_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_CLK_TX_RESET_B1_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_CLK_DMIC_B1_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_CLK_RX_I2S_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_CLK_TX_I2S_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_CLK_OTHR_RESET_B1_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_CLK_TX_CLK_EN_B1_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_CLK_OTHR_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_CLK_RX_B1_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_CLK_MCLK_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_CLK_PDM_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_CLK_SD_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_CLK_DMIC_B2_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_CLK_RX_B2_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_CLK_TX2_I2S_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_RX1_B1_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_RX2_B1_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_RX3_B1_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_RX1_B2_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_RX2_B2_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_RX3_B2_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_RX1_B3_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_RX2_B3_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_RX3_B3_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_RX1_B4_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_RX2_B4_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_RX3_B4_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_RX1_B5_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_RX2_B5_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_RX3_B5_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_RX1_B6_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_RX2_B6_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_RX3_B6_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_RX1_VOL_CTL_B1_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_RX2_VOL_CTL_B1_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_RX3_VOL_CTL_B1_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_RX1_VOL_CTL_B2_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_RX2_VOL_CTL_B2_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_RX3_VOL_CTL_B2_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_TOP_GAIN_UPDATE] = 1,
|
||||
[MSM89XX_CDC_CORE_TOP_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_COMP0_B1_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_COMP0_B2_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_COMP0_B3_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_COMP0_B4_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_COMP0_B5_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_COMP0_B6_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_COMP0_FS_CFG] = 1,
|
||||
[MSM89XX_CDC_CORE_COMP0_DELAY_BUF_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_DEBUG_DESER1_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_DEBUG_DESER2_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_DEBUG_B1_CTL_CFG] = 1,
|
||||
[MSM89XX_CDC_CORE_DEBUG_B2_CTL_CFG] = 1,
|
||||
[MSM89XX_CDC_CORE_DEBUG_B3_CTL_CFG] = 1,
|
||||
[MSM89XX_CDC_CORE_IIR1_GAIN_B1_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_IIR2_GAIN_B1_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_IIR1_GAIN_B2_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_IIR2_GAIN_B2_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_IIR1_GAIN_B3_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_IIR2_GAIN_B3_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_IIR1_GAIN_B4_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_IIR2_GAIN_B4_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_IIR1_GAIN_B5_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_IIR2_GAIN_B5_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_IIR1_GAIN_B6_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_IIR2_GAIN_B6_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_IIR1_GAIN_B7_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_IIR2_GAIN_B7_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_IIR1_GAIN_B8_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_IIR2_GAIN_B8_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_IIR1_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_IIR2_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_IIR1_GAIN_TIMER_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_IIR2_GAIN_TIMER_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_IIR1_COEF_B1_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_IIR2_COEF_B1_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_IIR1_COEF_B2_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_IIR2_COEF_B2_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_CONN_RX1_B1_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_CONN_RX1_B2_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_CONN_RX1_B3_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_CONN_RX2_B1_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_CONN_RX2_B2_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_CONN_RX2_B3_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_CONN_RX3_B1_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_CONN_RX3_B2_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_CONN_TX_B1_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_CONN_TX_B2_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_CONN_EQ1_B1_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_CONN_EQ1_B2_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_CONN_EQ1_B3_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_CONN_EQ1_B4_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_CONN_EQ2_B1_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_CONN_EQ2_B2_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_CONN_EQ2_B3_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_CONN_EQ2_B4_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_CONN_TX_I2S_SD1_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_CONN_TX_B3_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_TX1_VOL_CTL_TIMER] = 1,
|
||||
[MSM89XX_CDC_CORE_TX2_VOL_CTL_TIMER] = 1,
|
||||
[MSM89XX_CDC_CORE_TX3_VOL_CTL_TIMER] = 1,
|
||||
[MSM89XX_CDC_CORE_TX4_VOL_CTL_TIMER] = 1,
|
||||
[MSM89XX_CDC_CORE_TX1_VOL_CTL_GAIN] = 1,
|
||||
[MSM89XX_CDC_CORE_TX2_VOL_CTL_GAIN] = 1,
|
||||
[MSM89XX_CDC_CORE_TX3_VOL_CTL_GAIN] = 1,
|
||||
[MSM89XX_CDC_CORE_TX4_VOL_CTL_GAIN] = 1,
|
||||
[MSM89XX_CDC_CORE_TX1_VOL_CTL_CFG] = 1,
|
||||
[MSM89XX_CDC_CORE_TX2_VOL_CTL_CFG] = 1,
|
||||
[MSM89XX_CDC_CORE_TX3_VOL_CTL_CFG] = 1,
|
||||
[MSM89XX_CDC_CORE_TX4_VOL_CTL_CFG] = 1,
|
||||
[MSM89XX_CDC_CORE_TX1_MUX_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_TX2_MUX_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_TX3_MUX_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_TX4_MUX_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_TX1_CLK_FS_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_TX2_CLK_FS_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_TX3_CLK_FS_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_TX4_CLK_FS_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_TX5_VOL_CTL_TIMER] = 1,
|
||||
[MSM89XX_CDC_CORE_TX5_VOL_CTL_GAIN] = 1,
|
||||
[MSM89XX_CDC_CORE_TX5_VOL_CTL_CFG] = 1,
|
||||
[MSM89XX_CDC_CORE_TX5_MUX_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_TX5_CLK_FS_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_TX5_DMIC_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_TX1_DMIC_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_TX2_DMIC_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_TX3_DMIC_CTL] = 1,
|
||||
[MSM89XX_CDC_CORE_TX4_DMIC_CTL] = 1,
|
||||
};
|
||||
|
||||
bool msm89xx_cdc_core_readable_reg(struct device *dev, unsigned int reg)
|
||||
{
|
||||
return msm89xx_cdc_core_reg_readable[reg];
|
||||
}
|
||||
|
||||
bool msm89xx_cdc_core_writeable_reg(struct device *dev, unsigned int reg)
|
||||
{
|
||||
return msm89xx_cdc_core_reg_writeable[reg];
|
||||
}
|
||||
|
||||
bool msm89xx_cdc_core_volatile_reg(struct device *dev, unsigned int reg)
|
||||
{
|
||||
switch (reg) {
|
||||
|
|
Loading…
Add table
Reference in a new issue