brintos

brintos / linux-shallow public Read only

0
0
Text · 1.7 KiB · 549a412 Raw
74 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2/*3 * This file defines data structures and functions used in Machine4 * Driver for Intel platforms with Nuvoton Codecs.5 *6 * Copyright 2023 Intel Corporation.7 */8#include <linux/module.h>9#include <sound/sof.h>10#include "sof_nuvoton_common.h"11 12/*13 * Nuvoton NAU831814 */15static const struct snd_kcontrol_new nau8318_kcontrols[] = {16	SOC_DAPM_PIN_SWITCH("Spk"),17};18 19static const struct snd_soc_dapm_widget nau8318_widgets[] = {20	SND_SOC_DAPM_SPK("Spk", NULL),21};22 23static const struct snd_soc_dapm_route nau8318_routes[] = {24	{ "Spk", NULL, "Speaker" },25};26 27static struct snd_soc_dai_link_component nau8318_components[] = {28	{29		.name = NAU8318_DEV0_NAME,30		.dai_name = NAU8318_CODEC_DAI,31	}32};33 34static int nau8318_init(struct snd_soc_pcm_runtime *rtd)35{36	struct snd_soc_card *card = rtd->card;37	int ret;38 39	ret = snd_soc_dapm_new_controls(&card->dapm, nau8318_widgets,40					ARRAY_SIZE(nau8318_widgets));41	if (ret) {42		dev_err(rtd->dev, "fail to add nau8318 widgets, ret %d\n", ret);43		return ret;44	}45 46	ret = snd_soc_add_card_controls(card, nau8318_kcontrols,47					ARRAY_SIZE(nau8318_kcontrols));48	if (ret) {49		dev_err(rtd->dev, "fail to add nau8318 kcontrols, ret %d\n", ret);50		return ret;51	}52 53	ret = snd_soc_dapm_add_routes(&card->dapm, nau8318_routes,54				      ARRAY_SIZE(nau8318_routes));55 56	if (ret) {57		dev_err(rtd->dev, "fail to add nau8318 routes, ret %d\n", ret);58		return ret;59	}60 61	return ret;62}63 64void nau8318_set_dai_link(struct snd_soc_dai_link *link)65{66	link->codecs = nau8318_components;67	link->num_codecs = ARRAY_SIZE(nau8318_components);68	link->init = nau8318_init;69}70EXPORT_SYMBOL_NS(nau8318_set_dai_link, SND_SOC_INTEL_SOF_NUVOTON_COMMON);71 72MODULE_DESCRIPTION("ASoC Intel SOF Nuvoton helpers");73MODULE_LICENSE("GPL");74