probe函数

本文介绍了一种在 SoC (System on Chip) 设备中配置 DAPM (Digital Audio Power Management) 路由的方法。具体展示了如何通过函数 `snd_soc_dapm_add_routes` 添加音频路由,并在设备抽象接口 (Dai) 探测过程中为播放和捕获路径设置路由。
int snd_soc_dapm_add_routes(struct snd_soc_dapm_context *dapm, const struct snd_soc_dapm_route *route, int num){int i, r, ret = 0;mutex_lock_nested(&dapm->card->dapm_mutex, SND_SOC_DAPM_CLASS_INIT);for (i = 0; i < num; i++) {r = snd_soc_dapm_add_route(dapm, route);if (r < 0) {dev_err(dapm->dev, "ASoC: Failed to add route %s -> %s -> %s\n",route->source,route->control ? route->control : "direct",route->sink);ret = r;}route++;}mutex_unlock(&dapm->card->dapm_mutex);return ret;}int snd_soc_dapm_add_routes(struct snd_soc_dapm_context *dapm, const struct snd_soc_dapm_route *route, int num){int i, r, ret = 0;mutex_lock_nested(&dapm->card->dapm_mutex, SND_SOC_DAPM_CLASS_INIT);for (i = 0; i < num; i++) {r = snd_soc_dapm_add_route(dapm, route);if (r < 0) {dev_err(dapm->dev, "ASoC: Failed to add route %s -> %s -> %s\n",route->source,route->control ? route->control : "direct",route->sink);ret = r;}route++;}mutex_unlock(&dapm->card->dapm_mutex);return ret;}


写几句


static int fe_dai_probe(struct snd_soc_dai *dai){struct snd_soc_dapm_route intercon;if (!dai || !dai->driver) {pr_err("%s invalid params\n", __func__);return -EINVAL;}memset(&intercon, 0 , sizeof(intercon));if (dai->driver->playback.stream_name &&dai->driver->playback.aif_name)
 {dev_dbg(dai->dev, "%s add route for widget %s", __func__, dai->driver->playback.stream_name);intercon.source = dai->driver->playback.stream_name;intercon.sink = dai->driver->playback.aif_name;dev_dbg(dai->dev, "%s src %s sink %s\n", __func__, intercon.source,
 intercon.sink);snd_soc_dapm_add_routes(&dai->dapm, &intercon, 1);}if (dai->driver->capture.stream_name && dai->driver->capture.aif_name) {dev_dbg(dai->dev, "%s add route for widget %s", __func__, dai->driver->capture.stream_name);intercon.sink = dai->driver->capture.stream_name;intercon.source
 = dai->driver->capture.aif_name;dev_dbg(dai->dev, "%s src %s sink %s\n", __func__, intercon.source, intercon.sink);snd_soc_dapm_add_routes(&dai->dapm, &intercon, 1);}return 0;}




评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值