projects
/
deliverable
/
linux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ASoC: Allow choice of ac97 gpio reset line
[deliverable/linux.git]
/
sound
/
soc
/
soc-core.c
diff --git
a/sound/soc/soc-core.c
b/sound/soc/soc-core.c
index d4b90d82a098cdf98d939f1b409d7b1b2ace087c..16518329f6b2f344dc7d3d03c072749d28cbd8ce 100644
(file)
--- a/
sound/soc/soc-core.c
+++ b/
sound/soc/soc-core.c
@@
-133,8
+133,8
@@
static int soc_pcm_open(struct snd_pcm_substream *substream)
mutex_lock(&pcm_mutex);
/* startup the audio subsystem */
mutex_lock(&pcm_mutex);
/* startup the audio subsystem */
- if (cpu_dai->ops
.
startup) {
- ret = cpu_dai->ops
.
startup(substream, cpu_dai);
+ if (cpu_dai->ops
->
startup) {
+ ret = cpu_dai->ops
->
startup(substream, cpu_dai);
if (ret < 0) {
printk(KERN_ERR "asoc: can't open interface %s\n",
cpu_dai->name);
if (ret < 0) {
printk(KERN_ERR "asoc: can't open interface %s\n",
cpu_dai->name);
@@
-150,8
+150,8
@@
static int soc_pcm_open(struct snd_pcm_substream *substream)
}
}
}
}
- if (codec_dai->ops
.
startup) {
- ret = codec_dai->ops
.
startup(substream, codec_dai);
+ if (codec_dai->ops
->
startup) {
+ ret = codec_dai->ops
->
startup(substream, codec_dai);
if (ret < 0) {
printk(KERN_ERR "asoc: can't open codec %s\n",
codec_dai->name);
if (ret < 0) {
printk(KERN_ERR "asoc: can't open codec %s\n",
codec_dai->name);
@@
-247,8
+247,8
@@
codec_dai_err:
platform->pcm_ops->close(substream);
platform_err:
platform->pcm_ops->close(substream);
platform_err:
- if (cpu_dai->ops
.
shutdown)
- cpu_dai->ops
.
shutdown(substream, cpu_dai);
+ if (cpu_dai->ops
->
shutdown)
+ cpu_dai->ops
->
shutdown(substream, cpu_dai);
out:
mutex_unlock(&pcm_mutex);
return ret;
out:
mutex_unlock(&pcm_mutex);
return ret;
@@
-340,11
+340,11
@@
static int soc_codec_close(struct snd_pcm_substream *substream)
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
snd_soc_dai_digital_mute(codec_dai, 1);
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
snd_soc_dai_digital_mute(codec_dai, 1);
- if (cpu_dai->ops
.
shutdown)
- cpu_dai->ops
.
shutdown(substream, cpu_dai);
+ if (cpu_dai->ops
->
shutdown)
+ cpu_dai->ops
->
shutdown(substream, cpu_dai);
- if (codec_dai->ops
.
shutdown)
- codec_dai->ops
.
shutdown(substream, codec_dai);
+ if (codec_dai->ops
->
shutdown)
+ codec_dai->ops
->
shutdown(substream, codec_dai);
if (machine->ops && machine->ops->shutdown)
machine->ops->shutdown(substream);
if (machine->ops && machine->ops->shutdown)
machine->ops->shutdown(substream);
@@
-408,16
+408,16
@@
static int soc_pcm_prepare(struct snd_pcm_substream *substream)
}
}
}
}
- if (codec_dai->ops
.
prepare) {
- ret = codec_dai->ops
.
prepare(substream, codec_dai);
+ if (codec_dai->ops
->
prepare) {
+ ret = codec_dai->ops
->
prepare(substream, codec_dai);
if (ret < 0) {
printk(KERN_ERR "asoc: codec DAI prepare error\n");
goto out;
}
}
if (ret < 0) {
printk(KERN_ERR "asoc: codec DAI prepare error\n");
goto out;
}
}
- if (cpu_dai->ops
.
prepare) {
- ret = cpu_dai->ops
.
prepare(substream, cpu_dai);
+ if (cpu_dai->ops
->
prepare) {
+ ret = cpu_dai->ops
->
prepare(substream, cpu_dai);
if (ret < 0) {
printk(KERN_ERR "asoc: cpu DAI prepare error\n");
goto out;
if (ret < 0) {
printk(KERN_ERR "asoc: cpu DAI prepare error\n");
goto out;
@@
-494,8
+494,8
@@
static int soc_pcm_hw_params(struct snd_pcm_substream *substream,
}
}
}
}
- if (codec_dai->ops
.
hw_params) {
- ret = codec_dai->ops
.
hw_params(substream, params, codec_dai);
+ if (codec_dai->ops
->
hw_params) {
+ ret = codec_dai->ops
->
hw_params(substream, params, codec_dai);
if (ret < 0) {
printk(KERN_ERR "asoc: can't set codec %s hw params\n",
codec_dai->name);
if (ret < 0) {
printk(KERN_ERR "asoc: can't set codec %s hw params\n",
codec_dai->name);
@@
-503,8
+503,8
@@
static int soc_pcm_hw_params(struct snd_pcm_substream *substream,
}
}
}
}
- if (cpu_dai->ops
.
hw_params) {
- ret = cpu_dai->ops
.
hw_params(substream, params, cpu_dai);
+ if (cpu_dai->ops
->
hw_params) {
+ ret = cpu_dai->ops
->
hw_params(substream, params, cpu_dai);
if (ret < 0) {
printk(KERN_ERR "asoc: interface %s hw params failed\n",
cpu_dai->name);
if (ret < 0) {
printk(KERN_ERR "asoc: interface %s hw params failed\n",
cpu_dai->name);
@@
-526,12
+526,12
@@
out:
return ret;
platform_err:
return ret;
platform_err:
- if (cpu_dai->ops
.
hw_free)
- cpu_dai->ops
.
hw_free(substream, cpu_dai);
+ if (cpu_dai->ops
->
hw_free)
+ cpu_dai->ops
->
hw_free(substream, cpu_dai);
interface_err:
interface_err:
- if (codec_dai->ops
.
hw_free)
- codec_dai->ops
.
hw_free(substream, codec_dai);
+ if (codec_dai->ops
->
hw_free)
+ codec_dai->ops
->
hw_free(substream, codec_dai);
codec_err:
if (machine->ops && machine->ops->hw_free)
codec_err:
if (machine->ops && machine->ops->hw_free)
@@
-570,11
+570,11
@@
static int soc_pcm_hw_free(struct snd_pcm_substream *substream)
platform->pcm_ops->hw_free(substream);
/* now free hw params for the DAI's */
platform->pcm_ops->hw_free(substream);
/* now free hw params for the DAI's */
- if (codec_dai->ops
.
hw_free)
- codec_dai->ops
.
hw_free(substream, codec_dai);
+ if (codec_dai->ops
->
hw_free)
+ codec_dai->ops
->
hw_free(substream, codec_dai);
- if (cpu_dai->ops
.
hw_free)
- cpu_dai->ops
.
hw_free(substream, cpu_dai);
+ if (cpu_dai->ops
->
hw_free)
+ cpu_dai->ops
->
hw_free(substream, cpu_dai);
mutex_unlock(&pcm_mutex);
return 0;
mutex_unlock(&pcm_mutex);
return 0;
@@
-591,8
+591,8
@@
static int soc_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
struct snd_soc_dai *codec_dai = machine->codec_dai;
int ret;
struct snd_soc_dai *codec_dai = machine->codec_dai;
int ret;
- if (codec_dai->ops
.
trigger) {
- ret = codec_dai->ops
.
trigger(substream, cmd, codec_dai);
+ if (codec_dai->ops
->
trigger) {
+ ret = codec_dai->ops
->
trigger(substream, cmd, codec_dai);
if (ret < 0)
return ret;
}
if (ret < 0)
return ret;
}
@@
-603,8
+603,8
@@
static int soc_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
return ret;
}
return ret;
}
- if (cpu_dai->ops
.
trigger) {
- ret = cpu_dai->ops
.
trigger(substream, cmd, cpu_dai);
+ if (cpu_dai->ops
->
trigger) {
+ ret = cpu_dai->ops
->
trigger(substream, cmd, cpu_dai);
if (ret < 0)
return ret;
}
if (ret < 0)
return ret;
}
@@
-645,8
+645,8
@@
static int soc_suspend(struct platform_device *pdev, pm_message_t state)
/* mute any active DAC's */
for (i = 0; i < card->num_links; i++) {
struct snd_soc_dai *dai = card->dai_link[i].codec_dai;
/* mute any active DAC's */
for (i = 0; i < card->num_links; i++) {
struct snd_soc_dai *dai = card->dai_link[i].codec_dai;
- if (dai->ops
.
digital_mute && dai->playback.active)
- dai->ops
.
digital_mute(dai, 1);
+ if (dai->ops
->
digital_mute && dai->playback.active)
+ dai->ops
->
digital_mute(dai, 1);
}
/* suspend all pcms */
}
/* suspend all pcms */
@@
-741,8
+741,8
@@
static void soc_resume_deferred(struct work_struct *work)
/* unmute any active DACs */
for (i = 0; i < card->num_links; i++) {
struct snd_soc_dai *dai = card->dai_link[i].codec_dai;
/* unmute any active DACs */
for (i = 0; i < card->num_links; i++) {
struct snd_soc_dai *dai = card->dai_link[i].codec_dai;
- if (dai->ops
.
digital_mute && dai->playback.active)
- dai->ops
.
digital_mute(dai, 0);
+ if (dai->ops
->
digital_mute && dai->playback.active)
+ dai->ops
->
digital_mute(dai, 0);
}
for (i = 0; i < card->num_links; i++) {
}
for (i = 0; i < card->num_links; i++) {
@@
-2051,8
+2051,8
@@
EXPORT_SYMBOL_GPL(snd_soc_put_volsw_s8);
int snd_soc_dai_set_sysclk(struct snd_soc_dai *dai, int clk_id,
unsigned int freq, int dir)
{
int snd_soc_dai_set_sysclk(struct snd_soc_dai *dai, int clk_id,
unsigned int freq, int dir)
{
- if (dai->ops
.
set_sysclk)
- return dai->ops
.
set_sysclk(dai, clk_id, freq, dir);
+ if (dai->ops
->
set_sysclk)
+ return dai->ops
->
set_sysclk(dai, clk_id, freq, dir);
else
return -EINVAL;
}
else
return -EINVAL;
}
@@
-2071,8
+2071,8
@@
EXPORT_SYMBOL_GPL(snd_soc_dai_set_sysclk);
int snd_soc_dai_set_clkdiv(struct snd_soc_dai *dai,
int div_id, int div)
{
int snd_soc_dai_set_clkdiv(struct snd_soc_dai *dai,
int div_id, int div)
{
- if (dai->ops
.
set_clkdiv)
- return dai->ops
.
set_clkdiv(dai, div_id, div);
+ if (dai->ops
->
set_clkdiv)
+ return dai->ops
->
set_clkdiv(dai, div_id, div);
else
return -EINVAL;
}
else
return -EINVAL;
}
@@
-2090,8
+2090,8
@@
EXPORT_SYMBOL_GPL(snd_soc_dai_set_clkdiv);
int snd_soc_dai_set_pll(struct snd_soc_dai *dai,
int pll_id, unsigned int freq_in, unsigned int freq_out)
{
int snd_soc_dai_set_pll(struct snd_soc_dai *dai,
int pll_id, unsigned int freq_in, unsigned int freq_out)
{
- if (dai->ops
.
set_pll)
- return dai->ops
.
set_pll(dai, pll_id, freq_in, freq_out);
+ if (dai->ops
->
set_pll)
+ return dai->ops
->
set_pll(dai, pll_id, freq_in, freq_out);
else
return -EINVAL;
}
else
return -EINVAL;
}
@@
-2106,8
+2106,8
@@
EXPORT_SYMBOL_GPL(snd_soc_dai_set_pll);
*/
int snd_soc_dai_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
{
*/
int snd_soc_dai_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
{
- if (dai->ops
.
set_fmt)
- return dai->ops
.
set_fmt(dai, fmt);
+ if (dai->ops
->
set_fmt)
+ return dai->ops
->
set_fmt(dai, fmt);
else
return -EINVAL;
}
else
return -EINVAL;
}
@@
-2125,8
+2125,8
@@
EXPORT_SYMBOL_GPL(snd_soc_dai_set_fmt);
int snd_soc_dai_set_tdm_slot(struct snd_soc_dai *dai,
unsigned int mask, int slots)
{
int snd_soc_dai_set_tdm_slot(struct snd_soc_dai *dai,
unsigned int mask, int slots)
{
- if (dai->ops
.
set_sysclk)
- return dai->ops
.
set_tdm_slot(dai, mask, slots);
+ if (dai->ops
->
set_sysclk)
+ return dai->ops
->
set_tdm_slot(dai, mask, slots);
else
return -EINVAL;
}
else
return -EINVAL;
}
@@
-2141,8
+2141,8
@@
EXPORT_SYMBOL_GPL(snd_soc_dai_set_tdm_slot);
*/
int snd_soc_dai_set_tristate(struct snd_soc_dai *dai, int tristate)
{
*/
int snd_soc_dai_set_tristate(struct snd_soc_dai *dai, int tristate)
{
- if (dai->ops
.
set_sysclk)
- return dai->ops
.
set_tristate(dai, tristate);
+ if (dai->ops
->
set_sysclk)
+ return dai->ops
->
set_tristate(dai, tristate);
else
return -EINVAL;
}
else
return -EINVAL;
}
@@
-2157,8
+2157,8
@@
EXPORT_SYMBOL_GPL(snd_soc_dai_set_tristate);
*/
int snd_soc_dai_digital_mute(struct snd_soc_dai *dai, int mute)
{
*/
int snd_soc_dai_digital_mute(struct snd_soc_dai *dai, int mute)
{
- if (dai->ops
.
digital_mute)
- return dai->ops
.
digital_mute(dai, mute);
+ if (dai->ops
->
digital_mute)
+ return dai->ops
->
digital_mute(dai, mute);
else
return -EINVAL;
}
else
return -EINVAL;
}
@@
-2211,6
+2211,9
@@
static int snd_soc_unregister_card(struct snd_soc_card *card)
return 0;
}
return 0;
}
+static struct snd_soc_dai_ops null_dai_ops = {
+};
+
/**
* snd_soc_register_dai - Register a DAI with the ASoC core
*
/**
* snd_soc_register_dai - Register a DAI with the ASoC core
*
@@
-2225,6
+2228,9
@@
int snd_soc_register_dai(struct snd_soc_dai *dai)
if (!dai->dev)
printk(KERN_WARNING "No device for DAI %s\n", dai->name);
if (!dai->dev)
printk(KERN_WARNING "No device for DAI %s\n", dai->name);
+ if (!dai->ops)
+ dai->ops = &null_dai_ops;
+
INIT_LIST_HEAD(&dai->list);
mutex_lock(&client_mutex);
INIT_LIST_HEAD(&dai->list);
mutex_lock(&client_mutex);
This page took
0.030392 seconds
and
5
git commands to generate.