本文整理汇总了C++中snd_soc_jack_new函数的典型用法代码示例。如果您正苦于以下问题:C++ snd_soc_jack_new函数的具体用法?C++ snd_soc_jack_new怎么用?C++ snd_soc_jack_new使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了snd_soc_jack_new函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: tobermory_late_probe
static int tobermory_late_probe(struct snd_soc_card *card)
{
struct snd_soc_codec *codec = card->rtd[0].codec;
struct snd_soc_dai *codec_dai = card->rtd[0].codec_dai;
int ret;
ret = snd_soc_dai_set_sysclk(codec_dai, WM8962_SYSCLK_MCLK,
32768, SND_SOC_CLOCK_IN);
if (ret < 0)
return ret;
ret = snd_soc_jack_new(codec, "Headset",
SND_JACK_HEADSET | SND_JACK_BTN_0,
&tobermory_headset);
if (ret)
return ret;
ret = snd_soc_jack_add_pins(&tobermory_headset,
ARRAY_SIZE(tobermory_headset_pins),
tobermory_headset_pins);
if (ret)
return ret;
wm8962_mic_detect(codec, &tobermory_headset);
return 0;
}
开发者ID:MiniBlu,项目名称:cm11_kernel_htc_msm8974a3ul,代码行数:27,代码来源:tobermory.c
示例2: littlemill_late_probe
static int littlemill_late_probe(struct snd_soc_card *card)
{
struct snd_soc_codec *codec = card->rtd[0].codec;
struct snd_soc_dai *codec_dai = card->rtd[0].codec_dai;
int ret;
ret = snd_soc_dai_set_sysclk(codec_dai, WM8994_SYSCLK_MCLK2,
32768, SND_SOC_CLOCK_IN);
if (ret < 0)
return ret;
ret = snd_soc_jack_new(codec, "Headset",
SND_JACK_HEADSET | SND_JACK_MECHANICAL |
SND_JACK_BTN_0 | SND_JACK_BTN_1 |
SND_JACK_BTN_2 | SND_JACK_BTN_3 |
SND_JACK_BTN_4 | SND_JACK_BTN_5,
&littlemill_headset);
if (ret)
return ret;
/* This will check device compatibility itself */
wm8958_mic_detect(codec, &littlemill_headset, NULL, NULL);
/* As will this */
wm8994_mic_detect(codec, &littlemill_headset, 1);
return 0;
}
开发者ID:openube,项目名称:android_kernel_sony_c2305,代码行数:28,代码来源:littlemill.c
示例3: alc5623_dai_init
static int alc5623_dai_init(struct snd_soc_pcm_runtime *rtd)
{
struct snd_soc_codec *codec = rtd->codec;
struct snd_soc_jack_gpio *jack = &jack_gpio;
int ret;
pr_debug("%s: %s\n", __func__, jack->name);
alc5623 = codec;
if (NULL == jack->name)
return 0;
#if defined(CONFIG_PLAT_S5P4418_NBOX)
/***************************************/
// [email protected], 20140609 Testing
/***************************************/
ret = switch_dev_register(&switch_nxl_jack_detection);
if (ret < 0) {
printk("%s : Failed to register switch device\n", __func__);
}
//wake_lock_init(&detect_jack_wake_lock, WAKE_LOCK_SUSPEND, "nxl_jack_detect");
#endif
ret = snd_soc_jack_new(codec, "Headphone Jack", SND_JACK_HEADPHONE, &hp_jack);
if (ret)
return ret;
ret = snd_soc_jack_add_gpios(&hp_jack, 1, jack);
printk("%s: %s register audio jack detect, %d\n", ret?"Fail":"Done", __func__, jack->gpio);
return 0;
}
开发者ID:iTOP4418,项目名称:kernel-3.4.39,代码行数:33,代码来源:nxp-rt5623.c
示例4: acclaim_aic3100_init
/*
* Initialization routine.
*/
static int acclaim_aic3100_init (struct snd_soc_pcm_runtime *pcm)
{
struct snd_soc_codec *codec = pcm->codec;
int gpiostatus;
DBG(KERN_INFO "acclaim_aic3100_init..\n");
gpiostatus = snd_soc_jack_new(codec, "Headset Jack",
SND_JACK_HEADSET, &hs_jack);
if (gpiostatus != 0) {
printk (KERN_ERR "snd_soc_jack_new failed(%d)\n", gpiostatus);
}
gpiostatus = snd_soc_jack_add_pins(&hs_jack, ARRAY_SIZE(hs_jack_pins),
hs_jack_pins);
if (gpiostatus != 0) {
printk (KERN_ERR"snd_soc_jack_add_pins failed(%d)\n",
gpiostatus);
}
gpiostatus = snd_soc_jack_add_gpios(&hs_jack, ARRAY_SIZE(hs_jack_gpios),
hs_jack_gpios);
if (gpiostatus != 0)
printk (KERN_ERR "snd_soc_jack_add_gpios failed..%d\n",
gpiostatus);
/* For our Driver, the Codec Driver itself manages the POP
* polling and hence
* we will reset the ALSA pmdown_time to zero.
*/
pcm->pmdown_time = 0;
return 0;
}
开发者ID:LeaderRider,项目名称:kernel3NookTablet,代码行数:37,代码来源:omap4_aic3100.c
示例5: smartq_wm8987_init
static int smartq_wm8987_init(struct snd_soc_pcm_runtime *rtd)
{
struct snd_soc_codec *codec = rtd->codec;
struct snd_soc_dapm_context *dapm = &codec->dapm;
int err = 0;
/* set endpoints to not connected */
snd_soc_dapm_nc_pin(dapm, "LINPUT1");
snd_soc_dapm_nc_pin(dapm, "RINPUT1");
snd_soc_dapm_nc_pin(dapm, "OUT3");
snd_soc_dapm_nc_pin(dapm, "ROUT1");
/* set endpoints to default off mode */
snd_soc_dapm_disable_pin(dapm, "Headphone Jack");
/* Headphone jack detection */
err = snd_soc_jack_new(codec, "Headphone Jack",
SND_JACK_HEADPHONE, &smartq_jack);
if (err)
return err;
err = snd_soc_jack_add_pins(&smartq_jack, ARRAY_SIZE(smartq_jack_pins),
smartq_jack_pins);
if (err)
return err;
err = snd_soc_jack_add_gpios(&smartq_jack,
ARRAY_SIZE(smartq_jack_gpios),
smartq_jack_gpios);
return err;
}
开发者ID:383530895,项目名称:linux,代码行数:32,代码来源:smartq_wm8987.c
示例6: msm8930_audrx_init
static int msm8930_audrx_init(struct snd_soc_pcm_runtime *rtd)
{
int err;
struct snd_soc_codec *codec = rtd->codec;
struct snd_soc_dapm_context *dapm = &codec->dapm;
struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
pr_debug("%s()\n", __func__);
snd_soc_dapm_new_controls(dapm, msm8930_dapm_widgets,
ARRAY_SIZE(msm8930_dapm_widgets));
snd_soc_dapm_add_routes(dapm, common_audio_map,
ARRAY_SIZE(common_audio_map));
snd_soc_dapm_enable_pin(dapm, "Ext Spk Left Pos");
snd_soc_dapm_enable_pin(dapm, "Ext Spk Left Neg");
snd_soc_dapm_sync(dapm);
err = snd_soc_jack_new(codec, "Headset Jack",
(SND_JACK_HEADSET | SND_JACK_OC_HPHL | SND_JACK_OC_HPHR),
&hs_jack);
if (err) {
pr_err("failed to create new jack\n");
return err;
}
err = snd_soc_jack_new(codec, "Button Jack",
SITAR_JACK_BUTTON_MASK, &button_jack);
if (err) {
pr_err("failed to create new jack\n");
return err;
}
codec_clk = clk_get(cpu_dai->dev, "osr_clk");
mbhc_cfg.gpio = 37;
mbhc_cfg.gpio_irq = gpio_to_irq(mbhc_cfg.gpio);
sitar_hs_detect(codec, &mbhc_cfg);
if (socinfo_get_pmic_model() != PMIC_MODEL_PM8917) {
/* Initialize default PMIC speaker gain */
pm8xxx_spk_gain(DEFAULT_PMIC_SPK_GAIN);
}
return 0;
}
开发者ID:TheTypoMaster,项目名称:e980-zeKrnl,代码行数:47,代码来源:msm8930.c
示例7: sdp4430_twl6040_init
static int sdp4430_twl6040_init(struct snd_soc_pcm_runtime *rtd)
{
struct snd_soc_codec *codec = rtd->codec;
int ret;
/* Add SDP4430 specific controls */
ret = snd_soc_add_controls(codec, sdp4430_controls,
ARRAY_SIZE(sdp4430_controls));
if (ret)
return ret;
/* Add SDP4430 specific widgets */
ret = snd_soc_dapm_new_controls(codec->dapm, sdp4430_twl6040_dapm_widgets,
ARRAY_SIZE(sdp4430_twl6040_dapm_widgets));
if (ret)
return ret;
/* Set up SDP4430 specific audio path audio_map */
snd_soc_dapm_add_routes(codec->dapm, audio_map, ARRAY_SIZE(audio_map));
/* SDP4430 connected pins */
snd_soc_dapm_enable_pin(codec->dapm, "Ext Mic");
snd_soc_dapm_enable_pin(codec->dapm, "Ext Spk");
snd_soc_dapm_enable_pin(codec->dapm, "AFML");
snd_soc_dapm_enable_pin(codec->dapm, "AFMR");
snd_soc_dapm_disable_pin(codec->dapm, "Headset Mic");
snd_soc_dapm_disable_pin(codec->dapm, "Headset Stereophone");
/* allow audio paths from the audio modem to run during suspend */
snd_soc_dapm_ignore_suspend(codec, "Ext Mic");
snd_soc_dapm_ignore_suspend(codec, "Ext Spk");
snd_soc_dapm_ignore_suspend(codec, "AFML");
snd_soc_dapm_ignore_suspend(codec, "AFMR");
snd_soc_dapm_ignore_suspend(codec, "Headset Mic");
snd_soc_dapm_ignore_suspend(codec, "Headset Stereophone");
ret = snd_soc_dapm_sync(codec->dapm);
if (ret)
return ret;
/*Headset jack detection */
ret = snd_soc_jack_new(codec, "Headset Jack",
SND_JACK_HEADSET, &hs_jack);
if (ret)
return ret;
ret = snd_soc_jack_add_pins(&hs_jack, ARRAY_SIZE(hs_jack_pins),
hs_jack_pins);
if (machine_is_omap_4430sdp())
twl6040_hs_jack_detect(codec, &hs_jack, SND_JACK_HEADSET);
else
snd_soc_jack_report(&hs_jack, SND_JACK_HEADSET, SND_JACK_HEADSET);
/* wait 500 ms before switching of HS power */
rtd->pmdown_time = 500;
return ret;
}
开发者ID:mephistophilis,项目名称:samsung_nowplus_kernel,代码行数:59,代码来源:sdp4430.c
示例8: rt3261_codec_init
static int rt3261_codec_init(struct snd_soc_pcm_runtime *rtd)
{
struct snd_soc_codec *codec = rtd->codec;
//struct snd_soc_dai *codec_dai = rtd->codec_dai;
struct snd_soc_dapm_context *dapm = &codec->dapm;
int ret = 0;
dprintk(KERN_DEBUG "enter %s rt3261_snd_pdata: %p\n", __func__, rt3261_snd_pdata);
/* Add specific widgets */
snd_soc_dapm_new_controls(dapm, rt3261_dapm_widgets,
ARRAY_SIZE(rt3261_dapm_widgets));
/* Set up specific audio path interconnects */
snd_soc_dapm_add_routes(dapm, rt3261_dapm_intercon, ARRAY_SIZE(rt3261_dapm_intercon));
#if 0 //we have 3g, so do not set endpoint,add jf.s
/* Setup spk/hp/mono output */
rt3261_set_output(codec);
/* Setuo mic input */
rt3261_set_input(codec);
#endif
/* not connected */
snd_soc_dapm_nc_pin(dapm, "MONO");
snd_soc_dapm_nc_pin(dapm, "AUXO2");
snd_soc_dapm_nc_pin(dapm, "DMIC");
snd_soc_dapm_nc_pin(dapm, "AXIL");
snd_soc_dapm_nc_pin(dapm, "AXIR");
/* always connected */
snd_soc_dapm_enable_pin(dapm, "Ext Spk");
/* disable connected */
snd_soc_dapm_disable_pin(dapm, "HP");
snd_soc_dapm_sync(dapm);
#if HP_DET
ret = snd_soc_jack_new(codec, "hp switch", SND_JACK_HEADPHONE, &rt3261_snd_priv->jack);
if (ret) {
printk(KERN_WARNING "Failed to alloc resource for hp switch\n");
} else {
ret = snd_soc_jack_add_pins(&rt3261_snd_priv->jack, ARRAY_SIZE(jack_pins), jack_pins);
if (ret) {
dprintk(KERN_WARNING "Failed to setup hp pins\n");
}
}
rt3261_snd_priv->data= (void*)codec;
init_timer(&rt3261_snd_priv->timer);
rt3261_snd_priv->timer.function = rt3261_timer_func;
rt3261_snd_priv->timer.data = (unsigned long)rt3261_snd_priv;
INIT_WORK(&rt3261_snd_priv->work, rt3261_work_func);
mutex_init(&rt3261_snd_priv->lock);
#endif
return 0;
}
开发者ID:abazad,项目名称:7300-kern,代码行数:59,代码来源:aml_m6_rt3261.c
示例9: aml_m1_codec_init
static int aml_m1_codec_init(struct snd_soc_codec *codec)
{
struct snd_soc_card *card = codec->socdev->card;
int err;
//Add board specific DAPM widgets and routes
err = snd_soc_dapm_new_controls(codec, aml_m1_dapm_widgets, ARRAY_SIZE(aml_m1_dapm_widgets));
if(err){
dev_warn(card->dev, "Failed to register DAPM widgets\n");
return 0;
}
err = snd_soc_dapm_add_routes(codec, intercon,
ARRAY_SIZE(intercon));
if(err){
dev_warn(card->dev, "Failed to setup dapm widgets routine\n");
return 0;
}
#if HP_DET
if ((soc_cs42l52_dai.ac97_pdata) && ((struct cs42l52_platform_data *) (soc_cs42l52_dai.ac97_pdata))->is_hp_pluged)
hp_detect_flag = ((struct cs42l52_platform_data *) (soc_cs42l52_dai.ac97_pdata))->is_hp_pluged() ? (0) : (1);
else
hp_detect_flag = 1; // If is_hp_pluged function is not registered in bsp, set speaker as default.
err = snd_soc_jack_new(card, "hp_switch",
SND_JACK_HEADSET, &hp_jack);
if(err){
dev_warn(card->dev, "Failed to alloc resource for hook switch\n");
}else{
err = snd_soc_jack_add_pins(&hp_jack, ARRAY_SIZE(hp_jack_pins), hp_jack_pins);
if(err){
dev_warn(card->dev, "Failed to setup hook hp jack pin\n");
}
}
// create a timer to poll the HP IN status
spin_lock_init(&lock);
timer.function = &cs42l52_hp_detect_timer;
timer.data = (unsigned long)codec;
timer.expires = jiffies + HZ*10;
init_timer(&timer);
INIT_WORK(&cs42l52_work.cs42l52_workqueue, cs42l52_hp_detect_queue);
#endif
snd_soc_dapm_nc_pin(codec,"LINPUT1");
snd_soc_dapm_nc_pin(codec,"RINPUT1");
snd_soc_dapm_enable_pin(codec, "Ext Spk");
snd_soc_dapm_disable_pin(codec, "HP");
snd_soc_dapm_enable_pin(codec, "MIC IN");
snd_soc_dapm_disable_pin(codec, "HP MIC");
snd_soc_dapm_disable_pin(codec, "FM IN");
snd_soc_dapm_sync(codec);
return 0;
}
开发者ID:KaZoom,项目名称:buildroot-linux-kernel-m3,代码行数:58,代码来源:aml_m1_mid_cs42l52.c
示例10: sdp3430_twl4030_init
static int sdp3430_twl4030_init(struct snd_soc_pcm_runtime *rtd)
{
struct snd_soc_codec *codec = rtd->codec;
struct snd_soc_dapm_context *dapm = &codec->dapm;
int ret;
/* Add SDP3430 specific widgets */
ret = snd_soc_dapm_new_controls(dapm, sdp3430_twl4030_dapm_widgets,
ARRAY_SIZE(sdp3430_twl4030_dapm_widgets));
if (ret)
return ret;
/* Set up SDP3430 specific audio path audio_map */
snd_soc_dapm_add_routes(dapm, audio_map, ARRAY_SIZE(audio_map));
/* SDP3430 connected pins */
snd_soc_dapm_enable_pin(dapm, "Ext Mic");
snd_soc_dapm_enable_pin(dapm, "Ext Spk");
snd_soc_dapm_disable_pin(dapm, "Headset Mic");
snd_soc_dapm_disable_pin(dapm, "Headset Stereophone");
/* TWL4030 not connected pins */
snd_soc_dapm_nc_pin(dapm, "AUXL");
snd_soc_dapm_nc_pin(dapm, "AUXR");
snd_soc_dapm_nc_pin(dapm, "CARKITMIC");
snd_soc_dapm_nc_pin(dapm, "DIGIMIC0");
snd_soc_dapm_nc_pin(dapm, "DIGIMIC1");
snd_soc_dapm_nc_pin(dapm, "OUTL");
snd_soc_dapm_nc_pin(dapm, "OUTR");
snd_soc_dapm_nc_pin(dapm, "EARPIECE");
snd_soc_dapm_nc_pin(dapm, "PREDRIVEL");
snd_soc_dapm_nc_pin(dapm, "PREDRIVER");
snd_soc_dapm_nc_pin(dapm, "CARKITL");
snd_soc_dapm_nc_pin(dapm, "CARKITR");
ret = snd_soc_dapm_sync(dapm);
if (ret)
return ret;
/* Headset jack detection */
ret = snd_soc_jack_new(codec, "Headset Jack",
SND_JACK_HEADSET, &hs_jack);
if (ret)
return ret;
ret = snd_soc_jack_add_pins(&hs_jack, ARRAY_SIZE(hs_jack_pins),
hs_jack_pins);
if (ret)
return ret;
ret = snd_soc_jack_add_gpios(&hs_jack, ARRAY_SIZE(hs_jack_gpios),
hs_jack_gpios);
return ret;
}
开发者ID:nos1609,项目名称:Chrono_Kernel-1,代码行数:56,代码来源:sdp3430.c
示例11: omap_twl4030_init
static int omap_twl4030_init(struct snd_soc_pcm_runtime *rtd)
{
struct snd_soc_codec *codec = rtd->codec;
struct snd_soc_card *card = codec->card;
struct snd_soc_dapm_context *dapm = &codec->dapm;
struct omap_tw4030_pdata *pdata = dev_get_platdata(card->dev);
struct omap_twl4030 *priv = snd_soc_card_get_drvdata(card);
int ret = 0;
/* Headset jack detection only if it is supported */
if (priv->jack_detect > 0) {
hs_jack_gpios[0].gpio = priv->jack_detect;
ret = snd_soc_jack_new(codec, "Headset Jack", SND_JACK_HEADSET,
&priv->hs_jack);
if (ret)
return ret;
ret = snd_soc_jack_add_pins(&priv->hs_jack,
ARRAY_SIZE(hs_jack_pins),
hs_jack_pins);
if (ret)
return ret;
ret = snd_soc_jack_add_gpios(&priv->hs_jack,
ARRAY_SIZE(hs_jack_gpios),
hs_jack_gpios);
if (ret)
return ret;
}
/*
* NULL pdata means we booted with DT. In this case the routing is
* provided and the card is fully routed, no need to mark pins.
*/
if (!pdata || !pdata->custom_routing)
return ret;
/* Disable not connected paths if not used */
twl4030_disconnect_pin(dapm, pdata->has_ear, "Earpiece Spk");
twl4030_disconnect_pin(dapm, pdata->has_hf, "Handsfree Spk");
twl4030_disconnect_pin(dapm, pdata->has_hs, "Headset Stereophone");
twl4030_disconnect_pin(dapm, pdata->has_predriv, "Ext Spk");
twl4030_disconnect_pin(dapm, pdata->has_carkit, "Carkit Spk");
twl4030_disconnect_pin(dapm, pdata->has_mainmic, "Main Mic");
twl4030_disconnect_pin(dapm, pdata->has_submic, "Sub Mic");
twl4030_disconnect_pin(dapm, pdata->has_hsmic, "Headset Mic");
twl4030_disconnect_pin(dapm, pdata->has_carkitmic, "Carkit Mic");
twl4030_disconnect_pin(dapm, pdata->has_digimic0, "Digital0 Mic");
twl4030_disconnect_pin(dapm, pdata->has_digimic1, "Digital1 Mic");
twl4030_disconnect_pin(dapm, pdata->has_linein, "Line In");
return ret;
}
开发者ID:AiWinters,项目名称:linux,代码行数:55,代码来源:omap-twl4030.c
示例12: asoc_simple_card_dai_init
static int asoc_simple_card_dai_init(struct snd_soc_pcm_runtime *rtd)
{
struct simple_card_data *priv = snd_soc_card_get_drvdata(rtd->card);
struct snd_soc_dai *codec = rtd->codec_dai;
struct snd_soc_dai *cpu = rtd->cpu_dai;
struct simple_dai_props *dai_props;
int num, ret;
num = rtd - rtd->card->rtd;
dai_props = &priv->dai_props[num];
ret = __asoc_simple_card_dai_init(codec, &dai_props->codec_dai);
if (ret < 0)
return ret;
ret = __asoc_simple_card_dai_init(cpu, &dai_props->cpu_dai);
if (ret < 0)
return ret;
if (gpio_is_valid(priv->gpio_hp_det)) {
snd_soc_jack_new(codec->codec, "Headphones", SND_JACK_HEADPHONE,
&simple_card_hp_jack);
snd_soc_jack_add_pins(&simple_card_hp_jack,
ARRAY_SIZE(simple_card_hp_jack_pins),
simple_card_hp_jack_pins);
simple_card_hp_jack_gpio.gpio = priv->gpio_hp_det;
snd_soc_jack_add_gpios(&simple_card_hp_jack, 1,
&simple_card_hp_jack_gpio);
}
if (gpio_is_valid(priv->gpio_mic_det)) {
snd_soc_jack_new(codec->codec, "Mic Jack", SND_JACK_MICROPHONE,
&simple_card_mic_jack);
snd_soc_jack_add_pins(&simple_card_mic_jack,
ARRAY_SIZE(simple_card_mic_jack_pins),
simple_card_mic_jack_pins);
simple_card_mic_jack_gpio.gpio = priv->gpio_mic_det;
snd_soc_jack_add_gpios(&simple_card_mic_jack, 1,
&simple_card_mic_jack_gpio);
}
return 0;
}
开发者ID:mikemvk,项目名称:linux-at91,代码行数:42,代码来源:simple-card.c
示例13: ams_delta_cx20442_init
static int ams_delta_cx20442_init(struct snd_soc_pcm_runtime *rtd)
{
struct snd_soc_dai *codec_dai = rtd->codec_dai;
struct snd_soc_card *card = rtd->card;
struct snd_soc_dapm_context *dapm = &card->dapm;
int ret;
/* Codec is ready, now add/activate board specific controls */
/* Store a pointer to the codec structure for tty ldisc use */
cx20442_codec = rtd->codec;
/* Set up digital mute if not provided by the codec */
if (!codec_dai->driver->ops) {
codec_dai->driver->ops = &ams_delta_dai_ops;
} else {
ams_delta_ops.startup = ams_delta_startup;
ams_delta_ops.shutdown = ams_delta_shutdown;
}
/* Add hook switch - can be used to control the codec from userspace
* even if line discipline fails */
ret = snd_soc_jack_new(rtd->codec, "hook_switch",
SND_JACK_HEADSET, &ams_delta_hook_switch);
if (ret)
dev_warn(card->dev,
"Failed to allocate resources for hook switch, "
"will continue without one.\n");
else {
ret = snd_soc_jack_add_gpios(&ams_delta_hook_switch,
ARRAY_SIZE(ams_delta_hook_switch_gpios),
ams_delta_hook_switch_gpios);
if (ret)
dev_warn(card->dev,
"Failed to set up hook switch GPIO line, "
"will continue with hook switch inactive.\n");
}
/* Register optional line discipline for over the modem control */
ret = tty_register_ldisc(N_V253, &cx81801_ops);
if (ret) {
dev_warn(card->dev,
"Failed to register line discipline, "
"will continue without any controls.\n");
return 0;
}
/* Set up initial pin constellation */
snd_soc_dapm_disable_pin(dapm, "Mouthpiece");
snd_soc_dapm_disable_pin(dapm, "Speaker");
snd_soc_dapm_disable_pin(dapm, "AGCIN");
snd_soc_dapm_disable_pin(dapm, "AGCOUT");
return 0;
}
开发者ID:383530895,项目名称:linux,代码行数:54,代码来源:ams-delta.c
示例14: palm27x_ac97_init
static int palm27x_ac97_init(struct snd_soc_pcm_runtime *rtd)
{
struct snd_soc_codec *codec = rtd->codec;
int err;
/* add palm27x specific widgets */
err = snd_soc_dapm_new_controls(codec, palm27x_dapm_widgets,
ARRAY_SIZE(palm27x_dapm_widgets));
if (err)
return err;
/* set up palm27x specific audio path audio_map */
err = snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map));
if (err)
return err;
/* connected pins */
if (machine_is_palmld())
snd_soc_dapm_enable_pin(codec, "MIC1");
snd_soc_dapm_enable_pin(codec, "HPOUTL");
snd_soc_dapm_enable_pin(codec, "HPOUTR");
snd_soc_dapm_enable_pin(codec, "LOUT2");
snd_soc_dapm_enable_pin(codec, "ROUT2");
/* not connected pins */
snd_soc_dapm_nc_pin(codec, "OUT3");
snd_soc_dapm_nc_pin(codec, "MONOOUT");
snd_soc_dapm_nc_pin(codec, "LINEINL");
snd_soc_dapm_nc_pin(codec, "LINEINR");
snd_soc_dapm_nc_pin(codec, "PCBEEP");
snd_soc_dapm_nc_pin(codec, "PHONE");
snd_soc_dapm_nc_pin(codec, "MIC2");
err = snd_soc_dapm_sync(codec);
if (err)
return err;
/* Jack detection API stuff */
err = snd_soc_jack_new(codec, "Headphone Jack",
SND_JACK_HEADPHONE, &hs_jack);
if (err)
return err;
err = snd_soc_jack_add_pins(&hs_jack, ARRAY_SIZE(hs_jack_pins),
hs_jack_pins);
if (err)
return err;
err = snd_soc_jack_add_gpios(&hs_jack, ARRAY_SIZE(hs_jack_gpios),
hs_jack_gpios);
return err;
}
开发者ID:Adjustxx,项目名称:Savaged-Zen,代码行数:53,代码来源:palm27x.c
示例15: omap4_aic31xx_init
/*
* omap4_aic31xx_init
* This function is to initialize the machine Driver.
*/
static int omap4_aic31xx_init(struct snd_soc_pcm_runtime *rtd)
{
struct snd_soc_codec *codec = rtd->codec;
struct snd_soc_dapm_context *dapm = &codec->dapm;
int ret = 0;
// int gpiostatus;
printk(KERN_INFO "entered the omap4_aic31xx_init function....\n");
/* Add OMAP4 specific widgets */
ret = snd_soc_dapm_new_controls(dapm, omap4_aic31xx_dapm_widgets,
ARRAY_SIZE(omap4_aic31xx_dapm_widgets));
if (ret) {
printk(KERN_INFO "snd_soc_dapm_new_controls failed.\n");
return ret;
}
DBG("snd_soc_dapm_new_controls passed..\n");
/* Set up OMAP4 specific audio path audio_map */
ret = snd_soc_dapm_add_routes(dapm, audio_map, ARRAY_SIZE(audio_map));
if (ret != 0)
printk(KERN_INFO "snd_soc_dapm_add_routes failed..%d\n", ret);
ret = snd_soc_dapm_sync(dapm);
if (ret != 0) {
printk(KERN_INFO "snd_soc_dapm_sync failed... %d\n", ret);
return ret;
}
/* Headset jack detection */
ret = snd_soc_jack_new(codec, "Headset Jack",
SND_JACK_HEADSET, &hs_jack);
if (ret != 0) {
printk(KERN_INFO "snd_soc_jack_new failed...\n");
return ret;
}
ret = snd_soc_jack_add_pins(&hs_jack, ARRAY_SIZE(hs_jack_pins),
hs_jack_pins);
if (ret != 0) {
printk(KERN_INFO "snd_soc_jack_add_pins failed... %d\n", ret);
return ret;
}
ret = snd_soc_jack_add_gpios(&hs_jack, ARRAY_SIZE(hs_jack_gpios),
hs_jack_gpios);
DBG("%s: Exiting\n", __func__);
return ret;
}
开发者ID:LeaderRider,项目名称:kernel3NookTablet,代码行数:56,代码来源:omap4_panda_aic31xx.c
示例16: aml_asoc_init
static int aml_asoc_init(struct snd_soc_pcm_runtime *rtd)
{
struct snd_soc_card *card = rtd->card;
struct snd_soc_codec *codec = rtd->codec;
//struct snd_soc_dai *codec_dai = rtd->codec_dai;
struct snd_soc_dapm_context *dapm = &codec->dapm;
struct aml_audio_private_data * p_aml_audio;
int ret = 0;
printk(KERN_DEBUG "enter %s \n", __func__);
p_aml_audio = snd_soc_card_get_drvdata(card);
/* Add specific widgets */
snd_soc_dapm_new_controls(dapm, aml_asoc_dapm_widgets,
ARRAY_SIZE(aml_asoc_dapm_widgets));
ret = snd_soc_jack_new(codec, "hp switch", SND_JACK_HEADPHONE, &p_aml_audio->jack);
if (ret) {
printk(KERN_WARNING "Failed to alloc resource for hp switch\n");
} else {
ret = snd_soc_jack_add_pins(&p_aml_audio->jack, ARRAY_SIZE(jack_pins), jack_pins);
if (ret) {
printk(KERN_WARNING "Failed to setup hp pins\n");
}
}
#if HP_IRQ
p_aml_audio->gpio_hp_det = of_get_named_gpio(card->dev->of_node,"rt5631_gpio",0);
if (gpio_is_valid(p_aml_audio->gpio_hp_det)) {
aml_audio_hp_jack_gpio.gpio = p_aml_audio->gpio_hp_det;
snd_soc_jack_add_gpios(&p_aml_audio->jack,
1, &aml_audio_hp_jack_gpio);
}
#endif
#if HP_DET
init_timer(&p_aml_audio->timer);
p_aml_audio->timer.function = aml_asoc_timer_func;
p_aml_audio->timer.data = (unsigned long)p_aml_audio;
p_aml_audio->data= (void*)card;
INIT_WORK(&p_aml_audio->work, aml_asoc_work_func);
mutex_init(&p_aml_audio->lock);
mutex_lock(&p_aml_audio->lock);
if (!p_aml_audio->timer_en) {
aml_audio_start_timer(p_aml_audio, msecs_to_jiffies(100));
}
mutex_unlock(&p_aml_audio->lock);
#endif
return 0;
}
开发者ID:akuster,项目名称:linux-meson,代码行数:52,代码来源:aml_m6_rt5631.c
示例17: rt5512_init
static int rt5512_init(struct snd_soc_pcm_runtime *rtd)
{
struct snd_soc_codec *codec = rtd->codec;
struct snd_soc_dapm_context *dapm = &codec->dapm;
//struct rt5512_codec_chip *chip = snd_soc_codec_get_drvdata(codec);
//int err = 0;
snd_soc_dapm_new_controls(dapm, rt5512_dapm_widgets,
ARRAY_SIZE(rt5512_dapm_widgets));
snd_soc_dapm_add_routes(dapm, rt5512_audio_map,
ARRAY_SIZE(rt5512_audio_map));
#if FOR_MID
snd_soc_dapm_disable_pin(dapm, "Main Mic");
snd_soc_dapm_disable_pin(dapm, "LineIn");
snd_soc_dapm_disable_pin(dapm, "Ext Spk");
snd_soc_dapm_disable_pin(dapm, "Headphone Jack");
#endif
#if 0
if (!chip->rt_jack)
{
err = snd_soc_jack_new(codec, "Headset Jack" , SND_JACK_HEADSET, &rk29_soc_jack);
if (err)
return err;
#if 0
// How-to use gpio, just declare snd_soc_jack_gpios, then it will
// help you to register a interrupt and set wakeup, and delayed schedule
// work
err = snd_soc_jack_add_gpios(&odroid_soc_jack, gpio_count, odroid_soc_jack_gpios);
if (err)
return err;
// If use this, when trigger, just use snd_soc_jack_get_type
// then snd_soc_jack_report to send the event to upper layer
err = snd_soc_jack_add_zones(&odroid_soc_jack, zone_count, tcc_soc_zones);
if (err)
return err;
#endif
err = rt5512_headset_keys(&rk29_soc_jack);
if (err)
return err;
chip->rt_jack = &rk29_soc_jack;
}
#endif
snd_soc_dapm_sync(dapm);
return 0;
}
开发者ID:lgeek,项目名称:linux-tronsmart-orion-r28,代码行数:51,代码来源:rk_rt5512.c
示例18: tegra_jack_init
int tegra_jack_init(struct snd_soc_codec *codec)
{
int ret;
if (!codec)
return -1;
tegra_wired_jack = kzalloc(sizeof(*tegra_wired_jack), GFP_KERNEL);
if (!tegra_wired_jack) {
pr_err("failed to allocate tegra_wired_jack\n");
return -ENOMEM;
}
/* Add jack detection */
ret = snd_soc_jack_new(codec->socdev->card, "Headset Jack",
SND_JACK_HEADSET, tegra_wired_jack);
if (ret < 0)
goto failed;
ret = snd_soc_jack_add_pins(tegra_wired_jack,
ARRAY_SIZE(hs_jack_pins),
hs_jack_pins);
if (ret < 0)
goto failed;
/* Addd h2w swith class support */
ret = switch_dev_register(&wired_switch_dev);
if (ret < 0)
goto switch_dev_failed;
snd_soc_jack_notifier_register(tegra_wired_jack,
&wired_switch_nb);
ret = platform_driver_register(&tegra_wired_jack_driver);
if (ret < 0)
goto platform_dev_failed;
return 0;
switch_dev_failed:
switch_dev_unregister(&wired_switch_dev);
platform_dev_failed:
platform_driver_unregister(&tegra_wired_jack_driver);
failed:
if (tegra_wired_jack) {
kfree(tegra_wired_jack);
tegra_wired_jack = 0;
}
return ret;
}
开发者ID:ahadjaman,项目名称:lge-kernel-startablet-ICS,代码行数:50,代码来源:tegra_wired_jack.c
示例19: rx51_aic34_init
static int rx51_aic34_init(struct snd_soc_pcm_runtime *rtd)
{
struct snd_soc_codec *codec = rtd->codec;
struct snd_soc_card *card = rtd->card;
struct rx51_audio_pdata *pdata = snd_soc_card_get_drvdata(card);
struct snd_soc_dapm_context *dapm = &codec->dapm;
int err;
/* Set up NC codec pins */
snd_soc_dapm_nc_pin(dapm, "MIC3L");
snd_soc_dapm_nc_pin(dapm, "MIC3R");
snd_soc_dapm_nc_pin(dapm, "LINE1R");
err = tpa6130a2_add_controls(codec);
if (err < 0) {
dev_err(card->dev, "Failed to add TPA6130A2 controls\n");
return err;
}
snd_soc_limit_volume(codec, "TPA6130A2 Headphone Playback Volume", 42);
err = omap_mcbsp_st_add_controls(rtd, 2);
if (err < 0) {
dev_err(card->dev, "Failed to add MCBSP controls\n");
return err;
}
/* AV jack detection */
err = snd_soc_jack_new(codec, "AV Jack",
SND_JACK_HEADSET | SND_JACK_VIDEOOUT,
&rx51_av_jack);
if (err) {
dev_err(card->dev, "Failed to add AV Jack\n");
return err;
}
/* prepare gpio for snd_soc_jack_add_gpios */
rx51_av_jack_gpios[0].gpio = desc_to_gpio(pdata->jack_detection_gpio);
devm_gpiod_put(card->dev, pdata->jack_detection_gpio);
err = snd_soc_jack_add_gpios(&rx51_av_jack,
ARRAY_SIZE(rx51_av_jack_gpios),
rx51_av_jack_gpios);
if (err) {
dev_err(card->dev, "Failed to add GPIOs\n");
return err;
}
return err;
}
开发者ID:Abioy,项目名称:kasan,代码行数:50,代码来源:rx51.c
示例20: smartq_wm8987_init
static int smartq_wm8987_init(struct snd_soc_codec *codec)
{
int err = 0;
/* Add SmartQ specific widgets */
snd_soc_dapm_new_controls(codec, wm8987_dapm_widgets,
ARRAY_SIZE(wm8987_dapm_widgets));
/* add SmartQ specific controls */
err = snd_soc_add_controls(codec, wm8987_smartq_controls,
ARRAY_SIZE(wm8987_smartq_controls));
if (err < 0)
return err;
/* setup SmartQ specific audio path */
snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map));
/* set endpoints to not connected */
snd_soc_dapm_nc_pin(codec, "LINPUT1");
snd_soc_dapm_nc_pin(codec, "RINPUT1");
snd_soc_dapm_nc_pin(codec, "OUT3");
snd_soc_dapm_nc_pin(codec, "ROUT1");
/* set endpoints to default off mode */
snd_soc_dapm_enable_pin(codec, "Internal Speaker");
snd_soc_dapm_enable_pin(codec, "Internal Mic");
snd_soc_dapm_disable_pin(codec, "Headphone Jack");
err = snd_soc_dapm_sync(codec);
if (err)
return err;
/* Headphone jack detection */
err = snd_soc_jack_new(&snd_soc_smartq, "Headphone Jack",
SND_JACK_HEADPHONE, &smartq_jack);
if (err)
return err;
err = snd_soc_jack_add_pins(&smartq_jack, ARRAY_SIZE(smartq_jack_pins),
smartq_jack_pins);
if (err)
return err;
err = snd_soc_jack_add_gpios(&smartq_jack,
ARRAY_SIZE(smartq_jack_gpios),
smartq_jack_gpios);
return err;
}
开发者ID:AdiPat,项目名称:i9003_Kernel,代码行数:50,代码来源:smartq_wm8987.c
注:本文中的snd_soc_jack_new函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论