/*
* smdk_wm9713.c -- SoC audio for SMDK
*
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
*/
#include <linux/module.h>
#include <linux/device.h>
#include <sound/soc.h>
#include <sound/soc-dapm.h>
#include "../codecs/wm9713.h"
#include "s3c-dma.h"
#include "s3c-ac97.h"
static struct snd_soc_card smdk;
/*
* Default CFG switch settings to use this driver:
*
* SMDK6410: Set CFG1 1-3 On, CFG2 1-4 Off
* SMDKC100: Set CFG6 1-3 On, CFG7 1 On
* SMDKC110: Set CFGB10 1-2 Off, CFGB12 1-3 On
* SMDKV210: Set CFGB10 1-2 Off, CFGB12 1-3 On
*/
/*
Playback (HeadPhone):-
$ amixer sset 'Headphone' unmute
$ amixer sset 'Right Headphone Out Mux' 'Headphone'
$ amixer sset 'Left Headphone Out Mux' 'Headphone'
$ amixer sset 'Right HP Mixer PCM' unmute
$ amixer sset 'Left HP Mixer PCM' unmute
Capture (LineIn):-
$ amixer sset 'Right Capture Source' 'Line'
$ amixer sset 'Left Capture Source' 'Line'
*/
/* Machine dapm widgets */
static const struct snd_soc_dapm_widget smdk_dapm_widgets[] = {
SND_SOC_DAPM_MIC("Mic (on-board)", NULL),
};
/* audio map */
static struct snd_soc_dapm_route audio_map[] = {
{ "MIC1", NULL, "Mic Bias" },
{ "Mic Bias", NULL, "Mic (on-board)" },
};
static int smdk_ac97_init(struct snd_soc_codec *codec) {
unsigned short val;
/* add board specific widgets */
snd_soc_dapm_new_controls(codec, smdk_dapm_widgets,
ARRAY_SIZE(smdk_dapm_widgets));
/* setup board specific audio path audio_map */
snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map));
/* Prepare MIC input */
val = codec->read(codec, AC97_3D_CONTROL);
codec->write(codec, AC97_3D_CONTROL, val | 0xc000);
/* Static setup for now */
snd_soc_dapm_enable_pin(codec, "Mic (on-board)");
snd_soc_dapm_sync(codec);
return 0;
}
static struct snd_soc_dai_link smdk_dai = {
.name = "AC97",
.stream_name = "AC97 PCM",
.cpu_dai = &s3c_ac97_dai[S3C_AC97_DAI_PCM],
.codec_dai = &wm9713_dai[WM9713_DAI_AC97_HIFI],
.init = smdk_ac97_init,
};
static struct snd_soc_card smdk = {
.name = "SMDK",
.platform = &s3c24xx_soc_platform,
.dai_link = &smdk_dai,
.num_links = 1,
};
static struct snd_soc_device smdk_snd_ac97_devdata = {
.card = &smdk,
.codec_dev = &soc_codec_dev_wm9713,
};
static struct platform_device *smdk_snd_ac97_device;
static int __init smdk_init(void)
{
int ret;
smdk_snd_ac97_device = platform_device_alloc("soc-audio", -1);
if (!smdk_snd_ac97_device)
return -ENOMEM;
platform_set_drvdata(smdk_snd_ac97_device,
&smdk_snd_ac97_devdata);
smdk_snd_ac97_devdata.dev = &smdk_snd_ac97_device->dev;
ret = platform_device_add(smdk_snd_ac97_device);
if (ret)
platform_device_put(smdk_snd_ac97_device);
return ret;
}
static void __exit smdk_exit(void)
{
platform_device_unregister(smdk_snd_ac97_device);
}
module_init(smdk_init);
module_exit(smdk_exit);
/* Module information */
MODULE_AUTHOR("Jaswinder Singh Brar, [email protected]");
MODULE_DESCRIPTION("ALSA SoC SMDK+WM9713");
MODULE_LICENSE("GPL");
smdk_wm9713.rar_SOC
版权申诉
189 浏览量
2022-09-23
13:04:50
上传
评论
收藏 1KB RAR 举报
刘良运
- 粉丝: 68
- 资源: 1万+
最新资源
- Pytorch-pytorch深度学习教程之逻辑回归.zip
- Pytorch-pytorch深度学习教程之双向循环网络.zip
- Pytorch-pytorch深度学习教程之卷积神经网络.zip
- Pytorch-pytorch深度学习教程之前馈神经网络.zip
- Pytorch-pytorch深度学习教程之线性回归.zip
- Pytorch-pytorch深度学习教程之基本操作.zip
- 基于QT的地图可视化桌面系统后台数据库为MySQL5.7源码.zip
- 基于simulink的PLL锁相环系统仿真【包括模型,文档,参考文献,操作步骤】
- 基于EM-GMM模型的目标跟踪和异常行为检测matlab仿真【包括程序,注释,参考文献,操作步骤,说明文档】
- 2109010044_胡晨燕_选课管理数据库设计与实现.prj
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈