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;}
本文介绍了一种在 SoC (System on Chip) 设备中配置 DAPM (Digital Audio Power Management) 路由的方法。具体展示了如何通过函数 `snd_soc_dapm_add_routes` 添加音频路由,并在设备抽象接口 (Dai) 探测过程中为播放和捕获路径设置路由。
510

被折叠的 条评论
为什么被折叠?



