#include <sound/soc-dapm.h>
#include "../codecs/wm8994.h"
+#include "card_info.h"
#include "rk_pcm.h"
#include "rk_i2s.h"
#include <linux/clk.h>
struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_dai *codec_dai = rtd->codec_dai;
struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
- unsigned int pll_out = 0;
+ unsigned int pll_out = 0, dai_fmt = rtd->dai_link->dai_fmt;
int div_bclk,div_mclk;
int ret;
struct clk *general_pll;
+ DBG("Enter::%s----%d\n", __FUNCTION__, __LINE__);
- DBG("Enter::%s----%d\n",__FUNCTION__,__LINE__);
+ /* set codec DAI configuration */
+ ret = snd_soc_dai_set_fmt(codec_dai, dai_fmt);
+ if (ret < 0) {
+ printk("%s():failed to set the format for codec side\n", __FUNCTION__);
+ return ret;
+ }
+
+ /* set cpu DAI configuration */
+ ret = snd_soc_dai_set_fmt(cpu_dai, dai_fmt);
+ if (ret < 0) {
+ printk("%s():failed to set the format for cpu side\n", __FUNCTION__);
+ return ret;
+ }
switch(params_rate(params)) {
case 8000:
// snd_soc_dapm_nc_pin(dapm, "LINEOUT1P");
snd_soc_dapm_nc_pin(dapm, "LINEOUT2N");
snd_soc_dapm_nc_pin(dapm, "LINEOUT2P");
-#ifdef CONFIG_HDMI
-extern int hdmi_is_insert(void);
-extern void codec_set_spk(bool on);
- if(hdmi_is_insert())
- codec_set_spk(false);
-#endif
+
snd_soc_dapm_sync(dapm);
/* Headset jack detection */
{
.name = "WM8994 I2S1",
.stream_name = "WM8994 PCM",
- .codec_name = "wm8994-codec",
-#if defined(CONFIG_SND_RK_SOC_I2S_8CH)
- .cpu_dai_name = "rockchip-i2s.0",
-#elif defined(CONFIG_SND_RK_SOC_I2S_2CH)
- .cpu_dai_name = "rockchip-i2s.1",
-#endif
.codec_dai_name = "wm8994-aif1",
.ops = &rk29_aif1_ops,
.init = rk29_wm8994_init,
-#if defined (CONFIG_SND_RK_CODEC_SOC_MASTER)
- .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
- SND_SOC_DAIFMT_CBM_CFM,
-#else
- .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF |
- SND_SOC_DAIFMT_CBS_CFS,
-#endif
},
{
.name = "WM8994 I2S2",
.stream_name = "WM8994 PCM",
- .codec_name = "wm8994-codec",
-#if defined(CONFIG_SND_RK_SOC_I2S_8CH)
- .cpu_dai_name = "rockchip-i2s.0",
-#elif defined(CONFIG_SND_RK_SOC_I2S_2CH)
- .cpu_dai_name = "rockchip-i2s.1",
-#endif
.codec_dai_name = "wm8994-aif2",
.ops = &rk29_aif2_ops,
},
card->dev = &pdev->dev;
- ret = snd_soc_register_card(card);
+ ret = rockchip_of_get_sound_card_info(card);
+ if (ret) {
+ printk("%s() get sound card info failed:%d\n", __FUNCTION__, ret);
+ return ret;
+ }
+ ret = snd_soc_register_card(card);
if (ret)
printk("%s() register card failed:%d\n", __FUNCTION__, ret);
#ifdef CONFIG_OF
static const struct of_device_id rockchip_wm8994_of_match[] = {
- { .compatible = "rockchip-wm8994", },
- {},
+ { .compatible = "rockchip-wm8994", },
+ {},
};
MODULE_DEVICE_TABLE(of, rockchip_wm8994_of_match);
#endif /* CONFIG_OF */
static struct platform_driver rockchip_wm8994_audio_driver = {
- .driver = {
- .name = "rockchip-wm8994",
- .owner = THIS_MODULE,
- .of_match_table = of_match_ptr(rockchip_wm8994_of_match),
- },
- .probe = rockchip_wm8994_audio_probe,
- .remove = rockchip_wm8994_audio_remove,
+ .driver = {
+ .name = "rockchip-wm8994",
+ .owner = THIS_MODULE,
+ .pm = &snd_soc_pm_ops,
+ .of_match_table = of_match_ptr(rockchip_wm8994_of_match),
+ },
+ .probe = rockchip_wm8994_audio_probe,
+ .remove = rockchip_wm8994_audio_remove,
};
module_platform_driver(rockchip_wm8994_audio_driver);