ASoC: wcd937x: Add function to get wcd937x codec variant

Add function to get wcd937x codec variant. Also add wcd937x
support in msm dailinks for yupik.

Change-Id: Id794a12da0f5aa771727d9f03ef949ae1d32b9da
Signed-off-by: Vatsal Bucha <vbucha@codeaurora.org>
This commit is contained in:
Vatsal Bucha 2020-12-24 14:37:20 +05:30 • committed by Gerrit - the friendly Code Review server
commit 9cc1d0d01d
4 changed files with 66 additions and 9 deletions

View file

@ -27,8 +27,6 @@
#include "internal.h"
#include "asoc/bolero-slave-internal.h"
#define WCD9370_VARIANT 0
#define WCD9375_VARIANT 5
#define WCD937X_VARIANT_ENTRY_SIZE 32
#define NUM_SWRS_DT_PARAMS 5
@ -2624,6 +2622,30 @@ static struct snd_info_entry_ops wcd937x_variant_ops = {
.read = wcd937x_variant_read,
};
/*
* wcd937x_get_codec_variant
* @component: component instance
*
* Return: codec variant or -EINVAL in error.
*/
int wcd937x_get_codec_variant(struct snd_soc_component *component)
{
struct wcd937x_priv *priv = NULL;
if (!component)
return -EINVAL;
priv = snd_soc_component_get_drvdata(component);
if (!priv) {
dev_err(component->dev,
"%s:wcd937x not probed\n", __func__);
return -EINVAL;
}
return priv->variant;
}
EXPORT_SYMBOL(wcd937x_get_codec_variant);
/*
* wcd937x_info_create_codec_entry - creates wcd937x module
* @codec_root: The parent directory

View file

@ -17,6 +17,11 @@ struct wcd937x_swr_slave_ch_map {
u8 index;
};
enum {
WCD9370_VARIANT = 0,
WCD9375_VARIANT = 5,
};
static const struct wcd937x_swr_slave_ch_map wcd937x_swr_slv_tx_ch_idx[] = {
{ADC1, 0},
{ADC2, 1},
@ -51,6 +56,8 @@ static int wcd937x_swr_master_ch_map[] = {
extern int wcd937x_info_create_codec_entry(struct snd_info_entry *codec_root,
struct snd_soc_component *component);
extern int wcd937x_get_codec_variant(struct snd_soc_component *component);
static inline int wcd937x_slave_get_master_ch_val(int ch)
{
int i;
@ -94,6 +101,10 @@ static inline int wcd937x_slave_get_slave_ch_val(int ch)
{
return 0;
}
static inline int wcd937x_get_codec_variant(struct snd_soc_component *component)
{
return 0;
}
#endif /* CONFIG_SND_SOC_WCD937X */
#endif

View file

@ -96,6 +96,12 @@ static struct port_params tx_frame_params_shima_0p6MHz[SWR_MSTR_PORT_LEN] = {
{1, 1, 0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 0x00, 0x00}, /* TX3 */
};
static struct port_params tx_frame_params_wcd937x[SWR_MSTR_PORT_LEN] = {
{3, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 1, 0x00, 0x00}, /* TX1 */
{3, 1, 0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0, 0x00, 0x00}, /* TX2 */
{3, 2, 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},
{TX_MACRO, SWR_UC1, tx_frame_params_4p8MHz},
@ -116,4 +122,14 @@ static struct swr_mstr_port_map sm_port_map_shima[] = {
{WSA_MACRO, SWR_UC0, wsa_frame_params_default},
};
static struct swr_mstr_port_map sm_port_map_wcd937x[] = {
{TX_MACRO, SWR_UC0, tx_frame_params_wcd937x},
{TX_MACRO, SWR_UC1, tx_frame_params_wcd937x},
{TX_MACRO, SWR_UC2, tx_frame_params_wcd937x},
{RX_MACRO, SWR_UC0, rx_frame_params_default},
{RX_MACRO, SWR_UC1, rx_frame_params_dsd},
{RX_MACRO, SWR_UC2, rx_frame_params_44p1KHz},
{WSA_MACRO, SWR_UC0, wsa_frame_params_default},
};
#endif /* _LAHAINA_PORT_CONFIG */

View file

@ -209,7 +209,8 @@ SND_SOC_DAILINK_DEFS(slimbus8_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")),
COMP_CODEC("wcd938x_codec", "wcd938x_cdc"),
COMP_CODEC("wcd937x_codec", "wcd937x_cdc")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-hostless")));
SND_SOC_DAILINK_DEFS(multimedia31,
@ -662,31 +663,36 @@ SND_SOC_DAILINK_DEFS(wsa_dma_tx1,
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")),
COMP_CODEC("wcd938x_codec", "wcd938x_cdc"),
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")),
COMP_CODEC("wcd938x_codec", "wcd938x_cdc"),
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")),
COMP_CODEC("wcd938x_codec", "wcd938x_cdc"),
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")),
COMP_CODEC("wcd938x_codec", "wcd938x_cdc"),
COMP_CODEC("wcd937x_codec", "wcd937x_cdc")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(rx_dma_rx5,
DAILINK_COMP_ARRAY(COMP_CPU("msm-dai-cdc-dma-dev.45114")),
DAILINK_COMP_ARRAY(COMP_CODEC("bolero_codec", "rx_macro_rx5"),
COMP_CODEC("wcd938x_codec", "wcd938x_cdc")),
COMP_CODEC("wcd938x_codec", "wcd938x_cdc"),
COMP_CODEC("wcd937x_codec", "wcd937x_cdc")),
DAILINK_COMP_ARRAY(COMP_PLATFORM("msm-pcm-routing")));
SND_SOC_DAILINK_DEFS(rx_dma_rx6,
@ -698,13 +704,15 @@ SND_SOC_DAILINK_DEFS(rx_dma_rx6,
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")),
COMP_CODEC("wcd938x_codec", "wcd938x_cdc"),
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("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"),