Commit 6335d055 authored by Eric Miao's avatar Eric Miao Committed by Mark Brown

ASoC: make ops a pointer in 'struct snd_soc_dai'

Considering the fact that most cpu_dai or codec_dai are using a same
'snd_soc_dai_ops' for several similar interfaces, 'ops' would be better
made a pointer instead, to make sharing easier and code a bit cleaner.

The patch below is rather preliminary since the asoc tree is being
actively developed, and this touches almost every piece of code,
(and possibly many others in development need to be changed as
well). Building of all codecs are OK, yet to every SoC, I didn't test
that.
Signed-off-by: default avatarEric Miao <eric.miao@marvell.com>
Acked-by: default avatarTimur Tabi <timur@freescale.com>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent ff09d49a
...@@ -203,7 +203,7 @@ struct snd_soc_dai { ...@@ -203,7 +203,7 @@ struct snd_soc_dai {
int (*resume)(struct snd_soc_dai *dai); int (*resume)(struct snd_soc_dai *dai);
/* ops */ /* ops */
struct snd_soc_dai_ops ops; struct snd_soc_dai_ops *ops;
/* DAI capabilities */ /* DAI capabilities */
struct snd_soc_pcm_stream capture; struct snd_soc_pcm_stream capture;
......
...@@ -697,6 +697,15 @@ static int atmel_ssc_resume(struct snd_soc_dai *cpu_dai) ...@@ -697,6 +697,15 @@ static int atmel_ssc_resume(struct snd_soc_dai *cpu_dai)
#define ATMEL_SSC_FORMATS (SNDRV_PCM_FMTBIT_S8 | SNDRV_PCM_FMTBIT_S16_LE |\ #define ATMEL_SSC_FORMATS (SNDRV_PCM_FMTBIT_S8 | SNDRV_PCM_FMTBIT_S16_LE |\
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE) SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
static struct snd_soc_dai_ops atmel_ssc_dai_ops = {
.startup = atmel_ssc_startup,
.shutdown = atmel_ssc_shutdown,
.prepare = atmel_ssc_prepare,
.hw_params = atmel_ssc_hw_params,
.set_fmt = atmel_ssc_set_dai_fmt,
.set_clkdiv = atmel_ssc_set_dai_clkdiv,
};
struct snd_soc_dai atmel_ssc_dai[NUM_SSC_DEVICES] = { struct snd_soc_dai atmel_ssc_dai[NUM_SSC_DEVICES] = {
{ .name = "atmel-ssc0", { .name = "atmel-ssc0",
.id = 0, .id = 0,
...@@ -712,13 +721,7 @@ struct snd_soc_dai atmel_ssc_dai[NUM_SSC_DEVICES] = { ...@@ -712,13 +721,7 @@ struct snd_soc_dai atmel_ssc_dai[NUM_SSC_DEVICES] = {
.channels_max = 2, .channels_max = 2,
.rates = ATMEL_SSC_RATES, .rates = ATMEL_SSC_RATES,
.formats = ATMEL_SSC_FORMATS,}, .formats = ATMEL_SSC_FORMATS,},
.ops = { .ops = &atmel_ssc_dai_ops,
.startup = atmel_ssc_startup,
.shutdown = atmel_ssc_shutdown,
.prepare = atmel_ssc_prepare,
.hw_params = atmel_ssc_hw_params,
.set_fmt = atmel_ssc_set_dai_fmt,
.set_clkdiv = atmel_ssc_set_dai_clkdiv,},
.private_data = &ssc_info[0], .private_data = &ssc_info[0],
}, },
#if NUM_SSC_DEVICES == 3 #if NUM_SSC_DEVICES == 3
...@@ -736,13 +739,7 @@ struct snd_soc_dai atmel_ssc_dai[NUM_SSC_DEVICES] = { ...@@ -736,13 +739,7 @@ struct snd_soc_dai atmel_ssc_dai[NUM_SSC_DEVICES] = {
.channels_max = 2, .channels_max = 2,
.rates = ATMEL_SSC_RATES, .rates = ATMEL_SSC_RATES,
.formats = ATMEL_SSC_FORMATS,}, .formats = ATMEL_SSC_FORMATS,},
.ops = { .ops = &atmel_ssc_dai_ops,
.startup = atmel_ssc_startup,
.shutdown = atmel_ssc_shutdown,
.prepare = atmel_ssc_prepare,
.hw_params = atmel_ssc_hw_params,
.set_fmt = atmel_ssc_set_dai_fmt,
.set_clkdiv = atmel_ssc_set_dai_clkdiv,},
.private_data = &ssc_info[1], .private_data = &ssc_info[1],
}, },
{ .name = "atmel-ssc2", { .name = "atmel-ssc2",
...@@ -759,13 +756,7 @@ struct snd_soc_dai atmel_ssc_dai[NUM_SSC_DEVICES] = { ...@@ -759,13 +756,7 @@ struct snd_soc_dai atmel_ssc_dai[NUM_SSC_DEVICES] = {
.channels_max = 2, .channels_max = 2,
.rates = ATMEL_SSC_RATES, .rates = ATMEL_SSC_RATES,
.formats = ATMEL_SSC_FORMATS,}, .formats = ATMEL_SSC_FORMATS,},
.ops = { .ops = &atmel_ssc_dai_ops,
.startup = atmel_ssc_startup,
.shutdown = atmel_ssc_shutdown,
.prepare = atmel_ssc_prepare,
.hw_params = atmel_ssc_hw_params,
.set_fmt = atmel_ssc_set_dai_fmt,
.set_clkdiv = atmel_ssc_set_dai_clkdiv,},
.private_data = &ssc_info[2], .private_data = &ssc_info[2],
}, },
#endif #endif
......
...@@ -342,6 +342,11 @@ static int au1xpsc_ac97_resume(struct snd_soc_dai *dai) ...@@ -342,6 +342,11 @@ static int au1xpsc_ac97_resume(struct snd_soc_dai *dai)
return 0; return 0;
} }
static struct snd_soc_dai_ops au1xpsc_ac97_dai_ops = {
.trigger = au1xpsc_ac97_trigger,
.hw_params = au1xpsc_ac97_hw_params,
};
struct snd_soc_dai au1xpsc_ac97_dai = { struct snd_soc_dai au1xpsc_ac97_dai = {
.name = "au1xpsc_ac97", .name = "au1xpsc_ac97",
.ac97_control = 1, .ac97_control = 1,
...@@ -361,10 +366,7 @@ struct snd_soc_dai au1xpsc_ac97_dai = { ...@@ -361,10 +366,7 @@ struct snd_soc_dai au1xpsc_ac97_dai = {
.channels_min = 2, .channels_min = 2,
.channels_max = 2, .channels_max = 2,
}, },
.ops = { .ops = &au1xpsc_ac97_dai_ops,
.trigger = au1xpsc_ac97_trigger,
.hw_params = au1xpsc_ac97_hw_params,
},
}; };
EXPORT_SYMBOL_GPL(au1xpsc_ac97_dai); EXPORT_SYMBOL_GPL(au1xpsc_ac97_dai);
......
...@@ -367,6 +367,12 @@ static int au1xpsc_i2s_resume(struct snd_soc_dai *cpu_dai) ...@@ -367,6 +367,12 @@ static int au1xpsc_i2s_resume(struct snd_soc_dai *cpu_dai)
return 0; return 0;
} }
static struct snd_soc_dai_ops au1xpsc_i2s_dai_ops = {
.trigger = au1xpsc_i2s_trigger,
.hw_params = au1xpsc_i2s_hw_params,
.set_fmt = au1xpsc_i2s_set_fmt,
};
struct snd_soc_dai au1xpsc_i2s_dai = { struct snd_soc_dai au1xpsc_i2s_dai = {
.name = "au1xpsc_i2s", .name = "au1xpsc_i2s",
.probe = au1xpsc_i2s_probe, .probe = au1xpsc_i2s_probe,
...@@ -385,11 +391,7 @@ struct snd_soc_dai au1xpsc_i2s_dai = { ...@@ -385,11 +391,7 @@ struct snd_soc_dai au1xpsc_i2s_dai = {
.channels_min = 2, .channels_min = 2,
.channels_max = 8, /* 2 without external help */ .channels_max = 8, /* 2 without external help */
}, },
.ops = { .ops = &au1xpsc_i2s_dai_ops,
.trigger = au1xpsc_i2s_trigger,
.hw_params = au1xpsc_i2s_hw_params,
.set_fmt = au1xpsc_i2s_set_fmt,
},
}; };
EXPORT_SYMBOL(au1xpsc_i2s_dai); EXPORT_SYMBOL(au1xpsc_i2s_dai);
......
...@@ -287,6 +287,13 @@ static int bf5xx_i2s_resume(struct platform_device *pdev, ...@@ -287,6 +287,13 @@ static int bf5xx_i2s_resume(struct platform_device *pdev,
#define BF5XX_I2S_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE |\ #define BF5XX_I2S_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE |\
SNDRV_PCM_FMTBIT_S32_LE) SNDRV_PCM_FMTBIT_S32_LE)
static struct snd_soc_dai_ops bf5xx_i2s_dai_ops = {
.startup = bf5xx_i2s_startup,
.shutdown = bf5xx_i2s_shutdown,
.hw_params = bf5xx_i2s_hw_params,
.set_fmt = bf5xx_i2s_set_dai_fmt,
};
struct snd_soc_dai bf5xx_i2s_dai = { struct snd_soc_dai bf5xx_i2s_dai = {
.name = "bf5xx-i2s", .name = "bf5xx-i2s",
.id = 0, .id = 0,
...@@ -304,12 +311,7 @@ struct snd_soc_dai bf5xx_i2s_dai = { ...@@ -304,12 +311,7 @@ struct snd_soc_dai bf5xx_i2s_dai = {
.channels_max = 2, .channels_max = 2,
.rates = BF5XX_I2S_RATES, .rates = BF5XX_I2S_RATES,
.formats = BF5XX_I2S_FORMATS,}, .formats = BF5XX_I2S_FORMATS,},
.ops = { .ops = &bf5xx_i2s_dai_ops,
.startup = bf5xx_i2s_startup,
.shutdown = bf5xx_i2s_shutdown,
.hw_params = bf5xx_i2s_hw_params,
.set_fmt = bf5xx_i2s_set_dai_fmt,
},
}; };
EXPORT_SYMBOL_GPL(bf5xx_i2s_dai); EXPORT_SYMBOL_GPL(bf5xx_i2s_dai);
......
...@@ -41,6 +41,10 @@ static int ac97_prepare(struct snd_pcm_substream *substream, ...@@ -41,6 +41,10 @@ static int ac97_prepare(struct snd_pcm_substream *substream,
SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_44100 |\ SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_44100 |\
SNDRV_PCM_RATE_48000) SNDRV_PCM_RATE_48000)
static struct snd_soc_dai_ops ac97_dai_ops = {
.prepare = ac97_prepare,
};
struct snd_soc_dai ac97_dai = { struct snd_soc_dai ac97_dai = {
.name = "AC97 HiFi", .name = "AC97 HiFi",
.ac97_control = 1, .ac97_control = 1,
...@@ -56,8 +60,7 @@ struct snd_soc_dai ac97_dai = { ...@@ -56,8 +60,7 @@ struct snd_soc_dai ac97_dai = {
.channels_max = 2, .channels_max = 2,
.rates = STD_AC97_RATES, .rates = STD_AC97_RATES,
.formats = SNDRV_PCM_FMTBIT_S16_LE,}, .formats = SNDRV_PCM_FMTBIT_S16_LE,},
.ops = { .ops = &ac97_dai_ops,
.prepare = ac97_prepare,},
}; };
EXPORT_SYMBOL_GPL(ac97_dai); EXPORT_SYMBOL_GPL(ac97_dai);
......
...@@ -421,6 +421,13 @@ static int ak4535_set_bias_level(struct snd_soc_codec *codec, ...@@ -421,6 +421,13 @@ static int ak4535_set_bias_level(struct snd_soc_codec *codec,
SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 |\ SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 |\
SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000) SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000)
static struct snd_soc_dai_ops ak4535_dai_ops = {
.hw_params = ak4535_hw_params,
.set_fmt = ak4535_set_dai_fmt,
.digital_mute = ak4535_mute,
.set_sysclk = ak4535_set_dai_sysclk,
};
struct snd_soc_dai ak4535_dai = { struct snd_soc_dai ak4535_dai = {
.name = "AK4535", .name = "AK4535",
.playback = { .playback = {
...@@ -435,12 +442,7 @@ struct snd_soc_dai ak4535_dai = { ...@@ -435,12 +442,7 @@ struct snd_soc_dai ak4535_dai = {
.channels_max = 2, .channels_max = 2,
.rates = AK4535_RATES, .rates = AK4535_RATES,
.formats = SNDRV_PCM_FMTBIT_S16_LE,}, .formats = SNDRV_PCM_FMTBIT_S16_LE,},
.ops = { .ops = &ak4535_dai_ops,
.hw_params = ak4535_hw_params,
.set_fmt = ak4535_set_dai_fmt,
.digital_mute = ak4535_mute,
.set_sysclk = ak4535_set_dai_sysclk,
},
}; };
EXPORT_SYMBOL_GPL(ak4535_dai); EXPORT_SYMBOL_GPL(ak4535_dai);
......
...@@ -503,6 +503,13 @@ static const struct snd_kcontrol_new cs4270_snd_controls[] = { ...@@ -503,6 +503,13 @@ static const struct snd_kcontrol_new cs4270_snd_controls[] = {
*/ */
static struct snd_soc_codec *cs4270_codec; static struct snd_soc_codec *cs4270_codec;
static struct snd_soc_dai_ops cs4270_dai_ops = {
.hw_params = cs4270_hw_params,
.set_sysclk = cs4270_set_dai_sysclk,
.set_fmt = cs4270_set_dai_fmt,
.digital_mute = cs4270_mute,
};
struct snd_soc_dai cs4270_dai = { struct snd_soc_dai cs4270_dai = {
.name = "cs4270", .name = "cs4270",
.playback = { .playback = {
...@@ -519,12 +526,7 @@ struct snd_soc_dai cs4270_dai = { ...@@ -519,12 +526,7 @@ struct snd_soc_dai cs4270_dai = {
.rates = 0, .rates = 0,
.formats = CS4270_FORMATS, .formats = CS4270_FORMATS,
}, },
.ops = { .ops = &cs4270_dai_ops,
.hw_params = cs4270_hw_params,
.set_sysclk = cs4270_set_dai_sysclk,
.set_fmt = cs4270_set_dai_fmt,
.digital_mute = cs4270_mute,
},
}; };
EXPORT_SYMBOL_GPL(cs4270_dai); EXPORT_SYMBOL_GPL(cs4270_dai);
......
...@@ -506,6 +506,16 @@ static int ssm2602_set_bias_level(struct snd_soc_codec *codec, ...@@ -506,6 +506,16 @@ static int ssm2602_set_bias_level(struct snd_soc_codec *codec,
#define SSM2602_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\ #define SSM2602_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE) SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
static struct snd_soc_dai_ops ssm2602_dai_ops = {
.startup = ssm2602_startup,
.prepare = ssm2602_pcm_prepare,
.hw_params = ssm2602_hw_params,
.shutdown = ssm2602_shutdown,
.digital_mute = ssm2602_mute,
.set_sysclk = ssm2602_set_dai_sysclk,
.set_fmt = ssm2602_set_dai_fmt,
};
struct snd_soc_dai ssm2602_dai = { struct snd_soc_dai ssm2602_dai = {
.name = "SSM2602", .name = "SSM2602",
.playback = { .playback = {
...@@ -520,15 +530,7 @@ struct snd_soc_dai ssm2602_dai = { ...@@ -520,15 +530,7 @@ struct snd_soc_dai ssm2602_dai = {
.channels_max = 2, .channels_max = 2,
.rates = SSM2602_RATES, .rates = SSM2602_RATES,
.formats = SSM2602_FORMATS,}, .formats = SSM2602_FORMATS,},
.ops = { .ops = &ssm2602_dai_ops,
.startup = ssm2602_startup,
.prepare = ssm2602_pcm_prepare,
.hw_params = ssm2602_hw_params,
.shutdown = ssm2602_shutdown,
.digital_mute = ssm2602_mute,
.set_sysclk = ssm2602_set_dai_sysclk,
.set_fmt = ssm2602_set_dai_fmt,
}
}; };
EXPORT_SYMBOL_GPL(ssm2602_dai); EXPORT_SYMBOL_GPL(ssm2602_dai);
......
...@@ -580,6 +580,15 @@ static int tlv320aic23_set_bias_level(struct snd_soc_codec *codec, ...@@ -580,6 +580,15 @@ static int tlv320aic23_set_bias_level(struct snd_soc_codec *codec,
#define AIC23_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \ #define AIC23_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_3LE | SNDRV_PCM_FMTBIT_S32_LE) SNDRV_PCM_FMTBIT_S24_3LE | SNDRV_PCM_FMTBIT_S32_LE)
static struct snd_soc_dai_ops tlv320aic23_dai_ops = {
.prepare = tlv320aic23_pcm_prepare,
.hw_params = tlv320aic23_hw_params,
.shutdown = tlv320aic23_shutdown,
.digital_mute = tlv320aic23_mute,
.set_fmt = tlv320aic23_set_dai_fmt,
.set_sysclk = tlv320aic23_set_dai_sysclk,
};
struct snd_soc_dai tlv320aic23_dai = { struct snd_soc_dai tlv320aic23_dai = {
.name = "tlv320aic23", .name = "tlv320aic23",
.playback = { .playback = {
...@@ -594,14 +603,7 @@ struct snd_soc_dai tlv320aic23_dai = { ...@@ -594,14 +603,7 @@ struct snd_soc_dai tlv320aic23_dai = {
.channels_max = 2, .channels_max = 2,
.rates = AIC23_RATES, .rates = AIC23_RATES,
.formats = AIC23_FORMATS,}, .formats = AIC23_FORMATS,},
.ops = { .ops = &tlv320aic23_dai_ops,
.prepare = tlv320aic23_pcm_prepare,
.hw_params = tlv320aic23_hw_params,
.shutdown = tlv320aic23_shutdown,
.digital_mute = tlv320aic23_mute,
.set_fmt = tlv320aic23_set_dai_fmt,
.set_sysclk = tlv320aic23_set_dai_sysclk,
}
}; };
EXPORT_SYMBOL_GPL(tlv320aic23_dai); EXPORT_SYMBOL_GPL(tlv320aic23_dai);
......
...@@ -270,6 +270,13 @@ static int aic26_set_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt) ...@@ -270,6 +270,13 @@ static int aic26_set_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt)
#define AIC26_FORMATS (SNDRV_PCM_FMTBIT_S8 | SNDRV_PCM_FMTBIT_S16_BE |\ #define AIC26_FORMATS (SNDRV_PCM_FMTBIT_S8 | SNDRV_PCM_FMTBIT_S16_BE |\
SNDRV_PCM_FMTBIT_S24_BE | SNDRV_PCM_FMTBIT_S32_BE) SNDRV_PCM_FMTBIT_S24_BE | SNDRV_PCM_FMTBIT_S32_BE)
static struct snd_soc_dai_ops aic26_dai_ops = {
.hw_params = aic26_hw_params,
.digital_mute = aic26_mute,
.set_sysclk = aic26_set_sysclk,
.set_fmt = aic26_set_fmt,
};
struct snd_soc_dai aic26_dai = { struct snd_soc_dai aic26_dai = {
.name = "tlv320aic26", .name = "tlv320aic26",
.playback = { .playback = {
...@@ -286,12 +293,7 @@ struct snd_soc_dai aic26_dai = { ...@@ -286,12 +293,7 @@ struct snd_soc_dai aic26_dai = {
.rates = AIC26_RATES, .rates = AIC26_RATES,
.formats = AIC26_FORMATS, .formats = AIC26_FORMATS,
}, },
.ops = { .ops = &aic26_dai_ops,
.hw_params = aic26_hw_params,
.digital_mute = aic26_mute,
.set_sysclk = aic26_set_sysclk,
.set_fmt = aic26_set_fmt,
},
}; };
EXPORT_SYMBOL_GPL(aic26_dai); EXPORT_SYMBOL_GPL(aic26_dai);
......
...@@ -1088,6 +1088,13 @@ EXPORT_SYMBOL_GPL(aic3x_button_pressed); ...@@ -1088,6 +1088,13 @@ EXPORT_SYMBOL_GPL(aic3x_button_pressed);
#define AIC3X_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \ #define AIC3X_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
SNDRV_PCM_FMTBIT_S24_3LE | SNDRV_PCM_FMTBIT_S32_LE) SNDRV_PCM_FMTBIT_S24_3LE | SNDRV_PCM_FMTBIT_S32_LE)
static struct snd_soc_dai_ops aic3x_dai_ops = {
.hw_params = aic3x_hw_params,
.digital_mute = aic3x_mute,
.set_sysclk = aic3x_set_dai_sysclk,
.set_fmt = aic3x_set_dai_fmt,
};
struct snd_soc_dai aic3x_dai = { struct snd_soc_dai aic3x_dai = {
.name = "tlv320aic3x", .name = "tlv320aic3x",
.playback = { .playback = {
...@@ -1102,12 +1109,7 @@ struct snd_soc_dai aic3x_dai = { ...@@ -1102,12 +1109,7 @@ struct snd_soc_dai aic3x_dai = {
.channels_max = 2, .channels_max = 2,
.rates = AIC3X_RATES, .rates = AIC3X_RATES,
.formats = AIC3X_FORMATS,}, .formats = AIC3X_FORMATS,},
.ops = { .ops = &aic3x_dai_ops,
.hw_params = aic3x_hw_params,
.digital_mute = aic3x_mute,
.set_sysclk = aic3x_set_dai_sysclk,
.set_fmt = aic3x_set_dai_fmt,
}
}; };
EXPORT_SYMBOL_GPL(aic3x_dai); EXPORT_SYMBOL_GPL(aic3x_dai);
......
...@@ -431,6 +431,15 @@ SOC_ENUM("PCM Playback De-emphasis", uda134x_mixer_enum[1]), ...@@ -431,6 +431,15 @@ SOC_ENUM("PCM Playback De-emphasis", uda134x_mixer_enum[1]),
SOC_SINGLE("DC Filter Enable Switch", UDA134X_STATUS0, 0, 1, 0), SOC_SINGLE("DC Filter Enable Switch", UDA134X_STATUS0, 0, 1, 0),
}; };
static struct snd_soc_dai_ops uda134x_dai_ops = {
.startup = uda134x_startup,
.shutdown = uda134x_shutdown,
.hw_params = uda134x_hw_params,
.digital_mute = uda134x_mute,
.set_sysclk = uda134x_set_dai_sysclk,
.set_fmt = uda134x_set_dai_fmt,
};
struct snd_soc_dai uda134x_dai = { struct snd_soc_dai uda134x_dai = {
.name = "UDA134X", .name = "UDA134X",
/* playback capabilities */ /* playback capabilities */
...@@ -450,14 +459,7 @@ struct snd_soc_dai uda134x_dai = { ...@@ -450,14 +459,7 @@ struct snd_soc_dai uda134x_dai = {
.formats = UDA134X_FORMATS, .formats = UDA134X_FORMATS,
}, },
/* pcm operations */ /* pcm operations */
.ops = { .ops = &uda134x_dai_ops,
.startup = uda134x_startup,
.shutdown = uda134x_shutdown,
.hw_params = uda134x_hw_params,
.digital_mute = uda134x_mute,
.set_sysclk = uda134x_set_dai_sysclk,
.set_fmt = uda134x_set_dai_fmt,
}
}; };
EXPORT_SYMBOL(uda134x_dai); EXPORT_SYMBOL(uda134x_dai);
......
...@@ -583,6 +583,29 @@ static int uda1380_set_bias_level(struct snd_soc_codec *codec, ...@@ -583,6 +583,29 @@ static int uda1380_set_bias_level(struct snd_soc_codec *codec,
SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 |\ SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 |\
SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000) SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000)
static struct snd_soc_dai_ops uda1380_dai_ops = {
.hw_params = uda1380_pcm_hw_params,
.shutdown = uda1380_pcm_shutdown,
.prepare = uda1380_pcm_prepare,
.digital_mute = uda1380_mute,
.set_fmt = uda1380_set_dai_fmt_both,
};
static struct snd_soc_dai_ops uda1380_dai_ops_playback = {
.hw_params = uda1380_pcm_hw_params,
.shutdown = uda1380_pcm_shutdown,
.prepare = uda1380_pcm_prepare,
.digital_mute = uda1380_mute,
.set_fmt = uda1380_set_dai_fmt_playback,
};
static struct snd_soc_dai_ops uda1380_dai_ops_capture = {
.hw_params = uda1380_pcm_hw_params,
.shutdown = uda1380_pcm_shutdown,
.prepare = uda1380_pcm_prepare,
.set_fmt = uda1380_set_dai_fmt_capture,
};
struct snd_soc_dai uda1380_dai[] = { struct snd_soc_dai uda1380_dai[] = {
{ {
.name = "UDA1380", .name = "UDA1380",
...@@ -598,13 +621,7 @@ struct snd_soc_dai uda1380_dai[] = { ...@@ -598,13 +621,7 @@ struct snd_soc_dai uda1380_dai[] = {
.channels_max = 2, .channels_max = 2,
.rates = UDA1380_RATES, .rates = UDA1380_RATES,
.formats = SNDRV_PCM_FMTBIT_S16_LE,}, .formats = SNDRV_PCM_FMTBIT_S16_LE,},
.ops = { .ops = &uda1380_dai_ops,
.hw_params = uda1380_pcm_hw_params,
.shutdown = uda1380_pcm_shutdown,
.prepare = uda1380_pcm_prepare,
.digital_mute = uda1380_mute,
.set_fmt = uda1380_set_dai_fmt_both,
},
}, },
{ /* playback only - dual interface */ { /* playback only - dual interface */
.name = "UDA1380", .name = "UDA1380",
...@@ -615,13 +632,7 @@ struct snd_soc_dai uda1380_dai[] = { ...@@ -615,13 +632,7 @@ struct snd_soc_dai uda1380_dai[] = {
.rates = UDA1380_RATES, .rates = UDA1380_RATES,
.formats = SNDRV_PCM_FMTBIT_S16_LE, .formats = SNDRV_PCM_FMTBIT_S16_LE,
}, },
.ops = { .ops = &uda1380_dai_ops_playback,
.hw_params = uda1380_pcm_hw_params,
.shutdown = uda1380_pcm_shutdown,
.prepare = uda1380_pcm_prepare,
.digital_mute = uda1380_mute,
.set_fmt = uda1380_set_dai_fmt_playback,
},
}, },
{ /* capture only - dual interface*/ { /* capture only - dual interface*/
.name = "UDA1380", .name = "UDA1380",
...@@ -632,12 +643,7 @@ struct snd_soc_dai uda1380_dai[] = { ...@@ -632,12 +643,7 @@ struct snd_soc_dai uda1380_dai[] = {
.rates = UDA1380_RATES, .rates = UDA1380_RATES,
.formats = SNDRV_PCM_FMTBIT_S16_LE, .formats = SNDRV_PCM_FMTBIT_S16_LE,
}, },
.ops = { .ops = &uda1380_dai_ops_capture,
.hw_params = uda1380_pcm_hw_params,
.shutdown = uda1380_pcm_shutdown,
.prepare = uda1380_pcm_prepare,
.set_fmt = uda1380_set_dai_fmt_capture,
},
}, },
}; };
EXPORT_SYMBOL_GPL(uda1380_dai); EXPORT_SYMBOL_GPL(uda1380_dai);
......
...@@ -1538,6 +1538,16 @@ static int wm8350_remove(struct platform_device *pdev) ...@@ -1538,6 +1538,16 @@ static int wm8350_remove(struct platform_device *pdev)
SNDRV_PCM_FMTBIT_S20_3LE |\ SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE) SNDRV_PCM_FMTBIT_S24_LE)
static struct snd_soc_dai_ops wm8350_dai_ops = {
.hw_params = wm8350_pcm_hw_params,
.digital_mute = wm8350_mute,
.trigger = wm8350_pcm_trigger,
.set_fmt = wm8350_set_dai_fmt,
.set_sysclk = wm8350_set_dai_sysclk,
.set_pll = wm8350_set_fll,
.set_clkdiv = wm8350_set_clkdiv,
};
struct snd_soc_dai wm8350_dai = { struct snd_soc_dai wm8350_dai = {
.name = "WM8350", .name = "WM8350",
.playback = { .playback = {
...@@ -1554,15 +1564,7 @@ struct snd_soc_dai wm8350_dai = { ...@@ -1554,15 +1564,7 @@ struct snd_soc_dai wm8350_dai = {
.rates = WM8350_RATES, .rates = WM8350_RATES,
.formats = WM8350_FORMATS, .formats = WM8350_FORMATS,
}, },
.ops = { .ops = &wm8350_dai_ops,
.hw_params = wm8350_pcm_hw_params,
.digital_mute = wm8350_mute,
.trigger = wm8350_pcm_trigger,
.set_fmt = wm8350_set_dai_fmt,
.set_sysclk = wm8350_set_dai_sysclk,
.set_pll = wm8350_set_fll,
.set_clkdiv = wm8350_set_clkdiv,
},
}; };
EXPORT_SYMBOL_GPL(wm8350_dai); EXPORT_SYMBOL_GPL(wm8350_dai);
......
...@@ -554,6 +554,14 @@ static int wm8510_set_bias_level(struct snd_soc_codec *codec, ...@@ -554,6 +554,14 @@ static int wm8510_set_bias_level(struct snd_soc_codec *codec,
#define WM8510_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\ #define WM8510_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE) SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
static struct snd_soc_dai_ops wm8510_dai_ops = {
.hw_params = wm8510_pcm_hw_params,
.digital_mute = wm8510_mute,
.set_fmt = wm8510_set_dai_fmt,
.set_clkdiv = wm8510_set_dai_clkdiv,
.set_pll = wm8510_set_dai_pll,
};
struct snd_soc_dai wm8510_dai = { struct snd_soc_dai wm8510_dai = {
.name = "WM8510 HiFi", .name = "WM8510 HiFi",
.playback = { .playback = {
...@@ -568,13 +576,7 @@ struct snd_soc_dai wm8510_dai = { ...@@ -568,13 +576,7 @@ struct snd_soc_dai wm8510_dai = {
.channels_max = 2, .channels_max = 2,
.rates = WM8510_RATES, .rates = WM8510_RATES,
.formats = WM8510_FORMATS,}, .formats = WM8510_FORMATS,},
.ops = { .ops = &wm8510_dai_ops,
.hw_params = wm8510_pcm_hw_params,
.digital_mute = wm8510_mute,
.set_fmt = wm8510_set_dai_fmt,
.set_clkdiv = wm8510_set_dai_clkdiv,
.set_pll = wm8510_set_dai_pll,
},
}; };
EXPORT_SYMBOL_GPL(wm8510_dai); EXPORT_SYMBOL_GPL(wm8510_dai);
......
...@@ -771,6 +771,21 @@ static int wm8580_set_bias_level(struct snd_soc_codec *codec, ...@@ -771,6 +771,21 @@ static int wm8580_set_bias_level(struct snd_soc_codec *codec,
#define WM8580_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\ #define WM8580_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE) SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE)
static struct snd_soc_dai_ops wm8580_dai_ops_playback = {
.hw_params = wm8580_paif_hw_params,
.set_fmt = wm8580_set_paif_dai_fmt,
.set_clkdiv = wm8580_set_dai_clkdiv,
.set_pll = wm8580_set_dai_pll,
.digital_mute = wm8580_digital_mute,
};
static struct snd_soc_dai_ops wm8580_dai_ops_capture = {
.hw_params = wm8580_paif_hw_params,
.set_fmt = wm8580_set_paif_dai_fmt,
.set_clkdiv = wm8580_set_dai_clkdiv,
.set_pll = wm8580_set_dai_pll,
};
struct snd_soc_dai wm8580_dai[] = { struct snd_soc_dai wm8580_dai[] = {
{ {
.name = "WM8580 PAIFRX", .name = "WM8580 PAIFRX",
...@@ -782,13 +797,7 @@ struct snd_soc_dai wm8580_dai[] = { ...@@ -782,13 +797,7 @@ struct snd_soc_dai wm8580_dai[] = {
.rates = SNDRV_PCM_RATE_8000_192000, .rates = SNDRV_PCM_RATE_8000_192000,
.formats = WM8580_FORMATS, .formats = WM8580_FORMATS,
}, },
.ops = { .ops = &wm8580_dai_ops_playback,
.hw_params = wm8580_paif_hw_params,
.set_fmt = wm8580_set_paif_dai_fmt,
.set_clkdiv = wm8580_set_dai_clkdiv,
.set_pll = wm8580_set_dai_pll,
.digital_mute = wm8580_digital_mute,
},
}, },
{ {
.name = "WM8580 PAIFTX", .name = "WM8580 PAIFTX",
...@@ -800,12 +809,7 @@ struct snd_soc_dai wm8580_dai[] = { ...@@ -800,12 +809,7 @@ struct snd_soc_dai wm8580_dai[] = {
.rates = SNDRV_PCM_RATE_8000_192000, .rates = SNDRV_PCM_RATE_8000_192000,
.formats = WM8580_FORMATS, .formats = WM8580_FORMATS,
}, },
.ops = { .ops = &wm8580_dai_ops_capture,
.hw_params = wm8580_paif_hw_params,
.set_fmt = wm8580_set_paif_dai_fmt,
.set_clkdiv = wm8580_set_dai_clkdiv,
.set_pll = wm8580_set_dai_pll,
},
}, },
}; };
EXPORT_SYMBOL_GPL(wm8580_dai); EXPORT_SYMBOL_GPL(wm8580_dai);
......
...@@ -244,6 +244,12 @@ static int wm8728_set_bias_level(struct snd_soc_codec *codec, ...@@ -244,6 +244,12 @@ static int wm8728_set_bias_level(struct snd_soc_codec *codec,
#define WM8728_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\ #define WM8728_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE) SNDRV_PCM_FMTBIT_S24_LE)
static struct snd_soc_dai_ops wm8728_dai_ops = {
.hw_params = wm8728_hw_params,
.digital_mute = wm8728_mute,
.set_fmt = wm8728_set_dai_fmt,
};
struct snd_soc_dai wm8728_dai = { struct snd_soc_dai wm8728_dai = {
.name = "WM8728", .name = "WM8728",
.playback = { .playback = {
...@@ -253,11 +259,7 @@ struct snd_soc_dai wm8728_dai = { ...@@ -253,11 +259,7 @@ struct snd_soc_dai wm8728_dai = {
.rates = WM8728_RATES, .rates = WM8728_RATES,
.formats = WM8728_FORMATS, .formats = WM8728_FORMATS,
}, },
.ops = { .ops = &wm8728_dai_ops,
.hw_params = wm8728_hw_params,
.digital_mute = wm8728_mute,
.set_fmt = wm8728_set_dai_fmt,
}
}; };
EXPORT_SYMBOL_GPL(wm8728_dai); EXPORT_SYMBOL_GPL(wm8728_dai);
......
...@@ -433,6 +433,15 @@ static int wm8731_set_bias_level(struct snd_soc_codec *codec, ...@@ -433,6 +433,15 @@ static int wm8731_set_bias_level(struct snd_soc_codec *codec,
#define WM8731_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\ #define WM8731_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE) SNDRV_PCM_FMTBIT_S24_LE)
static struct snd_soc_dai_ops wm8731_dai_ops = {
.prepare = wm8731_pcm_prepare,
.hw_params = wm8731_hw_params,
.shutdown = wm8731_shutdown,
.digital_mute = wm8731_mute,
.set_sysclk = wm8731_set_dai_sysclk,
.set_fmt = wm8731_set_dai_fmt,
};
struct snd_soc_dai wm8731_dai = { struct snd_soc_dai wm8731_dai = {
.name = "WM8731", .name = "WM8731",
.playback = { .playback = {
...@@ -447,14 +456,7 @@ struct snd_soc_dai wm8731_dai = { ...@@ -447,14 +456,7 @@ struct snd_soc_dai wm8731_dai = {
.channels_max = 2, .channels_max = 2,
.rates = WM8731_RATES, .rates = WM8731_RATES,
.formats = WM8731_FORMATS,}, .formats = WM8731_FORMATS,},
.ops = { .ops = &wm8731_dai_ops,
.prepare = wm8731_pcm_prepare,
.hw_params = wm8731_hw_params,
.shutdown = wm8731_shutdown,
.digital_mute = wm8731_mute,
.set_sysclk = wm8731_set_dai_sysclk,
.set_fmt = wm8731_set_dai_fmt,
}
}; };
EXPORT_SYMBOL_GPL(wm8731_dai); EXPORT_SYMBOL_GPL(wm8731_dai);
......
...@@ -679,6 +679,13 @@ static int wm8750_set_bias_level(struct snd_soc_codec *codec, ...@@ -679,6 +679,13 @@ static int wm8750_set_bias_level(struct snd_soc_codec *codec,
#define WM8750_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\ #define WM8750_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE) SNDRV_PCM_FMTBIT_S24_LE)
static struct snd_soc_dai_ops wm8750_dai_ops = {
.hw_params = wm8750_pcm_hw_params,
.digital_mute = wm8750_mute,
.set_fmt = wm8750_set_dai_fmt,
.set_sysclk = wm8750_set_dai_sysclk,
};
struct snd_soc_dai wm8750_dai = { struct snd_soc_dai wm8750_dai = {
.name = "WM8750", .name = "WM8750",
.playback = { .playback = {
...@@ -693,12 +700,7 @@ struct snd_soc_dai wm8750_dai = { ...@@ -693,12 +700,7 @@ struct snd_soc_dai wm8750_dai = {
.channels_max = 2, .channels_max = 2,
.rates = WM8750_RATES, .rates = WM8750_RATES,
.formats = WM8750_FORMATS,}, .formats = WM8750_FORMATS,},
.ops = { .ops = &wm8750_dai_ops,
.hw_params = wm8750_pcm_hw_params,
.digital_mute = wm8750_mute,
.set_fmt = wm8750_set_dai_fmt,
.set_sysclk = wm8750_set_dai_sysclk,
},
}; };
EXPORT_SYMBOL_GPL(wm8750_dai); EXPORT_SYMBOL_GPL(wm8750_dai);
......
...@@ -1306,6 +1306,51 @@ static int wm8753_set_bias_level(struct snd_soc_codec *codec, ...@@ -1306,6 +1306,51 @@ static int wm8753_set_bias_level(struct snd_soc_codec *codec,
* 3. Voice disabled - HIFI over HIFI * 3. Voice disabled - HIFI over HIFI
* 4. Voice disabled - HIFI over HIFI, uses voice DAI LRC for capture * 4. Voice disabled - HIFI over HIFI, uses voice DAI LRC for capture
*/ */
static struct snd_soc_dai_ops wm8753_dai_ops_hifi_mode1 = {
.hw_params = wm8753_i2s_hw_params,
.digital_mute = wm8753_mute,
.set_fmt = wm8753_mode1h_set_dai_fmt,
.set_clkdiv = wm8753_set_dai_clkdiv,
.set_pll = wm8753_set_dai_pll,
.set_sysclk = wm8753_set_dai_sysclk,
};
static struct snd_soc_dai_ops wm8753_dai_ops_voice_mode1 = {
.hw_params = wm8753_pcm_hw_params,
.digital_mute = wm8753_mute,
.set_fmt = wm8753_mode1v_set_dai_fmt,
.set_clkdiv = wm8753_set_dai_clkdiv,
.set_pll = wm8753_set_dai_pll,
.set_sysclk = wm8753_set_dai_sysclk,
};
static struct snd_soc_dai_ops wm8753_dai_ops_voice_mode2 = {
.hw_params = wm8753_pcm_hw_params,
.digital_mute = wm8753_mute,
.set_fmt = wm8753_mode2_set_dai_fmt,
.set_clkdiv = wm8753_set_dai_clkdiv,
.set_pll = wm8753_set_dai_pll,
.set_sysclk = wm8753_set_dai_sysclk,
};
static struct snd_soc_dai_ops wm8753_dai_ops_hifi_mode3 = {
.hw_params = wm8753_i2s_hw_params,
.digital_mute = wm8753_mute,
.set_fmt = wm8753_mode3_4_set_dai_fmt,
.set_clkdiv = wm8753_set_dai_clkdiv,
.set_pll = wm8753_set_dai_pll,
.set_sysclk = wm8753_set_dai_sysclk,
};
static struct snd_soc_dai_ops wm8753_dai_ops_hifi_mode4 = {
.hw_params = wm8753_i2s_hw_params,
.digital_mute = wm8753_mute,
.set_fmt = wm8753_mode3_4_set_dai_fmt,
.set_clkdiv = wm8753_set_dai_clkdiv,
.set_pll = wm8753_set_dai_pll,
.set_sysclk = wm8753_set_dai_sysclk,
};
static const struct snd_soc_dai wm8753_all_dai[] = { static const struct snd_soc_dai wm8753_all_dai[] = {
/* DAI HiFi mode 1 */ /* DAI HiFi mode 1 */
{ .name = "WM8753 HiFi", { .name = "WM8753 HiFi",
...@@ -1322,14 +1367,7 @@ static const struct snd_soc_dai wm8753_all_dai[] = { ...@@ -1322,14 +1367,7 @@ static const struct snd_soc_dai wm8753_all_dai[] = {
.channels_max = 2, .channels_max = 2,
.rates = WM8753_RATES, .rates = WM8753_RATES,
.formats = WM8753_FORMATS}, .formats = WM8753_FORMATS},
.ops = { .ops = &wm8753_dai_ops_hifi_mode1,
.hw_params = wm8753_i2s_hw_params,
.digital_mute = wm8753_mute,
.set_fmt = wm8753_mode1h_set_dai_fmt,
.set_clkdiv = wm8753_set_dai_clkdiv,
.set_pll = wm8753_set_dai_pll,
.set_sysclk = wm8753_set_dai_sysclk,
},
}, },
/* DAI Voice mode 1 */ /* DAI Voice mode 1 */
{ .name = "WM8753 Voice", { .name = "WM8753 Voice",
...@@ -1346,14 +1384,7 @@ static const struct snd_soc_dai wm8753_all_dai[] = { ...@@ -1346,14 +1384,7 @@ static const struct snd_soc_dai wm8753_all_dai[] = {
.channels_max = 2, .channels_max = 2,
.rates = WM8753_RATES, .rates = WM8753_RATES,
.formats = WM8753_FORMATS,}, .formats = WM8753_FORMATS,},
.ops = { .ops = &wm8753_dai_ops_voice_mode1,
.hw_params = wm8753_pcm_hw_params,
.digital_mute = wm8753_mute,
.set_fmt = wm8753_mode1v_set_dai_fmt,
.set_clkdiv = wm8753_set_dai_clkdiv,
.set_pll = wm8753_set_dai_pll,
.set_sysclk = wm8753_set_dai_sysclk,
},
}, },
/* DAI HiFi mode 2 - dummy */ /* DAI HiFi mode 2 - dummy */
{ .name = "WM8753 HiFi", { .name = "WM8753 HiFi",
...@@ -1374,14 +1405,7 @@ static const struct snd_soc_dai wm8753_all_dai[] = { ...@@ -1374,14 +1405,7 @@ static const struct snd_soc_dai wm8753_all_dai[] = {
.channels_max = 2, .channels_max = 2,
.rates = WM8753_RATES, .rates = WM8753_RATES,
.formats = WM8753_FORMATS,}, .formats = WM8753_FORMATS,},
.ops = { .ops = &wm8753_dai_ops_voice_mode2,
.hw_params = wm8753_pcm_hw_params,
.digital_mute = wm8753_mute,
.set_fmt = wm8753_mode2_set_dai_fmt,
.set_clkdiv = wm8753_set_dai_clkdiv,
.set_pll = wm8753_set_dai_pll,
.set_sysclk = wm8753_set_dai_sysclk,
},
}, },
/* DAI HiFi mode 3 */ /* DAI HiFi mode 3 */
{ .name = "WM8753 HiFi", { .name = "WM8753 HiFi",
...@@ -1398,14 +1422,7 @@ static const struct snd_soc_dai wm8753_all_dai[] = { ...@@ -1398,14 +1422,7 @@ static const struct snd_soc_dai wm8753_all_dai[] = {
.channels_max = 2, .channels_max = 2,
.rates = WM8753_RATES, .rates = WM8753_RATES,
.formats = WM8753_FORMATS,}, .formats = WM8753_FORMATS,},
.ops = { .ops = &wm8753_dai_ops_hifi_mode3,
.hw_params = wm8753_i2s_hw_params,
.digital_mute = wm8753_mute,
.set_fmt = wm8753_mode3_4_set_dai_fmt,
.set_clkdiv = wm8753_set_dai_clkdiv,
.set_pll = wm8753_set_dai_pll,
.set_sysclk = wm8753_set_dai_sysclk,
},
}, },
/* DAI Voice mode 3 - dummy */ /* DAI Voice mode 3 - dummy */
{ .name = "WM8753 Voice", { .name = "WM8753 Voice",
...@@ -1426,14 +1443,7 @@ static const struct snd_soc_dai wm8753_all_dai[] = { ...@@ -1426,14 +1443,7 @@ static const struct snd_soc_dai wm8753_all_dai[] = {
.channels_max = 2, .channels_max = 2,
.rates = WM8753_RATES, .rates = WM8753_RATES,
.formats = WM8753_FORMATS,}, .formats = WM8753_FORMATS,},
.ops = { .ops = &wm8753_dai_ops_hifi_mode4,
.hw_params = wm8753_i2s_hw_params,
.digital_mute = wm8753_mute,
.set_fmt = wm8753_mode3_4_set_dai_fmt,
.set_clkdiv = wm8753_set_dai_clkdiv,
.set_pll = wm8753_set_dai_pll,
.set_sysclk = wm8753_set_dai_sysclk,
},
}, },
/* DAI Voice mode 4 - dummy */ /* DAI Voice mode 4 - dummy */
{ .name = "WM8753 Voice", { .name = "WM8753 Voice",
......
...@@ -1088,6 +1088,14 @@ static int wm8900_digital_mute(struct snd_soc_dai *codec_dai, int mute) ...@@ -1088,6 +1088,14 @@ static int wm8900_digital_mute(struct snd_soc_dai *codec_dai, int mute)
(SNDRV_PCM_FORMAT_S16_LE | SNDRV_PCM_FORMAT_S20_3LE | \ (SNDRV_PCM_FORMAT_S16_LE | SNDRV_PCM_FORMAT_S20_3LE | \
SNDRV_PCM_FORMAT_S24_LE) SNDRV_PCM_FORMAT_S24_LE)
static struct snd_soc_dai_ops wm8900_dai_ops = {
.hw_params = wm8900_hw_params,
.set_clkdiv = wm8900_set_dai_clkdiv,
.set_pll = wm8900_set_dai_pll,
.set_fmt = wm8900_set_dai_fmt,
.digital_mute = wm8900_digital_mute,
};
struct snd_soc_dai wm8900_dai = { struct snd_soc_dai wm8900_dai = {
.name = "WM8900 HiFi", .name = "WM8900 HiFi",
.playback = { .playback = {
...@@ -1104,13 +1112,7 @@ struct snd_soc_dai wm8900_dai = { ...@@ -1104,13 +1112,7 @@ struct snd_soc_dai wm8900_dai = {
.rates = WM8900_RATES, .rates = WM8900_RATES,
.formats = WM8900_PCM_FORMATS, .formats = WM8900_PCM_FORMATS,
}, },
.ops = { .ops = &wm8900_dai_ops,
.hw_params = wm8900_hw_params,
.set_clkdiv = wm8900_set_dai_clkdiv,
.set_pll = wm8900_set_dai_pll,
.set_fmt = wm8900_set_dai_fmt,
.digital_mute = wm8900_digital_mute,
},
}; };
EXPORT_SYMBOL_GPL(wm8900_dai); EXPORT_SYMBOL_GPL(wm8900_dai);
......
...@@ -1497,6 +1497,15 @@ static int wm8903_hw_params(struct snd_pcm_substream *substream, ...@@ -1497,6 +1497,15 @@ static int wm8903_hw_params(struct snd_pcm_substream *substream,
SNDRV_PCM_FMTBIT_S20_3LE |\ SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE) SNDRV_PCM_FMTBIT_S24_LE)
static struct snd_soc_dai_ops wm8903_dai_ops = {
.startup = wm8903_startup,
.shutdown = wm8903_shutdown,
.hw_params = wm8903_hw_params,
.digital_mute = wm8903_digital_mute,
.set_fmt = wm8903_set_dai_fmt,
.set_sysclk = wm8903_set_dai_sysclk,
};
struct snd_soc_dai wm8903_dai = { struct snd_soc_dai wm8903_dai = {
.name = "WM8903", .name = "WM8903",
.playback = { .playback = {
...@@ -1513,14 +1522,7 @@ struct snd_soc_dai wm8903_dai = { ...@@ -1513,14 +1522,7 @@ struct snd_soc_dai wm8903_dai = {
.rates = WM8903_CAPTURE_RATES, .rates = WM8903_CAPTURE_RATES,
.formats = WM8903_FORMATS, .formats = WM8903_FORMATS,
}, },
.ops = { .ops = &wm8903_dai_ops,
.startup = wm8903_startup,
.shutdown = wm8903_shutdown,
.hw_params = wm8903_hw_params,
.digital_mute = wm8903_digital_mute,
.set_fmt = wm8903_set_dai_fmt,
.set_sysclk = wm8903_set_dai_sysclk
}
}; };
EXPORT_SYMBOL_GPL(wm8903_dai); EXPORT_SYMBOL_GPL(wm8903_dai);
......
...@@ -604,6 +604,13 @@ static int wm8971_set_bias_level(struct snd_soc_codec *codec, ...@@ -604,6 +604,13 @@ static int wm8971_set_bias_level(struct snd_soc_codec *codec,
#define WM8971_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\ #define WM8971_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\
SNDRV_PCM_FMTBIT_S24_LE) SNDRV_PCM_FMTBIT_S24_LE)
static struct snd_soc_dai_ops wm8971_dai_ops = {
.hw_params = wm8971_pcm_hw_params,
.digital_mute = wm8971_mute,
.set_fmt = wm8971_set_dai_fmt,
.set_sysclk = wm8971_set_dai_sysclk,
};
struct snd_soc_dai wm8971_dai = { struct snd_soc_dai wm8971_dai = {
.name = "WM8971", .name = "WM8971",
.playback = { .playback = {
...@@ -618,12 +625,7 @@ struct snd_soc_dai wm8971_dai = { ...@@ -618,12 +625,7 @@ struct snd_soc_dai wm8971_dai = {
.channels_max = 2, .channels_max = 2,
.rates = WM8971_RATES, .rates = WM8971_RATES,
.formats = WM8971_FORMATS,}, .formats = WM8971_FORMATS,},
.ops = { .ops = &wm8971_dai_ops,
.hw_params = wm8971_pcm_hw_params,
.digital_mute = wm8971_mute,
.set_fmt = wm8971_set_dai_fmt,
.set_sysclk = wm8971_set_dai_sysclk,
},
}; };
EXPORT_SYMBOL_GPL(wm8971_dai); EXPORT_SYMBOL_GPL(wm8971_dai);
......
...@@ -1332,6 +1332,15 @@ static int wm8990_set_bias_level(struct snd_soc_codec *codec, ...@@ -1332,6 +1332,15 @@ static int wm8990_set_bias_level(struct snd_soc_codec *codec,
* 1. ADC/DAC on Primary Interface * 1. ADC/DAC on Primary Interface
* 2. ADC on Primary Interface/DAC on secondary * 2. ADC on Primary Interface/DAC on secondary
*/ */
static struct snd_soc_dai_ops wm8990_dai_ops = {
.hw_params = wm8990_hw_params,
.digital_mute = wm8990_mute,
.set_fmt = wm8990_set_dai_fmt,
.set_clkdiv = wm8990_set_dai_clkdiv,
.set_pll = wm8990_set_dai_pll,
.set_sysclk = wm8990_set_dai_sysclk,
};
struct snd_soc_dai wm8990_dai = { struct snd_soc_dai wm8990_dai = {
/* ADC/DAC on primary */ /* ADC/DAC on primary */
.name = "WM8990 ADC/DAC Primary", .name = "WM8990 ADC/DAC Primary",
...@@ -1348,14 +1357,7 @@ struct snd_soc_dai wm8990_dai = { ...@@ -1348,14 +1357,7 @@ struct snd_soc_dai wm8990_dai = {
.channels_max = 2, .channels_max = 2,
.rates = WM8990_RATES, .rates = WM8990_RATES,
.formats = WM8990_FORMATS,}, .formats = WM8990_FORMATS,},
.ops = { .ops = &wm8990_dai_ops,
.hw_params = wm8990_hw_params,
.digital_mute = wm8990_mute,
.set_fmt = wm8990_set_dai_fmt,
.set_clkdiv = wm8990_set_dai_clkdiv,
.set_pll = wm8990_set_dai_pll,
.set_sysclk = wm8990_set_dai_sysclk,
},
}; };
EXPORT_SYMBOL_GPL(wm8990_dai); EXPORT_SYMBOL_GPL(wm8990_dai);
......
...@@ -269,6 +269,10 @@ static int ac97_prepare(struct snd_pcm_substream *substream, ...@@ -269,6 +269,10 @@ static int ac97_prepare(struct snd_pcm_substream *substream,
SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \ SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \
SNDRV_PCM_RATE_48000) SNDRV_PCM_RATE_48000)
static struct snd_soc_dai_ops wm9705_dai_ops = {
.prepare = ac97_prepare,
};
struct snd_soc_dai wm9705_dai[] = { struct snd_soc_dai wm9705_dai[] = {
{ {
.name = "AC97 HiFi", .name = "AC97 HiFi",
...@@ -287,9 +291,7 @@ struct snd_soc_dai wm9705_dai[] = { ...@@ -287,9 +291,7 @@ struct snd_soc_dai wm9705_dai[] = {
.rates = WM9705_AC97_RATES, .rates = WM9705_AC97_RATES,
.formats = SNDRV_PCM_FMTBIT_S16_LE, .formats = SNDRV_PCM_FMTBIT_S16_LE,
}, },
.ops = { .ops = &wm9705_dai_ops,
.prepare = ac97_prepare,
},
}, },
{ {
.name = "AC97 Aux", .name = "AC97 Aux",
......
...@@ -517,6 +517,14 @@ static int ac97_aux_prepare(struct snd_pcm_substream *substream, ...@@ -517,6 +517,14 @@ static int ac97_aux_prepare(struct snd_pcm_substream *substream,
SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_44100 |\ SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_44100 |\
SNDRV_PCM_RATE_48000) SNDRV_PCM_RATE_48000)
static struct snd_soc_dai_ops wm9712_dai_ops_hifi = {
.prepare = ac97_prepare,
};
static struct snd_soc_dai_ops wm9712_dai_ops_aux = {
.prepare = ac97_aux_prepare,
};
struct snd_soc_dai wm9712_dai[] = { struct snd_soc_dai wm9712_dai[] = {
{ {
.name = "AC97 HiFi", .name = "AC97 HiFi",
...@@ -533,8 +541,7 @@ struct snd_soc_dai wm9712_dai[] = { ...@@ -533,8 +541,7 @@ struct snd_soc_dai wm9712_dai[] = {
.channels_max = 2, .channels_max = 2,
.rates = WM9712_AC97_RATES, .rates = WM9712_AC97_RATES,
.formats = SNDRV_PCM_FMTBIT_S16_LE,}, .formats = SNDRV_PCM_FMTBIT_S16_LE,},
.ops = { .ops = &wm9712_dai_ops_hifi,
.prepare = ac97_prepare,},
}, },
{ {
.name = "AC97 Aux", .name = "AC97 Aux",
...@@ -544,8 +551,7 @@ struct snd_soc_dai wm9712_dai[] = { ...@@ -544,8 +551,7 @@ struct snd_soc_dai wm9712_dai[] = {
.channels_max = 1, .channels_max = 1,
.rates = WM9712_AC97_RATES, .rates = WM9712_AC97_RATES,
.formats = SNDRV_PCM_FMTBIT_S16_LE,}, .formats = SNDRV_PCM_FMTBIT_S16_LE,},
.ops = { .ops = &wm9712_dai_ops_aux,
.prepare = ac97_aux_prepare,},
} }
}; };
EXPORT_SYMBOL_GPL(wm9712_dai); EXPORT_SYMBOL_GPL(wm9712_dai);
......
...@@ -1005,6 +1005,27 @@ static int ac97_aux_prepare(struct snd_pcm_substream *substream, ...@@ -1005,6 +1005,27 @@ static int ac97_aux_prepare(struct snd_pcm_substream *substream,
(SNDRV_PCM_FORMAT_S16_LE | SNDRV_PCM_FORMAT_S20_3LE | \ (SNDRV_PCM_FORMAT_S16_LE | SNDRV_PCM_FORMAT_S20_3LE | \
SNDRV_PCM_FORMAT_S24_LE) SNDRV_PCM_FORMAT_S24_LE)
static struct snd_soc_dai_ops wm9713_dai_ops_hifi = {
.prepare = ac97_hifi_prepare,
.set_clkdiv = wm9713_set_dai_clkdiv,
.set_pll = wm9713_set_dai_pll,
};
static struct snd_soc_dai_ops wm9713_dai_ops_aux = {
.prepare = ac97_aux_prepare,
.set_clkdiv = wm9713_set_dai_clkdiv,
.set_pll = wm9713_set_dai_pll,
};
static struct snd_soc_dai_ops wm9713_dai_ops_voice = {
.hw_params = wm9713_pcm_hw_params,
.shutdown = wm9713_voiceshutdown,
.set_clkdiv = wm9713_set_dai_clkdiv,
.set_pll = wm9713_set_dai_pll,
.set_fmt = wm9713_set_dai_fmt,
.set_tristate = wm9713_set_dai_tristate,
};
struct snd_soc_dai wm9713_dai[] = { struct snd_soc_dai wm9713_dai[] = {
{ {
.name = "AC97 HiFi", .name = "AC97 HiFi",
...@@ -1021,10 +1042,7 @@ struct snd_soc_dai wm9713_dai[] = { ...@@ -1021,10 +1042,7 @@ struct snd_soc_dai wm9713_dai[] = {
.channels_max = 2, .channels_max = 2,
.rates = WM9713_RATES, .rates = WM9713_RATES,
.formats = SNDRV_PCM_FMTBIT_S16_LE,}, .formats = SNDRV_PCM_FMTBIT_S16_LE,},
.ops = { .ops = &wm9713_dai_ops_hifi,
.prepare = ac97_hifi_prepare,
.set_clkdiv = wm9713_set_dai_clkdiv,
.set_pll = wm9713_set_dai_pll,},
}, },
{ {
.name = "AC97 Aux", .name = "AC97 Aux",
...@@ -1034,10 +1052,7 @@ struct snd_soc_dai wm9713_dai[] = { ...@@ -1034,10 +1052,7 @@ struct snd_soc_dai wm9713_dai[] = {
.channels_max = 1, .channels_max = 1,
.rates = WM9713_RATES, .rates = WM9713_RATES,
.formats = SNDRV_PCM_FMTBIT_S16_LE,}, .formats = SNDRV_PCM_FMTBIT_S16_LE,},
.ops = { .ops = &wm9713_dai_ops_aux,
.prepare = ac97_aux_prepare,
.set_clkdiv = wm9713_set_dai_clkdiv,
.set_pll = wm9713_set_dai_pll,},
}, },
{ {
.name = "WM9713 Voice", .name = "WM9713 Voice",
...@@ -1053,14 +1068,7 @@ struct snd_soc_dai wm9713_dai[] = { ...@@ -1053,14 +1068,7 @@ struct snd_soc_dai wm9713_dai[] = {
.channels_max = 2, .channels_max = 2,
.rates = WM9713_PCM_RATES, .rates = WM9713_PCM_RATES,
.formats = WM9713_PCM_FORMATS,}, .formats = WM9713_PCM_FORMATS,},
.ops = { .ops = &wm9713_dai_ops_voice,
.hw_params = wm9713_pcm_hw_params,
.shutdown = wm9713_voiceshutdown,
.set_clkdiv = wm9713_set_dai_clkdiv,
.set_pll = wm9713_set_dai_pll,
.set_fmt = wm9713_set_dai_fmt,
.set_tristate = wm9713_set_dai_tristate,
},
}, },
}; };
EXPORT_SYMBOL_GPL(wm9713_dai); EXPORT_SYMBOL_GPL(wm9713_dai);
......
...@@ -499,6 +499,13 @@ static void davinci_i2s_remove(struct platform_device *pdev, ...@@ -499,6 +499,13 @@ static void davinci_i2s_remove(struct platform_device *pdev,
#define DAVINCI_I2S_RATES SNDRV_PCM_RATE_8000_96000 #define DAVINCI_I2S_RATES SNDRV_PCM_RATE_8000_96000
static struct snd_soc_dai_ops davinci_i2s_dai_ops = {
.startup = davinci_i2s_startup,
.trigger = davinci_i2s_trigger,
.hw_params = davinci_i2s_hw_params,
.set_fmt = davinci_i2s_set_dai_fmt,
};
struct snd_soc_dai davinci_i2s_dai = { struct snd_soc_dai davinci_i2s_dai = {
.name = "davinci-i2s", .name = "davinci-i2s",
.id = 0, .id = 0,
...@@ -514,12 +521,7 @@ struct snd_soc_dai davinci_i2s_dai = { ...@@ -514,12 +521,7 @@ struct snd_soc_dai davinci_i2s_dai = {
.channels_max = 2, .channels_max = 2,
.rates = DAVINCI_I2S_RATES, .rates = DAVINCI_I2S_RATES,
.formats = SNDRV_PCM_FMTBIT_S16_LE,}, .formats = SNDRV_PCM_FMTBIT_S16_LE,},
.ops = { .ops = &davinci_i2s_dai_ops,
.startup = davinci_i2s_startup,
.trigger = davinci_i2s_trigger,
.hw_params = davinci_i2s_hw_params,
.set_fmt = davinci_i2s_set_dai_fmt,
},
}; };
EXPORT_SYMBOL_GPL(davinci_i2s_dai); EXPORT_SYMBOL_GPL(davinci_i2s_dai);
......
...@@ -562,6 +562,15 @@ static int fsl_ssi_set_fmt(struct snd_soc_dai *cpu_dai, unsigned int format) ...@@ -562,6 +562,15 @@ static int fsl_ssi_set_fmt(struct snd_soc_dai *cpu_dai, unsigned int format)
/** /**
* fsl_ssi_dai_template: template CPU DAI for the SSI * fsl_ssi_dai_template: template CPU DAI for the SSI
*/ */
static struct snd_soc_dai_ops fsl_ssi_dai_ops = {
.startup = fsl_ssi_startup,
.hw_params = fsl_ssi_hw_params,
.shutdown = fsl_ssi_shutdown,
.trigger = fsl_ssi_trigger,
.set_sysclk = fsl_ssi_set_sysclk,
.set_fmt = fsl_ssi_set_fmt,
};
static struct snd_soc_dai fsl_ssi_dai_template = { static struct snd_soc_dai fsl_ssi_dai_template = {
.playback = { .playback = {
/* The SSI does not support monaural audio. */ /* The SSI does not support monaural audio. */
...@@ -576,14 +585,7 @@ static struct snd_soc_dai fsl_ssi_dai_template = { ...@@ -576,14 +585,7 @@ static struct snd_soc_dai fsl_ssi_dai_template = {
.rates = FSLSSI_I2S_RATES, .rates = FSLSSI_I2S_RATES,
.formats = FSLSSI_I2S_FORMATS, .formats = FSLSSI_I2S_FORMATS,
}, },
.ops = { .ops = &fsl_ssi_dai_ops,
.startup = fsl_ssi_startup,
.hw_params = fsl_ssi_hw_params,
.shutdown = fsl_ssi_shutdown,
.trigger = fsl_ssi_trigger,
.set_sysclk = fsl_ssi_set_sysclk,
.set_fmt = fsl_ssi_set_fmt,
},
}; };
/** /**
......
...@@ -468,6 +468,16 @@ static int psc_i2s_set_fmt(struct snd_soc_dai *cpu_dai, unsigned int format) ...@@ -468,6 +468,16 @@ static int psc_i2s_set_fmt(struct snd_soc_dai *cpu_dai, unsigned int format)
/** /**
* psc_i2s_dai_template: template CPU Digital Audio Interface * psc_i2s_dai_template: template CPU Digital Audio Interface
*/ */
static struct snd_soc_dai_ops psc_i2s_dai_ops = {
.startup = psc_i2s_startup,
.hw_params = psc_i2s_hw_params,
.hw_free = psc_i2s_hw_free,
.shutdown = psc_i2s_shutdown,
.trigger = psc_i2s_trigger,
.set_sysclk = psc_i2s_set_sysclk,
.set_fmt = psc_i2s_set_fmt,
};
static struct snd_soc_dai psc_i2s_dai_template = { static struct snd_soc_dai psc_i2s_dai_template = {
.playback = { .playback = {
.channels_min = 2, .channels_min = 2,
...@@ -481,15 +491,7 @@ static struct snd_soc_dai psc_i2s_dai_template = { ...@@ -481,15 +491,7 @@ static struct snd_soc_dai psc_i2s_dai_template = {
.rates = PSC_I2S_RATES, .rates = PSC_I2S_RATES,
.formats = PSC_I2S_FORMATS, .formats = PSC_I2S_FORMATS,
}, },
.ops = { .ops = &psc_i2s_dai_ops,
.startup = psc_i2s_startup,
.hw_params = psc_i2s_hw_params,
.hw_free = psc_i2s_hw_free,
.shutdown = psc_i2s_shutdown,
.trigger = psc_i2s_trigger,
.set_sysclk = psc_i2s_set_sysclk,
.set_fmt = psc_i2s_set_fmt,
},
}; };
/* --------------------------------------------------------------------- /* ---------------------------------------------------------------------
......
...@@ -461,6 +461,16 @@ static int omap_mcbsp_dai_set_dai_sysclk(struct snd_soc_dai *cpu_dai, ...@@ -461,6 +461,16 @@ static int omap_mcbsp_dai_set_dai_sysclk(struct snd_soc_dai *cpu_dai,
return err; return err;
} }
static struct snd_soc_dai_ops omap_mcbsp_dai_ops = {
.startup = omap_mcbsp_dai_startup,
.shutdown = omap_mcbsp_dai_shutdown,
.trigger = omap_mcbsp_dai_trigger,
.hw_params = omap_mcbsp_dai_hw_params,
.set_fmt = omap_mcbsp_dai_set_dai_fmt,
.set_clkdiv = omap_mcbsp_dai_set_clkdiv,
.set_sysclk = omap_mcbsp_dai_set_dai_sysclk,
};
#define OMAP_MCBSP_DAI_BUILDER(link_id) \ #define OMAP_MCBSP_DAI_BUILDER(link_id) \
{ \ { \
.name = "omap-mcbsp-dai-"#link_id, \ .name = "omap-mcbsp-dai-"#link_id, \
...@@ -477,15 +487,7 @@ static int omap_mcbsp_dai_set_dai_sysclk(struct snd_soc_dai *cpu_dai, ...@@ -477,15 +487,7 @@ static int omap_mcbsp_dai_set_dai_sysclk(struct snd_soc_dai *cpu_dai,
.rates = OMAP_MCBSP_RATES, \ .rates = OMAP_MCBSP_RATES, \
.formats = SNDRV_PCM_FMTBIT_S16_LE, \ .formats = SNDRV_PCM_FMTBIT_S16_LE, \
}, \ }, \
.ops = { \ .ops = &omap_mcbsp_dai_ops, \
.startup = omap_mcbsp_dai_startup, \
.shutdown = omap_mcbsp_dai_shutdown, \
.trigger = omap_mcbsp_dai_trigger, \
.hw_params = omap_mcbsp_dai_hw_params, \
.set_fmt = omap_mcbsp_dai_set_dai_fmt, \
.set_clkdiv = omap_mcbsp_dai_set_clkdiv, \
.set_sysclk = omap_mcbsp_dai_set_dai_sysclk, \
}, \
.private_data = &mcbsp_data[(link_id)].bus_id, \ .private_data = &mcbsp_data[(link_id)].bus_id, \
} }
......
...@@ -784,6 +784,19 @@ static void pxa_ssp_remove(struct platform_device *pdev, ...@@ -784,6 +784,19 @@ static void pxa_ssp_remove(struct platform_device *pdev,
SNDRV_PCM_FMTBIT_S24_LE | \ SNDRV_PCM_FMTBIT_S24_LE | \
SNDRV_PCM_FMTBIT_S32_LE) SNDRV_PCM_FMTBIT_S32_LE)
static struct snd_soc_dai_ops pxa_ssp_dai_ops = {
.startup = pxa_ssp_startup,
.shutdown = pxa_ssp_shutdown,
.trigger = pxa_ssp_trigger,
.hw_params = pxa_ssp_hw_params,
.set_sysclk = pxa_ssp_set_dai_sysclk,
.set_clkdiv = pxa_ssp_set_dai_clkdiv,
.set_pll = pxa_ssp_set_dai_pll,
.set_fmt = pxa_ssp_set_dai_fmt,
.set_tdm_slot = pxa_ssp_set_dai_tdm_slot,
.set_tristate = pxa_ssp_set_dai_tristate,
};
struct snd_soc_dai pxa_ssp_dai[] = { struct snd_soc_dai pxa_ssp_dai[] = {
{ {
.name = "pxa2xx-ssp1", .name = "pxa2xx-ssp1",
...@@ -804,18 +817,7 @@ struct snd_soc_dai pxa_ssp_dai[] = { ...@@ -804,18 +817,7 @@ struct snd_soc_dai pxa_ssp_dai[] = {
.rates = PXA_SSP_RATES, .rates = PXA_SSP_RATES,
.formats = PXA_SSP_FORMATS, .formats = PXA_SSP_FORMATS,
}, },
.ops = { .ops = &pxa_ssp_dai_ops,
.startup = pxa_ssp_startup,
.shutdown = pxa_ssp_shutdown,
.trigger = pxa_ssp_trigger,
.hw_params = pxa_ssp_hw_params,
.set_sysclk = pxa_ssp_set_dai_sysclk,
.set_clkdiv = pxa_ssp_set_dai_clkdiv,
.set_pll = pxa_ssp_set_dai_pll,
.set_fmt = pxa_ssp_set_dai_fmt,
.set_tdm_slot = pxa_ssp_set_dai_tdm_slot,
.set_tristate = pxa_ssp_set_dai_tristate,
},
}, },
{ .name = "pxa2xx-ssp2", { .name = "pxa2xx-ssp2",
.id = 1, .id = 1,
...@@ -835,18 +837,7 @@ struct snd_soc_dai pxa_ssp_dai[] = { ...@@ -835,18 +837,7 @@ struct snd_soc_dai pxa_ssp_dai[] = {
.rates = PXA_SSP_RATES, .rates = PXA_SSP_RATES,
.formats = PXA_SSP_FORMATS, .formats = PXA_SSP_FORMATS,
}, },
.ops = { .ops = &pxa_ssp_dai_ops,
.startup = pxa_ssp_startup,
.shutdown = pxa_ssp_shutdown,
.trigger = pxa_ssp_trigger,
.hw_params = pxa_ssp_hw_params,
.set_sysclk = pxa_ssp_set_dai_sysclk,
.set_clkdiv = pxa_ssp_set_dai_clkdiv,
.set_pll = pxa_ssp_set_dai_pll,
.set_fmt = pxa_ssp_set_dai_fmt,
.set_tdm_slot = pxa_ssp_set_dai_tdm_slot,
.set_tristate = pxa_ssp_set_dai_tristate,
},
}, },
{ {
.name = "pxa2xx-ssp3", .name = "pxa2xx-ssp3",
...@@ -867,18 +858,7 @@ struct snd_soc_dai pxa_ssp_dai[] = { ...@@ -867,18 +858,7 @@ struct snd_soc_dai pxa_ssp_dai[] = {
.rates = PXA_SSP_RATES, .rates = PXA_SSP_RATES,
.formats = PXA_SSP_FORMATS, .formats = PXA_SSP_FORMATS,
}, },
.ops = { .ops = &pxa_ssp_dai_ops,
.startup = pxa_ssp_startup,
.shutdown = pxa_ssp_shutdown,
.trigger = pxa_ssp_trigger,
.hw_params = pxa_ssp_hw_params,
.set_sysclk = pxa_ssp_set_dai_sysclk,
.set_clkdiv = pxa_ssp_set_dai_clkdiv,
.set_pll = pxa_ssp_set_dai_pll,
.set_fmt = pxa_ssp_set_dai_fmt,
.set_tdm_slot = pxa_ssp_set_dai_tdm_slot,
.set_tristate = pxa_ssp_set_dai_tristate,
},
}, },
{ {
.name = "pxa2xx-ssp4", .name = "pxa2xx-ssp4",
...@@ -899,18 +879,7 @@ struct snd_soc_dai pxa_ssp_dai[] = { ...@@ -899,18 +879,7 @@ struct snd_soc_dai pxa_ssp_dai[] = {
.rates = PXA_SSP_RATES, .rates = PXA_SSP_RATES,
.formats = PXA_SSP_FORMATS, .formats = PXA_SSP_FORMATS,
}, },
.ops = { .ops = &pxa_ssp_dai_ops,
.startup = pxa_ssp_startup,
.shutdown = pxa_ssp_shutdown,
.trigger = pxa_ssp_trigger,
.hw_params = pxa_ssp_hw_params,
.set_sysclk = pxa_ssp_set_dai_sysclk,
.set_clkdiv = pxa_ssp_set_dai_clkdiv,
.set_pll = pxa_ssp_set_dai_pll,
.set_fmt = pxa_ssp_set_dai_fmt,
.set_tdm_slot = pxa_ssp_set_dai_tdm_slot,
.set_tristate = pxa_ssp_set_dai_tristate,
},
}, },
}; };
EXPORT_SYMBOL_GPL(pxa_ssp_dai); EXPORT_SYMBOL_GPL(pxa_ssp_dai);
......
...@@ -164,6 +164,10 @@ static int pxa2xx_ac97_hw_mic_params(struct snd_pcm_substream *substream, ...@@ -164,6 +164,10 @@ static int pxa2xx_ac97_hw_mic_params(struct snd_pcm_substream *substream,
SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_44100 | \ SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_44100 | \
SNDRV_PCM_RATE_48000) SNDRV_PCM_RATE_48000)
static struct snd_soc_dai_ops pxa_ac97_dai_ops = {
.hw_params = pxa2xx_ac97_hw_params,
};
/* /*
* There is only 1 physical AC97 interface for pxa2xx, but it * There is only 1 physical AC97 interface for pxa2xx, but it
* has extra fifo's that can be used for aux DACs and ADCs. * has extra fifo's that can be used for aux DACs and ADCs.
...@@ -189,8 +193,7 @@ struct snd_soc_dai pxa_ac97_dai[] = { ...@@ -189,8 +193,7 @@ struct snd_soc_dai pxa_ac97_dai[] = {
.channels_max = 2, .channels_max = 2,
.rates = PXA2XX_AC97_RATES, .rates = PXA2XX_AC97_RATES,
.formats = SNDRV_PCM_FMTBIT_S16_LE,}, .formats = SNDRV_PCM_FMTBIT_S16_LE,},
.ops = { .ops = &pxa_ac97_dai_ops,
.hw_params = pxa2xx_ac97_hw_params,},
}, },
{ {
.name = "pxa2xx-ac97-aux", .name = "pxa2xx-ac97-aux",
...@@ -208,8 +211,7 @@ struct snd_soc_dai pxa_ac97_dai[] = { ...@@ -208,8 +211,7 @@ struct snd_soc_dai pxa_ac97_dai[] = {
.channels_max = 1, .channels_max = 1,
.rates = PXA2XX_AC97_RATES, .rates = PXA2XX_AC97_RATES,
.formats = SNDRV_PCM_FMTBIT_S16_LE,}, .formats = SNDRV_PCM_FMTBIT_S16_LE,},
.ops = { .ops = &pxa_ac97_dai_ops,
.hw_params = pxa2xx_ac97_hw_aux_params,},
}, },
{ {
.name = "pxa2xx-ac97-mic", .name = "pxa2xx-ac97-mic",
...@@ -221,8 +223,7 @@ struct snd_soc_dai pxa_ac97_dai[] = { ...@@ -221,8 +223,7 @@ struct snd_soc_dai pxa_ac97_dai[] = {
.channels_max = 1, .channels_max = 1,
.rates = PXA2XX_AC97_RATES, .rates = PXA2XX_AC97_RATES,
.formats = SNDRV_PCM_FMTBIT_S16_LE,}, .formats = SNDRV_PCM_FMTBIT_S16_LE,},
.ops = { .ops = &pxa_ac97_dai_ops,
.hw_params = pxa2xx_ac97_hw_mic_params,},
}, },
}; };
......
...@@ -304,6 +304,15 @@ static int pxa2xx_i2s_resume(struct snd_soc_dai *dai) ...@@ -304,6 +304,15 @@ static int pxa2xx_i2s_resume(struct snd_soc_dai *dai)
SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_44100 | \ SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_44100 | \
SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_96000) SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_96000)
static struct snd_soc_dai_ops pxa_i2s_dai_ops = {
.startup = pxa2xx_i2s_startup,
.shutdown = pxa2xx_i2s_shutdown,
.trigger = pxa2xx_i2s_trigger,
.hw_params = pxa2xx_i2s_hw_params,
.set_fmt = pxa2xx_i2s_set_dai_fmt,
.set_sysclk = pxa2xx_i2s_set_dai_sysclk,
};
struct snd_soc_dai pxa_i2s_dai = { struct snd_soc_dai pxa_i2s_dai = {
.name = "pxa2xx-i2s", .name = "pxa2xx-i2s",
.id = 0, .id = 0,
...@@ -319,14 +328,7 @@ struct snd_soc_dai pxa_i2s_dai = { ...@@ -319,14 +328,7 @@ struct snd_soc_dai pxa_i2s_dai = {
.channels_max = 2, .channels_max = 2,
.rates = PXA2XX_I2S_RATES, .rates = PXA2XX_I2S_RATES,
.formats = SNDRV_PCM_FMTBIT_S16_LE,}, .formats = SNDRV_PCM_FMTBIT_S16_LE,},
.ops = { .ops = &pxa_i2s_dai_ops,
.startup = pxa2xx_i2s_startup,
.shutdown = pxa2xx_i2s_shutdown,
.trigger = pxa2xx_i2s_trigger,
.hw_params = pxa2xx_i2s_hw_params,
.set_fmt = pxa2xx_i2s_set_dai_fmt,
.set_sysclk = pxa2xx_i2s_set_dai_sysclk,
},
}; };
EXPORT_SYMBOL_GPL(pxa_i2s_dai); EXPORT_SYMBOL_GPL(pxa_i2s_dai);
......
...@@ -708,6 +708,14 @@ static int s3c2412_i2s_resume(struct snd_soc_dai *dai) ...@@ -708,6 +708,14 @@ static int s3c2412_i2s_resume(struct snd_soc_dai *dai)
SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \ SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \
SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000) SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000)
static struct snd_soc_dai_ops s3c2412_i2s_dai_ops = {
.trigger = s3c2412_i2s_trigger,
.hw_params = s3c2412_i2s_hw_params,
.set_fmt = s3c2412_i2s_set_fmt,
.set_clkdiv = s3c2412_i2s_set_clkdiv,
.set_sysclk = s3c2412_i2s_set_sysclk,
};
struct snd_soc_dai s3c2412_i2s_dai = { struct snd_soc_dai s3c2412_i2s_dai = {
.name = "s3c2412-i2s", .name = "s3c2412-i2s",
.id = 0, .id = 0,
...@@ -726,13 +734,7 @@ struct snd_soc_dai s3c2412_i2s_dai = { ...@@ -726,13 +734,7 @@ struct snd_soc_dai s3c2412_i2s_dai = {
.rates = S3C2412_I2S_RATES, .rates = S3C2412_I2S_RATES,
.formats = SNDRV_PCM_FMTBIT_S8 | SNDRV_PCM_FMTBIT_S16_LE, .formats = SNDRV_PCM_FMTBIT_S8 | SNDRV_PCM_FMTBIT_S16_LE,
}, },
.ops = { .ops = &s3c2412_i2s_dai_ops,
.trigger = s3c2412_i2s_trigger,
.hw_params = s3c2412_i2s_hw_params,
.set_fmt = s3c2412_i2s_set_fmt,
.set_clkdiv = s3c2412_i2s_set_clkdiv,
.set_sysclk = s3c2412_i2s_set_sysclk,
},
}; };
EXPORT_SYMBOL_GPL(s3c2412_i2s_dai); EXPORT_SYMBOL_GPL(s3c2412_i2s_dai);
......
...@@ -355,6 +355,11 @@ static int s3c2443_ac97_mic_trigger(struct snd_pcm_substream *substream, ...@@ -355,6 +355,11 @@ static int s3c2443_ac97_mic_trigger(struct snd_pcm_substream *substream,
SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 | \ SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 | \
SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000) SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000)
static struct snd_soc_dai_ops s3c2443_ac97_dai_ops = {
.hw_params = s3c2443_ac97_hw_params,
.trigger = s3c2443_ac97_trigger,
};
struct snd_soc_dai s3c2443_ac97_dai[] = { struct snd_soc_dai s3c2443_ac97_dai[] = {
{ {
.name = "s3c2443-ac97", .name = "s3c2443-ac97",
...@@ -374,9 +379,7 @@ struct snd_soc_dai s3c2443_ac97_dai[] = { ...@@ -374,9 +379,7 @@ struct snd_soc_dai s3c2443_ac97_dai[] = {
.channels_max = 2, .channels_max = 2,
.rates = s3c2443_AC97_RATES, .rates = s3c2443_AC97_RATES,
.formats = SNDRV_PCM_FMTBIT_S16_LE,}, .formats = SNDRV_PCM_FMTBIT_S16_LE,},
.ops = { .ops = &s3c2443_ac97_dai_ops,
.hw_params = s3c2443_ac97_hw_params,
.trigger = s3c2443_ac97_trigger},
}, },
{ {
.name = "pxa2xx-ac97-mic", .name = "pxa2xx-ac97-mic",
...@@ -388,9 +391,7 @@ struct snd_soc_dai s3c2443_ac97_dai[] = { ...@@ -388,9 +391,7 @@ struct snd_soc_dai s3c2443_ac97_dai[] = {
.channels_max = 1, .channels_max = 1,
.rates = s3c2443_AC97_RATES, .rates = s3c2443_AC97_RATES,
.formats = SNDRV_PCM_FMTBIT_S16_LE,}, .formats = SNDRV_PCM_FMTBIT_S16_LE,},
.ops = { .ops = &s3c2443_ac97_dai_ops,
.hw_params = s3c2443_ac97_hw_mic_params,
.trigger = s3c2443_ac97_mic_trigger,},
}, },
}; };
EXPORT_SYMBOL_GPL(s3c2443_ac97_dai); EXPORT_SYMBOL_GPL(s3c2443_ac97_dai);
......
...@@ -456,6 +456,14 @@ static int s3c24xx_i2s_resume(struct snd_soc_dai *cpu_dai) ...@@ -456,6 +456,14 @@ static int s3c24xx_i2s_resume(struct snd_soc_dai *cpu_dai)
SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \ SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \
SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000) SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000)
static struct snd_soc_dai_ops s3c24xx_i2s_dai_ops = {
.trigger = s3c24xx_i2s_trigger,
.hw_params = s3c24xx_i2s_hw_params,
.set_fmt = s3c24xx_i2s_set_fmt,
.set_clkdiv = s3c24xx_i2s_set_clkdiv,
.set_sysclk = s3c24xx_i2s_set_sysclk,
};
struct snd_soc_dai s3c24xx_i2s_dai = { struct snd_soc_dai s3c24xx_i2s_dai = {
.name = "s3c24xx-i2s", .name = "s3c24xx-i2s",
.id = 0, .id = 0,
...@@ -472,13 +480,7 @@ struct snd_soc_dai s3c24xx_i2s_dai = { ...@@ -472,13 +480,7 @@ struct snd_soc_dai s3c24xx_i2s_dai = {
.channels_max = 2, .channels_max = 2,
.rates = S3C24XX_I2S_RATES, .rates = S3C24XX_I2S_RATES,
.formats = SNDRV_PCM_FMTBIT_S8 | SNDRV_PCM_FMTBIT_S16_LE,}, .formats = SNDRV_PCM_FMTBIT_S8 | SNDRV_PCM_FMTBIT_S16_LE,},
.ops = { .ops = &s3c24xx_i2s_dai_ops,
.trigger = s3c24xx_i2s_trigger,
.hw_params = s3c24xx_i2s_hw_params,
.set_fmt = s3c24xx_i2s_set_fmt,
.set_clkdiv = s3c24xx_i2s_set_clkdiv,
.set_sysclk = s3c24xx_i2s_set_sysclk,
},
}; };
EXPORT_SYMBOL_GPL(s3c24xx_i2s_dai); EXPORT_SYMBOL_GPL(s3c24xx_i2s_dai);
......
...@@ -336,6 +336,16 @@ static int ssi_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) ...@@ -336,6 +336,16 @@ static int ssi_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)
SNDRV_PCM_FMTBIT_S24_3LE | SNDRV_PCM_FMTBIT_U24_3LE | \ SNDRV_PCM_FMTBIT_S24_3LE | SNDRV_PCM_FMTBIT_U24_3LE | \
SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_U32_LE) SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_U32_LE)
static struct snd_soc_dai_ops ssi_dai_ops = {
.startup = ssi_startup,
.shutdown = ssi_shutdown,
.trigger = ssi_trigger,
.hw_params = ssi_hw_params,
.set_sysclk = ssi_set_sysclk,
.set_clkdiv = ssi_set_clkdiv,
.set_fmt = ssi_set_fmt,
};
struct snd_soc_dai sh4_ssi_dai[] = { struct snd_soc_dai sh4_ssi_dai[] = {
{ {
.name = "SSI0", .name = "SSI0",
...@@ -352,15 +362,7 @@ struct snd_soc_dai sh4_ssi_dai[] = { ...@@ -352,15 +362,7 @@ struct snd_soc_dai sh4_ssi_dai[] = {
.channels_min = 2, .channels_min = 2,
.channels_max = 8, .channels_max = 8,
}, },
.ops = { .ops = &ssi_dai_ops,
.startup = ssi_startup,
.shutdown = ssi_shutdown,
.trigger = ssi_trigger,
.hw_params = ssi_hw_params,
.set_sysclk = ssi_set_sysclk,
.set_clkdiv = ssi_set_clkdiv,
.set_fmt = ssi_set_fmt,
},
}, },
#ifdef CONFIG_CPU_SUBTYPE_SH7760 #ifdef CONFIG_CPU_SUBTYPE_SH7760
{ {
...@@ -378,15 +380,7 @@ struct snd_soc_dai sh4_ssi_dai[] = { ...@@ -378,15 +380,7 @@ struct snd_soc_dai sh4_ssi_dai[] = {
.channels_min = 2, .channels_min = 2,
.channels_max = 8, .channels_max = 8,
}, },
.ops = { .ops = &ssi_dai_ops,
.startup = ssi_startup,
.shutdown = ssi_shutdown,
.trigger = ssi_trigger,
.hw_params = ssi_hw_params,
.set_sysclk = ssi_set_sysclk,
.set_clkdiv = ssi_set_clkdiv,
.set_fmt = ssi_set_fmt,
},
}, },
#endif #endif
}; };
......
...@@ -133,8 +133,8 @@ static int soc_pcm_open(struct snd_pcm_substream *substream) ...@@ -133,8 +133,8 @@ static int soc_pcm_open(struct snd_pcm_substream *substream)
mutex_lock(&pcm_mutex); mutex_lock(&pcm_mutex);
/* startup the audio subsystem */ /* startup the audio subsystem */
if (cpu_dai->ops.startup) { if (cpu_dai->ops->startup) {
ret = cpu_dai->ops.startup(substream, cpu_dai); ret = cpu_dai->ops->startup(substream, cpu_dai);
if (ret < 0) { if (ret < 0) {
printk(KERN_ERR "asoc: can't open interface %s\n", printk(KERN_ERR "asoc: can't open interface %s\n",
cpu_dai->name); cpu_dai->name);
...@@ -150,8 +150,8 @@ static int soc_pcm_open(struct snd_pcm_substream *substream) ...@@ -150,8 +150,8 @@ static int soc_pcm_open(struct snd_pcm_substream *substream)
} }
} }
if (codec_dai->ops.startup) { if (codec_dai->ops->startup) {
ret = codec_dai->ops.startup(substream, codec_dai); ret = codec_dai->ops->startup(substream, codec_dai);
if (ret < 0) { if (ret < 0) {
printk(KERN_ERR "asoc: can't open codec %s\n", printk(KERN_ERR "asoc: can't open codec %s\n",
codec_dai->name); codec_dai->name);
...@@ -247,8 +247,8 @@ static int soc_pcm_open(struct snd_pcm_substream *substream) ...@@ -247,8 +247,8 @@ static int soc_pcm_open(struct snd_pcm_substream *substream)
platform->pcm_ops->close(substream); platform->pcm_ops->close(substream);
platform_err: platform_err:
if (cpu_dai->ops.shutdown) if (cpu_dai->ops->shutdown)
cpu_dai->ops.shutdown(substream, cpu_dai); cpu_dai->ops->shutdown(substream, cpu_dai);
out: out:
mutex_unlock(&pcm_mutex); mutex_unlock(&pcm_mutex);
return ret; return ret;
...@@ -340,11 +340,11 @@ static int soc_codec_close(struct snd_pcm_substream *substream) ...@@ -340,11 +340,11 @@ static int soc_codec_close(struct snd_pcm_substream *substream)
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
snd_soc_dai_digital_mute(codec_dai, 1); snd_soc_dai_digital_mute(codec_dai, 1);
if (cpu_dai->ops.shutdown) if (cpu_dai->ops->shutdown)
cpu_dai->ops.shutdown(substream, cpu_dai); cpu_dai->ops->shutdown(substream, cpu_dai);
if (codec_dai->ops.shutdown) if (codec_dai->ops->shutdown)
codec_dai->ops.shutdown(substream, codec_dai); codec_dai->ops->shutdown(substream, codec_dai);
if (machine->ops && machine->ops->shutdown) if (machine->ops && machine->ops->shutdown)
machine->ops->shutdown(substream); machine->ops->shutdown(substream);
...@@ -408,16 +408,16 @@ static int soc_pcm_prepare(struct snd_pcm_substream *substream) ...@@ -408,16 +408,16 @@ static int soc_pcm_prepare(struct snd_pcm_substream *substream)
} }
} }
if (codec_dai->ops.prepare) { if (codec_dai->ops->prepare) {
ret = codec_dai->ops.prepare(substream, codec_dai); ret = codec_dai->ops->prepare(substream, codec_dai);
if (ret < 0) { if (ret < 0) {
printk(KERN_ERR "asoc: codec DAI prepare error\n"); printk(KERN_ERR "asoc: codec DAI prepare error\n");
goto out; goto out;
} }
} }
if (cpu_dai->ops.prepare) { if (cpu_dai->ops->prepare) {
ret = cpu_dai->ops.prepare(substream, cpu_dai); ret = cpu_dai->ops->prepare(substream, cpu_dai);
if (ret < 0) { if (ret < 0) {
printk(KERN_ERR "asoc: cpu DAI prepare error\n"); printk(KERN_ERR "asoc: cpu DAI prepare error\n");
goto out; goto out;
...@@ -494,8 +494,8 @@ static int soc_pcm_hw_params(struct snd_pcm_substream *substream, ...@@ -494,8 +494,8 @@ static int soc_pcm_hw_params(struct snd_pcm_substream *substream,
} }
} }
if (codec_dai->ops.hw_params) { if (codec_dai->ops->hw_params) {
ret = codec_dai->ops.hw_params(substream, params, codec_dai); ret = codec_dai->ops->hw_params(substream, params, codec_dai);
if (ret < 0) { if (ret < 0) {
printk(KERN_ERR "asoc: can't set codec %s hw params\n", printk(KERN_ERR "asoc: can't set codec %s hw params\n",
codec_dai->name); codec_dai->name);
...@@ -503,8 +503,8 @@ static int soc_pcm_hw_params(struct snd_pcm_substream *substream, ...@@ -503,8 +503,8 @@ static int soc_pcm_hw_params(struct snd_pcm_substream *substream,
} }
} }
if (cpu_dai->ops.hw_params) { if (cpu_dai->ops->hw_params) {
ret = cpu_dai->ops.hw_params(substream, params, cpu_dai); ret = cpu_dai->ops->hw_params(substream, params, cpu_dai);
if (ret < 0) { if (ret < 0) {
printk(KERN_ERR "asoc: interface %s hw params failed\n", printk(KERN_ERR "asoc: interface %s hw params failed\n",
cpu_dai->name); cpu_dai->name);
...@@ -526,12 +526,12 @@ static int soc_pcm_hw_params(struct snd_pcm_substream *substream, ...@@ -526,12 +526,12 @@ static int soc_pcm_hw_params(struct snd_pcm_substream *substream,
return ret; return ret;
platform_err: platform_err:
if (cpu_dai->ops.hw_free) if (cpu_dai->ops->hw_free)
cpu_dai->ops.hw_free(substream, cpu_dai); cpu_dai->ops->hw_free(substream, cpu_dai);
interface_err: interface_err:
if (codec_dai->ops.hw_free) if (codec_dai->ops->hw_free)
codec_dai->ops.hw_free(substream, codec_dai); codec_dai->ops->hw_free(substream, codec_dai);
codec_err: codec_err:
if (machine->ops && machine->ops->hw_free) if (machine->ops && machine->ops->hw_free)
...@@ -570,11 +570,11 @@ static int soc_pcm_hw_free(struct snd_pcm_substream *substream) ...@@ -570,11 +570,11 @@ static int soc_pcm_hw_free(struct snd_pcm_substream *substream)
platform->pcm_ops->hw_free(substream); platform->pcm_ops->hw_free(substream);
/* now free hw params for the DAI's */ /* now free hw params for the DAI's */
if (codec_dai->ops.hw_free) if (codec_dai->ops->hw_free)
codec_dai->ops.hw_free(substream, codec_dai); codec_dai->ops->hw_free(substream, codec_dai);
if (cpu_dai->ops.hw_free) if (cpu_dai->ops->hw_free)
cpu_dai->ops.hw_free(substream, cpu_dai); cpu_dai->ops->hw_free(substream, cpu_dai);
mutex_unlock(&pcm_mutex); mutex_unlock(&pcm_mutex);
return 0; return 0;
...@@ -591,8 +591,8 @@ static int soc_pcm_trigger(struct snd_pcm_substream *substream, int cmd) ...@@ -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; struct snd_soc_dai *codec_dai = machine->codec_dai;
int ret; int ret;
if (codec_dai->ops.trigger) { if (codec_dai->ops->trigger) {
ret = codec_dai->ops.trigger(substream, cmd, codec_dai); ret = codec_dai->ops->trigger(substream, cmd, codec_dai);
if (ret < 0) if (ret < 0)
return ret; return ret;
} }
...@@ -603,8 +603,8 @@ static int soc_pcm_trigger(struct snd_pcm_substream *substream, int cmd) ...@@ -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) { if (cpu_dai->ops->trigger) {
ret = cpu_dai->ops.trigger(substream, cmd, cpu_dai); ret = cpu_dai->ops->trigger(substream, cmd, cpu_dai);
if (ret < 0) if (ret < 0)
return ret; return ret;
} }
...@@ -645,8 +645,8 @@ static int soc_suspend(struct platform_device *pdev, pm_message_t state) ...@@ -645,8 +645,8 @@ static int soc_suspend(struct platform_device *pdev, pm_message_t state)
/* mute any active DAC's */ /* mute any active DAC's */
for (i = 0; i < card->num_links; i++) { for (i = 0; i < card->num_links; i++) {
struct snd_soc_dai *dai = card->dai_link[i].codec_dai; struct snd_soc_dai *dai = card->dai_link[i].codec_dai;
if (dai->ops.digital_mute && dai->playback.active) if (dai->ops->digital_mute && dai->playback.active)
dai->ops.digital_mute(dai, 1); 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) ...@@ -741,8 +741,8 @@ static void soc_resume_deferred(struct work_struct *work)
/* unmute any active DACs */ /* unmute any active DACs */
for (i = 0; i < card->num_links; i++) { for (i = 0; i < card->num_links; i++) {
struct snd_soc_dai *dai = card->dai_link[i].codec_dai; struct snd_soc_dai *dai = card->dai_link[i].codec_dai;
if (dai->ops.digital_mute && dai->playback.active) if (dai->ops->digital_mute && dai->playback.active)
dai->ops.digital_mute(dai, 0); 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); ...@@ -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, int snd_soc_dai_set_sysclk(struct snd_soc_dai *dai, int clk_id,
unsigned int freq, int dir) unsigned int freq, int dir)
{ {
if (dai->ops.set_sysclk) if (dai->ops->set_sysclk)
return dai->ops.set_sysclk(dai, clk_id, freq, dir); return dai->ops->set_sysclk(dai, clk_id, freq, dir);
else else
return -EINVAL; return -EINVAL;
} }
...@@ -2071,8 +2071,8 @@ EXPORT_SYMBOL_GPL(snd_soc_dai_set_sysclk); ...@@ -2071,8 +2071,8 @@ EXPORT_SYMBOL_GPL(snd_soc_dai_set_sysclk);
int snd_soc_dai_set_clkdiv(struct snd_soc_dai *dai, int snd_soc_dai_set_clkdiv(struct snd_soc_dai *dai,
int div_id, int div) int div_id, int div)
{ {
if (dai->ops.set_clkdiv) if (dai->ops->set_clkdiv)
return dai->ops.set_clkdiv(dai, div_id, div); return dai->ops->set_clkdiv(dai, div_id, div);
else else
return -EINVAL; return -EINVAL;
} }
...@@ -2090,8 +2090,8 @@ EXPORT_SYMBOL_GPL(snd_soc_dai_set_clkdiv); ...@@ -2090,8 +2090,8 @@ EXPORT_SYMBOL_GPL(snd_soc_dai_set_clkdiv);
int snd_soc_dai_set_pll(struct snd_soc_dai *dai, int snd_soc_dai_set_pll(struct snd_soc_dai *dai,
int pll_id, unsigned int freq_in, unsigned int freq_out) int pll_id, unsigned int freq_in, unsigned int freq_out)
{ {
if (dai->ops.set_pll) if (dai->ops->set_pll)
return dai->ops.set_pll(dai, pll_id, freq_in, freq_out); return dai->ops->set_pll(dai, pll_id, freq_in, freq_out);
else else
return -EINVAL; return -EINVAL;
} }
...@@ -2106,8 +2106,8 @@ EXPORT_SYMBOL_GPL(snd_soc_dai_set_pll); ...@@ -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) if (dai->ops->set_fmt)
return dai->ops.set_fmt(dai, fmt); return dai->ops->set_fmt(dai, fmt);
else else
return -EINVAL; return -EINVAL;
} }
...@@ -2125,8 +2125,8 @@ EXPORT_SYMBOL_GPL(snd_soc_dai_set_fmt); ...@@ -2125,8 +2125,8 @@ EXPORT_SYMBOL_GPL(snd_soc_dai_set_fmt);
int snd_soc_dai_set_tdm_slot(struct snd_soc_dai *dai, int snd_soc_dai_set_tdm_slot(struct snd_soc_dai *dai,
unsigned int mask, int slots) unsigned int mask, int slots)
{ {
if (dai->ops.set_sysclk) if (dai->ops->set_sysclk)
return dai->ops.set_tdm_slot(dai, mask, slots); return dai->ops->set_tdm_slot(dai, mask, slots);
else else
return -EINVAL; return -EINVAL;
} }
...@@ -2141,8 +2141,8 @@ EXPORT_SYMBOL_GPL(snd_soc_dai_set_tdm_slot); ...@@ -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) if (dai->ops->set_sysclk)
return dai->ops.set_tristate(dai, tristate); return dai->ops->set_tristate(dai, tristate);
else else
return -EINVAL; return -EINVAL;
} }
...@@ -2157,8 +2157,8 @@ EXPORT_SYMBOL_GPL(snd_soc_dai_set_tristate); ...@@ -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) if (dai->ops->digital_mute)
return dai->ops.digital_mute(dai, mute); return dai->ops->digital_mute(dai, mute);
else else
return -EINVAL; return -EINVAL;
} }
...@@ -2211,6 +2211,9 @@ static int snd_soc_unregister_card(struct snd_soc_card *card) ...@@ -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) ...@@ -2225,6 +2228,9 @@ int snd_soc_register_dai(struct snd_soc_dai *dai)
if (!dai->dev) if (!dai->dev)
printk(KERN_WARNING "No device for DAI %s\n", dai->name); printk(KERN_WARNING "No device for DAI %s\n", dai->name);
if (!dai->ops)
dai->ops = &null_dai_ops;
INIT_LIST_HEAD(&dai->list); INIT_LIST_HEAD(&dai->list);
mutex_lock(&client_mutex); mutex_lock(&client_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