Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions include/sound/soc-acpi-intel-ssp-common.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@
#define RT5682_ACPI_HID "10EC5682"
#define RT5682S_ACPI_HID "RTL5682"

/* Texas Instruments */
#define TAS2563_ACPI_HID "TXNW2563"

enum snd_soc_acpi_intel_codec {
CODEC_NONE,

Expand All @@ -63,6 +66,7 @@ enum snd_soc_acpi_intel_codec {
CODEC_RT1015P,
CODEC_RT1019P,
CODEC_RT1308,
CODEC_TAS2563,
};

enum snd_soc_acpi_intel_codec
Expand Down
5 changes: 5 additions & 0 deletions sound/soc/intel/boards/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@ config SND_SOC_INTEL_SOF_CIRRUS_COMMON
config SND_SOC_INTEL_SOF_NUVOTON_COMMON
tristate

config SND_SOC_INTEL_SOF_TI_COMMON
tristate

config SND_SOC_INTEL_SOF_BOARD_HELPERS
select SND_SOC_ACPI_INTEL_MATCH
tristate
Expand Down Expand Up @@ -327,11 +330,13 @@ config SND_SOC_INTEL_SOF_RT5682_MACH
select SND_SOC_RT5645
select SND_SOC_RT5682_I2C
select SND_SOC_RT5682S
select SND_SOC_TAS2781_I2C
select SND_SOC_DMIC
select SND_SOC_INTEL_HDA_DSP_COMMON
select SND_SOC_INTEL_SOF_BOARD_HELPERS
select SND_SOC_INTEL_SOF_MAXIM_COMMON
select SND_SOC_INTEL_SOF_REALTEK_COMMON
select SND_SOC_INTEL_SOF_TI_COMMON
select SND_SOC_ACPI_INTEL_MATCH
help
This adds support for ASoC machine driver for SOF platforms
Expand Down
3 changes: 3 additions & 0 deletions sound/soc/intel/boards/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -69,5 +69,8 @@ obj-$(CONFIG_SND_SOC_INTEL_SOF_CIRRUS_COMMON) += snd-soc-intel-sof-cirrus-common
snd-soc-intel-sof-nuvoton-common-y += sof_nuvoton_common.o
obj-$(CONFIG_SND_SOC_INTEL_SOF_NUVOTON_COMMON) += snd-soc-intel-sof-nuvoton-common.o

snd-soc-intel-sof-ti-common-y += sof_ti_common.o
obj-$(CONFIG_SND_SOC_INTEL_SOF_TI_COMMON) += snd-soc-intel-sof-ti-common.o

snd-soc-intel-sof-board-helpers-y += sof_board_helpers.o
obj-$(CONFIG_SND_SOC_INTEL_SOF_BOARD_HELPERS) += snd-soc-intel-sof-board-helpers.o
6 changes: 6 additions & 0 deletions sound/soc/intel/boards/sof_rt5682.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
#include "sof_board_helpers.h"
#include "sof_maxim_common.h"
#include "sof_realtek_common.h"
#include "sof_ti_common.h"

/* Driver-specific board quirks: from bit 0 to 7 */
#define SOF_RT5682_MCLK_EN BIT(0)
Expand Down Expand Up @@ -619,6 +620,9 @@ sof_card_dai_links_create(struct device *dev, struct snd_soc_card *card,
ctx->amp_link->init = rt5650_spk_init;
ctx->amp_link->ops = &sof_rt5682_ops;
break;
case CODEC_TAS2563:
sof_tas2563_dai_link(ctx->amp_link);
break;
default:
dev_err(dev, "invalid amp type %d\n", ctx->amp_type);
return -EINVAL;
Expand Down Expand Up @@ -766,6 +770,7 @@ static int sof_audio_probe(struct platform_device *pdev)
case CODEC_MAX98360A:
case CODEC_RT1019P:
case CODEC_RT5650:
case CODEC_TAS2563:
case CODEC_NONE:
/* no codec conf required */
break;
Expand Down Expand Up @@ -933,3 +938,4 @@ MODULE_LICENSE("GPL v2");
MODULE_IMPORT_NS("SND_SOC_INTEL_SOF_BOARD_HELPERS");
MODULE_IMPORT_NS("SND_SOC_INTEL_SOF_MAXIM_COMMON");
MODULE_IMPORT_NS("SND_SOC_INTEL_SOF_REALTEK_COMMON");
MODULE_IMPORT_NS("SND_SOC_INTEL_SOF_TI_COMMON");
76 changes: 76 additions & 0 deletions sound/soc/intel/boards/sof_ti_common.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
// SPDX-License-Identifier: GPL-2.0-only
//
// Copyright(c) 2025 Intel Corporation
#include <linux/module.h>
#include <linux/string.h>
#include <sound/pcm.h>
#include <sound/pcm_params.h>
#include <sound/soc.h>
#include <sound/soc-acpi.h>
#include <sound/soc-dai.h>
#include <sound/soc-dapm.h>
#include <sound/sof.h>
#include <uapi/sound/asound.h>
#include "../common/soc-intel-quirks.h"
#include "sof_ti_common.h"

/*
* Texas Instruments TAS2563 just mount one device to manage multiple devices,
* so the kcontrols, widgets and routes just keep one item, respectively.
*/
static const struct snd_kcontrol_new tas2563_spk_kcontrols[] = {
SOC_DAPM_PIN_SWITCH("Spk"),
};

static const struct snd_soc_dapm_widget tas2563_spk_dapm_widgets[] = {
SND_SOC_DAPM_SPK("Spk", NULL),
};

static const struct snd_soc_dapm_route tas2563_spk_dapm_routes[] = {
{ "Spk", NULL, "OUT" },
};

static struct snd_soc_dai_link_component tas2563_dai_link_components[] = {
{
.name = TAS2563_DEV0_NAME,
.dai_name = TAS2563_CODEC_DAI,
},
};

static int tas2563_init(struct snd_soc_pcm_runtime *rtd)
{
struct snd_soc_card *card = rtd->card;
int ret;

ret = snd_soc_dapm_new_controls(&card->dapm, tas2563_spk_dapm_widgets,
ARRAY_SIZE(tas2563_spk_dapm_widgets));
if (ret) {
dev_err(rtd->dev, "unable to add dapm widgets, ret %d\n", ret);
return ret;
}

ret = snd_soc_add_card_controls(card, tas2563_spk_kcontrols,
ARRAY_SIZE(tas2563_spk_kcontrols));
if (ret) {
dev_err(rtd->dev, "unable to add controls, ret %d\n", ret);
return ret;
}

ret = snd_soc_dapm_add_routes(&card->dapm, tas2563_spk_dapm_routes,
ARRAY_SIZE(tas2563_spk_dapm_routes));
if (ret)
dev_err(rtd->dev, "unable to add dapm routes, ret %d\n", ret);

return ret;
}

void sof_tas2563_dai_link(struct snd_soc_dai_link *link)
{
link->codecs = tas2563_dai_link_components;
link->num_codecs = ARRAY_SIZE(tas2563_dai_link_components);
link->init = tas2563_init;
}
EXPORT_SYMBOL_NS(sof_tas2563_dai_link, "SND_SOC_INTEL_SOF_TI_COMMON");

MODULE_DESCRIPTION("ASoC Intel SOF Texas Instruments helpers");
MODULE_LICENSE("GPL");
24 changes: 24 additions & 0 deletions sound/soc/intel/boards/sof_ti_common.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright(c) 2025 Intel Corporation.
*/

/*
* This file defines data structures used in Machine Driver for Intel
* platforms with Texas Instruments Codecs.
*/
#ifndef __SOF_TI_COMMON_H
#define __SOF_TI_COMMON_H

#include <sound/soc.h>
#include <sound/soc-acpi-intel-ssp-common.h>

/*
* Texas Instruments TAS2563
*/
#define TAS2563_CODEC_DAI "tasdev_codec"
#define TAS2563_DEV0_NAME "i2c-" TAS2563_ACPI_HID ":00"

void sof_tas2563_dai_link(struct snd_soc_dai_link *link);

#endif /* __SOF_TI_COMMON_H */
3 changes: 3 additions & 0 deletions sound/soc/intel/common/soc-acpi-intel-ssp-common.c
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ static const struct codec_map amps[] = {
CODEC_MAP_ENTRY("RT1019P", "rt1019", RT1019P_ACPI_HID, CODEC_RT1019P),
CODEC_MAP_ENTRY("RT1308", "rt1308", RT1308_ACPI_HID, CODEC_RT1308),

/* Texas Instruments */
CODEC_MAP_ENTRY("TAS2563", "tas2563", TAS2563_ACPI_HID, CODEC_TAS2563),

/*
* Monolithic components
*
Expand Down
Loading