Merge branches 'topic/adsp' and 'topic/dapm' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into asoc-arizona
This commit is contained in:
Коммит
89a6192049
|
@ -107,6 +107,10 @@ struct device;
|
|||
{ .id = snd_soc_dapm_mux, .name = wname, \
|
||||
SND_SOC_DAPM_INIT_REG_VAL(wreg, wshift, winvert), \
|
||||
.kcontrol_news = wcontrols, .num_kcontrols = 1}
|
||||
#define SND_SOC_DAPM_DEMUX(wname, wreg, wshift, winvert, wcontrols) \
|
||||
{ .id = snd_soc_dapm_demux, .name = wname, \
|
||||
SND_SOC_DAPM_INIT_REG_VAL(wreg, wshift, winvert), \
|
||||
.kcontrol_news = wcontrols, .num_kcontrols = 1}
|
||||
|
||||
/* Simplified versions of above macros, assuming wncontrols = ARRAY_SIZE(wcontrols) */
|
||||
#define SOC_PGA_ARRAY(wname, wreg, wshift, winvert,\
|
||||
|
@ -444,11 +448,15 @@ int snd_soc_dapm_dai_get_connected_widgets(struct snd_soc_dai *dai, int stream,
|
|||
struct snd_soc_dapm_context *snd_soc_dapm_kcontrol_dapm(
|
||||
struct snd_kcontrol *kcontrol);
|
||||
|
||||
int snd_soc_dapm_force_bias_level(struct snd_soc_dapm_context *dapm,
|
||||
enum snd_soc_bias_level level);
|
||||
|
||||
/* dapm widget types */
|
||||
enum snd_soc_dapm_type {
|
||||
snd_soc_dapm_input = 0, /* input pin */
|
||||
snd_soc_dapm_output, /* output pin */
|
||||
snd_soc_dapm_mux, /* selects 1 analog signal from many inputs */
|
||||
snd_soc_dapm_demux, /* connects the input to one of multiple outputs */
|
||||
snd_soc_dapm_mixer, /* mixes several analog signals together */
|
||||
snd_soc_dapm_mixer_named_ctl, /* mixer with named controls */
|
||||
snd_soc_dapm_pga, /* programmable gain/attenuation (volume) */
|
||||
|
@ -585,6 +593,10 @@ struct snd_soc_dapm_update {
|
|||
int val;
|
||||
};
|
||||
|
||||
struct snd_soc_dapm_wcache {
|
||||
struct snd_soc_dapm_widget *widget;
|
||||
};
|
||||
|
||||
/* DAPM context */
|
||||
struct snd_soc_dapm_context {
|
||||
enum snd_soc_bias_level bias_level;
|
||||
|
@ -606,6 +618,9 @@ struct snd_soc_dapm_context {
|
|||
int (*set_bias_level)(struct snd_soc_dapm_context *dapm,
|
||||
enum snd_soc_bias_level level);
|
||||
|
||||
struct snd_soc_dapm_wcache path_sink_cache;
|
||||
struct snd_soc_dapm_wcache path_source_cache;
|
||||
|
||||
#ifdef CONFIG_DEBUG_FS
|
||||
struct dentry *debugfs_dapm;
|
||||
#endif
|
||||
|
@ -623,4 +638,35 @@ struct snd_soc_dapm_stats {
|
|||
int neighbour_checks;
|
||||
};
|
||||
|
||||
/**
|
||||
* snd_soc_dapm_init_bias_level() - Initialize DAPM bias level
|
||||
* @dapm: The DAPM context to initialize
|
||||
* @level: The DAPM level to initialize to
|
||||
*
|
||||
* This function only sets the driver internal state of the DAPM level and will
|
||||
* not modify the state of the device. Hence it should not be used during normal
|
||||
* operation, but only to synchronize the internal state to the device state.
|
||||
* E.g. during driver probe to set the DAPM level to the one corresponding with
|
||||
* the power-on reset state of the device.
|
||||
*
|
||||
* To change the DAPM state of the device use snd_soc_dapm_set_bias_level().
|
||||
*/
|
||||
static inline void snd_soc_dapm_init_bias_level(
|
||||
struct snd_soc_dapm_context *dapm, enum snd_soc_bias_level level)
|
||||
{
|
||||
dapm->bias_level = level;
|
||||
}
|
||||
|
||||
/**
|
||||
* snd_soc_dapm_get_bias_level() - Get current DAPM bias level
|
||||
* @dapm: The context for which to get the bias level
|
||||
*
|
||||
* Returns: The current bias level of the passed DAPM context.
|
||||
*/
|
||||
static inline enum snd_soc_bias_level snd_soc_dapm_get_bias_level(
|
||||
struct snd_soc_dapm_context *dapm)
|
||||
{
|
||||
return dapm->bias_level;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -190,8 +190,12 @@
|
|||
#define SOC_VALUE_ENUM_DOUBLE(xreg, xshift_l, xshift_r, xmask, xitems, xtexts, xvalues) \
|
||||
{ .reg = xreg, .shift_l = xshift_l, .shift_r = xshift_r, \
|
||||
.mask = xmask, .items = xitems, .texts = xtexts, .values = xvalues}
|
||||
#define SOC_VALUE_ENUM_SINGLE(xreg, xshift, xmask, xnitmes, xtexts, xvalues) \
|
||||
SOC_VALUE_ENUM_DOUBLE(xreg, xshift, xshift, xmask, xnitmes, xtexts, xvalues)
|
||||
#define SOC_VALUE_ENUM_SINGLE(xreg, xshift, xmask, xitems, xtexts, xvalues) \
|
||||
SOC_VALUE_ENUM_DOUBLE(xreg, xshift, xshift, xmask, xitems, xtexts, xvalues)
|
||||
#define SOC_VALUE_ENUM_SINGLE_AUTODISABLE(xreg, xshift, xmask, xitems, xtexts, xvalues) \
|
||||
{ .reg = xreg, .shift_l = xshift, .shift_r = xshift, \
|
||||
.mask = xmask, .items = xitems, .texts = xtexts, \
|
||||
.values = xvalues, .autodisable = 1}
|
||||
#define SOC_ENUM_SINGLE_VIRT(xitems, xtexts) \
|
||||
SOC_ENUM_SINGLE(SND_SOC_NOPM, 0, xitems, xtexts)
|
||||
#define SOC_ENUM(xname, xenum) \
|
||||
|
@ -312,6 +316,11 @@
|
|||
ARRAY_SIZE(xtexts), xtexts, xvalues)
|
||||
#define SOC_VALUE_ENUM_SINGLE_DECL(name, xreg, xshift, xmask, xtexts, xvalues) \
|
||||
SOC_VALUE_ENUM_DOUBLE_DECL(name, xreg, xshift, xshift, xmask, xtexts, xvalues)
|
||||
|
||||
#define SOC_VALUE_ENUM_SINGLE_AUTODISABLE_DECL(name, xreg, xshift, xmask, xtexts, xvalues) \
|
||||
const struct soc_enum name = SOC_VALUE_ENUM_SINGLE_AUTODISABLE(xreg, \
|
||||
xshift, xmask, ARRAY_SIZE(xtexts), xtexts, xvalues)
|
||||
|
||||
#define SOC_ENUM_SINGLE_VIRT_DECL(name, xtexts) \
|
||||
const struct soc_enum name = SOC_ENUM_SINGLE_VIRT(ARRAY_SIZE(xtexts), xtexts)
|
||||
|
||||
|
@ -807,7 +816,7 @@ struct snd_soc_codec {
|
|||
/* component */
|
||||
struct snd_soc_component component;
|
||||
|
||||
/* dapm */
|
||||
/* Don't access this directly, use snd_soc_codec_get_dapm() */
|
||||
struct snd_soc_dapm_context dapm;
|
||||
|
||||
#ifdef CONFIG_DEBUG_FS
|
||||
|
@ -1188,6 +1197,7 @@ struct soc_enum {
|
|||
unsigned int mask;
|
||||
const char * const *texts;
|
||||
const unsigned int *values;
|
||||
unsigned int autodisable:1;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -1269,6 +1279,58 @@ static inline struct snd_soc_dapm_context *snd_soc_component_get_dapm(
|
|||
return component->dapm_ptr;
|
||||
}
|
||||
|
||||
/**
|
||||
* snd_soc_codec_get_dapm() - Returns the DAPM context for the CODEC
|
||||
* @codec: The CODEC for which to get the DAPM context
|
||||
*
|
||||
* Note: Use this function instead of directly accessing the CODEC's dapm field
|
||||
*/
|
||||
static inline struct snd_soc_dapm_context *snd_soc_codec_get_dapm(
|
||||
struct snd_soc_codec *codec)
|
||||
{
|
||||
return &codec->dapm;
|
||||
}
|
||||
|
||||
/**
|
||||
* snd_soc_dapm_init_bias_level() - Initialize CODEC DAPM bias level
|
||||
* @dapm: The CODEC for which to initialize the DAPM bias level
|
||||
* @level: The DAPM level to initialize to
|
||||
*
|
||||
* Initializes the CODEC DAPM bias level. See snd_soc_dapm_init_bias_level().
|
||||
*/
|
||||
static inline void snd_soc_codec_init_bias_level(struct snd_soc_codec *codec,
|
||||
enum snd_soc_bias_level level)
|
||||
{
|
||||
snd_soc_dapm_init_bias_level(snd_soc_codec_get_dapm(codec), level);
|
||||
}
|
||||
|
||||
/**
|
||||
* snd_soc_dapm_get_bias_level() - Get current CODEC DAPM bias level
|
||||
* @codec: The CODEC for which to get the DAPM bias level
|
||||
*
|
||||
* Returns: The current DAPM bias level of the CODEC.
|
||||
*/
|
||||
static inline enum snd_soc_bias_level snd_soc_codec_get_bias_level(
|
||||
struct snd_soc_codec *codec)
|
||||
{
|
||||
return snd_soc_dapm_get_bias_level(snd_soc_codec_get_dapm(codec));
|
||||
}
|
||||
|
||||
/**
|
||||
* snd_soc_codec_force_bias_level() - Set the CODEC DAPM bias level
|
||||
* @codec: The CODEC for which to set the level
|
||||
* @level: The level to set to
|
||||
*
|
||||
* Forces the CODEC bias level to a specific state. See
|
||||
* snd_soc_dapm_force_bias_level().
|
||||
*/
|
||||
static inline int snd_soc_codec_force_bias_level(struct snd_soc_codec *codec,
|
||||
enum snd_soc_bias_level level)
|
||||
{
|
||||
return snd_soc_dapm_force_bias_level(snd_soc_codec_get_dapm(codec),
|
||||
level);
|
||||
}
|
||||
|
||||
/**
|
||||
* snd_soc_dapm_kcontrol_codec() - Returns the codec associated to a kcontrol
|
||||
* @kcontrol: The kcontrol
|
||||
|
|
|
@ -1140,7 +1140,7 @@ static int pm860x_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
/* Enable Audio PLL & Audio section */
|
||||
data = AUDIO_PLL | AUDIO_SECTION_ON;
|
||||
pm860x_reg_write(pm860x->i2c, REG_MISC2, data);
|
||||
|
@ -1156,7 +1156,6 @@ static int pm860x_set_bias_level(struct snd_soc_codec *codec,
|
|||
pm860x_set_bits(pm860x->i2c, REG_MISC2, data, 0);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -1209,6 +1209,7 @@ static int anc_status_control_put(struct snd_kcontrol *kcontrol,
|
|||
struct snd_ctl_elem_value *ucontrol)
|
||||
{
|
||||
struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol);
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
struct ab8500_codec_drvdata *drvdata = dev_get_drvdata(codec->dev);
|
||||
struct device *dev = codec->dev;
|
||||
bool apply_fir, apply_iir;
|
||||
|
@ -1234,15 +1235,14 @@ static int anc_status_control_put(struct snd_kcontrol *kcontrol,
|
|||
apply_fir = req == ANC_APPLY_FIR || req == ANC_APPLY_FIR_IIR;
|
||||
apply_iir = req == ANC_APPLY_IIR || req == ANC_APPLY_FIR_IIR;
|
||||
|
||||
status = snd_soc_dapm_force_enable_pin(&codec->dapm,
|
||||
"ANC Configure Input");
|
||||
status = snd_soc_dapm_force_enable_pin(dapm, "ANC Configure Input");
|
||||
if (status < 0) {
|
||||
dev_err(dev,
|
||||
"%s: ERROR: Failed to enable power (status = %d)!\n",
|
||||
__func__, status);
|
||||
goto cleanup;
|
||||
}
|
||||
snd_soc_dapm_sync(&codec->dapm);
|
||||
snd_soc_dapm_sync(dapm);
|
||||
|
||||
anc_configure(codec, apply_fir, apply_iir);
|
||||
|
||||
|
@ -1259,8 +1259,8 @@ static int anc_status_control_put(struct snd_kcontrol *kcontrol,
|
|||
drvdata->anc_status = ANC_IIR_CONFIGURED;
|
||||
}
|
||||
|
||||
status = snd_soc_dapm_disable_pin(&codec->dapm, "ANC Configure Input");
|
||||
snd_soc_dapm_sync(&codec->dapm);
|
||||
status = snd_soc_dapm_disable_pin(dapm, "ANC Configure Input");
|
||||
snd_soc_dapm_sync(dapm);
|
||||
|
||||
cleanup:
|
||||
mutex_unlock(&drvdata->ctrl_lock);
|
||||
|
@ -1947,6 +1947,7 @@ static int ab8500_audio_init_audioblock(struct snd_soc_codec *codec)
|
|||
static int ab8500_audio_setup_mics(struct snd_soc_codec *codec,
|
||||
struct amic_settings *amics)
|
||||
{
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
u8 value8;
|
||||
unsigned int value;
|
||||
int status;
|
||||
|
@ -1973,15 +1974,15 @@ static int ab8500_audio_setup_mics(struct snd_soc_codec *codec,
|
|||
dev_dbg(codec->dev, "%s: Mic 1a regulator: %s\n", __func__,
|
||||
amic_micbias_str(amics->mic1a_micbias));
|
||||
route = &ab8500_dapm_routes_mic1a_vamicx[amics->mic1a_micbias];
|
||||
status = snd_soc_dapm_add_routes(&codec->dapm, route, 1);
|
||||
status = snd_soc_dapm_add_routes(dapm, route, 1);
|
||||
dev_dbg(codec->dev, "%s: Mic 1b regulator: %s\n", __func__,
|
||||
amic_micbias_str(amics->mic1b_micbias));
|
||||
route = &ab8500_dapm_routes_mic1b_vamicx[amics->mic1b_micbias];
|
||||
status |= snd_soc_dapm_add_routes(&codec->dapm, route, 1);
|
||||
status |= snd_soc_dapm_add_routes(dapm, route, 1);
|
||||
dev_dbg(codec->dev, "%s: Mic 2 regulator: %s\n", __func__,
|
||||
amic_micbias_str(amics->mic2_micbias));
|
||||
route = &ab8500_dapm_routes_mic2_vamicx[amics->mic2_micbias];
|
||||
status |= snd_soc_dapm_add_routes(&codec->dapm, route, 1);
|
||||
status |= snd_soc_dapm_add_routes(dapm, route, 1);
|
||||
if (status < 0) {
|
||||
dev_err(codec->dev,
|
||||
"%s: Failed to add AMic-regulator DAPM-routes (%d).\n",
|
||||
|
@ -2461,6 +2462,7 @@ static void ab8500_codec_of_probe(struct device *dev, struct device_node *np,
|
|||
|
||||
static int ab8500_codec_probe(struct snd_soc_codec *codec)
|
||||
{
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
struct device *dev = codec->dev;
|
||||
struct device_node *np = dev->of_node;
|
||||
struct ab8500_codec_drvdata *drvdata = dev_get_drvdata(dev);
|
||||
|
@ -2541,7 +2543,7 @@ static int ab8500_codec_probe(struct snd_soc_codec *codec)
|
|||
&ab8500_filter_controls[AB8500_FILTER_SID_FIR].private_value;
|
||||
drvdata->sid_fir_values = (long *)fc->value;
|
||||
|
||||
(void)snd_soc_dapm_disable_pin(&codec->dapm, "ANC Configure Input");
|
||||
snd_soc_dapm_disable_pin(dapm, "ANC Configure Input");
|
||||
|
||||
mutex_init(&drvdata->ctrl_lock);
|
||||
|
||||
|
|
|
@ -1444,7 +1444,6 @@ static int adau1373_set_bias_level(struct snd_soc_codec *codec,
|
|||
ADAU1373_PWDN_CTRL3_PWR_EN, 0);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -565,7 +565,6 @@ static int adau1701_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
}
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -466,7 +466,6 @@ static int adau1761_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -339,7 +339,6 @@ static int adau1781_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
}
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -493,12 +493,7 @@ static int adau1977_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
}
|
||||
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int adau1977_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask,
|
||||
|
|
|
@ -714,7 +714,6 @@ static int adav80x_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
}
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -341,7 +341,6 @@ static int ak4535_set_bias_level(struct snd_soc_codec *codec,
|
|||
snd_soc_update_bits(codec, AK4535_PM1, 0x80, 0);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -412,7 +412,7 @@ static int ak4641_set_bias_level(struct snd_soc_codec *codec,
|
|||
snd_soc_update_bits(codec, AK4641_DAC, 0x20, 0x20);
|
||||
break;
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
if (pdata && gpio_is_valid(pdata->gpio_power))
|
||||
gpio_set_value(pdata->gpio_power, 1);
|
||||
mdelay(1);
|
||||
|
@ -439,7 +439,6 @@ static int ak4641_set_bias_level(struct snd_soc_codec *codec,
|
|||
regcache_mark_dirty(ak4641->regmap);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -482,7 +482,6 @@ static int ak4642_set_bias_level(struct snd_soc_codec *codec,
|
|||
snd_soc_update_bits(codec, PW_MGMT1, PMVCM, PMVCM);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -577,7 +577,6 @@ static int ak4671_set_bias_level(struct snd_soc_codec *codec,
|
|||
snd_soc_write(codec, AK4671_AD_DA_POWER_MANAGEMENT, 0x00);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -826,7 +826,6 @@ static int alc5623_set_bias_level(struct snd_soc_codec *codec,
|
|||
snd_soc_write(codec, ALC5623_PWR_MANAG_ADD1, 0);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -894,7 +893,7 @@ static int alc5623_resume(struct snd_soc_codec *codec)
|
|||
static int alc5623_probe(struct snd_soc_codec *codec)
|
||||
{
|
||||
struct alc5623_priv *alc5623 = snd_soc_codec_get_drvdata(codec);
|
||||
struct snd_soc_dapm_context *dapm = &codec->dapm;
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
|
||||
alc5623_reset(codec);
|
||||
|
||||
|
|
|
@ -1000,7 +1000,6 @@ static int alc5632_set_bias_level(struct snd_soc_codec *codec,
|
|||
ALC5632_PWR_MANAG_ADD1_MASK, 0);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -208,11 +208,12 @@ static const struct snd_soc_dapm_widget arizona_spkr =
|
|||
|
||||
int arizona_init_spk(struct snd_soc_codec *codec)
|
||||
{
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
struct arizona_priv *priv = snd_soc_codec_get_drvdata(codec);
|
||||
struct arizona *arizona = priv->arizona;
|
||||
int ret;
|
||||
|
||||
ret = snd_soc_dapm_new_controls(&codec->dapm, &arizona_spkl, 1);
|
||||
ret = snd_soc_dapm_new_controls(dapm, &arizona_spkl, 1);
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
|
||||
|
@ -220,8 +221,7 @@ int arizona_init_spk(struct snd_soc_codec *codec)
|
|||
case WM8997:
|
||||
break;
|
||||
default:
|
||||
ret = snd_soc_dapm_new_controls(&codec->dapm,
|
||||
&arizona_spkr, 1);
|
||||
ret = snd_soc_dapm_new_controls(dapm, &arizona_spkr, 1);
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
break;
|
||||
|
@ -258,13 +258,14 @@ static const struct snd_soc_dapm_route arizona_mono_routes[] = {
|
|||
|
||||
int arizona_init_mono(struct snd_soc_codec *codec)
|
||||
{
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
struct arizona_priv *priv = snd_soc_codec_get_drvdata(codec);
|
||||
struct arizona *arizona = priv->arizona;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < ARIZONA_MAX_OUTPUT; ++i) {
|
||||
if (arizona->pdata.out_mono[i])
|
||||
snd_soc_dapm_add_routes(&codec->dapm,
|
||||
snd_soc_dapm_add_routes(dapm,
|
||||
&arizona_mono_routes[i], 1);
|
||||
}
|
||||
|
||||
|
@ -274,6 +275,7 @@ EXPORT_SYMBOL_GPL(arizona_init_mono);
|
|||
|
||||
int arizona_init_gpio(struct snd_soc_codec *codec)
|
||||
{
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
struct arizona_priv *priv = snd_soc_codec_get_drvdata(codec);
|
||||
struct arizona *arizona = priv->arizona;
|
||||
int i;
|
||||
|
@ -281,23 +283,21 @@ int arizona_init_gpio(struct snd_soc_codec *codec)
|
|||
switch (arizona->type) {
|
||||
case WM5110:
|
||||
case WM8280:
|
||||
snd_soc_dapm_disable_pin(&codec->dapm, "DRC2 Signal Activity");
|
||||
snd_soc_dapm_disable_pin(dapm, "DRC2 Signal Activity");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
snd_soc_dapm_disable_pin(&codec->dapm, "DRC1 Signal Activity");
|
||||
snd_soc_dapm_disable_pin(dapm, "DRC1 Signal Activity");
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(arizona->pdata.gpio_defaults); i++) {
|
||||
switch (arizona->pdata.gpio_defaults[i] & ARIZONA_GPN_FN_MASK) {
|
||||
case ARIZONA_GP_FN_DRC1_SIGNAL_DETECT:
|
||||
snd_soc_dapm_enable_pin(&codec->dapm,
|
||||
"DRC1 Signal Activity");
|
||||
snd_soc_dapm_enable_pin(dapm, "DRC1 Signal Activity");
|
||||
break;
|
||||
case ARIZONA_GP_FN_DRC2_SIGNAL_DETECT:
|
||||
snd_soc_dapm_enable_pin(&codec->dapm,
|
||||
"DRC2 Signal Activity");
|
||||
snd_soc_dapm_enable_pin(dapm, "DRC2 Signal Activity");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -1619,6 +1619,7 @@ static int arizona_dai_set_sysclk(struct snd_soc_dai *dai,
|
|||
int clk_id, unsigned int freq, int dir)
|
||||
{
|
||||
struct snd_soc_codec *codec = dai->codec;
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
struct arizona_priv *priv = snd_soc_codec_get_drvdata(codec);
|
||||
struct arizona_dai_priv *dai_priv = &priv->dai[dai->id - 1];
|
||||
struct snd_soc_dapm_route routes[2];
|
||||
|
@ -1649,15 +1650,15 @@ static int arizona_dai_set_sysclk(struct snd_soc_dai *dai,
|
|||
|
||||
routes[0].source = arizona_dai_clk_str(dai_priv->clk);
|
||||
routes[1].source = arizona_dai_clk_str(dai_priv->clk);
|
||||
snd_soc_dapm_del_routes(&codec->dapm, routes, ARRAY_SIZE(routes));
|
||||
snd_soc_dapm_del_routes(dapm, routes, ARRAY_SIZE(routes));
|
||||
|
||||
routes[0].source = arizona_dai_clk_str(clk_id);
|
||||
routes[1].source = arizona_dai_clk_str(clk_id);
|
||||
snd_soc_dapm_add_routes(&codec->dapm, routes, ARRAY_SIZE(routes));
|
||||
snd_soc_dapm_add_routes(dapm, routes, ARRAY_SIZE(routes));
|
||||
|
||||
dai_priv->clk = clk_id;
|
||||
|
||||
return snd_soc_dapm_sync(&codec->dapm);
|
||||
return snd_soc_dapm_sync(dapm);
|
||||
}
|
||||
|
||||
static int arizona_set_tristate(struct snd_soc_dai *dai, int tristate)
|
||||
|
|
|
@ -92,7 +92,6 @@ static int cq93vc_set_bias_level(struct snd_soc_codec *codec,
|
|||
DAVINCI_VC_REG12_POWER_ALL_OFF);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -503,7 +503,6 @@ static int cs4265_set_bias_level(struct snd_soc_codec *codec,
|
|||
CS4265_PWRCTL_PDN);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -897,7 +897,7 @@ static int cs42l52_set_bias_level(struct snd_soc_codec *codec,
|
|||
CS42L52_PWRCTL1_PDN_CODEC, 0);
|
||||
break;
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
regcache_cache_only(cs42l52->regmap, false);
|
||||
regcache_sync(cs42l52->regmap);
|
||||
}
|
||||
|
@ -908,7 +908,6 @@ static int cs42l52_set_bias_level(struct snd_soc_codec *codec,
|
|||
regcache_cache_only(cs42l52->regmap, true);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -956,7 +955,7 @@ static void cs42l52_beep_work(struct work_struct *work)
|
|||
struct cs42l52_private *cs42l52 =
|
||||
container_of(work, struct cs42l52_private, beep_work);
|
||||
struct snd_soc_codec *codec = cs42l52->codec;
|
||||
struct snd_soc_dapm_context *dapm = &codec->dapm;
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
int i;
|
||||
int val = 0;
|
||||
int best = 0;
|
||||
|
|
|
@ -953,7 +953,7 @@ static int cs42l56_set_bias_level(struct snd_soc_codec *codec,
|
|||
CS42L56_PDN_ALL_MASK, 0);
|
||||
break;
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
regcache_cache_only(cs42l56->regmap, false);
|
||||
regcache_sync(cs42l56->regmap);
|
||||
ret = regulator_bulk_enable(ARRAY_SIZE(cs42l56->supplies),
|
||||
|
@ -978,7 +978,6 @@ static int cs42l56_set_bias_level(struct snd_soc_codec *codec,
|
|||
cs42l56->supplies);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1026,7 +1025,7 @@ static void cs42l56_beep_work(struct work_struct *work)
|
|||
struct cs42l56_private *cs42l56 =
|
||||
container_of(work, struct cs42l56_private, beep_work);
|
||||
struct snd_soc_codec *codec = cs42l56->codec;
|
||||
struct snd_soc_dapm_context *dapm = &codec->dapm;
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
int i;
|
||||
int val = 0;
|
||||
int best = 0;
|
||||
|
|
|
@ -1208,7 +1208,7 @@ static int cs42l73_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
regcache_cache_only(cs42l73->regmap, false);
|
||||
regcache_sync(cs42l73->regmap);
|
||||
}
|
||||
|
@ -1228,7 +1228,6 @@ static int cs42l73_set_bias_level(struct snd_soc_codec *codec,
|
|||
snd_soc_update_bits(codec, CS42L73_DMMCC, CS42L73_MCLKDIS, 1);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -380,7 +380,7 @@ EXPORT_SYMBOL_GPL(cs42xx8_regmap_config);
|
|||
static int cs42xx8_codec_probe(struct snd_soc_codec *codec)
|
||||
{
|
||||
struct cs42xx8_priv *cs42xx8 = snd_soc_codec_get_drvdata(codec);
|
||||
struct snd_soc_dapm_context *dapm = &codec->dapm;
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
|
||||
switch (cs42xx8->drvdata->num_adcs) {
|
||||
case 3:
|
||||
|
|
|
@ -333,7 +333,7 @@ static int cx20442_set_bias_level(struct snd_soc_codec *codec,
|
|||
|
||||
switch (level) {
|
||||
case SND_SOC_BIAS_PREPARE:
|
||||
if (codec->dapm.bias_level != SND_SOC_BIAS_STANDBY)
|
||||
if (snd_soc_codec_get_bias_level(codec) != SND_SOC_BIAS_STANDBY)
|
||||
break;
|
||||
if (IS_ERR(cx20442->por))
|
||||
err = PTR_ERR(cx20442->por);
|
||||
|
@ -341,7 +341,7 @@ static int cx20442_set_bias_level(struct snd_soc_codec *codec,
|
|||
err = regulator_enable(cx20442->por);
|
||||
break;
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level != SND_SOC_BIAS_PREPARE)
|
||||
if (snd_soc_codec_get_bias_level(codec) != SND_SOC_BIAS_PREPARE)
|
||||
break;
|
||||
if (IS_ERR(cx20442->por))
|
||||
err = PTR_ERR(cx20442->por);
|
||||
|
@ -351,8 +351,6 @@ static int cx20442_set_bias_level(struct snd_soc_codec *codec,
|
|||
default:
|
||||
break;
|
||||
}
|
||||
if (!err)
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return err;
|
||||
}
|
||||
|
|
|
@ -1374,7 +1374,7 @@ static int da7213_set_bias_level(struct snd_soc_codec *codec,
|
|||
case SND_SOC_BIAS_PREPARE:
|
||||
break;
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
/* Enable VMID reference & master bias */
|
||||
snd_soc_update_bits(codec, DA7213_REFERENCES,
|
||||
DA7213_VMID_EN | DA7213_BIAS_EN,
|
||||
|
@ -1387,7 +1387,6 @@ static int da7213_set_bias_level(struct snd_soc_codec *codec,
|
|||
DA7213_VMID_EN | DA7213_BIAS_EN, 0);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -1432,7 +1432,7 @@ static int da732x_set_bias_level(struct snd_soc_codec *codec,
|
|||
case SND_SOC_BIAS_PREPARE:
|
||||
break;
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
/* Init Codec */
|
||||
snd_soc_write(codec, DA732X_REG_REF1,
|
||||
DA732X_VMID_FASTCHG);
|
||||
|
@ -1502,8 +1502,6 @@ static int da732x_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
}
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -1364,7 +1364,7 @@ static int da9055_set_bias_level(struct snd_soc_codec *codec,
|
|||
case SND_SOC_BIAS_PREPARE:
|
||||
break;
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
/* Enable VMID reference & master bias */
|
||||
snd_soc_update_bits(codec, DA9055_REFERENCES,
|
||||
DA9055_VMID_EN | DA9055_BIAS_EN,
|
||||
|
@ -1377,7 +1377,6 @@ static int da9055_set_bias_level(struct snd_soc_codec *codec,
|
|||
DA9055_VMID_EN | DA9055_BIAS_EN, 0);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -536,7 +536,7 @@ static int es8328_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
snd_soc_update_bits(codec, ES8328_CONTROL1,
|
||||
ES8328_CONTROL1_VMIDSEL_MASK |
|
||||
ES8328_CONTROL1_ENREF,
|
||||
|
@ -566,7 +566,6 @@ static int es8328_set_bias_level(struct snd_soc_codec *codec,
|
|||
0);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -909,8 +909,6 @@ static int isabelle_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
}
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -258,7 +258,7 @@ static int jz4740_codec_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
/* The only way to clear the suspend flag is to reset the codec */
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF)
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF)
|
||||
jz4740_codec_wakeup(regmap);
|
||||
|
||||
mask = JZ4740_CODEC_1_VREF_DISABLE |
|
||||
|
@ -281,8 +281,6 @@ static int jz4740_codec_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
}
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -89,8 +89,6 @@ static int lm4857_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
}
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -1271,7 +1271,7 @@ static int lm49453_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF)
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF)
|
||||
regcache_sync(lm49453->regmap);
|
||||
|
||||
snd_soc_update_bits(codec, LM49453_P0_PMC_SETUP_REG,
|
||||
|
@ -1284,8 +1284,6 @@ static int lm49453_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
}
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -1571,7 +1571,7 @@ static int max98088_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF)
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF)
|
||||
regcache_sync(max98088->regmap);
|
||||
|
||||
snd_soc_update_bits(codec, M98088_REG_4C_PWR_EN_IN,
|
||||
|
@ -1584,7 +1584,6 @@ static int max98088_set_bias_level(struct snd_soc_codec *codec,
|
|||
regcache_mark_dirty(max98088->regmap);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -1500,7 +1500,7 @@ static const struct snd_soc_dapm_route max98091_dapm_routes[] = {
|
|||
static int max98090_add_widgets(struct snd_soc_codec *codec)
|
||||
{
|
||||
struct max98090_priv *max98090 = snd_soc_codec_get_drvdata(codec);
|
||||
struct snd_soc_dapm_context *dapm = &codec->dapm;
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
|
||||
snd_soc_add_codec_controls(codec, max98090_snd_controls,
|
||||
ARRAY_SIZE(max98090_snd_controls));
|
||||
|
@ -1798,16 +1798,17 @@ static int max98090_set_bias_level(struct snd_soc_codec *codec,
|
|||
* away from ON. Disable the clock in that case, otherwise
|
||||
* enable it.
|
||||
*/
|
||||
if (!IS_ERR(max98090->mclk)) {
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_ON)
|
||||
clk_disable_unprepare(max98090->mclk);
|
||||
else
|
||||
clk_prepare_enable(max98090->mclk);
|
||||
}
|
||||
if (IS_ERR(max98090->mclk))
|
||||
break;
|
||||
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_ON)
|
||||
clk_disable_unprepare(max98090->mclk);
|
||||
else
|
||||
clk_prepare_enable(max98090->mclk);
|
||||
break;
|
||||
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
ret = regcache_sync(max98090->regmap);
|
||||
if (ret != 0) {
|
||||
dev_err(codec->dev,
|
||||
|
@ -1824,7 +1825,6 @@ static int max98090_set_bias_level(struct snd_soc_codec *codec,
|
|||
regcache_mark_dirty(max98090->regmap);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -2187,7 +2187,6 @@ static void max98090_jack_work(struct work_struct *work)
|
|||
struct max98090_priv,
|
||||
jack_work.work);
|
||||
struct snd_soc_codec *codec = max98090->codec;
|
||||
struct snd_soc_dapm_context *dapm = &codec->dapm;
|
||||
int status = 0;
|
||||
int reg;
|
||||
|
||||
|
@ -2266,8 +2265,6 @@ static void max98090_jack_work(struct work_struct *work)
|
|||
|
||||
snd_soc_jack_report(max98090->jack, status,
|
||||
SND_JACK_HEADSET | SND_JACK_BTN_0);
|
||||
|
||||
snd_soc_dapm_sync(dapm);
|
||||
}
|
||||
|
||||
static irqreturn_t max98090_interrupt(int irq, void *data)
|
||||
|
|
|
@ -1650,16 +1650,17 @@ static int max98095_set_bias_level(struct snd_soc_codec *codec,
|
|||
* away from ON. Disable the clock in that case, otherwise
|
||||
* enable it.
|
||||
*/
|
||||
if (!IS_ERR(max98095->mclk)) {
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_ON)
|
||||
clk_disable_unprepare(max98095->mclk);
|
||||
else
|
||||
clk_prepare_enable(max98095->mclk);
|
||||
}
|
||||
if (IS_ERR(max98095->mclk))
|
||||
break;
|
||||
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_ON)
|
||||
clk_disable_unprepare(max98095->mclk);
|
||||
else
|
||||
clk_prepare_enable(max98095->mclk);
|
||||
break;
|
||||
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
ret = regcache_sync(max98095->regmap);
|
||||
|
||||
if (ret != 0) {
|
||||
|
@ -1678,7 +1679,6 @@ static int max98095_set_bias_level(struct snd_soc_codec *codec,
|
|||
regcache_mark_dirty(max98095->regmap);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -2198,7 +2198,7 @@ static int max98095_suspend(struct snd_soc_codec *codec)
|
|||
if (max98095->headphone_jack || max98095->mic_jack)
|
||||
max98095_jack_detect_disable(codec);
|
||||
|
||||
max98095_set_bias_level(codec, SND_SOC_BIAS_OFF);
|
||||
snd_soc_codec_force_bias_level(codec, SND_SOC_BIAS_OFF);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -2208,7 +2208,7 @@ static int max98095_resume(struct snd_soc_codec *codec)
|
|||
struct max98095_priv *max98095 = snd_soc_codec_get_drvdata(codec);
|
||||
struct i2c_client *client = to_i2c_client(codec->dev);
|
||||
|
||||
max98095_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
|
||||
snd_soc_codec_force_bias_level(codec, SND_SOC_BIAS_STANDBY);
|
||||
|
||||
if (max98095->headphone_jack || max98095->mic_jack) {
|
||||
max98095_jack_detect_enable(codec);
|
||||
|
|
|
@ -252,7 +252,7 @@ static int max9850_set_bias_level(struct snd_soc_codec *codec,
|
|||
case SND_SOC_BIAS_PREPARE:
|
||||
break;
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
ret = regcache_sync(max9850->regmap);
|
||||
if (ret) {
|
||||
dev_err(codec->dev,
|
||||
|
@ -264,7 +264,6 @@ static int max9850_set_bias_level(struct snd_soc_codec *codec,
|
|||
case SND_SOC_BIAS_OFF:
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -523,7 +523,7 @@ static int ml26124_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
/* VMID ON */
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
snd_soc_update_bits(codec, ML26124_PW_REF_PW_MNG,
|
||||
ML26124_VMID, ML26124_VMID);
|
||||
msleep(500);
|
||||
|
@ -536,7 +536,6 @@ static int ml26124_set_bias_level(struct snd_soc_codec *codec,
|
|||
ML26124_VMID, 0);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -242,7 +242,7 @@ static int pcm512x_overclock_pll_put(struct snd_kcontrol *kcontrol,
|
|||
struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol);
|
||||
struct pcm512x_priv *pcm512x = snd_soc_codec_get_drvdata(codec);
|
||||
|
||||
switch (codec->dapm.bias_level) {
|
||||
switch (snd_soc_codec_get_bias_level(codec)) {
|
||||
case SND_SOC_BIAS_OFF:
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
break;
|
||||
|
@ -270,7 +270,7 @@ static int pcm512x_overclock_dsp_put(struct snd_kcontrol *kcontrol,
|
|||
struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol);
|
||||
struct pcm512x_priv *pcm512x = snd_soc_codec_get_drvdata(codec);
|
||||
|
||||
switch (codec->dapm.bias_level) {
|
||||
switch (snd_soc_codec_get_bias_level(codec)) {
|
||||
case SND_SOC_BIAS_OFF:
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
break;
|
||||
|
@ -298,7 +298,7 @@ static int pcm512x_overclock_dac_put(struct snd_kcontrol *kcontrol,
|
|||
struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol);
|
||||
struct pcm512x_priv *pcm512x = snd_soc_codec_get_drvdata(codec);
|
||||
|
||||
switch (codec->dapm.bias_level) {
|
||||
switch (snd_soc_codec_get_bias_level(codec)) {
|
||||
case SND_SOC_BIAS_OFF:
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
break;
|
||||
|
@ -641,8 +641,6 @@ static int pcm512x_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
}
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -301,6 +301,7 @@ static int rt286_support_power_controls[] = {
|
|||
|
||||
static int rt286_jack_detect(struct rt286_priv *rt286, bool *hp, bool *mic)
|
||||
{
|
||||
struct snd_soc_dapm_context *dapm;
|
||||
unsigned int val, buf;
|
||||
|
||||
*hp = false;
|
||||
|
@ -308,6 +309,9 @@ static int rt286_jack_detect(struct rt286_priv *rt286, bool *hp, bool *mic)
|
|||
|
||||
if (!rt286->codec)
|
||||
return -EINVAL;
|
||||
|
||||
dapm = snd_soc_codec_get_dapm(rt286->codec);
|
||||
|
||||
if (rt286->pdata.cbj_en) {
|
||||
regmap_read(rt286->regmap, RT286_GET_HP_SENSE, &buf);
|
||||
*hp = buf & 0x80000000;
|
||||
|
@ -316,14 +320,11 @@ static int rt286_jack_detect(struct rt286_priv *rt286, bool *hp, bool *mic)
|
|||
regmap_update_bits(rt286->regmap,
|
||||
RT286_DC_GAIN, 0x200, 0x200);
|
||||
|
||||
snd_soc_dapm_force_enable_pin(&rt286->codec->dapm,
|
||||
"HV");
|
||||
snd_soc_dapm_force_enable_pin(&rt286->codec->dapm,
|
||||
"VREF");
|
||||
snd_soc_dapm_force_enable_pin(dapm, "HV");
|
||||
snd_soc_dapm_force_enable_pin(dapm, "VREF");
|
||||
/* power LDO1 */
|
||||
snd_soc_dapm_force_enable_pin(&rt286->codec->dapm,
|
||||
"LDO1");
|
||||
snd_soc_dapm_sync(&rt286->codec->dapm);
|
||||
snd_soc_dapm_force_enable_pin(dapm, "LDO1");
|
||||
snd_soc_dapm_sync(dapm);
|
||||
|
||||
regmap_write(rt286->regmap, RT286_SET_MIC1, 0x24);
|
||||
msleep(50);
|
||||
|
@ -360,11 +361,11 @@ static int rt286_jack_detect(struct rt286_priv *rt286, bool *hp, bool *mic)
|
|||
*mic = buf & 0x80000000;
|
||||
}
|
||||
|
||||
snd_soc_dapm_disable_pin(&rt286->codec->dapm, "HV");
|
||||
snd_soc_dapm_disable_pin(&rt286->codec->dapm, "VREF");
|
||||
snd_soc_dapm_disable_pin(dapm, "HV");
|
||||
snd_soc_dapm_disable_pin(dapm, "VREF");
|
||||
if (!*hp)
|
||||
snd_soc_dapm_disable_pin(&rt286->codec->dapm, "LDO1");
|
||||
snd_soc_dapm_sync(&rt286->codec->dapm);
|
||||
snd_soc_dapm_disable_pin(dapm, "LDO1");
|
||||
snd_soc_dapm_sync(dapm);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -391,6 +392,7 @@ static void rt286_jack_detect_work(struct work_struct *work)
|
|||
|
||||
int rt286_mic_detect(struct snd_soc_codec *codec, struct snd_soc_jack *jack)
|
||||
{
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
struct rt286_priv *rt286 = snd_soc_codec_get_drvdata(codec);
|
||||
|
||||
rt286->jack = jack;
|
||||
|
@ -398,7 +400,7 @@ int rt286_mic_detect(struct snd_soc_codec *codec, struct snd_soc_jack *jack)
|
|||
if (jack) {
|
||||
/* enable IRQ */
|
||||
if (rt286->jack->status & SND_JACK_HEADPHONE)
|
||||
snd_soc_dapm_force_enable_pin(&codec->dapm, "LDO1");
|
||||
snd_soc_dapm_force_enable_pin(dapm, "LDO1");
|
||||
regmap_update_bits(rt286->regmap, RT286_IRQ_CTRL, 0x2, 0x2);
|
||||
/* Send an initial empty report */
|
||||
snd_soc_jack_report(rt286->jack, rt286->jack->status,
|
||||
|
@ -406,9 +408,9 @@ int rt286_mic_detect(struct snd_soc_codec *codec, struct snd_soc_jack *jack)
|
|||
} else {
|
||||
/* disable IRQ */
|
||||
regmap_update_bits(rt286->regmap, RT286_IRQ_CTRL, 0x2, 0x0);
|
||||
snd_soc_dapm_disable_pin(&codec->dapm, "LDO1");
|
||||
snd_soc_dapm_disable_pin(dapm, "LDO1");
|
||||
}
|
||||
snd_soc_dapm_sync(&codec->dapm);
|
||||
snd_soc_dapm_sync(dapm);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -985,7 +987,7 @@ static int rt286_set_bias_level(struct snd_soc_codec *codec,
|
|||
{
|
||||
switch (level) {
|
||||
case SND_SOC_BIAS_PREPARE:
|
||||
if (SND_SOC_BIAS_STANDBY == codec->dapm.bias_level) {
|
||||
if (SND_SOC_BIAS_STANDBY == snd_soc_codec_get_bias_level(codec)) {
|
||||
snd_soc_write(codec,
|
||||
RT286_SET_AUDIO_POWER, AC_PWRST_D0);
|
||||
snd_soc_update_bits(codec,
|
||||
|
@ -1012,7 +1014,6 @@ static int rt286_set_bias_level(struct snd_soc_codec *codec,
|
|||
default:
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1546,7 +1546,7 @@ static int rt5631_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
snd_soc_update_bits(codec, RT5631_PWR_MANAG_ADD3,
|
||||
RT5631_PWR_VREF | RT5631_PWR_MAIN_BIAS,
|
||||
RT5631_PWR_VREF | RT5631_PWR_MAIN_BIAS);
|
||||
|
@ -1569,7 +1569,6 @@ static int rt5631_set_bias_level(struct snd_soc_codec *codec,
|
|||
default:
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1615,7 +1614,7 @@ static int rt5631_probe(struct snd_soc_codec *codec)
|
|||
RT5631_DMIC_R_CH_LATCH_RISING);
|
||||
}
|
||||
|
||||
codec->dapm.bias_level = SND_SOC_BIAS_STANDBY;
|
||||
snd_soc_codec_init_bias_level(codec, SND_SOC_BIAS_STANDBY);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1870,7 +1870,7 @@ static int rt5640_set_bias_level(struct snd_soc_codec *codec,
|
|||
{
|
||||
switch (level) {
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (SND_SOC_BIAS_OFF == codec->dapm.bias_level) {
|
||||
if (SND_SOC_BIAS_OFF == snd_soc_codec_get_bias_level(codec)) {
|
||||
snd_soc_update_bits(codec, RT5640_PWR_ANLG1,
|
||||
RT5640_PWR_VREF1 | RT5640_PWR_MB |
|
||||
RT5640_PWR_BG | RT5640_PWR_VREF2,
|
||||
|
@ -1902,7 +1902,6 @@ static int rt5640_set_bias_level(struct snd_soc_codec *codec,
|
|||
default:
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1935,11 +1934,12 @@ EXPORT_SYMBOL_GPL(rt5640_dmic_enable);
|
|||
|
||||
static int rt5640_probe(struct snd_soc_codec *codec)
|
||||
{
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
struct rt5640_priv *rt5640 = snd_soc_codec_get_drvdata(codec);
|
||||
|
||||
rt5640->codec = codec;
|
||||
|
||||
rt5640_set_bias_level(codec, SND_SOC_BIAS_OFF);
|
||||
snd_soc_codec_force_bias_level(codec, SND_SOC_BIAS_OFF);
|
||||
|
||||
snd_soc_update_bits(codec, RT5640_DUMMY1, 0x0301, 0x0301);
|
||||
snd_soc_update_bits(codec, RT5640_MICBIAS, 0x0030, 0x0030);
|
||||
|
@ -1951,18 +1951,18 @@ static int rt5640_probe(struct snd_soc_codec *codec)
|
|||
snd_soc_add_codec_controls(codec,
|
||||
rt5640_specific_snd_controls,
|
||||
ARRAY_SIZE(rt5640_specific_snd_controls));
|
||||
snd_soc_dapm_new_controls(&codec->dapm,
|
||||
snd_soc_dapm_new_controls(dapm,
|
||||
rt5640_specific_dapm_widgets,
|
||||
ARRAY_SIZE(rt5640_specific_dapm_widgets));
|
||||
snd_soc_dapm_add_routes(&codec->dapm,
|
||||
snd_soc_dapm_add_routes(dapm,
|
||||
rt5640_specific_dapm_routes,
|
||||
ARRAY_SIZE(rt5640_specific_dapm_routes));
|
||||
break;
|
||||
case RT5640_ID_5639:
|
||||
snd_soc_dapm_new_controls(&codec->dapm,
|
||||
snd_soc_dapm_new_controls(dapm,
|
||||
rt5639_specific_dapm_widgets,
|
||||
ARRAY_SIZE(rt5639_specific_dapm_widgets));
|
||||
snd_soc_dapm_add_routes(&codec->dapm,
|
||||
snd_soc_dapm_add_routes(dapm,
|
||||
rt5639_specific_dapm_routes,
|
||||
ARRAY_SIZE(rt5639_specific_dapm_routes));
|
||||
break;
|
||||
|
@ -1991,7 +1991,7 @@ static int rt5640_suspend(struct snd_soc_codec *codec)
|
|||
{
|
||||
struct rt5640_priv *rt5640 = snd_soc_codec_get_drvdata(codec);
|
||||
|
||||
rt5640_set_bias_level(codec, SND_SOC_BIAS_OFF);
|
||||
snd_soc_codec_force_bias_level(codec, SND_SOC_BIAS_OFF);
|
||||
rt5640_reset(codec);
|
||||
regcache_cache_only(rt5640->regmap, true);
|
||||
regcache_mark_dirty(rt5640->regmap);
|
||||
|
|
|
@ -2409,7 +2409,6 @@ static int rt5645_set_bias_level(struct snd_soc_codec *codec,
|
|||
default:
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -2520,7 +2519,7 @@ static int rt5645_probe(struct snd_soc_codec *codec)
|
|||
break;
|
||||
}
|
||||
|
||||
rt5645_set_bias_level(codec, SND_SOC_BIAS_OFF);
|
||||
snd_soc_codec_force_bias_level(codec, SND_SOC_BIAS_OFF);
|
||||
|
||||
snd_soc_update_bits(codec, RT5645_CHARGE_PUMP, 0x0300, 0x0200);
|
||||
|
||||
|
|
|
@ -1571,7 +1571,7 @@ static int rt5651_set_bias_level(struct snd_soc_codec *codec,
|
|||
{
|
||||
switch (level) {
|
||||
case SND_SOC_BIAS_PREPARE:
|
||||
if (SND_SOC_BIAS_STANDBY == codec->dapm.bias_level) {
|
||||
if (SND_SOC_BIAS_STANDBY == snd_soc_codec_get_bias_level(codec)) {
|
||||
snd_soc_update_bits(codec, RT5651_PWR_ANLG1,
|
||||
RT5651_PWR_VREF1 | RT5651_PWR_MB |
|
||||
RT5651_PWR_BG | RT5651_PWR_VREF2,
|
||||
|
@ -1604,7 +1604,6 @@ static int rt5651_set_bias_level(struct snd_soc_codec *codec,
|
|||
default:
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1625,7 +1624,7 @@ static int rt5651_probe(struct snd_soc_codec *codec)
|
|||
RT5651_PWR_FV1 | RT5651_PWR_FV2,
|
||||
RT5651_PWR_FV1 | RT5651_PWR_FV2);
|
||||
|
||||
rt5651_set_bias_level(codec, SND_SOC_BIAS_OFF);
|
||||
snd_soc_codec_force_bias_level(codec, SND_SOC_BIAS_OFF);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -416,12 +416,12 @@ static bool rt5670_readable_register(struct device *dev, unsigned int reg)
|
|||
static int rt5670_headset_detect(struct snd_soc_codec *codec, int jack_insert)
|
||||
{
|
||||
int val;
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
struct rt5670_priv *rt5670 = snd_soc_codec_get_drvdata(codec);
|
||||
|
||||
if (jack_insert) {
|
||||
snd_soc_dapm_force_enable_pin(&codec->dapm,
|
||||
"Mic Det Power");
|
||||
snd_soc_dapm_sync(&codec->dapm);
|
||||
snd_soc_dapm_force_enable_pin(dapm, "Mic Det Power");
|
||||
snd_soc_dapm_sync(dapm);
|
||||
snd_soc_update_bits(codec, RT5670_GEN_CTRL3, 0x4, 0x0);
|
||||
snd_soc_update_bits(codec, RT5670_CJ_CTRL2,
|
||||
RT5670_CBJ_DET_MODE | RT5670_CBJ_MN_JD,
|
||||
|
@ -447,15 +447,15 @@ static int rt5670_headset_detect(struct snd_soc_codec *codec, int jack_insert)
|
|||
} else {
|
||||
snd_soc_update_bits(codec, RT5670_GEN_CTRL3, 0x4, 0x4);
|
||||
rt5670->jack_type = SND_JACK_HEADPHONE;
|
||||
snd_soc_dapm_disable_pin(&codec->dapm, "Mic Det Power");
|
||||
snd_soc_dapm_sync(&codec->dapm);
|
||||
snd_soc_dapm_disable_pin(dapm, "Mic Det Power");
|
||||
snd_soc_dapm_sync(dapm);
|
||||
}
|
||||
} else {
|
||||
snd_soc_update_bits(codec, RT5670_INT_IRQ_ST, 0x8, 0x0);
|
||||
snd_soc_update_bits(codec, RT5670_GEN_CTRL3, 0x4, 0x4);
|
||||
rt5670->jack_type = 0;
|
||||
snd_soc_dapm_disable_pin(&codec->dapm, "Mic Det Power");
|
||||
snd_soc_dapm_sync(&codec->dapm);
|
||||
snd_soc_dapm_disable_pin(dapm, "Mic Det Power");
|
||||
snd_soc_dapm_sync(dapm);
|
||||
}
|
||||
|
||||
return rt5670->jack_type;
|
||||
|
@ -2603,7 +2603,7 @@ static int rt5670_set_bias_level(struct snd_soc_codec *codec,
|
|||
|
||||
switch (level) {
|
||||
case SND_SOC_BIAS_PREPARE:
|
||||
if (SND_SOC_BIAS_STANDBY == codec->dapm.bias_level) {
|
||||
if (SND_SOC_BIAS_STANDBY == snd_soc_codec_get_bias_level(codec)) {
|
||||
snd_soc_update_bits(codec, RT5670_PWR_ANLG1,
|
||||
RT5670_PWR_VREF1 | RT5670_PWR_MB |
|
||||
RT5670_PWR_BG | RT5670_PWR_VREF2,
|
||||
|
@ -2647,30 +2647,30 @@ static int rt5670_set_bias_level(struct snd_soc_codec *codec,
|
|||
default:
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int rt5670_probe(struct snd_soc_codec *codec)
|
||||
{
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
struct rt5670_priv *rt5670 = snd_soc_codec_get_drvdata(codec);
|
||||
|
||||
switch (snd_soc_read(codec, RT5670_RESET) & RT5670_ID_MASK) {
|
||||
case RT5670_ID_5670:
|
||||
case RT5670_ID_5671:
|
||||
snd_soc_dapm_new_controls(&codec->dapm,
|
||||
snd_soc_dapm_new_controls(dapm,
|
||||
rt5670_specific_dapm_widgets,
|
||||
ARRAY_SIZE(rt5670_specific_dapm_widgets));
|
||||
snd_soc_dapm_add_routes(&codec->dapm,
|
||||
snd_soc_dapm_add_routes(dapm,
|
||||
rt5670_specific_dapm_routes,
|
||||
ARRAY_SIZE(rt5670_specific_dapm_routes));
|
||||
break;
|
||||
case RT5670_ID_5672:
|
||||
snd_soc_dapm_new_controls(&codec->dapm,
|
||||
snd_soc_dapm_new_controls(dapm,
|
||||
rt5672_specific_dapm_widgets,
|
||||
ARRAY_SIZE(rt5672_specific_dapm_widgets));
|
||||
snd_soc_dapm_add_routes(&codec->dapm,
|
||||
snd_soc_dapm_add_routes(dapm,
|
||||
rt5672_specific_dapm_routes,
|
||||
ARRAY_SIZE(rt5672_specific_dapm_routes));
|
||||
break;
|
||||
|
|
|
@ -817,7 +817,7 @@ static int rt5677_dsp_vad_put(struct snd_kcontrol *kcontrol,
|
|||
|
||||
rt5677->dsp_vad_en = !!ucontrol->value.integer.value[0];
|
||||
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF)
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF)
|
||||
rt5677_set_dsp_vad(codec, rt5677->dsp_vad_en);
|
||||
|
||||
return 0;
|
||||
|
@ -2476,7 +2476,7 @@ static int rt5677_vref_event(struct snd_soc_dapm_widget *w,
|
|||
|
||||
switch (event) {
|
||||
case SND_SOC_DAPM_POST_PMU:
|
||||
if (codec->dapm.bias_level != SND_SOC_BIAS_ON &&
|
||||
if (snd_soc_codec_get_bias_level(codec) != SND_SOC_BIAS_ON &&
|
||||
!rt5677->is_vref_slow) {
|
||||
mdelay(20);
|
||||
regmap_update_bits(rt5677->regmap, RT5677_PWR_ANLG1,
|
||||
|
@ -4350,7 +4350,7 @@ static int rt5677_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
|
||||
case SND_SOC_BIAS_PREPARE:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_STANDBY) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_STANDBY) {
|
||||
rt5677_set_dsp_vad(codec, false);
|
||||
|
||||
regmap_update_bits(rt5677->regmap, RT5677_PWR_ANLG1,
|
||||
|
@ -4392,7 +4392,6 @@ static int rt5677_set_bias_level(struct snd_soc_codec *codec,
|
|||
default:
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -4603,22 +4602,23 @@ static void rt5677_free_gpio(struct i2c_client *i2c)
|
|||
|
||||
static int rt5677_probe(struct snd_soc_codec *codec)
|
||||
{
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
struct rt5677_priv *rt5677 = snd_soc_codec_get_drvdata(codec);
|
||||
int i;
|
||||
|
||||
rt5677->codec = codec;
|
||||
|
||||
if (rt5677->pdata.dmic2_clk_pin == RT5677_DMIC_CLK2) {
|
||||
snd_soc_dapm_add_routes(&codec->dapm,
|
||||
snd_soc_dapm_add_routes(dapm,
|
||||
rt5677_dmic2_clk_2,
|
||||
ARRAY_SIZE(rt5677_dmic2_clk_2));
|
||||
} else { /*use dmic1 clock by default*/
|
||||
snd_soc_dapm_add_routes(&codec->dapm,
|
||||
snd_soc_dapm_add_routes(dapm,
|
||||
rt5677_dmic2_clk_1,
|
||||
ARRAY_SIZE(rt5677_dmic2_clk_1));
|
||||
}
|
||||
|
||||
rt5677_set_bias_level(codec, SND_SOC_BIAS_OFF);
|
||||
snd_soc_codec_force_bias_level(codec, SND_SOC_BIAS_OFF);
|
||||
|
||||
regmap_write(rt5677->regmap, RT5677_DIG_MISC, 0x0020);
|
||||
regmap_write(rt5677->regmap, RT5677_PWR_DSP2, 0x0c00);
|
||||
|
|
|
@ -948,7 +948,7 @@ static int sgtl5000_set_bias_level(struct snd_soc_codec *codec,
|
|||
case SND_SOC_BIAS_PREPARE:
|
||||
break;
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
ret = regulator_bulk_enable(
|
||||
ARRAY_SIZE(sgtl5000->supplies),
|
||||
sgtl5000->supplies);
|
||||
|
@ -979,7 +979,6 @@ static int sgtl5000_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
}
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -395,7 +395,7 @@ struct snd_soc_dai_driver sirf_audio_codec_dai = {
|
|||
|
||||
static int sirf_audio_codec_probe(struct snd_soc_codec *codec)
|
||||
{
|
||||
struct snd_soc_dapm_context *dapm = &codec->dapm;
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
|
||||
pm_runtime_enable(codec->dev);
|
||||
|
||||
|
|
|
@ -194,7 +194,7 @@ static int sn95031_set_vaud_bias(struct snd_soc_codec *codec,
|
|||
break;
|
||||
|
||||
case SND_SOC_BIAS_PREPARE:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_STANDBY) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_STANDBY) {
|
||||
pr_debug("vaud_bias powering up pll\n");
|
||||
/* power up the pll */
|
||||
snd_soc_write(codec, SN95031_AUDPLLCTRL, BIT(5));
|
||||
|
@ -205,17 +205,22 @@ static int sn95031_set_vaud_bias(struct snd_soc_codec *codec,
|
|||
break;
|
||||
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
switch (snd_soc_codec_get_bias_level(codec)) {
|
||||
case SND_SOC_BIAS_OFF:
|
||||
pr_debug("vaud_bias power up rail\n");
|
||||
/* power up the rail */
|
||||
snd_soc_write(codec, SN95031_VAUD,
|
||||
BIT(2)|BIT(1)|BIT(0));
|
||||
msleep(1);
|
||||
} else if (codec->dapm.bias_level == SND_SOC_BIAS_PREPARE) {
|
||||
break;
|
||||
case SND_SOC_BIAS_PREPARE:
|
||||
/* turn off pcm */
|
||||
pr_debug("vaud_bias power dn pcm\n");
|
||||
snd_soc_update_bits(codec, SN95031_PCM2C2, BIT(0), 0);
|
||||
snd_soc_write(codec, SN95031_AUDPLLCTRL, 0);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -226,7 +231,6 @@ static int sn95031_set_vaud_bias(struct snd_soc_codec *codec,
|
|||
break;
|
||||
}
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -518,12 +518,7 @@ static int ssm2518_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
}
|
||||
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int ssm2518_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask,
|
||||
|
|
|
@ -473,7 +473,6 @@ static int ssm2602_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -361,12 +361,7 @@ static int ssm4567_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
}
|
||||
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static const struct snd_soc_dai_ops ssm4567_dai_ops = {
|
||||
|
|
|
@ -819,7 +819,7 @@ static int sta32x_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
ret = regulator_bulk_enable(ARRAY_SIZE(sta32x->supplies),
|
||||
sta32x->supplies);
|
||||
if (ret != 0) {
|
||||
|
@ -854,7 +854,6 @@ static int sta32x_set_bias_level(struct snd_soc_codec *codec,
|
|||
sta32x->supplies);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -970,7 +969,7 @@ static int sta32x_probe(struct snd_soc_codec *codec)
|
|||
if (sta32x->pdata->needs_esd_watchdog)
|
||||
INIT_DELAYED_WORK(&sta32x->watchdog_work, sta32x_watchdog);
|
||||
|
||||
sta32x_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
|
||||
snd_soc_codec_force_bias_level(codec, SND_SOC_BIAS_STANDBY);
|
||||
/* Bias level configuration will have done an extra enable */
|
||||
regulator_bulk_disable(ARRAY_SIZE(sta32x->supplies), sta32x->supplies);
|
||||
|
||||
|
|
|
@ -853,7 +853,7 @@ static int sta350_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
ret = regulator_bulk_enable(
|
||||
ARRAY_SIZE(sta350->supplies),
|
||||
sta350->supplies);
|
||||
|
@ -890,7 +890,6 @@ static int sta350_set_bias_level(struct snd_soc_codec *codec,
|
|||
sta350->supplies);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1037,7 +1036,7 @@ static int sta350_probe(struct snd_soc_codec *codec)
|
|||
sta350->coef_shadow[60] = 0x400000;
|
||||
sta350->coef_shadow[61] = 0x400000;
|
||||
|
||||
sta350_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
|
||||
snd_soc_codec_force_bias_level(codec, SND_SOC_BIAS_STANDBY);
|
||||
/* Bias level configuration will have done an extra enable */
|
||||
regulator_bulk_disable(ARRAY_SIZE(sta350->supplies), sta350->supplies);
|
||||
|
||||
|
|
|
@ -165,7 +165,7 @@ static int sta529_set_bias_level(struct snd_soc_codec *codec, enum
|
|||
FFX_CLK_ENB);
|
||||
break;
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF)
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF)
|
||||
regcache_sync(sta529->regmap);
|
||||
snd_soc_update_bits(codec, STA529_FFXCFG0,
|
||||
POWER_CNTLMSAK, POWER_STDBY);
|
||||
|
@ -179,12 +179,6 @@ static int sta529_set_bias_level(struct snd_soc_codec *codec, enum
|
|||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
* store the label for powers down audio subsystem for suspend.This is
|
||||
* used by soc core layer
|
||||
*/
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
|
|
@ -236,7 +236,6 @@ static int stac9766_set_bias_level(struct snd_soc_codec *codec,
|
|||
stac9766_ac97_write(codec, AC97_POWERDOWN, 0xffff);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -506,7 +506,6 @@ static int tlv320aic23_set_bias_level(struct snd_soc_codec *codec,
|
|||
snd_soc_write(codec, TLV320AIC23_PWR, 0x1ff);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -646,7 +646,7 @@ static int aic31xx_add_controls(struct snd_soc_codec *codec)
|
|||
|
||||
static int aic31xx_add_widgets(struct snd_soc_codec *codec)
|
||||
{
|
||||
struct snd_soc_dapm_context *dapm = &codec->dapm;
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
struct aic31xx_priv *aic31xx = snd_soc_codec_get_drvdata(codec);
|
||||
int ret = 0;
|
||||
|
||||
|
@ -1027,17 +1027,17 @@ static int aic31xx_set_bias_level(struct snd_soc_codec *codec,
|
|||
enum snd_soc_bias_level level)
|
||||
{
|
||||
dev_dbg(codec->dev, "## %s: %d -> %d\n", __func__,
|
||||
codec->dapm.bias_level, level);
|
||||
snd_soc_codec_get_bias_level(codec), level);
|
||||
|
||||
switch (level) {
|
||||
case SND_SOC_BIAS_ON:
|
||||
break;
|
||||
case SND_SOC_BIAS_PREPARE:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_STANDBY)
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_STANDBY)
|
||||
aic31xx_clk_on(codec);
|
||||
break;
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
switch (codec->dapm.bias_level) {
|
||||
switch (snd_soc_codec_get_bias_level(codec)) {
|
||||
case SND_SOC_BIAS_OFF:
|
||||
aic31xx_power_on(codec);
|
||||
break;
|
||||
|
@ -1049,11 +1049,10 @@ static int aic31xx_set_bias_level(struct snd_soc_codec *codec,
|
|||
}
|
||||
break;
|
||||
case SND_SOC_BIAS_OFF:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_STANDBY)
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_STANDBY)
|
||||
aic31xx_power_off(codec);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -564,7 +564,6 @@ static int aic32x4_set_bias_level(struct snd_soc_codec *codec,
|
|||
case SND_SOC_BIAS_OFF:
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -147,6 +147,7 @@ static int snd_soc_dapm_put_volsw_aic3x(struct snd_kcontrol *kcontrol,
|
|||
struct snd_ctl_elem_value *ucontrol)
|
||||
{
|
||||
struct snd_soc_codec *codec = snd_soc_dapm_kcontrol_codec(kcontrol);
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
struct soc_mixer_control *mc =
|
||||
(struct soc_mixer_control *)kcontrol->private_value;
|
||||
unsigned int reg = mc->reg;
|
||||
|
@ -179,7 +180,7 @@ static int snd_soc_dapm_put_volsw_aic3x(struct snd_kcontrol *kcontrol,
|
|||
update.mask = mask;
|
||||
update.val = val;
|
||||
|
||||
snd_soc_dapm_mixer_update_power(&codec->dapm, kcontrol, connect,
|
||||
snd_soc_dapm_mixer_update_power(dapm, kcontrol, connect,
|
||||
&update);
|
||||
}
|
||||
|
||||
|
@ -979,7 +980,7 @@ static const struct snd_soc_dapm_route intercon_3007[] = {
|
|||
static int aic3x_add_widgets(struct snd_soc_codec *codec)
|
||||
{
|
||||
struct aic3x_priv *aic3x = snd_soc_codec_get_drvdata(codec);
|
||||
struct snd_soc_dapm_context *dapm = &codec->dapm;
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
|
||||
switch (aic3x->model) {
|
||||
case AIC3X_MODEL_3X:
|
||||
|
@ -1384,7 +1385,7 @@ static int aic3x_set_bias_level(struct snd_soc_codec *codec,
|
|||
case SND_SOC_BIAS_ON:
|
||||
break;
|
||||
case SND_SOC_BIAS_PREPARE:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_STANDBY &&
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_STANDBY &&
|
||||
aic3x->master) {
|
||||
/* enable pll */
|
||||
snd_soc_update_bits(codec, AIC3X_PLL_PROGA_REG,
|
||||
|
@ -1394,7 +1395,7 @@ static int aic3x_set_bias_level(struct snd_soc_codec *codec,
|
|||
case SND_SOC_BIAS_STANDBY:
|
||||
if (!aic3x->power)
|
||||
aic3x_set_power(codec, 1);
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_PREPARE &&
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_PREPARE &&
|
||||
aic3x->master) {
|
||||
/* disable pll */
|
||||
snd_soc_update_bits(codec, AIC3X_PLL_PROGA_REG,
|
||||
|
@ -1406,7 +1407,6 @@ static int aic3x_set_bias_level(struct snd_soc_codec *codec,
|
|||
aic3x_set_power(codec, 0);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -633,7 +633,7 @@ static int dac33_set_bias_level(struct snd_soc_codec *codec,
|
|||
case SND_SOC_BIAS_PREPARE:
|
||||
break;
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
/* Coming from OFF, switch on the codec */
|
||||
ret = dac33_hard_power(codec, 1);
|
||||
if (ret != 0)
|
||||
|
@ -644,14 +644,13 @@ static int dac33_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
case SND_SOC_BIAS_OFF:
|
||||
/* Do not power off, when the codec is already off */
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF)
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF)
|
||||
return 0;
|
||||
ret = dac33_hard_power(codec, 0);
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1588,14 +1588,13 @@ static int twl4030_set_bias_level(struct snd_soc_codec *codec,
|
|||
case SND_SOC_BIAS_PREPARE:
|
||||
break;
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF)
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF)
|
||||
twl4030_codec_enable(codec, 1);
|
||||
break;
|
||||
case SND_SOC_BIAS_OFF:
|
||||
twl4030_codec_enable(codec, 0);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -533,7 +533,7 @@ static int twl6040_pll_put_enum(struct snd_kcontrol *kcontrol,
|
|||
|
||||
int twl6040_get_dl1_gain(struct snd_soc_codec *codec)
|
||||
{
|
||||
struct snd_soc_dapm_context *dapm = &codec->dapm;
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
|
||||
if (snd_soc_dapm_get_pin_status(dapm, "EP"))
|
||||
return -1; /* -1dB */
|
||||
|
@ -853,8 +853,6 @@ static int twl6040_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
}
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1130,7 +1128,7 @@ static int twl6040_probe(struct snd_soc_codec *codec)
|
|||
return ret;
|
||||
}
|
||||
|
||||
twl6040_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
|
||||
snd_soc_codec_force_bias_level(codec, SND_SOC_BIAS_STANDBY);
|
||||
twl6040_init_chip(codec);
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -350,7 +350,6 @@ static int uda134x_set_bias_level(struct snd_soc_codec *codec,
|
|||
pd->power(0);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -478,6 +477,7 @@ static struct snd_soc_dai_driver uda134x_dai = {
|
|||
|
||||
static int uda134x_soc_probe(struct snd_soc_codec *codec)
|
||||
{
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
struct uda134x_priv *uda134x;
|
||||
struct uda134x_platform_data *pd = codec->component.card->dev->platform_data;
|
||||
const struct snd_soc_dapm_widget *widgets;
|
||||
|
@ -526,7 +526,7 @@ static int uda134x_soc_probe(struct snd_soc_codec *codec)
|
|||
num_widgets = ARRAY_SIZE(uda1340_dapm_widgets);
|
||||
}
|
||||
|
||||
ret = snd_soc_dapm_new_controls(&codec->dapm, widgets, num_widgets);
|
||||
ret = snd_soc_dapm_new_controls(dapm, widgets, num_widgets);
|
||||
if (ret) {
|
||||
printk(KERN_ERR "%s failed to register dapm controls: %d",
|
||||
__func__, ret);
|
||||
|
|
|
@ -590,9 +590,6 @@ static int uda1380_set_bias_level(struct snd_soc_codec *codec,
|
|||
int reg;
|
||||
struct uda1380_platform_data *pdata = codec->dev->platform_data;
|
||||
|
||||
if (codec->dapm.bias_level == level)
|
||||
return 0;
|
||||
|
||||
switch (level) {
|
||||
case SND_SOC_BIAS_ON:
|
||||
case SND_SOC_BIAS_PREPARE:
|
||||
|
@ -600,7 +597,7 @@ static int uda1380_set_bias_level(struct snd_soc_codec *codec,
|
|||
uda1380_write(codec, UDA1380_PM, R02_PON_BIAS | pm);
|
||||
break;
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
if (gpio_is_valid(pdata->gpio_power)) {
|
||||
gpio_set_value(pdata->gpio_power, 1);
|
||||
mdelay(1);
|
||||
|
@ -623,7 +620,6 @@ static int uda1380_set_bias_level(struct snd_soc_codec *codec,
|
|||
for (reg = UDA1380_MVOL; reg < UDA1380_CACHEREGNUM; reg++)
|
||||
set_bit(reg - 0x10, &uda1380_cache_dirty);
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -751,13 +751,13 @@ static int wm0010_set_bias_level(struct snd_soc_codec *codec,
|
|||
|
||||
switch (level) {
|
||||
case SND_SOC_BIAS_ON:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_PREPARE)
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_PREPARE)
|
||||
wm0010_boot(codec);
|
||||
break;
|
||||
case SND_SOC_BIAS_PREPARE:
|
||||
break;
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_PREPARE) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_PREPARE) {
|
||||
mutex_lock(&wm0010->lock);
|
||||
wm0010_halt(codec);
|
||||
mutex_unlock(&wm0010->lock);
|
||||
|
@ -767,8 +767,6 @@ static int wm0010_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
}
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -61,8 +61,6 @@ static int wm1250_ev1_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
}
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -2101,7 +2101,7 @@ static void wm5100_micd_irq(struct wm5100_priv *wm5100)
|
|||
int wm5100_detect(struct snd_soc_codec *codec, struct snd_soc_jack *jack)
|
||||
{
|
||||
struct wm5100_priv *wm5100 = snd_soc_codec_get_drvdata(codec);
|
||||
struct snd_soc_dapm_context *dapm = &codec->dapm;
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
|
||||
if (jack) {
|
||||
wm5100->jack = jack;
|
||||
|
@ -2336,6 +2336,7 @@ static void wm5100_free_gpio(struct i2c_client *i2c)
|
|||
|
||||
static int wm5100_probe(struct snd_soc_codec *codec)
|
||||
{
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
struct i2c_client *i2c = to_i2c_client(codec->dev);
|
||||
struct wm5100_priv *wm5100 = snd_soc_codec_get_drvdata(codec);
|
||||
int ret, i;
|
||||
|
@ -2353,8 +2354,7 @@ static int wm5100_probe(struct snd_soc_codec *codec)
|
|||
/* TODO: check if we're symmetric */
|
||||
|
||||
if (i2c->irq)
|
||||
snd_soc_dapm_new_controls(&codec->dapm,
|
||||
wm5100_dapm_widgets_noirq,
|
||||
snd_soc_dapm_new_controls(dapm, wm5100_dapm_widgets_noirq,
|
||||
ARRAY_SIZE(wm5100_dapm_widgets_noirq));
|
||||
|
||||
if (wm5100->pdata.hp_pol) {
|
||||
|
|
|
@ -1872,6 +1872,7 @@ static struct snd_soc_dai_driver wm5102_dai[] = {
|
|||
|
||||
static int wm5102_codec_probe(struct snd_soc_codec *codec)
|
||||
{
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
struct wm5102_priv *priv = snd_soc_codec_get_drvdata(codec);
|
||||
int ret;
|
||||
|
||||
|
@ -1882,9 +1883,9 @@ static int wm5102_codec_probe(struct snd_soc_codec *codec)
|
|||
arizona_init_spk(codec);
|
||||
arizona_init_gpio(codec);
|
||||
|
||||
snd_soc_dapm_disable_pin(&codec->dapm, "HAPTICS");
|
||||
snd_soc_dapm_disable_pin(dapm, "HAPTICS");
|
||||
|
||||
priv->core.arizona->dapm = &codec->dapm;
|
||||
priv->core.arizona->dapm = dapm;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1598,10 +1598,11 @@ static struct snd_soc_dai_driver wm5110_dai[] = {
|
|||
|
||||
static int wm5110_codec_probe(struct snd_soc_codec *codec)
|
||||
{
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
struct wm5110_priv *priv = snd_soc_codec_get_drvdata(codec);
|
||||
int i, ret;
|
||||
|
||||
priv->core.arizona->dapm = &codec->dapm;
|
||||
priv->core.arizona->dapm = dapm;
|
||||
|
||||
arizona_init_spk(codec);
|
||||
arizona_init_gpio(codec);
|
||||
|
@ -1613,9 +1614,7 @@ static int wm5110_codec_probe(struct snd_soc_codec *codec)
|
|||
return ret;
|
||||
}
|
||||
|
||||
snd_soc_dapm_disable_pin(&codec->dapm, "HAPTICS");
|
||||
|
||||
priv->core.arizona->dapm = &codec->dapm;
|
||||
snd_soc_dapm_disable_pin(dapm, "HAPTICS");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1102,7 +1102,7 @@ static int wm8350_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
ret = regulator_bulk_enable(ARRAY_SIZE(priv->supplies),
|
||||
priv->supplies);
|
||||
if (ret != 0)
|
||||
|
@ -1235,7 +1235,6 @@ static int wm8350_set_bias_level(struct snd_soc_codec *codec,
|
|||
priv->supplies);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -1145,7 +1145,7 @@ static int wm8400_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
ret = regulator_bulk_enable(ARRAY_SIZE(power),
|
||||
&power[0]);
|
||||
if (ret != 0) {
|
||||
|
@ -1232,7 +1232,6 @@ static int wm8400_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
}
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -519,7 +519,7 @@ static int wm8510_set_bias_level(struct snd_soc_codec *codec,
|
|||
case SND_SOC_BIAS_STANDBY:
|
||||
power1 |= WM8510_POWER1_BIASEN | WM8510_POWER1_BUFIOEN;
|
||||
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
regcache_sync(wm8510->regmap);
|
||||
|
||||
/* Initial cap charge at VMID 5k */
|
||||
|
@ -538,7 +538,6 @@ static int wm8510_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
}
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -308,7 +308,7 @@ static int wm8523_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
ret = regulator_bulk_enable(ARRAY_SIZE(wm8523->supplies),
|
||||
wm8523->supplies);
|
||||
if (ret != 0) {
|
||||
|
@ -344,7 +344,6 @@ static int wm8523_set_bias_level(struct snd_soc_codec *codec,
|
|||
wm8523->supplies);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -795,7 +795,7 @@ static int wm8580_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
/* Power up and get individual control of the DACs */
|
||||
snd_soc_update_bits(codec, WM8580_PWRDN1,
|
||||
WM8580_PWRDN1_PWDN |
|
||||
|
@ -812,7 +812,6 @@ static int wm8580_set_bias_level(struct snd_soc_codec *codec,
|
|||
WM8580_PWRDN1_PWDN, WM8580_PWRDN1_PWDN);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -310,7 +310,7 @@ static int wm8711_set_bias_level(struct snd_soc_codec *codec,
|
|||
case SND_SOC_BIAS_PREPARE:
|
||||
break;
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF)
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF)
|
||||
regcache_sync(wm8711->regmap);
|
||||
|
||||
snd_soc_write(codec, WM8711_PWR, reg | 0x0040);
|
||||
|
@ -320,7 +320,6 @@ static int wm8711_set_bias_level(struct snd_soc_codec *codec,
|
|||
snd_soc_write(codec, WM8711_PWR, 0xffff);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -170,7 +170,7 @@ static int wm8728_set_bias_level(struct snd_soc_codec *codec,
|
|||
case SND_SOC_BIAS_ON:
|
||||
case SND_SOC_BIAS_PREPARE:
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
/* Power everything up... */
|
||||
reg = snd_soc_read(codec, WM8728_DACCTL);
|
||||
snd_soc_write(codec, WM8728_DACCTL, reg & ~0x4);
|
||||
|
@ -185,7 +185,6 @@ static int wm8728_set_bias_level(struct snd_soc_codec *codec,
|
|||
snd_soc_write(codec, WM8728_DACCTL, reg | 0x4);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -387,6 +387,7 @@ static int wm8731_set_dai_sysclk(struct snd_soc_dai *codec_dai,
|
|||
int clk_id, unsigned int freq, int dir)
|
||||
{
|
||||
struct snd_soc_codec *codec = codec_dai->codec;
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
struct wm8731_priv *wm8731 = snd_soc_codec_get_drvdata(codec);
|
||||
|
||||
switch (clk_id) {
|
||||
|
@ -421,7 +422,7 @@ static int wm8731_set_dai_sysclk(struct snd_soc_dai *codec_dai,
|
|||
|
||||
wm8731->sysclk = freq;
|
||||
|
||||
snd_soc_dapm_sync(&codec->dapm);
|
||||
snd_soc_dapm_sync(dapm);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -501,7 +502,7 @@ static int wm8731_set_bias_level(struct snd_soc_codec *codec,
|
|||
case SND_SOC_BIAS_PREPARE:
|
||||
break;
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
ret = regulator_bulk_enable(ARRAY_SIZE(wm8731->supplies),
|
||||
wm8731->supplies);
|
||||
if (ret != 0)
|
||||
|
@ -523,7 +524,6 @@ static int wm8731_set_bias_level(struct snd_soc_codec *codec,
|
|||
regcache_mark_dirty(wm8731->regmap);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -599,7 +599,7 @@ static int wm8731_probe(struct snd_soc_codec *codec)
|
|||
goto err_regulator_enable;
|
||||
}
|
||||
|
||||
wm8731_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
|
||||
snd_soc_codec_force_bias_level(codec, SND_SOC_BIAS_STANDBY);
|
||||
|
||||
/* Latch the update bits */
|
||||
snd_soc_update_bits(codec, WM8731_LOUT1V, 0x100, 0);
|
||||
|
|
|
@ -469,7 +469,7 @@ static int wm8737_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
ret = regulator_bulk_enable(ARRAY_SIZE(wm8737->supplies),
|
||||
wm8737->supplies);
|
||||
if (ret != 0) {
|
||||
|
@ -510,7 +510,6 @@ static int wm8737_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
}
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -560,7 +559,7 @@ static int wm8737_probe(struct snd_soc_codec *codec)
|
|||
snd_soc_update_bits(codec, WM8737_RIGHT_PGA_VOLUME, WM8737_RVU,
|
||||
WM8737_RVU);
|
||||
|
||||
wm8737_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
|
||||
snd_soc_codec_force_bias_level(codec, SND_SOC_BIAS_STANDBY);
|
||||
|
||||
/* Bias level configuration will have done an extra enable */
|
||||
regulator_bulk_disable(ARRAY_SIZE(wm8737->supplies), wm8737->supplies);
|
||||
|
|
|
@ -634,7 +634,7 @@ static int wm8750_set_bias_level(struct snd_soc_codec *codec,
|
|||
case SND_SOC_BIAS_PREPARE:
|
||||
break;
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
snd_soc_cache_sync(codec);
|
||||
|
||||
/* Set VMID to 5k */
|
||||
|
@ -651,7 +651,6 @@ static int wm8750_set_bias_level(struct snd_soc_codec *codec,
|
|||
snd_soc_write(codec, WM8750_PWR1, 0x0001);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -1352,7 +1352,7 @@ static int wm8753_set_bias_level(struct snd_soc_codec *codec,
|
|||
flush_delayed_work(&wm8753->charge_work);
|
||||
break;
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
/* set vmid to 5k for quick power up */
|
||||
snd_soc_write(codec, WM8753_PWR1, pwr_reg | 0x01c1);
|
||||
schedule_delayed_work(&wm8753->charge_work,
|
||||
|
@ -1367,7 +1367,6 @@ static int wm8753_set_bias_level(struct snd_soc_codec *codec,
|
|||
snd_soc_write(codec, WM8753_PWR1, 0x0001);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -510,7 +510,7 @@ static int wm8770_set_bias_level(struct snd_soc_codec *codec,
|
|||
case SND_SOC_BIAS_PREPARE:
|
||||
break;
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
ret = regulator_bulk_enable(ARRAY_SIZE(wm8770->supplies),
|
||||
wm8770->supplies);
|
||||
if (ret) {
|
||||
|
@ -534,7 +534,6 @@ static int wm8770_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
}
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -344,7 +344,7 @@ static int wm8776_set_bias_level(struct snd_soc_codec *codec,
|
|||
case SND_SOC_BIAS_PREPARE:
|
||||
break;
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
regcache_sync(wm8776->regmap);
|
||||
|
||||
/* Disable the global powerdown; DAPM does the rest */
|
||||
|
@ -357,7 +357,6 @@ static int wm8776_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
}
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -162,7 +162,7 @@ static int txsrc_put(struct snd_kcontrol *kcontrol,
|
|||
struct snd_ctl_elem_value *ucontrol)
|
||||
{
|
||||
struct snd_soc_codec *codec = snd_soc_dapm_kcontrol_codec(kcontrol);
|
||||
struct snd_soc_dapm_context *dapm = &codec->dapm;
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
|
||||
unsigned int val = ucontrol->value.enumerated.item[0] << e->shift_l;
|
||||
unsigned int mask = 1 << e->shift_l;
|
||||
|
|
|
@ -1049,7 +1049,7 @@ static int wm8900_set_bias_level(struct snd_soc_codec *codec,
|
|||
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
/* Charge capacitors if initial power up */
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
/* STARTUP_BIAS_ENA on */
|
||||
snd_soc_write(codec, WM8900_REG_POWER1,
|
||||
WM8900_REG_POWER1_STARTUP_BIAS_ENA);
|
||||
|
@ -1117,7 +1117,6 @@ static int wm8900_set_bias_level(struct snd_soc_codec *codec,
|
|||
WM8900_REG_POWER2_SYSCLK_ENA);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1138,7 +1137,7 @@ static int wm8900_suspend(struct snd_soc_codec *codec)
|
|||
wm8900->fll_out = fll_out;
|
||||
wm8900->fll_in = fll_in;
|
||||
|
||||
wm8900_set_bias_level(codec, SND_SOC_BIAS_OFF);
|
||||
snd_soc_codec_force_bias_level(codec, SND_SOC_BIAS_OFF);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1156,7 +1155,7 @@ static int wm8900_resume(struct snd_soc_codec *codec)
|
|||
return ret;
|
||||
}
|
||||
|
||||
wm8900_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
|
||||
snd_soc_codec_force_bias_level(codec, SND_SOC_BIAS_STANDBY);
|
||||
|
||||
/* Restart the FLL? */
|
||||
if (wm8900->fll_out) {
|
||||
|
@ -1189,7 +1188,7 @@ static int wm8900_probe(struct snd_soc_codec *codec)
|
|||
wm8900_reset(codec);
|
||||
|
||||
/* Turn the chip on */
|
||||
wm8900_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
|
||||
snd_soc_codec_force_bias_level(codec, SND_SOC_BIAS_STANDBY);
|
||||
|
||||
/* Latch the volume update bits */
|
||||
snd_soc_update_bits(codec, WM8900_REG_LINVOL, 0x100, 0x100);
|
||||
|
|
|
@ -1105,7 +1105,7 @@ static int wm8903_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
snd_soc_update_bits(codec, WM8903_BIAS_CONTROL_0,
|
||||
WM8903_POBCTRL | WM8903_ISEL_MASK |
|
||||
WM8903_STARTUP_BIAS_ENA |
|
||||
|
@ -1200,8 +1200,6 @@ static int wm8903_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
}
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -1168,7 +1168,7 @@ static const struct snd_soc_dapm_route wm8912_intercon[] = {
|
|||
static int wm8904_add_widgets(struct snd_soc_codec *codec)
|
||||
{
|
||||
struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec);
|
||||
struct snd_soc_dapm_context *dapm = &codec->dapm;
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
|
||||
snd_soc_dapm_new_controls(dapm, wm8904_core_dapm_widgets,
|
||||
ARRAY_SIZE(wm8904_core_dapm_widgets));
|
||||
|
@ -1852,7 +1852,7 @@ static int wm8904_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
ret = regulator_bulk_enable(ARRAY_SIZE(wm8904->supplies),
|
||||
wm8904->supplies);
|
||||
if (ret != 0) {
|
||||
|
@ -1907,7 +1907,6 @@ static int wm8904_set_bias_level(struct snd_soc_codec *codec,
|
|||
clk_disable_unprepare(wm8904->mclk);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -492,7 +492,7 @@ static int wm8940_set_bias_level(struct snd_soc_codec *codec,
|
|||
ret = snd_soc_write(codec, WM8940_POWER1, pwr_reg | 0x1);
|
||||
break;
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
ret = regcache_sync(wm8940->regmap);
|
||||
if (ret < 0) {
|
||||
dev_err(codec->dev, "Failed to sync cache: %d\n", ret);
|
||||
|
@ -510,8 +510,6 @@ static int wm8940_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
}
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -707,7 +705,7 @@ static int wm8940_probe(struct snd_soc_codec *codec)
|
|||
return ret;
|
||||
}
|
||||
|
||||
wm8940_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
|
||||
snd_soc_codec_force_bias_level(codec, SND_SOC_BIAS_STANDBY);
|
||||
|
||||
ret = snd_soc_write(codec, WM8940_POWER1, 0x180);
|
||||
if (ret < 0)
|
||||
|
|
|
@ -785,7 +785,7 @@ static int wm8955_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
ret = regulator_bulk_enable(ARRAY_SIZE(wm8955->supplies),
|
||||
wm8955->supplies);
|
||||
if (ret != 0) {
|
||||
|
@ -838,7 +838,6 @@ static int wm8955_set_bias_level(struct snd_soc_codec *codec,
|
|||
wm8955->supplies);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -929,7 +928,7 @@ static int wm8955_probe(struct snd_soc_codec *codec)
|
|||
WM8955_DMEN, WM8955_DMEN);
|
||||
}
|
||||
|
||||
wm8955_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
|
||||
snd_soc_codec_force_bias_level(codec, SND_SOC_BIAS_STANDBY);
|
||||
|
||||
/* Bias level configuration will have done an extra enable */
|
||||
regulator_bulk_disable(ARRAY_SIZE(wm8955->supplies), wm8955->supplies);
|
||||
|
|
|
@ -445,7 +445,7 @@ static int wm8960_add_widgets(struct snd_soc_codec *codec)
|
|||
{
|
||||
struct wm8960_priv *wm8960 = snd_soc_codec_get_drvdata(codec);
|
||||
struct wm8960_data *pdata = &wm8960->pdata;
|
||||
struct snd_soc_dapm_context *dapm = &codec->dapm;
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
struct snd_soc_dapm_widget *w;
|
||||
|
||||
snd_soc_dapm_new_controls(dapm, wm8960_dapm_widgets,
|
||||
|
@ -476,7 +476,7 @@ static int wm8960_add_widgets(struct snd_soc_codec *codec)
|
|||
* and save the result.
|
||||
*/
|
||||
list_for_each_entry(w, &codec->component.card->widgets, list) {
|
||||
if (w->dapm != &codec->dapm)
|
||||
if (w->dapm != dapm)
|
||||
continue;
|
||||
if (strcmp(w->name, "LOUT1 PGA") == 0)
|
||||
wm8960->lout1 = w;
|
||||
|
@ -627,7 +627,7 @@ static int wm8960_set_bias_level_out3(struct snd_soc_codec *codec,
|
|||
break;
|
||||
|
||||
case SND_SOC_BIAS_PREPARE:
|
||||
switch (codec->dapm.bias_level) {
|
||||
switch (snd_soc_codec_get_bias_level(codec)) {
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (!IS_ERR(wm8960->mclk)) {
|
||||
ret = clk_prepare_enable(wm8960->mclk);
|
||||
|
@ -655,7 +655,7 @@ static int wm8960_set_bias_level_out3(struct snd_soc_codec *codec,
|
|||
break;
|
||||
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
regcache_sync(wm8960->regmap);
|
||||
|
||||
/* Enable anti-pop features */
|
||||
|
@ -691,8 +691,6 @@ static int wm8960_set_bias_level_out3(struct snd_soc_codec *codec,
|
|||
break;
|
||||
}
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -707,7 +705,7 @@ static int wm8960_set_bias_level_capless(struct snd_soc_codec *codec,
|
|||
break;
|
||||
|
||||
case SND_SOC_BIAS_PREPARE:
|
||||
switch (codec->dapm.bias_level) {
|
||||
switch (snd_soc_codec_get_bias_level(codec)) {
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
/* Enable anti pop mode */
|
||||
snd_soc_update_bits(codec, WM8960_APOP1,
|
||||
|
@ -778,7 +776,7 @@ static int wm8960_set_bias_level_capless(struct snd_soc_codec *codec,
|
|||
break;
|
||||
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
switch (codec->dapm.bias_level) {
|
||||
switch (snd_soc_codec_get_bias_level(codec)) {
|
||||
case SND_SOC_BIAS_PREPARE:
|
||||
/* Disable HP discharge */
|
||||
snd_soc_update_bits(codec, WM8960_APOP2,
|
||||
|
@ -802,8 +800,6 @@ static int wm8960_set_bias_level_capless(struct snd_soc_codec *codec,
|
|||
break;
|
||||
}
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -758,7 +758,7 @@ static int wm8961_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
|
||||
case SND_SOC_BIAS_PREPARE:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_STANDBY) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_STANDBY) {
|
||||
/* Enable bias generation */
|
||||
reg = snd_soc_read(codec, WM8961_ANTI_POP);
|
||||
reg |= WM8961_BUFIOEN | WM8961_BUFDCOPEN;
|
||||
|
@ -773,7 +773,7 @@ static int wm8961_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_PREPARE) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_PREPARE) {
|
||||
/* VREF off */
|
||||
reg = snd_soc_read(codec, WM8961_PWR_MGMT_1);
|
||||
reg &= ~WM8961_VREF;
|
||||
|
@ -795,8 +795,6 @@ static int wm8961_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
}
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -2361,7 +2361,7 @@ static int wm8962_add_widgets(struct snd_soc_codec *codec)
|
|||
{
|
||||
struct wm8962_priv *wm8962 = snd_soc_codec_get_drvdata(codec);
|
||||
struct wm8962_pdata *pdata = &wm8962->pdata;
|
||||
struct snd_soc_dapm_context *dapm = &codec->dapm;
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
|
||||
snd_soc_add_codec_controls(codec, wm8962_snd_controls,
|
||||
ARRAY_SIZE(wm8962_snd_controls));
|
||||
|
@ -2446,13 +2446,13 @@ static void wm8962_configure_bclk(struct snd_soc_codec *codec)
|
|||
* So we here provisionally enable it and then disable it afterward
|
||||
* if current bias_level hasn't reached SND_SOC_BIAS_ON.
|
||||
*/
|
||||
if (codec->dapm.bias_level != SND_SOC_BIAS_ON)
|
||||
if (snd_soc_codec_get_bias_level(codec) != SND_SOC_BIAS_ON)
|
||||
snd_soc_update_bits(codec, WM8962_CLOCKING2,
|
||||
WM8962_SYSCLK_ENA_MASK, WM8962_SYSCLK_ENA);
|
||||
|
||||
dspclk = snd_soc_read(codec, WM8962_CLOCKING1);
|
||||
|
||||
if (codec->dapm.bias_level != SND_SOC_BIAS_ON)
|
||||
if (snd_soc_codec_get_bias_level(codec) != SND_SOC_BIAS_ON)
|
||||
snd_soc_update_bits(codec, WM8962_CLOCKING2,
|
||||
WM8962_SYSCLK_ENA_MASK, 0);
|
||||
|
||||
|
@ -2510,9 +2510,6 @@ static void wm8962_configure_bclk(struct snd_soc_codec *codec)
|
|||
static int wm8962_set_bias_level(struct snd_soc_codec *codec,
|
||||
enum snd_soc_bias_level level)
|
||||
{
|
||||
if (level == codec->dapm.bias_level)
|
||||
return 0;
|
||||
|
||||
switch (level) {
|
||||
case SND_SOC_BIAS_ON:
|
||||
break;
|
||||
|
@ -2530,7 +2527,7 @@ static int wm8962_set_bias_level(struct snd_soc_codec *codec,
|
|||
snd_soc_update_bits(codec, WM8962_PWR_MGMT_1,
|
||||
WM8962_VMID_SEL_MASK, 0x100);
|
||||
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF)
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF)
|
||||
msleep(100);
|
||||
break;
|
||||
|
||||
|
@ -2538,7 +2535,6 @@ static int wm8962_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
}
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -2614,7 +2610,7 @@ static int wm8962_hw_params(struct snd_pcm_substream *substream,
|
|||
dev_dbg(codec->dev, "hw_params set BCLK %dHz LRCLK %dHz\n",
|
||||
wm8962->bclk, wm8962->lrclk);
|
||||
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_ON)
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_ON)
|
||||
wm8962_configure_bclk(codec);
|
||||
|
||||
return 0;
|
||||
|
@ -3118,7 +3114,7 @@ static irqreturn_t wm8962_irq(int irq, void *data)
|
|||
int wm8962_mic_detect(struct snd_soc_codec *codec, struct snd_soc_jack *jack)
|
||||
{
|
||||
struct wm8962_priv *wm8962 = snd_soc_codec_get_drvdata(codec);
|
||||
struct snd_soc_dapm_context *dapm = &codec->dapm;
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
int irq_mask, enable;
|
||||
|
||||
wm8962->jack = jack;
|
||||
|
@ -3164,7 +3160,7 @@ static void wm8962_beep_work(struct work_struct *work)
|
|||
struct wm8962_priv *wm8962 =
|
||||
container_of(work, struct wm8962_priv, beep_work);
|
||||
struct snd_soc_codec *codec = wm8962->codec;
|
||||
struct snd_soc_dapm_context *dapm = &codec->dapm;
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
int i;
|
||||
int reg = 0;
|
||||
int best = 0;
|
||||
|
@ -3415,6 +3411,7 @@ static void wm8962_free_gpio(struct snd_soc_codec *codec)
|
|||
|
||||
static int wm8962_probe(struct snd_soc_codec *codec)
|
||||
{
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
int ret;
|
||||
struct wm8962_priv *wm8962 = snd_soc_codec_get_drvdata(codec);
|
||||
int i;
|
||||
|
@ -3462,7 +3459,7 @@ static int wm8962_probe(struct snd_soc_codec *codec)
|
|||
}
|
||||
if (!dmicclk || !dmicdat) {
|
||||
dev_dbg(codec->dev, "DMIC not in use, disabling\n");
|
||||
snd_soc_dapm_nc_pin(&codec->dapm, "DMICDAT");
|
||||
snd_soc_dapm_nc_pin(dapm, "DMICDAT");
|
||||
}
|
||||
if (dmicclk != dmicdat)
|
||||
dev_warn(codec->dev, "DMIC GPIOs partially configured\n");
|
||||
|
|
|
@ -577,7 +577,7 @@ static int wm8971_set_bias_level(struct snd_soc_codec *codec,
|
|||
flush_delayed_work(&wm8971->charge_work);
|
||||
break;
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
snd_soc_cache_sync(codec);
|
||||
/* charge output caps - set vmid to 5k for quick power up */
|
||||
snd_soc_write(codec, WM8971_PWR1, pwr_reg | 0x01c0);
|
||||
|
@ -594,7 +594,6 @@ static int wm8971_set_bias_level(struct snd_soc_codec *codec,
|
|||
snd_soc_write(codec, WM8971_PWR1, 0x0001);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -514,7 +514,7 @@ static int wm8974_set_bias_level(struct snd_soc_codec *codec,
|
|||
case SND_SOC_BIAS_STANDBY:
|
||||
power1 |= WM8974_POWER1_BIASEN | WM8974_POWER1_BUFIOEN;
|
||||
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
regcache_sync(dev_get_regmap(codec->dev, NULL));
|
||||
|
||||
/* Initial cap charge at VMID 5k */
|
||||
|
@ -533,7 +533,6 @@ static int wm8974_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
}
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -868,7 +868,7 @@ static int wm8978_set_bias_level(struct snd_soc_codec *codec,
|
|||
/* bit 3: enable bias, bit 2: enable I/O tie off buffer */
|
||||
power1 |= 0xc;
|
||||
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
/* Initial cap charge at VMID 5k */
|
||||
snd_soc_write(codec, WM8978_POWER_MANAGEMENT_1,
|
||||
power1 | 0x3);
|
||||
|
@ -888,7 +888,6 @@ static int wm8978_set_bias_level(struct snd_soc_codec *codec,
|
|||
|
||||
dev_dbg(codec->dev, "%s: %d, %x\n", __func__, level, power1);
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -928,7 +927,7 @@ static int wm8978_suspend(struct snd_soc_codec *codec)
|
|||
{
|
||||
struct wm8978_priv *wm8978 = snd_soc_codec_get_drvdata(codec);
|
||||
|
||||
wm8978_set_bias_level(codec, SND_SOC_BIAS_OFF);
|
||||
snd_soc_codec_force_bias_level(codec, SND_SOC_BIAS_OFF);
|
||||
/* Also switch PLL off */
|
||||
snd_soc_write(codec, WM8978_POWER_MANAGEMENT_1, 0);
|
||||
|
||||
|
@ -944,7 +943,7 @@ static int wm8978_resume(struct snd_soc_codec *codec)
|
|||
/* Sync reg_cache with the hardware */
|
||||
regcache_sync(wm8978->regmap);
|
||||
|
||||
wm8978_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
|
||||
snd_soc_codec_force_bias_level(codec, SND_SOC_BIAS_STANDBY);
|
||||
|
||||
if (wm8978->f_pllout)
|
||||
/* Switch PLL on */
|
||||
|
|
|
@ -915,7 +915,7 @@ static int wm8983_set_bias_level(struct snd_soc_codec *codec,
|
|||
1 << WM8983_VMIDSEL_SHIFT);
|
||||
break;
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
ret = regcache_sync(wm8983->regmap);
|
||||
if (ret < 0) {
|
||||
dev_err(codec->dev, "Failed to sync cache: %d\n", ret);
|
||||
|
@ -963,7 +963,6 @@ static int wm8983_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
}
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -897,7 +897,7 @@ static int wm8985_set_bias_level(struct snd_soc_codec *codec,
|
|||
1 << WM8985_VMIDSEL_SHIFT);
|
||||
break;
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
ret = regulator_bulk_enable(ARRAY_SIZE(wm8985->supplies),
|
||||
wm8985->supplies);
|
||||
if (ret) {
|
||||
|
@ -957,7 +957,6 @@ static int wm8985_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
}
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -738,7 +738,7 @@ static int wm8988_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
regcache_sync(wm8988->regmap);
|
||||
|
||||
/* VREF, VMID=2x5k */
|
||||
|
@ -756,7 +756,6 @@ static int wm8988_set_bias_level(struct snd_soc_codec *codec,
|
|||
snd_soc_write(codec, WM8988_PWR1, 0x0000);
|
||||
break;
|
||||
}
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -1124,7 +1124,7 @@ static int wm8990_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
ret = regcache_sync(wm8990->regmap);
|
||||
if (ret < 0) {
|
||||
dev_err(codec->dev, "Failed to sync cache: %d\n", ret);
|
||||
|
@ -1227,7 +1227,6 @@ static int wm8990_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
}
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1281,7 +1280,7 @@ static int wm8990_probe(struct snd_soc_codec *codec)
|
|||
wm8990_reset(codec);
|
||||
|
||||
/* charge output caps */
|
||||
wm8990_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
|
||||
snd_soc_codec_force_bias_level(codec, SND_SOC_BIAS_STANDBY);
|
||||
|
||||
snd_soc_update_bits(codec, WM8990_AUDIO_INTERFACE_4,
|
||||
WM8990_ALRCGPIO1, WM8990_ALRCGPIO1);
|
||||
|
|
|
@ -1131,7 +1131,7 @@ static int wm8991_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
regcache_sync(wm8991->regmap);
|
||||
/* Enable all output discharge bits */
|
||||
snd_soc_write(codec, WM8991_ANTIPOP1, WM8991_DIS_LLINE |
|
||||
|
@ -1224,7 +1224,6 @@ static int wm8991_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
}
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -992,7 +992,7 @@ static int wm8993_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) {
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
ret = regulator_bulk_enable(ARRAY_SIZE(wm8993->supplies),
|
||||
wm8993->supplies);
|
||||
if (ret != 0)
|
||||
|
@ -1065,8 +1065,6 @@ static int wm8993_set_bias_level(struct snd_soc_codec *codec,
|
|||
break;
|
||||
}
|
||||
|
||||
codec->dapm.bias_level = level;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1485,7 +1483,7 @@ static struct snd_soc_dai_driver wm8993_dai = {
|
|||
static int wm8993_probe(struct snd_soc_codec *codec)
|
||||
{
|
||||
struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec);
|
||||
struct snd_soc_dapm_context *dapm = &codec->dapm;
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
|
||||
wm8993->hubs_data.hp_startup_mode = 1;
|
||||
wm8993->hubs_data.dcs_codes_l = -2;
|
||||
|
@ -1539,7 +1537,7 @@ static int wm8993_probe(struct snd_soc_codec *codec)
|
|||
* VMID as an output and can disable it.
|
||||
*/
|
||||
if (wm8993->pdata.lineout1_diff && wm8993->pdata.lineout2_diff)
|
||||
codec->dapm.idle_bias_off = 1;
|
||||
dapm->idle_bias_off = 1;
|
||||
|
||||
return 0;
|
||||
|
||||
|
@ -1563,7 +1561,7 @@ static int wm8993_suspend(struct snd_soc_codec *codec)
|
|||
wm8993->fll_fout = fll_fout;
|
||||
wm8993->fll_fref = fll_fref;
|
||||
|
||||
wm8993_set_bias_level(codec, SND_SOC_BIAS_OFF);
|
||||
snd_soc_codec_force_bias_level(codec, SND_SOC_BIAS_OFF);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1573,7 +1571,7 @@ static int wm8993_resume(struct snd_soc_codec *codec)
|
|||
struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec);
|
||||
int ret;
|
||||
|
||||
wm8993_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
|
||||
snd_soc_codec_force_bias_level(codec, SND_SOC_BIAS_STANDBY);
|
||||
|
||||
/* Restart the FLL? */
|
||||
if (wm8993->fll_fout) {
|
||||
|
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче