Commit cb42e0f7 authored by Mark Brown's avatar Mark Brown

Merge remote-tracking branch 'asoc/topic/rt5645' into asoc-next

parents ca945cf9 f2988afe
...@@ -791,7 +791,6 @@ struct snd_soc_component { ...@@ -791,7 +791,6 @@ struct snd_soc_component {
/* Don't use these, use snd_soc_component_get_dapm() */ /* Don't use these, use snd_soc_component_get_dapm() */
struct snd_soc_dapm_context dapm; struct snd_soc_dapm_context dapm;
struct snd_soc_dapm_context *dapm_ptr;
const struct snd_kcontrol_new *controls; const struct snd_kcontrol_new *controls;
unsigned int num_controls; unsigned int num_controls;
...@@ -831,9 +830,6 @@ struct snd_soc_codec { ...@@ -831,9 +830,6 @@ struct snd_soc_codec {
/* component */ /* component */
struct snd_soc_component component; struct snd_soc_component component;
/* Don't access this directly, use snd_soc_codec_get_dapm() */
struct snd_soc_dapm_context dapm;
#ifdef CONFIG_DEBUG_FS #ifdef CONFIG_DEBUG_FS
struct dentry *debugfs_reg; struct dentry *debugfs_reg;
#endif #endif
...@@ -1276,7 +1272,7 @@ static inline struct snd_soc_component *snd_soc_dapm_to_component( ...@@ -1276,7 +1272,7 @@ static inline struct snd_soc_component *snd_soc_dapm_to_component(
static inline struct snd_soc_codec *snd_soc_dapm_to_codec( static inline struct snd_soc_codec *snd_soc_dapm_to_codec(
struct snd_soc_dapm_context *dapm) struct snd_soc_dapm_context *dapm)
{ {
return container_of(dapm, struct snd_soc_codec, dapm); return snd_soc_component_to_codec(snd_soc_dapm_to_component(dapm));
} }
/** /**
...@@ -1301,7 +1297,7 @@ static inline struct snd_soc_platform *snd_soc_dapm_to_platform( ...@@ -1301,7 +1297,7 @@ static inline struct snd_soc_platform *snd_soc_dapm_to_platform(
static inline struct snd_soc_dapm_context *snd_soc_component_get_dapm( static inline struct snd_soc_dapm_context *snd_soc_component_get_dapm(
struct snd_soc_component *component) struct snd_soc_component *component)
{ {
return component->dapm_ptr; return &component->dapm;
} }
/** /**
...@@ -1313,7 +1309,7 @@ static inline struct snd_soc_dapm_context *snd_soc_component_get_dapm( ...@@ -1313,7 +1309,7 @@ static inline struct snd_soc_dapm_context *snd_soc_component_get_dapm(
static inline struct snd_soc_dapm_context *snd_soc_codec_get_dapm( static inline struct snd_soc_dapm_context *snd_soc_codec_get_dapm(
struct snd_soc_codec *codec) struct snd_soc_codec *codec)
{ {
return &codec->dapm; return snd_soc_component_get_dapm(&codec->component);
} }
/** /**
......
This diff is collapsed.
...@@ -2115,6 +2115,7 @@ enum { ...@@ -2115,6 +2115,7 @@ enum {
#define RT5645_JD_PSV_MODE (0x1 << 12) #define RT5645_JD_PSV_MODE (0x1 << 12)
#define RT5645_IRQ_CLK_GATE_CTRL (0x1 << 11) #define RT5645_IRQ_CLK_GATE_CTRL (0x1 << 11)
#define RT5645_MICINDET_MANU (0x1 << 7) #define RT5645_MICINDET_MANU (0x1 << 7)
#define RT5645_RING2_SLEEVE_GND (0x1 << 5)
/* Vendor ID (0xfd) */ /* Vendor ID (0xfd) */
#define RT5645_VER_C 0x2 #define RT5645_VER_C 0x2
...@@ -2181,32 +2182,6 @@ enum { ...@@ -2181,32 +2182,6 @@ enum {
int rt5645_sel_asrc_clk_src(struct snd_soc_codec *codec, int rt5645_sel_asrc_clk_src(struct snd_soc_codec *codec,
unsigned int filter_mask, unsigned int clk_src); unsigned int filter_mask, unsigned int clk_src);
struct rt5645_priv {
struct snd_soc_codec *codec;
struct rt5645_platform_data pdata;
struct regmap *regmap;
struct i2c_client *i2c;
struct gpio_desc *gpiod_hp_det;
struct snd_soc_jack *hp_jack;
struct snd_soc_jack *mic_jack;
struct snd_soc_jack *btn_jack;
struct delayed_work jack_detect_work;
int codec_type;
int sysclk;
int sysclk_src;
int lrck[RT5645_AIFS];
int bclk[RT5645_AIFS];
int master[RT5645_AIFS];
int pll_src;
int pll_in;
int pll_out;
int jack_type;
bool en_button_func;
};
int rt5645_set_jack_detect(struct snd_soc_codec *codec, int rt5645_set_jack_detect(struct snd_soc_codec *codec,
struct snd_soc_jack *hp_jack, struct snd_soc_jack *mic_jack, struct snd_soc_jack *hp_jack, struct snd_soc_jack *mic_jack,
struct snd_soc_jack *btn_jack); struct snd_soc_jack *btn_jack);
......
...@@ -179,7 +179,7 @@ static int tas571x_set_bias_level(struct snd_soc_codec *codec, ...@@ -179,7 +179,7 @@ static int tas571x_set_bias_level(struct snd_soc_codec *codec,
case SND_SOC_BIAS_PREPARE: case SND_SOC_BIAS_PREPARE:
break; break;
case SND_SOC_BIAS_STANDBY: 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 (!IS_ERR(priv->mclk)) { if (!IS_ERR(priv->mclk)) {
ret = clk_prepare_enable(priv->mclk); ret = clk_prepare_enable(priv->mclk);
if (ret) { if (ret) {
......
...@@ -104,21 +104,17 @@ static int cht_aif1_hw_params(struct snd_pcm_substream *substream, ...@@ -104,21 +104,17 @@ static int cht_aif1_hw_params(struct snd_pcm_substream *substream,
static int cht_ti_jack_event(struct notifier_block *nb, static int cht_ti_jack_event(struct notifier_block *nb,
unsigned long event, void *data) unsigned long event, void *data)
{ {
struct snd_soc_jack *jack = (struct snd_soc_jack *)data; struct snd_soc_jack *jack = (struct snd_soc_jack *)data;
struct snd_soc_dai *codec_dai = jack->card->rtd->codec_dai; struct snd_soc_dapm_context *dapm = &jack->card->dapm;
struct snd_soc_codec *codec = codec_dai->codec;
if (event & SND_JACK_MICROPHONE) { if (event & SND_JACK_MICROPHONE) {
snd_soc_dapm_force_enable_pin(dapm, "SHDN");
snd_soc_dapm_force_enable_pin(&codec->dapm, "SHDN"); snd_soc_dapm_force_enable_pin(dapm, "MICBIAS");
snd_soc_dapm_force_enable_pin(&codec->dapm, "MICBIAS"); snd_soc_dapm_sync(dapm);
snd_soc_dapm_sync(&codec->dapm);
} else { } else {
snd_soc_dapm_disable_pin(dapm, "MICBIAS");
snd_soc_dapm_disable_pin(&codec->dapm, "MICBIAS"); snd_soc_dapm_disable_pin(dapm, "SHDN");
snd_soc_dapm_disable_pin(&codec->dapm, "SHDN"); snd_soc_dapm_sync(dapm);
snd_soc_dapm_sync(&codec->dapm);
} }
return 0; return 0;
......
...@@ -154,8 +154,7 @@ static const struct snd_soc_dapm_route omap3pandora_map[] = { ...@@ -154,8 +154,7 @@ static const struct snd_soc_dapm_route omap3pandora_map[] = {
static int omap3pandora_out_init(struct snd_soc_pcm_runtime *rtd) static int omap3pandora_out_init(struct snd_soc_pcm_runtime *rtd)
{ {
struct snd_soc_codec *codec = rtd->codec; struct snd_soc_dapm_context *dapm = &rtd->card->dapm;
struct snd_soc_dapm_context *dapm = &codec->dapm;
/* All TWL4030 output pins are floating */ /* All TWL4030 output pins are floating */
snd_soc_dapm_nc_pin(dapm, "EARPIECE"); snd_soc_dapm_nc_pin(dapm, "EARPIECE");
...@@ -174,8 +173,7 @@ static int omap3pandora_out_init(struct snd_soc_pcm_runtime *rtd) ...@@ -174,8 +173,7 @@ static int omap3pandora_out_init(struct snd_soc_pcm_runtime *rtd)
static int omap3pandora_in_init(struct snd_soc_pcm_runtime *rtd) static int omap3pandora_in_init(struct snd_soc_pcm_runtime *rtd)
{ {
struct snd_soc_codec *codec = rtd->codec; struct snd_soc_dapm_context *dapm = &rtd->card->dapm;
struct snd_soc_dapm_context *dapm = &codec->dapm;
/* Not comnnected */ /* Not comnnected */
snd_soc_dapm_nc_pin(dapm, "HSMIC"); snd_soc_dapm_nc_pin(dapm, "HSMIC");
......
...@@ -654,10 +654,12 @@ int snd_soc_suspend(struct device *dev) ...@@ -654,10 +654,12 @@ int snd_soc_suspend(struct device *dev)
/* suspend all CODECs */ /* suspend all CODECs */
list_for_each_entry(codec, &card->codec_dev_list, card_list) { list_for_each_entry(codec, &card->codec_dev_list, card_list) {
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
/* If there are paths active then the CODEC will be held with /* If there are paths active then the CODEC will be held with
* bias _ON and should not be suspended. */ * bias _ON and should not be suspended. */
if (!codec->suspended) { if (!codec->suspended) {
switch (codec->dapm.bias_level) { switch (snd_soc_dapm_get_bias_level(dapm)) {
case SND_SOC_BIAS_STANDBY: case SND_SOC_BIAS_STANDBY:
/* /*
* If the CODEC is capable of idle * If the CODEC is capable of idle
...@@ -665,7 +667,7 @@ int snd_soc_suspend(struct device *dev) ...@@ -665,7 +667,7 @@ int snd_soc_suspend(struct device *dev)
* means it's doing something, * means it's doing something,
* otherwise fall through. * otherwise fall through.
*/ */
if (codec->dapm.idle_bias_off) { if (dapm->idle_bias_off) {
dev_dbg(codec->dev, dev_dbg(codec->dev,
"ASoC: idle_bias_off CODEC on over suspend\n"); "ASoC: idle_bias_off CODEC on over suspend\n");
break; break;
...@@ -2662,10 +2664,7 @@ static int snd_soc_component_initialize(struct snd_soc_component *component, ...@@ -2662,10 +2664,7 @@ static int snd_soc_component_initialize(struct snd_soc_component *component,
component->probe = component->driver->probe; component->probe = component->driver->probe;
component->remove = component->driver->remove; component->remove = component->driver->remove;
if (!component->dapm_ptr) dapm = &component->dapm;
component->dapm_ptr = &component->dapm;
dapm = component->dapm_ptr;
dapm->dev = dev; dapm->dev = dev;
dapm->component = component; dapm->component = component;
dapm->bias_level = SND_SOC_BIAS_OFF; dapm->bias_level = SND_SOC_BIAS_OFF;
...@@ -3047,6 +3046,7 @@ int snd_soc_register_codec(struct device *dev, ...@@ -3047,6 +3046,7 @@ int snd_soc_register_codec(struct device *dev,
struct snd_soc_dai_driver *dai_drv, struct snd_soc_dai_driver *dai_drv,
int num_dai) int num_dai)
{ {
struct snd_soc_dapm_context *dapm;
struct snd_soc_codec *codec; struct snd_soc_codec *codec;
struct snd_soc_dai *dai; struct snd_soc_dai *dai;
int ret, i; int ret, i;
...@@ -3057,7 +3057,6 @@ int snd_soc_register_codec(struct device *dev, ...@@ -3057,7 +3057,6 @@ int snd_soc_register_codec(struct device *dev,
if (codec == NULL) if (codec == NULL)
return -ENOMEM; return -ENOMEM;
codec->component.dapm_ptr = &codec->dapm;
codec->component.codec = codec; codec->component.codec = codec;
ret = snd_soc_component_initialize(&codec->component, ret = snd_soc_component_initialize(&codec->component,
...@@ -3087,12 +3086,14 @@ int snd_soc_register_codec(struct device *dev, ...@@ -3087,12 +3086,14 @@ int snd_soc_register_codec(struct device *dev,
if (codec_drv->read) if (codec_drv->read)
codec->component.read = snd_soc_codec_drv_read; codec->component.read = snd_soc_codec_drv_read;
codec->component.ignore_pmdown_time = codec_drv->ignore_pmdown_time; codec->component.ignore_pmdown_time = codec_drv->ignore_pmdown_time;
codec->dapm.idle_bias_off = codec_drv->idle_bias_off;
codec->dapm.suspend_bias_off = codec_drv->suspend_bias_off; dapm = snd_soc_codec_get_dapm(codec);
dapm->idle_bias_off = codec_drv->idle_bias_off;
dapm->suspend_bias_off = codec_drv->suspend_bias_off;
if (codec_drv->seq_notifier) if (codec_drv->seq_notifier)
codec->dapm.seq_notifier = codec_drv->seq_notifier; dapm->seq_notifier = codec_drv->seq_notifier;
if (codec_drv->set_bias_level) if (codec_drv->set_bias_level)
codec->dapm.set_bias_level = snd_soc_codec_set_bias_level; dapm->set_bias_level = snd_soc_codec_set_bias_level;
codec->dev = dev; codec->dev = dev;
codec->driver = codec_drv; codec->driver = codec_drv;
codec->component.val_bytes = codec_drv->reg_word_size; codec->component.val_bytes = codec_drv->reg_word_size;
......
...@@ -2163,14 +2163,16 @@ int snd_soc_dapm_mixer_update_power(struct snd_soc_dapm_context *dapm, ...@@ -2163,14 +2163,16 @@ int snd_soc_dapm_mixer_update_power(struct snd_soc_dapm_context *dapm,
} }
EXPORT_SYMBOL_GPL(snd_soc_dapm_mixer_update_power); EXPORT_SYMBOL_GPL(snd_soc_dapm_mixer_update_power);
static ssize_t dapm_widget_show_codec(struct snd_soc_codec *codec, char *buf) static ssize_t dapm_widget_show_component(struct snd_soc_component *cmpnt,
char *buf)
{ {
struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(cmpnt);
struct snd_soc_dapm_widget *w; struct snd_soc_dapm_widget *w;
int count = 0; int count = 0;
char *state = "not set"; char *state = "not set";
list_for_each_entry(w, &codec->component.card->widgets, list) { list_for_each_entry(w, &cmpnt->card->widgets, list) {
if (w->dapm != &codec->dapm) if (w->dapm != dapm)
continue; continue;
/* only display widgets that burnm power */ /* only display widgets that burnm power */
...@@ -2198,7 +2200,7 @@ static ssize_t dapm_widget_show_codec(struct snd_soc_codec *codec, char *buf) ...@@ -2198,7 +2200,7 @@ static ssize_t dapm_widget_show_codec(struct snd_soc_codec *codec, char *buf)
} }
} }
switch (codec->dapm.bias_level) { switch (snd_soc_dapm_get_bias_level(dapm)) {
case SND_SOC_BIAS_ON: case SND_SOC_BIAS_ON:
state = "On"; state = "On";
break; break;
...@@ -2227,8 +2229,9 @@ static ssize_t dapm_widget_show(struct device *dev, ...@@ -2227,8 +2229,9 @@ static ssize_t dapm_widget_show(struct device *dev,
mutex_lock(&rtd->card->dapm_mutex); mutex_lock(&rtd->card->dapm_mutex);
for (i = 0; i < rtd->num_codecs; i++) { for (i = 0; i < rtd->num_codecs; i++) {
struct snd_soc_codec *codec = rtd->codec_dais[i]->codec; struct snd_soc_component *cmpnt = rtd->codec_dais[i]->component;
count += dapm_widget_show_codec(codec, buf + count);
count += dapm_widget_show_component(cmpnt, buf + count);
} }
mutex_unlock(&rtd->card->dapm_mutex); mutex_unlock(&rtd->card->dapm_mutex);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment