asoc: machine driver and bring up changes for holi.

add machine driver for holi.
compile wsa881x analog driver for holi.
compile wcd937x and wcd938x drivers for holi.

Change-Id: Icba23cc4b1dd40f7dec6f16bb67a6fae26317f80
Signed-off-by: Vangala, Amarnath <avangala@codeaurora.org>
This commit is contained in:
Vangala, Amarnath
2020-07-01 16:00:27 +05:30
parent 33ea77356f
commit d6f2eaa495
10 changed files with 7652 additions and 25 deletions

View File

@@ -18,6 +18,9 @@ endif
ifeq ($(CONFIG_ARCH_LAHAINA), y) ifeq ($(CONFIG_ARCH_LAHAINA), y)
include $(srctree)/techpack/audio/config/lahainaauto.conf include $(srctree)/techpack/audio/config/lahainaauto.conf
endif endif
ifeq ($(CONFIG_ARCH_HOLI), y)
include $(srctree)/techpack/audio/config/holiauto.conf
endif
endif endif
# Use USERINCLUDE when you must reference the UAPI directories only. # Use USERINCLUDE when you must reference the UAPI directories only.
@@ -51,6 +54,10 @@ ifeq ($(CONFIG_ARCH_LAHAINA), y)
LINUXINCLUDE += \ LINUXINCLUDE += \
-include $(srctree)/techpack/audio/config/lahainaautoconf.h -include $(srctree)/techpack/audio/config/lahainaautoconf.h
endif endif
ifeq ($(CONFIG_ARCH_HOLI), y)
LINUXINCLUDE += \
-include $(srctree)/techpack/audio/config/holiautoconf.h
endif
obj-y += soc/ obj-y += soc/
obj-y += dsp/ obj-y += dsp/

View File

@@ -136,6 +136,11 @@ ifdef CONFIG_SND_SOC_LAHAINA
MACHINE_OBJS += lahaina.o MACHINE_OBJS += lahaina.o
endif endif
# for HOLI sound card driver
ifdef CONFIG_SND_SOC_HOLI
MACHINE_OBJS += holi.o
endif
ifdef CONFIG_SND_SOC_LITO ifdef CONFIG_SND_SOC_LITO
MACHINE_OBJS += kona.o MACHINE_OBJS += kona.o
endif endif
@@ -254,6 +259,9 @@ machine_dlkm-y := $(MACHINE_OBJS)
obj-$(CONFIG_SND_SOC_LAHAINA) += machine_dlkm.o obj-$(CONFIG_SND_SOC_LAHAINA) += machine_dlkm.o
machine_dlkm-y := $(MACHINE_OBJS) machine_dlkm-y := $(MACHINE_OBJS)
obj-$(CONFIG_SND_SOC_HOLI) += machine_dlkm.o
machine_dlkm-y := $(MACHINE_OBJS)
obj-$(CONFIG_SND_SOC_LITO) += machine_dlkm.o obj-$(CONFIG_SND_SOC_LITO) += machine_dlkm.o
machine_dlkm-y := $(MACHINE_OBJS) machine_dlkm-y := $(MACHINE_OBJS)

View File

@@ -26,8 +26,6 @@
#include "wcd937x.h" #include "wcd937x.h"
#include "internal.h" #include "internal.h"
#define DRV_NAME "wcd937x_codec"
#define WCD9370_VARIANT 0 #define WCD9370_VARIANT 0
#define WCD9375_VARIANT 5 #define WCD9375_VARIANT 5
#define WCD937X_VARIANT_ENTRY_SIZE 32 #define WCD937X_VARIANT_ENTRY_SIZE 32
@@ -40,6 +38,18 @@
#define NUM_ATTEMPTS 5 #define NUM_ATTEMPTS 5
#define WCD937X_RATES (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 |\
SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_48000 |\
SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_192000 |\
SNDRV_PCM_RATE_384000)
/* Fractional Rates */
#define WCD937X_FRAC_RATES (SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_88200 |\
SNDRV_PCM_RATE_176400 | SNDRV_PCM_RATE_352800)
#define WCD937X_FORMATS (SNDRV_PCM_FMTBIT_S16_LE |\
SNDRV_PCM_FMTBIT_S24_LE |\
SNDRV_PCM_FMTBIT_S24_3LE | SNDRV_PCM_FMTBIT_S32_LE)
enum { enum {
CODEC_TX = 0, CODEC_TX = 0,
CODEC_RX, CODEC_RX,
@@ -91,12 +101,36 @@ static struct regmap_irq_chip wcd937x_regmap_irq_chip = {
.mask_base = WCD937X_DIGITAL_INTR_MASK_0, .mask_base = WCD937X_DIGITAL_INTR_MASK_0,
.ack_base = WCD937X_DIGITAL_INTR_CLEAR_0, .ack_base = WCD937X_DIGITAL_INTR_CLEAR_0,
.use_ack = 1, .use_ack = 1,
.clear_ack = 1,
.type_base = WCD937X_DIGITAL_INTR_LEVEL_0, .type_base = WCD937X_DIGITAL_INTR_LEVEL_0,
.runtime_pm = false, .runtime_pm = false,
.handle_post_irq = wcd937x_handle_post_irq, .handle_post_irq = wcd937x_handle_post_irq,
.irq_drv_data = NULL, .irq_drv_data = NULL,
}; };
static struct snd_soc_dai_driver wcd937x_dai[] = {
{
.name = "wcd937x_cdc",
.playback = {
.stream_name = "WCD937X_AIF Playback",
.rates = WCD937X_RATES | WCD937X_FRAC_RATES,
.formats = WCD937X_FORMATS,
.rate_max = 384000,
.rate_min = 8000,
.channels_min = 1,
.channels_max = 4,
},
.capture = {
.stream_name = "WCD937X_AIF Capture",
.rates = WCD937X_RATES,
.formats = WCD937X_FORMATS,
.rate_max = 192000,
.rate_min = 8000,
.channels_min = 1,
.channels_max = 4,
},
},
};
static int wcd937x_handle_post_irq(void *data) static int wcd937x_handle_post_irq(void *data)
{ {
struct wcd937x_priv *wcd937x = data; struct wcd937x_priv *wcd937x = data;
@@ -278,7 +312,7 @@ static int wcd937x_tx_connect_port(struct snd_soc_component *component,
u8 ch_mask; u8 ch_mask;
u32 ch_rate; u32 ch_rate;
u8 ch_type = 0; u8 ch_type = 0;
int slave_port_idx; int slave_ch_idx;
u8 num_port = 1; u8 num_port = 1;
int ret = 0; int ret = 0;
@@ -2224,15 +2258,15 @@ static const struct snd_soc_dapm_widget wcd937x_dapm_widgets[] = {
SND_SOC_DAPM_POST_PMD), SND_SOC_DAPM_POST_PMD),
/* micbias widgets*/ /* micbias widgets*/
SND_SOC_DAPM_MICBIAS_E("MIC BIAS1", SND_SOC_NOPM, 0, 0, SND_SOC_DAPM_SUPPLY("MIC BIAS1", SND_SOC_NOPM, 0, 0,
wcd937x_codec_enable_micbias, wcd937x_codec_enable_micbias,
SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU |
SND_SOC_DAPM_POST_PMD), SND_SOC_DAPM_POST_PMD),
SND_SOC_DAPM_MICBIAS_E("MIC BIAS2", SND_SOC_NOPM, 0, 0, SND_SOC_DAPM_SUPPLY("MIC BIAS2", SND_SOC_NOPM, 0, 0,
wcd937x_codec_enable_micbias, wcd937x_codec_enable_micbias,
SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU |
SND_SOC_DAPM_POST_PMD), SND_SOC_DAPM_POST_PMD),
SND_SOC_DAPM_MICBIAS_E("MIC BIAS3", SND_SOC_NOPM, 0, 0, SND_SOC_DAPM_SUPPLY("MIC BIAS3", SND_SOC_NOPM, 0, 0,
wcd937x_codec_enable_micbias, wcd937x_codec_enable_micbias,
SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU |
SND_SOC_DAPM_POST_PMD), SND_SOC_DAPM_POST_PMD),
@@ -2316,15 +2350,15 @@ static const struct snd_soc_dapm_widget wcd937x_dapm_widgets[] = {
SND_SOC_DAPM_OUTPUT("HPHR"), SND_SOC_DAPM_OUTPUT("HPHR"),
/* micbias pull up widgets*/ /* micbias pull up widgets*/
SND_SOC_DAPM_MICBIAS_E("VA MIC BIAS1", SND_SOC_NOPM, 0, 0, SND_SOC_DAPM_SUPPLY("VA MIC BIAS1", SND_SOC_NOPM, 0, 0,
wcd937x_codec_enable_micbias_pullup, wcd937x_codec_enable_micbias_pullup,
SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU |
SND_SOC_DAPM_POST_PMD), SND_SOC_DAPM_POST_PMD),
SND_SOC_DAPM_MICBIAS_E("VA MIC BIAS2", SND_SOC_NOPM, 0, 0, SND_SOC_DAPM_SUPPLY("VA MIC BIAS2", SND_SOC_NOPM, 0, 0,
wcd937x_codec_enable_micbias_pullup, wcd937x_codec_enable_micbias_pullup,
SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU |
SND_SOC_DAPM_POST_PMD), SND_SOC_DAPM_POST_PMD),
SND_SOC_DAPM_MICBIAS_E("VA MIC BIAS3", SND_SOC_NOPM, 0, 0, SND_SOC_DAPM_SUPPLY("VA MIC BIAS3", SND_SOC_NOPM, 0, 0,
wcd937x_codec_enable_micbias_pullup, wcd937x_codec_enable_micbias_pullup,
SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU |
SND_SOC_DAPM_POST_PMD), SND_SOC_DAPM_POST_PMD),
@@ -2576,19 +2610,25 @@ int wcd937x_info_create_codec_entry(struct snd_info_entry *codec_root,
return 0; return 0;
} }
card = component->card; card = component->card;
priv->entry = snd_info_create_subdir(codec_root->module, priv->entry = snd_info_create_module_entry(codec_root->module,
"wcd937x", codec_root); "wcd937x", codec_root);
if (!priv->entry) { if (!priv->entry) {
dev_dbg(component->dev, "%s: failed to create wcd937x entry\n", dev_dbg(component->dev, "%s: failed to create wcd937x entry\n",
__func__); __func__);
return -ENOMEM; return -ENOMEM;
} }
priv->entry->mode = S_IFDIR | 0555;
if (snd_info_register(priv->entry) < 0) {
snd_info_free_entry(priv->entry);
return -ENOMEM;
}
version_entry = snd_info_create_card_entry(card->snd_card, version_entry = snd_info_create_card_entry(card->snd_card,
"version", "version",
priv->entry); priv->entry);
if (!version_entry) { if (!version_entry) {
dev_dbg(component->dev, "%s: failed to create wcd937x version entry\n", dev_dbg(component->dev, "%s: failed to create wcd937x version entry\n",
__func__); __func__);
snd_info_free_entry(priv->entry);
return -ENOMEM; return -ENOMEM;
} }
@@ -2599,6 +2639,7 @@ int wcd937x_info_create_codec_entry(struct snd_info_entry *codec_root,
if (snd_info_register(version_entry) < 0) { if (snd_info_register(version_entry) < 0) {
snd_info_free_entry(version_entry); snd_info_free_entry(version_entry);
snd_info_free_entry(priv->entry);
return -ENOMEM; return -ENOMEM;
} }
priv->version_entry = version_entry; priv->version_entry = version_entry;
@@ -2610,6 +2651,8 @@ int wcd937x_info_create_codec_entry(struct snd_info_entry *codec_root,
dev_dbg(component->dev, dev_dbg(component->dev,
"%s: failed to create wcd937x variant entry\n", "%s: failed to create wcd937x variant entry\n",
__func__); __func__);
snd_info_free_entry(version_entry);
snd_info_free_entry(priv->entry);
return -ENOMEM; return -ENOMEM;
} }
@@ -2620,6 +2663,8 @@ int wcd937x_info_create_codec_entry(struct snd_info_entry *codec_root,
if (snd_info_register(variant_entry) < 0) { if (snd_info_register(variant_entry) < 0) {
snd_info_free_entry(variant_entry); snd_info_free_entry(variant_entry);
snd_info_free_entry(version_entry);
snd_info_free_entry(priv->entry);
return -ENOMEM; return -ENOMEM;
} }
priv->variant_entry = variant_entry; priv->variant_entry = variant_entry;
@@ -2781,7 +2826,7 @@ static void wcd937x_soc_codec_remove(struct snd_soc_component *component)
} }
static const struct snd_soc_component_driver soc_codec_dev_wcd937x = { static const struct snd_soc_component_driver soc_codec_dev_wcd937x = {
.name = DRV_NAME, .name = WCD937X_DRV_NAME,
.probe = wcd937x_soc_codec_probe, .probe = wcd937x_soc_codec_probe,
.remove = wcd937x_soc_codec_remove, .remove = wcd937x_soc_codec_remove,
.controls = wcd937x_snd_controls, .controls = wcd937x_snd_controls,
@@ -3185,7 +3230,7 @@ static int wcd937x_bind(struct device *dev)
wcd_disable_irq(&wcd937x->irq_info, WCD937X_IRQ_AUX_PDM_WD_INT); wcd_disable_irq(&wcd937x->irq_info, WCD937X_IRQ_AUX_PDM_WD_INT);
ret = snd_soc_register_component(dev, &soc_codec_dev_wcd937x, ret = snd_soc_register_component(dev, &soc_codec_dev_wcd937x,
NULL, 0); wcd937x_dai, ARRAY_SIZE(wcd937x_dai));
if (ret) { if (ret) {
dev_err(dev, "%s: Codec registration failed\n", dev_err(dev, "%s: Codec registration failed\n",
__func__); __func__);

View File

@@ -10,12 +10,14 @@
#define WCD937X_MAX_SLAVE_CH_TYPES 10 #define WCD937X_MAX_SLAVE_CH_TYPES 10
#define ZERO 0 #define ZERO 0
struct swr_slave_ch_map { #define WCD937X_DRV_NAME "wcd937x_codec"
struct wcd937x_swr_slave_ch_map {
u8 ch_type; u8 ch_type;
u8 index; u8 index;
}; };
static const struct swr_slave_ch_map swr_slv_tx_ch_idx[] = { static const struct wcd937x_swr_slave_ch_map wcd937x_swr_slv_tx_ch_idx[] = {
{ADC1, 0}, {ADC1, 0},
{ADC2, 1}, {ADC2, 1},
{ADC3, 2}, {ADC3, 2},
@@ -28,7 +30,7 @@ static const struct swr_slave_ch_map swr_slv_tx_ch_idx[] = {
{DMIC5, 9}, {DMIC5, 9},
}; };
static int swr_master_ch_map[] = { static int wcd937x_swr_master_ch_map[] = {
ZERO, ZERO,
SWRM_TX1_CH1, SWRM_TX1_CH1,
SWRM_TX1_CH2, SWRM_TX1_CH2,
@@ -54,14 +56,14 @@ static inline int wcd937x_slave_get_master_ch_val(int ch)
int i; int i;
for (i = 0; i < WCD937X_MAX_SLAVE_CH_TYPES; i++) for (i = 0; i < WCD937X_MAX_SLAVE_CH_TYPES; i++)
if (ch == swr_master_ch_map[i]) if (ch == wcd937x_swr_master_ch_map[i])
return i; return i;
return 0; return 0;
} }
static inline int wcd937x_slave_get_master_ch(int idx) static inline int wcd937x_slave_get_master_ch(int idx)
{ {
return swr_master_ch_map[idx]; return wcd937x_swr_master_ch_map[idx];
} }
static inline int wcd937x_slave_get_slave_ch_val(int ch) static inline int wcd937x_slave_get_slave_ch_val(int ch)
@@ -69,8 +71,8 @@ static inline int wcd937x_slave_get_slave_ch_val(int ch)
int i; int i;
for (i = 0; i < WCD937X_MAX_SLAVE_CH_TYPES; i++) for (i = 0; i < WCD937X_MAX_SLAVE_CH_TYPES; i++)
if (ch == swr_slv_tx_ch_idx[i].ch_type) if (ch == wcd937x_swr_slv_tx_ch_idx[i].ch_type)
return swr_slv_tx_ch_idx[i].index; return wcd937x_swr_slv_tx_ch_idx[i].index;
return -EINVAL; return -EINVAL;
} }

View File

@@ -35,6 +35,19 @@
#define SPK_GAIN_12DB 4 #define SPK_GAIN_12DB 4
#define WIDGET_NAME_MAX_SIZE 80 #define WIDGET_NAME_MAX_SIZE 80
#define MAX_NAME_LEN 30
#define WSA881X_RATES (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 |\
SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_48000 |\
SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_192000 |\
SNDRV_PCM_RATE_384000)
/* Fractional Rates */
#define WSA881X_FRAC_RATES (SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_88200 |\
SNDRV_PCM_RATE_176400 | SNDRV_PCM_RATE_352800)
#define WSA881X_FORMATS (SNDRV_PCM_FMTBIT_S16_LE |\
SNDRV_PCM_FMTBIT_S24_LE |\
SNDRV_PCM_FMTBIT_S24_3LE | SNDRV_PCM_FMTBIT_S32_LE)
/* /*
* Private data Structure for wsa881x. All parameters related to * Private data Structure for wsa881x. All parameters related to
* WSA881X codec needs to be defined here. * WSA881X codec needs to be defined here.
@@ -66,6 +79,9 @@ struct wsa881x_pdata {
struct device_node *wsa_vi_gpio_p; struct device_node *wsa_vi_gpio_p;
struct device_node *wsa_clk_gpio_p; struct device_node *wsa_clk_gpio_p;
struct device_node *wsa_reset_gpio_p; struct device_node *wsa_reset_gpio_p;
char *wsa881x_name_prefix;
struct snd_soc_dai_driver *dai_driver;
struct snd_soc_component_driver *driver;
}; };
enum { enum {
@@ -1190,7 +1206,8 @@ static void wsa881x_remove(struct snd_soc_component *component)
mutex_destroy(&wsa881x->res_lock); mutex_destroy(&wsa881x->res_lock);
} }
static const struct snd_soc_component_driver soc_component_dev_wsa881x = { static const struct snd_soc_component_driver soc_codec_dev_wsa881x = {
.name = "",
.probe = wsa881x_probe, .probe = wsa881x_probe,
.remove = wsa881x_remove, .remove = wsa881x_remove,
@@ -1205,6 +1222,21 @@ static const struct snd_soc_component_driver soc_component_dev_wsa881x = {
.num_dapm_routes = ARRAY_SIZE(wsa881x_audio_map), .num_dapm_routes = ARRAY_SIZE(wsa881x_audio_map),
}; };
static struct snd_soc_dai_driver wsa_dai[] = {
{
.name = "",
.playback = {
.stream_name = "",
.rates = WSA881X_RATES | WSA881X_FRAC_RATES,
.formats = WSA881X_FORMATS,
.rate_max = 192000,
.rate_min = 8000,
.channels_min = 1,
.channels_max = 2,
},
},
};
static int wsa881x_reset(struct wsa881x_pdata *pdata, bool enable) static int wsa881x_reset(struct wsa881x_pdata *pdata, bool enable)
{ {
int ret = 0; int ret = 0;
@@ -1332,6 +1364,8 @@ static int wsa881x_i2c_probe(struct i2c_client *client,
int wsa881x_index = 0; int wsa881x_index = 0;
struct wsa881x_pdata *pdata = NULL; struct wsa881x_pdata *pdata = NULL;
struct clk *wsa_mclk = NULL; struct clk *wsa_mclk = NULL;
char buffer[MAX_NAME_LEN];
const char *wsa881x_name_prefix_of = NULL;
ret = wsa881x_i2c_get_client_index(client, &wsa881x_index); ret = wsa881x_i2c_get_client_index(client, &wsa881x_index);
if (ret != 0) { if (ret != 0) {
@@ -1454,13 +1488,70 @@ static int wsa881x_i2c_probe(struct i2c_client *client,
} }
wsa881x_presence_count++; wsa881x_presence_count++;
wsa881x_probing_count++; wsa881x_probing_count++;
ret = snd_soc_register_component(&client->dev,
&soc_component_dev_wsa881x, ret = of_property_read_string(client->dev.of_node,
NULL, 0); "qcom,wsa-prefix", &wsa881x_name_prefix_of);
if (ret < 0) if (ret) {
dev_err(&client->dev,
"%s: Looking up %s property in node %s failed\n",
__func__, "qcom,wsa-prefix",
client->dev.of_node->full_name);
goto err1; goto err1;
}
pdata->driver = devm_kzalloc(&client->dev,
sizeof(struct snd_soc_component_driver),
GFP_KERNEL);
if (!pdata->driver) {
ret = -ENOMEM;
goto err1;
}
memcpy(pdata->driver, &soc_codec_dev_wsa881x,
sizeof(struct snd_soc_component_driver));
pdata->dai_driver = devm_kzalloc(&client->dev,
sizeof(struct snd_soc_dai_driver),
GFP_KERNEL);
if (!pdata->dai_driver) {
ret = -ENOMEM;
goto err_mem;
}
memcpy(pdata->dai_driver, wsa_dai,
sizeof(struct snd_soc_dai_driver));
snprintf(buffer, sizeof(buffer), "wsa-codec.%d", wsa881x_index);
pdata->driver->name = kstrndup(buffer,
strlen(buffer), GFP_KERNEL);
snprintf(buffer, sizeof(buffer), "wsa_rx%d", wsa881x_index);
pdata->dai_driver->name =
kstrndup(buffer, strlen(buffer), GFP_KERNEL);
snprintf(buffer, sizeof(buffer),
"WSA881X_AIF%d Playback", wsa881x_index);
pdata->dai_driver->playback.stream_name =
kstrndup(buffer, strlen(buffer), GFP_KERNEL);
/* Number of DAI's used is 1 */
ret = snd_soc_register_component(&client->dev,
pdata->driver, pdata->dai_driver, 1);
pdata->status = WSA881X_STATUS_I2C; pdata->status = WSA881X_STATUS_I2C;
} }
err_mem:
kfree(pdata->wsa881x_name_prefix);
if (pdata->dai_driver) {
kfree(pdata->dai_driver->name);
kfree(pdata->dai_driver->playback.stream_name);
kfree(pdata->dai_driver);
}
if (pdata->driver) {
kfree(pdata->driver->name);
kfree(pdata->driver);
}
err1: err1:
wsa881x_reset(pdata, false); wsa881x_reset(pdata, false);
err: err:
@@ -1472,6 +1563,16 @@ static int wsa881x_i2c_remove(struct i2c_client *client)
struct wsa881x_pdata *wsa881x = client->dev.platform_data; struct wsa881x_pdata *wsa881x = client->dev.platform_data;
snd_soc_unregister_component(&client->dev); snd_soc_unregister_component(&client->dev);
kfree(wsa881x->wsa881x_name_prefix);
if (wsa881x->dai_driver) {
kfree(wsa881x->dai_driver->name);
kfree(wsa881x->dai_driver->playback.stream_name);
kfree(wsa881x->dai_driver);
}
if (wsa881x->driver) {
kfree(wsa881x->driver->name);
kfree(wsa881x->driver);
}
i2c_set_clientdata(client, NULL); i2c_set_clientdata(client, NULL);
kfree(wsa881x); kfree(wsa881x);
return 0; return 0;

61
asoc/holi-port-config.h Normal file
View File

@@ -0,0 +1,61 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (c) 2020, The Linux Foundation. All rights reserved.
*/
#ifndef _HOLI_PORT_CONFIG
#define _HOLI_PORT_CONFIG
#include <soc/swr-common.h>
#define WSA_MSTR_PORT_MASK 0xFF
/*
* Add port configuration in the format
*{ si, off1, off2, hstart, hstop, wd_len, bp_mode, bgp_ctrl, lane_ctrl, dir,
* stream_type}
*/
static struct port_params rx_frame_params_dsd[SWR_MSTR_PORT_LEN] = {
{3, 0, 0, 0xFF, 0xFF, 1, 0xFF, 0xFF, 1, 0x00, 0x00},
{31, 0, 0, 3, 6, 7, 0, 0xFF, 0, 0x00, 0x00},
{31, 11, 11, 0xFF, 0xFF, 4, 1, 0xFF, 0, 0x00, 0x00},
{7, 9, 0, 0xFF, 0xFF, 0xFF, 0xFF, 1, 0, 0x00, 0x00},
{3, 1, 0, 0xFF, 0xFF, 0xFF, 0xFF, 3, 0, 0x00, 0x00},
};
/* Headset + PCM Haptics */
static struct port_params rx_frame_params_default[SWR_MSTR_PORT_LEN] = {
{3, 0, 0, 0xFF, 0xFF, 1, 0xFF, 0xFF, 1, 0x00, 0x00}, /* HPH/EAR */
{31, 0, 0, 3, 6, 7, 0, 0xFF, 0, 0x00, 0x00}, /* HPH_CLH */
{31, 11, 11, 0xFF, 0xFF, 4, 1, 0xFF, 0, 0x00, 0x00}, /* HPH_CMP */
{7, 1, 0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 0x00, 0x00}, /* LO/AUX */
{0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF, 0, 0, 0x00, 0x00}, /* DSD */
{0x18F, 0, 0, 0x8, 0x8, 0x0F, 0x00, 0, 0, 0x00, 0x01}, /* PCM_OUT */
};
/* TX UC1: TX1: 1ch, TX2: 2chs, TX3: 1ch(MBHC) */
static struct port_params tx_frame_params_default[SWR_MSTR_PORT_LEN] = {
{3, 1, 0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 0x00, 0x00}, /* TX1 */
{3, 2, 0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 0x00, 0x00}, /* TX2 */
{7, 1, 0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 0x00, 0x00}, /* TX3 */
};
static struct port_params tx_frame_params_wcd937x[SWR_MSTR_PORT_LEN] = {
{3, 1, 0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 0x00, 0x00}, /* TX1 */
{3, 2, 0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 1, 0x00, 0x00}, /* TX2 */
{3, 1, 0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 0x00, 0x00}, /* TX3 */
};
static struct swr_mstr_port_map sm_port_map[] = {
{TX_MACRO, SWR_UC0, tx_frame_params_default},
{RX_MACRO, SWR_UC0, rx_frame_params_default},
{RX_MACRO, SWR_UC1, rx_frame_params_dsd},
};
static struct swr_mstr_port_map sm_port_map_wcd937x[] = {
{TX_MACRO, SWR_UC0, tx_frame_params_wcd937x},
{RX_MACRO, SWR_UC0, rx_frame_params_default},
{RX_MACRO, SWR_UC1, rx_frame_params_dsd},
};
#endif /* _HOLI_PORT_CONFIG */

6823
asoc/holi.c Normal file

File diff suppressed because it is too large Load Diff

507
asoc/msm_holi_dailink.h Normal file
View File

@@ -0,0 +1,507 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (c) 2020, The Linux Foundation. All rights reserved.
*/
#include <sound/soc.h>
/* FE dai-links */
SND_SOC_DAILINK_DEFS(multimedia1,
DAILINK_COMP_ARRAY(COMP_CPU("MultiMedia1")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-dsp.0")));
SND_SOC_DAILINK_DEFS(multimedia2,
DAILINK_COMP_ARRAY(COMP_CPU("MultiMedia2")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-dsp.0")));
SND_SOC_DAILINK_DEFS(voicemmode1,
DAILINK_COMP_ARRAY(COMP_CPU("VoiceMMode1")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-voice")));
SND_SOC_DAILINK_DEFS(msmvoip,
DAILINK_COMP_ARRAY(COMP_CPU("VoIP")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-voip-dsp")));
SND_SOC_DAILINK_DEFS(multimedia3,
DAILINK_COMP_ARRAY(COMP_CPU("MultiMedia3")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-dsp.2")));
SND_SOC_DAILINK_DEFS(afepcm_rx,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-dev.241")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-rx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-afe")));
SND_SOC_DAILINK_DEFS(afepcm_tx,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-dev.240")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-tx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-afe")));
SND_SOC_DAILINK_DEFS(multimedia4,
DAILINK_COMP_ARRAY(COMP_CPU("MultiMedia4")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-compress-dsp")));
SND_SOC_DAILINK_DEFS(auxpcm_hostless,
DAILINK_COMP_ARRAY(COMP_CPU("AUXPCM_HOSTLESS")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-hostless")));
SND_SOC_DAILINK_DEFS(multimedia5,
DAILINK_COMP_ARRAY(COMP_CPU("MultiMedia5")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-dsp.1")));
SND_SOC_DAILINK_DEFS(listen1,
DAILINK_COMP_ARRAY(COMP_CPU("LSM1")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-lsm-client")));
SND_SOC_DAILINK_DEFS(multimedia7,
DAILINK_COMP_ARRAY(COMP_CPU("MultiMedia7")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-compress-dsp")));
SND_SOC_DAILINK_DEFS(multimedia10,
DAILINK_COMP_ARRAY(COMP_CPU("MultiMedia10")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-dsp.1")));
SND_SOC_DAILINK_DEFS(multimedia8,
DAILINK_COMP_ARRAY(COMP_CPU("MultiMedia8")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-dsp-noirq")));
SND_SOC_DAILINK_DEFS(hdmi_rx_hostless,
DAILINK_COMP_ARRAY(COMP_CPU("HDMI_HOSTLESS")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-hostless")));
SND_SOC_DAILINK_DEFS(voicemmode2,
DAILINK_COMP_ARRAY(COMP_CPU("VoiceMMode2")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-voice")));
SND_SOC_DAILINK_DEFS(listen2,
DAILINK_COMP_ARRAY(COMP_CPU("LSM2")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-lsm-client")));
SND_SOC_DAILINK_DEFS(listen3,
DAILINK_COMP_ARRAY(COMP_CPU("LSM3")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-lsm-client")));
SND_SOC_DAILINK_DEFS(listen4,
DAILINK_COMP_ARRAY(COMP_CPU("LSM4")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-lsm-client")));
SND_SOC_DAILINK_DEFS(listen5,
DAILINK_COMP_ARRAY(COMP_CPU("LSM5")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-lsm-client")));
SND_SOC_DAILINK_DEFS(listen6,
DAILINK_COMP_ARRAY(COMP_CPU("LSM6")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-lsm-client")));
SND_SOC_DAILINK_DEFS(listen7,
DAILINK_COMP_ARRAY(COMP_CPU("LSM7")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-lsm-client")));
SND_SOC_DAILINK_DEFS(listen8,
DAILINK_COMP_ARRAY(COMP_CPU("LSM8")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-lsm-client")));
SND_SOC_DAILINK_DEFS(multimedia9,
DAILINK_COMP_ARRAY(COMP_CPU("MultiMedia9")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-dsp.0")));
SND_SOC_DAILINK_DEFS(multimedia11,
DAILINK_COMP_ARRAY(COMP_CPU("MultiMedia11")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-compress-dsp")));
SND_SOC_DAILINK_DEFS(multimedia12,
DAILINK_COMP_ARRAY(COMP_CPU("MultiMedia12")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-compress-dsp")));
SND_SOC_DAILINK_DEFS(multimedia13,
DAILINK_COMP_ARRAY(COMP_CPU("MultiMedia13")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-compress-dsp")));
SND_SOC_DAILINK_DEFS(multimedia14,
DAILINK_COMP_ARRAY(COMP_CPU("MultiMedia14")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-compress-dsp")));
SND_SOC_DAILINK_DEFS(multimedia15,
DAILINK_COMP_ARRAY(COMP_CPU("MultiMedia15")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-compress-dsp")));
SND_SOC_DAILINK_DEFS(multimedia16,
DAILINK_COMP_ARRAY(COMP_CPU("MultiMedia16")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-dsp-noirq")));
SND_SOC_DAILINK_DEFS(cdcdma_hostless,
DAILINK_COMP_ARRAY(COMP_CPU("CDC_DMA_HOSTLESS")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-hostless")));
SND_SOC_DAILINK_DEFS(tx3_cdcdma_hostless,
DAILINK_COMP_ARRAY(COMP_CPU("TX3_CDC_DMA_HOSTLESS")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-hostless")));
SND_SOC_DAILINK_DEFS(tert_mi2s_tx_hostless,
DAILINK_COMP_ARRAY(COMP_CPU("TERT_MI2S_TX_HOSTLESS")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-hostless")));
SND_SOC_DAILINK_DEFS(multimedia6,
DAILINK_COMP_ARRAY(COMP_CPU("MultiMedia6")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-loopback")));
SND_SOC_DAILINK_DEFS(usbaudio_hostless,
DAILINK_COMP_ARRAY(COMP_CPU("USBAUDIO_HOSTLESS")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-hostless")));
SND_SOC_DAILINK_DEFS(slimbus7_hostless,
DAILINK_COMP_ARRAY(COMP_CPU("SLIMBUS7_HOSTLESS")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-hostless")));
SND_SOC_DAILINK_DEFS(multimedia17,
DAILINK_COMP_ARRAY(COMP_CPU("MultiMedia17")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-compress-dsp")));
SND_SOC_DAILINK_DEFS(slimbus8_hostless,
DAILINK_COMP_ARRAY(COMP_CPU("SLIMBUS8_HOSTLESS")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-hostless")));
SND_SOC_DAILINK_DEFS(tx_cdcdma5_tx,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-cdc-dma-dev.45115")),
DAILINK_COMP_ARRAY(COMP_CODEC("bolero_codec", "tx_macro_tx3"),
COMP_CODEC("wcd938x_codec", "wcd938x_cdc")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-hostless")));
SND_SOC_DAILINK_DEFS(multimedia31,
DAILINK_COMP_ARRAY(COMP_CPU("MultiMedia31")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-dsp.0")));
SND_SOC_DAILINK_DEFS(multimedia32,
DAILINK_COMP_ARRAY(COMP_CPU("MultiMedia32")),
DAILINK_COMP_ARRAY(COMP_CODEC("snd-soc-dummy", "snd-soc-dummy-dai")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-dsp.0")));
SND_SOC_DAILINK_DEFS(afepcm_tx1,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-dev.242")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-tx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-afe")));
/* BE dai-links */
SND_SOC_DAILINK_DEFS(afe_pcm_rx,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-dev.224")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-rx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(afe_pcm_tx,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-dev.225")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-tx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(incall_record_tx,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-dev.32772")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-tx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(incall_record_rx,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-dev.32771")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-tx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(voice_playback_tx,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-dev.32773")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-rx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(voice2_playback_tx,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-dev.32770")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-rx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(usb_audio_rx,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-dev.28672")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-rx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(usb_audio_tx,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-dev.28673")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-tx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(pri_tdm_rx_0,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-tdm.36864")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-rx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(pri_tdm_tx_0,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-tdm.36865")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-tx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(sec_tdm_rx_0,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-tdm.36880")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-rx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(sec_tdm_tx_0,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-tdm.36881")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-tx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(tert_tdm_rx_0,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-tdm.36896")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-rx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(tert_tdm_tx_0,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-tdm.36897")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-tx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(quat_tdm_rx_0,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-tdm.36912")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-rx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(quat_tdm_tx_0,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-tdm.36913")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-tx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(slimbus_7_rx,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-dev.16398")),
DAILINK_COMP_ARRAY(COMP_CODEC("btfmslim_slave",
"btfm_bt_sco_a2dp_slim_rx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(slimbus_7_tx,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-dev.16399")),
DAILINK_COMP_ARRAY(COMP_CODEC("btfmslim_slave",
"btfm_bt_sco_slim_tx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(slimbus_8_tx,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-dev.16401")),
DAILINK_COMP_ARRAY(COMP_CODEC("btfmslim_slave",
"btfm_fm_slim_tx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(pri_mi2s_rx,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-mi2s.0")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-rx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(pri_mi2s_tx,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-mi2s.0")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-tx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(sec_mi2s_rx,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-mi2s.1")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-rx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(sec_mi2s_tx,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-mi2s.1")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-tx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(tert_mi2s_rx,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-mi2s.2")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-rx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(tert_mi2s_tx,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-mi2s.2")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-tx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(quat_mi2s_rx,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-mi2s.3")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-rx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(quat_mi2s_tx,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-mi2s.3")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-tx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(auxpcm_rx,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-auxpcm.1")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-rx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(auxpcm_tx,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-auxpcm.1")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-tx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(sec_auxpcm_rx,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-auxpcm.2")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-rx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(sec_auxpcm_tx,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-auxpcm.2")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-tx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(tert_auxpcm_rx,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-auxpcm.3")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-rx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(tert_auxpcm_tx,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-auxpcm.3")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-tx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(quat_auxpcm_rx,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-auxpcm.4")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-rx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(quat_auxpcm_tx,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-auxpcm.4")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-tx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(rx_dma_rx0,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-cdc-dma-dev.45104")),
DAILINK_COMP_ARRAY(COMP_CODEC("bolero_codec", "rx_macro_rx1"),
COMP_CODEC("wcd938x_codec", "wcd938x_cdc")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(rx_dma_rx0_937x,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-cdc-dma-dev.45104")),
DAILINK_COMP_ARRAY(COMP_CODEC("bolero_codec", "rx_macro_rx1"),
COMP_CODEC("wcd937x_codec", "wcd937x_cdc")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(rx_dma_rx1,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-cdc-dma-dev.45106")),
DAILINK_COMP_ARRAY(COMP_CODEC("bolero_codec", "rx_macro_rx2"),
COMP_CODEC("wcd938x_codec", "wcd938x_cdc")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(rx_dma_rx1_937x,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-cdc-dma-dev.45106")),
DAILINK_COMP_ARRAY(COMP_CODEC("bolero_codec", "rx_macro_rx2"),
COMP_CODEC("wcd937x_codec", "wcd937x_cdc")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(rx_dma_rx2,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-cdc-dma-dev.45108")),
DAILINK_COMP_ARRAY(COMP_CODEC("bolero_codec", "rx_macro_rx3"),
COMP_CODEC("wcd938x_codec", "wcd938x_cdc")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(rx_dma_rx2_937x,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-cdc-dma-dev.45108")),
DAILINK_COMP_ARRAY(COMP_CODEC("bolero_codec", "rx_macro_rx3"),
COMP_CODEC("wcd937x_codec", "wcd937x_cdc")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(rx_dma_rx3,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-cdc-dma-dev.45110")),
DAILINK_COMP_ARRAY(COMP_CODEC("bolero_codec", "rx_macro_rx4"),
COMP_CODEC("wcd938x_codec", "wcd938x_cdc")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(rx_dma_rx3_937x,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-cdc-dma-dev.45110")),
DAILINK_COMP_ARRAY(COMP_CODEC("bolero_codec", "rx_macro_rx4"),
COMP_CODEC("wcd937x_codec", "wcd937x_cdc")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(tx_dma_tx3,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-cdc-dma-dev.45111")),
DAILINK_COMP_ARRAY(COMP_CODEC("bolero_codec", "tx_macro_tx1"),
COMP_CODEC("wcd938x_codec", "wcd938x_cdc")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(tx_dma_tx3_937x,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-cdc-dma-dev.45111")),
DAILINK_COMP_ARRAY(COMP_CODEC("bolero_codec", "tx_macro_tx1"),
COMP_CODEC("wcd937x_codec", "wcd937x_cdc")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(tx_dma_tx4,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-cdc-dma-dev.45113")),
DAILINK_COMP_ARRAY(COMP_CODEC("bolero_codec", "tx_macro_tx2"),
COMP_CODEC("wcd938x_codec", "wcd938x_cdc"),
COMP_CODEC("swr-dmic.01", "swr_dmic_tx0"),
COMP_CODEC("swr-dmic.02", "swr_dmic_tx1"),
COMP_CODEC("swr-dmic.03", "swr_dmic_tx2"),
COMP_CODEC("swr-dmic.04", "swr_dmic_tx3")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(tx_dma_tx4_937x,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-cdc-dma-dev.45113")),
DAILINK_COMP_ARRAY(COMP_CODEC("bolero_codec", "tx_macro_tx2"),
COMP_CODEC("wcd937x_codec", "wcd937x_cdc"),
COMP_CODEC("swr-dmic.01", "swr_dmic_tx0"),
COMP_CODEC("swr-dmic.02", "swr_dmic_tx1"),
COMP_CODEC("swr-dmic.03", "swr_dmic_tx2"),
COMP_CODEC("swr-dmic.04", "swr_dmic_tx3")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(va_dma_tx0,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-cdc-dma-dev.45089")),
DAILINK_COMP_ARRAY(COMP_CODEC("bolero_codec", "va_macro_tx1")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(va_dma_tx1,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-cdc-dma-dev.45091")),
DAILINK_COMP_ARRAY(COMP_CODEC("bolero_codec", "va_macro_tx2")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(va_dma_tx2,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-cdc-dma-dev.45093")),
DAILINK_COMP_ARRAY(COMP_CODEC("bolero_codec", "va_macro_tx3")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(afe_loopback_tx,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-dev.24577")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-tx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(proxy_tx,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-dev.8195")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-tx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(proxy_rx,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-q6-dev.8194")),
DAILINK_COMP_ARRAY(COMP_CODEC("msm-stub-codec.1", "msm-stub-rx")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));

34
config/holiauto.conf Normal file
View File

@@ -0,0 +1,34 @@
export CONFIG_PINCTRL_LPI=m
export CONFIG_AUDIO_EXT_CLK=m
export CONFIG_SND_SOC_WCD9XXX_V2=m
export CONFIG_SND_SOC_WCD_MBHC=m
export CONFIG_WCD9XXX_CODEC_CORE_V2=m
export CONFIG_MSM_CDC_PINCTRL=m
export CONFIG_MSM_QDSP6V2_CODECS=m
export CONFIG_MSM_QDSP6_APRV2_RPMSG=m
export CONFIG_MSM_ADSP_LOADER=m
export CONFIG_REGMAP_SWR=m
export CONFIG_MSM_QDSP6_SSR=m
export CONFIG_MSM_QDSP6_PDR=m
export CONFIG_MSM_QDSP6_NOTIFIER=m
export CONFIG_SND_SOC_MSM_QDSP6V2_INTF=m
export CONFIG_SOUNDWIRE=m
export CONFIG_SOUNDWIRE_MSTR_CTRL=m
export CONFIG_SND_SOC_QDSP6V2=m
export CONFIG_SND_SOC_WCD_MBHC_ADC=m
export CONFIG_QTI_PP=m
export CONFIG_SND_HWDEP_ROUTING=m
export CONFIG_SND_SOC_MSM_STUB=m
export CONFIG_SND_SOC_BOLERO=m
export CONFIG_VA_MACRO=m
export CONFIG_RX_MACRO=m
export CONFIG_TX_MACRO=m
export CONFIG_SND_SOC_WCD_IRQ=m
export CONFIG_SND_SOC_WCD938X=m
export CONFIG_SND_SOC_WCD938X_SLAVE=m
export CONFIG_SND_SOC_WCD937X=m
export CONFIG_SND_SOC_WCD937X_SLAVE=m
export CONFIG_SND_SOC_WSA881X_ANALOG=m
export CONFIG_SND_SOC_HOLI=m
export CONFIG_SND_EVENT=m
export CONFIG_DIGITAL_CDC_RSC_MGR=m

39
config/holiautoconf.h Normal file
View File

@@ -0,0 +1,39 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/* Copyright (c) 2020, The Linux Foundation. All rights reserved.
*/
#define CONFIG_PINCTRL_LPI 1
#define CONFIG_AUDIO_EXT_CLK 1
#define CONFIG_SND_SOC_WCD9XXX_V2 1
#define CONFIG_SND_SOC_WCD_MBHC 1
#define CONFIG_WCD9XXX_CODEC_CORE_V2 1
#define CONFIG_MSM_CDC_PINCTRL 1
#define CONFIG_MSM_QDSP6V2_CODECS 1
#define CONFIG_MSM_QDSP6_APRV2_RPMSG 1
#define CONFIG_SND_SOC_MSM_QDSP6V2_INTF 1
#define CONFIG_MSM_ADSP_LOADER 1
#define CONFIG_REGMAP_SWR 1
#define CONFIG_MSM_QDSP6_SSR 1
#define CONFIG_MSM_QDSP6_PDR 1
#define CONFIG_MSM_QDSP6_NOTIFIER 1
#define CONFIG_SOUNDWIRE 1
#define CONFIG_SOUNDWIRE_MSTR_CTRL 1
#define CONFIG_SND_SOC_WCD_MBHC_ADC 1
#define CONFIG_SND_SOC_QDSP6V2 1
#define CONFIG_QTI_PP 1
#define CONFIG_SND_HWDEP_ROUTING 1
#define CONFIG_SND_SOC_MSM_STUB 1
#define CONFIG_SND_SOC_BOLERO 1
#define CONFIG_WSA_MACRO 1
#define CONFIG_VA_MACRO 1
#define CONFIG_RX_MACRO 1
#define CONFIG_TX_MACRO 1
#define CONFIG_SND_SOC_WCD_IRQ 1
#define CONFIG_SND_SOC_WCD938X 1
#define CONFIG_SND_SOC_WCD938X_SLAVE 1
#define CONFIG_SND_SOC_WCD937X 1
#define CONFIG_SND_SOC_WCD937X_SLAVE 1
#define CONFIG_SND_SOC_WSA881X_ANALOG 1
#define CONFIG_SND_SOC_HOLI 1
#define CONFIG_SND_EVENT 1
#define CONFIG_DIGITAL_CDC_RSC_MGR 1