Commit 941725f5 authored by Mark Brown's avatar Mark Brown

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

parents 3ee3f454 c362effe
...@@ -268,7 +268,6 @@ struct snd_soc_dai { ...@@ -268,7 +268,6 @@ struct snd_soc_dai {
unsigned int sample_bits; unsigned int sample_bits;
/* parent platform/codec */ /* parent platform/codec */
struct snd_soc_platform *platform;
struct snd_soc_codec *codec; struct snd_soc_codec *codec;
struct snd_soc_component *component; struct snd_soc_component *component;
...@@ -276,8 +275,6 @@ struct snd_soc_dai { ...@@ -276,8 +275,6 @@ struct snd_soc_dai {
unsigned int tx_mask; unsigned int tx_mask;
unsigned int rx_mask; unsigned int rx_mask;
struct snd_soc_card *card;
struct list_head list; struct list_head list;
}; };
......
...@@ -435,7 +435,7 @@ void snd_soc_dapm_auto_nc_pins(struct snd_soc_card *card); ...@@ -435,7 +435,7 @@ void snd_soc_dapm_auto_nc_pins(struct snd_soc_card *card);
unsigned int dapm_kcontrol_get_value(const struct snd_kcontrol *kcontrol); unsigned int dapm_kcontrol_get_value(const struct snd_kcontrol *kcontrol);
/* Mostly internal - should not normally be used */ /* Mostly internal - should not normally be used */
void dapm_mark_io_dirty(struct snd_soc_dapm_context *dapm); void dapm_mark_endpoints_dirty(struct snd_soc_card *card);
/* dapm path query */ /* dapm path query */
int snd_soc_dapm_dai_get_connected_widgets(struct snd_soc_dai *dai, int stream, int snd_soc_dapm_dai_get_connected_widgets(struct snd_soc_dai *dai, int stream,
...@@ -508,9 +508,9 @@ struct snd_soc_dapm_path { ...@@ -508,9 +508,9 @@ struct snd_soc_dapm_path {
/* status */ /* status */
u32 connect:1; /* source and sink widgets are connected */ u32 connect:1; /* source and sink widgets are connected */
u32 walked:1; /* path has been walked */
u32 walking:1; /* path is in the process of being walked */ u32 walking:1; /* path is in the process of being walked */
u32 weak:1; /* path ignored for power management */ u32 weak:1; /* path ignored for power management */
u32 is_supply:1; /* At least one of the connected widgets is a supply */
int (*connected)(struct snd_soc_dapm_widget *source, int (*connected)(struct snd_soc_dapm_widget *source,
struct snd_soc_dapm_widget *sink); struct snd_soc_dapm_widget *sink);
...@@ -544,11 +544,13 @@ struct snd_soc_dapm_widget { ...@@ -544,11 +544,13 @@ struct snd_soc_dapm_widget {
unsigned char active:1; /* active stream on DAC, ADC's */ unsigned char active:1; /* active stream on DAC, ADC's */
unsigned char connected:1; /* connected codec pin */ unsigned char connected:1; /* connected codec pin */
unsigned char new:1; /* cnew complete */ unsigned char new:1; /* cnew complete */
unsigned char ext:1; /* has external widgets */
unsigned char force:1; /* force state */ unsigned char force:1; /* force state */
unsigned char ignore_suspend:1; /* kept enabled over suspend */ unsigned char ignore_suspend:1; /* kept enabled over suspend */
unsigned char new_power:1; /* power from this run */ unsigned char new_power:1; /* power from this run */
unsigned char power_checked:1; /* power checked this run */ unsigned char power_checked:1; /* power checked this run */
unsigned char is_supply:1; /* Widget is a supply type widget */
unsigned char is_sink:1; /* Widget is a sink type widget */
unsigned char is_source:1; /* Widget is a source type widget */
int subseq; /* sort within widget type */ int subseq; /* sort within widget type */
int (*power_check)(struct snd_soc_dapm_widget *w); int (*power_check)(struct snd_soc_dapm_widget *w);
...@@ -567,6 +569,7 @@ struct snd_soc_dapm_widget { ...@@ -567,6 +569,7 @@ struct snd_soc_dapm_widget {
struct list_head sinks; struct list_head sinks;
/* used during DAPM updates */ /* used during DAPM updates */
struct list_head work_list;
struct list_head power_list; struct list_head power_list;
struct list_head dirty; struct list_head dirty;
int inputs; int inputs;
......
...@@ -36,6 +36,11 @@ ...@@ -36,6 +36,11 @@
{.reg = xreg, .rreg = xreg, .shift = shift_left, \ {.reg = xreg, .rreg = xreg, .shift = shift_left, \
.rshift = shift_right, .max = xmax, .platform_max = xmax, \ .rshift = shift_right, .max = xmax, .platform_max = xmax, \
.invert = xinvert, .autodisable = xautodisable}) .invert = xinvert, .autodisable = xautodisable})
#define SOC_DOUBLE_S_VALUE(xreg, shift_left, shift_right, xmin, xmax, xsign_bit, xinvert, xautodisable) \
((unsigned long)&(struct soc_mixer_control) \
{.reg = xreg, .rreg = xreg, .shift = shift_left, \
.rshift = shift_right, .min = xmin, .max = xmax, .platform_max = xmax, \
.sign_bit = xsign_bit, .invert = xinvert, .autodisable = xautodisable})
#define SOC_SINGLE_VALUE(xreg, xshift, xmax, xinvert, xautodisable) \ #define SOC_SINGLE_VALUE(xreg, xshift, xmax, xinvert, xautodisable) \
SOC_DOUBLE_VALUE(xreg, xshift, xshift, xmax, xinvert, xautodisable) SOC_DOUBLE_VALUE(xreg, xshift, xshift, xmax, xinvert, xautodisable)
#define SOC_SINGLE_VALUE_EXT(xreg, xmax, xinvert) \ #define SOC_SINGLE_VALUE_EXT(xreg, xmax, xinvert) \
...@@ -171,11 +176,9 @@ ...@@ -171,11 +176,9 @@
.access = SNDRV_CTL_ELEM_ACCESS_TLV_READ | \ .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ | \
SNDRV_CTL_ELEM_ACCESS_READWRITE, \ SNDRV_CTL_ELEM_ACCESS_READWRITE, \
.tlv.p = (tlv_array), \ .tlv.p = (tlv_array), \
.info = snd_soc_info_volsw_s8, .get = snd_soc_get_volsw_s8, \ .info = snd_soc_info_volsw, .get = snd_soc_get_volsw,\
.put = snd_soc_put_volsw_s8, \ .put = snd_soc_put_volsw, \
.private_value = (unsigned long)&(struct soc_mixer_control) \ .private_value = SOC_DOUBLE_S_VALUE(xreg, 0, 8, xmin, xmax, 7, 0, 0) }
{.reg = xreg, .min = xmin, .max = xmax, \
.platform_max = xmax} }
#define SOC_ENUM_DOUBLE(xreg, xshift_l, xshift_r, xitems, xtexts) \ #define SOC_ENUM_DOUBLE(xreg, xshift_l, xshift_r, xitems, xtexts) \
{ .reg = xreg, .shift_l = xshift_l, .shift_r = xshift_r, \ { .reg = xreg, .shift_l = xshift_l, .shift_r = xshift_r, \
.items = xitems, .texts = xtexts, \ .items = xitems, .texts = xtexts, \
...@@ -541,12 +544,6 @@ int snd_soc_get_volsw_sx(struct snd_kcontrol *kcontrol, ...@@ -541,12 +544,6 @@ int snd_soc_get_volsw_sx(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol); struct snd_ctl_elem_value *ucontrol);
int snd_soc_put_volsw_sx(struct snd_kcontrol *kcontrol, int snd_soc_put_volsw_sx(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol); struct snd_ctl_elem_value *ucontrol);
int snd_soc_info_volsw_s8(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_info *uinfo);
int snd_soc_get_volsw_s8(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol);
int snd_soc_put_volsw_s8(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol);
int snd_soc_info_volsw_range(struct snd_kcontrol *kcontrol, int snd_soc_info_volsw_range(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_info *uinfo); struct snd_ctl_elem_info *uinfo);
int snd_soc_put_volsw_range(struct snd_kcontrol *kcontrol, int snd_soc_put_volsw_range(struct snd_kcontrol *kcontrol,
...@@ -854,8 +851,6 @@ struct snd_soc_platform_driver { ...@@ -854,8 +851,6 @@ struct snd_soc_platform_driver {
int (*probe)(struct snd_soc_platform *); int (*probe)(struct snd_soc_platform *);
int (*remove)(struct snd_soc_platform *); int (*remove)(struct snd_soc_platform *);
int (*suspend)(struct snd_soc_dai *dai);
int (*resume)(struct snd_soc_dai *dai);
struct snd_soc_component_driver component_driver; struct snd_soc_component_driver component_driver;
/* pcm creation and destruction */ /* pcm creation and destruction */
...@@ -880,7 +875,7 @@ struct snd_soc_platform_driver { ...@@ -880,7 +875,7 @@ struct snd_soc_platform_driver {
struct snd_soc_dai_link_component { struct snd_soc_dai_link_component {
const char *name; const char *name;
const struct device_node *of_node; struct device_node *of_node;
const char *dai_name; const char *dai_name;
}; };
...@@ -888,8 +883,6 @@ struct snd_soc_platform { ...@@ -888,8 +883,6 @@ struct snd_soc_platform {
struct device *dev; struct device *dev;
const struct snd_soc_platform_driver *driver; const struct snd_soc_platform_driver *driver;
unsigned int suspended:1; /* platform is suspended */
struct list_head list; struct list_head list;
struct snd_soc_component component; struct snd_soc_component component;
...@@ -984,7 +977,7 @@ struct snd_soc_codec_conf { ...@@ -984,7 +977,7 @@ struct snd_soc_codec_conf {
* DT/OF node, but not both. * DT/OF node, but not both.
*/ */
const char *dev_name; const char *dev_name;
const struct device_node *of_node; struct device_node *of_node;
/* /*
* optional map of kcontrol, widget and path name prefixes that are * optional map of kcontrol, widget and path name prefixes that are
...@@ -1001,7 +994,7 @@ struct snd_soc_aux_dev { ...@@ -1001,7 +994,7 @@ struct snd_soc_aux_dev {
* DT/OF node, but not both. * DT/OF node, but not both.
*/ */
const char *codec_name; const char *codec_name;
const struct device_node *codec_of_node; struct device_node *codec_of_node;
/* codec/machine specific init - e.g. add machine controls */ /* codec/machine specific init - e.g. add machine controls */
int (*init)(struct snd_soc_component *component); int (*init)(struct snd_soc_component *component);
......
snd-soc-core-objs := soc-core.o soc-dapm.o soc-jack.o soc-cache.o soc-utils.o snd-soc-core-objs := soc-core.o soc-dapm.o soc-jack.o soc-cache.o soc-utils.o
snd-soc-core-objs += soc-pcm.o soc-compress.o soc-io.o soc-devres.o snd-soc-core-objs += soc-pcm.o soc-compress.o soc-io.o soc-devres.o soc-ops.o
ifneq ($(CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM),) ifneq ($(CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM),)
snd-soc-core-objs += soc-generic-dmaengine-pcm.o snd-soc-core-objs += soc-generic-dmaengine-pcm.o
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -654,6 +654,8 @@ static int soc_pcm_close(struct snd_pcm_substream *substream) ...@@ -654,6 +654,8 @@ static int soc_pcm_close(struct snd_pcm_substream *substream)
codec_dai->rate = 0; codec_dai->rate = 0;
} }
snd_soc_dai_digital_mute(cpu_dai, 1, substream->stream);
if (cpu_dai->driver->ops->shutdown) if (cpu_dai->driver->ops->shutdown)
cpu_dai->driver->ops->shutdown(substream, cpu_dai); cpu_dai->driver->ops->shutdown(substream, cpu_dai);
...@@ -772,6 +774,7 @@ static int soc_pcm_prepare(struct snd_pcm_substream *substream) ...@@ -772,6 +774,7 @@ static int soc_pcm_prepare(struct snd_pcm_substream *substream)
for (i = 0; i < rtd->num_codecs; i++) for (i = 0; i < rtd->num_codecs; i++)
snd_soc_dai_digital_mute(rtd->codec_dais[i], 0, snd_soc_dai_digital_mute(rtd->codec_dais[i], 0,
substream->stream); substream->stream);
snd_soc_dai_digital_mute(cpu_dai, 0, substream->stream);
out: out:
mutex_unlock(&rtd->pcm_mutex); mutex_unlock(&rtd->pcm_mutex);
......
...@@ -292,7 +292,7 @@ static int txx9aclc_pcm_new(struct snd_soc_pcm_runtime *rtd) ...@@ -292,7 +292,7 @@ static int txx9aclc_pcm_new(struct snd_soc_pcm_runtime *rtd)
struct snd_card *card = rtd->card->snd_card; struct snd_card *card = rtd->card->snd_card;
struct snd_soc_dai *dai = rtd->cpu_dai; struct snd_soc_dai *dai = rtd->cpu_dai;
struct snd_pcm *pcm = rtd->pcm; struct snd_pcm *pcm = rtd->pcm;
struct platform_device *pdev = to_platform_device(dai->platform->dev); struct platform_device *pdev = to_platform_device(rtd->platform->dev);
struct txx9aclc_soc_device *dev; struct txx9aclc_soc_device *dev;
struct resource *r; struct resource *r;
int i; int i;
......
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