49 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2// This file incorporates work covered by the following copyright notice:3// Copyright (c) 2023 Intel Corporation4// Copyright (c) 2024 Advanced Micro Devices, Inc.5 6/*7 * soc_sdw_rt712_sdca - Helpers to handle RT712-SDCA from generic machine driver8 */9 10#include <linux/device.h>11#include <linux/errno.h>12#include <linux/soundwire/sdw.h>13#include <linux/soundwire/sdw_type.h>14#include <sound/control.h>15#include <sound/soc.h>16#include <sound/soc-acpi.h>17#include <sound/soc-dapm.h>18#include <sound/soc_sdw_utils.h>19 20/*21 * dapm routes for rt712 spk will be registered dynamically according22 * to the number of rt712 spk used. The first two entries will be registered23 * for one codec case, and the last two entries are also registered24 * if two rt712s are used.25 */26static const struct snd_soc_dapm_route rt712_spk_map[] = {27 { "Speaker", NULL, "rt712 SPOL" },28 { "Speaker", NULL, "rt712 SPOR" },29};30 31int asoc_sdw_rt712_spk_rtd_init(struct snd_soc_pcm_runtime *rtd, struct snd_soc_dai *dai)32{33 struct snd_soc_card *card = rtd->card;34 int ret;35 36 card->components = devm_kasprintf(card->dev, GFP_KERNEL,37 "%s spk:rt712",38 card->components);39 if (!card->components)40 return -ENOMEM;41 42 ret = snd_soc_dapm_add_routes(&card->dapm, rt712_spk_map, ARRAY_SIZE(rt712_spk_map));43 if (ret)44 dev_err(rtd->dev, "failed to add SPK map: %d\n", ret);45 46 return ret;47}48EXPORT_SYMBOL_NS(asoc_sdw_rt712_spk_rtd_init, SND_SOC_SDW_UTILS);49