用户态amixer静音关喇叭
内核代码
//驱动中
static int ac_speaker_event(struct snd_soc_dapm_widget *w,struct snd_kcontrol *k, int event) {switch (event) {case SND_SOC_DAPM_POST_PMU:gpio_set_value(sunxi_internal_codec->spk_gpio.gpio, 1); // 控制speak电源开break;case SND_SOC_DAPM_PRE_PMD:gpio_set_value(sunxi_internal_codec->spk_gpio.gpio, 0); // 控制speak电源关
break;
}
static const struct snd_soc_dapm_widget ac_dapm_widgets[] = {
//............其他代码省略, 注意下面的是SND_SOC_DAPM这是电源控制相关的,在用户态呈显出来的会多加个Switch,比如下面的Speaker变成Speaker SwitchSND_SOC_DAPM_SPK("Speaker", ac_speaker_event),
}
用户态控制
所以我们可以通过amixer在用户态进行speak的开关控制
amixer controls命令输出如下
numid=21,iface=MIXER,name=‘Speaker Switch’
所以可以通过控制’Speaker Switch’来打开或关闭喇叭播放,上面得到numid=21得到下面关闭命令
amixer cset numid=21 off
作者:帅得不敢出门