From 71e0b484a17e034f9a877646b2f06d37d73ea630 Mon Sep 17 00:00:00 2001 From: Vatsal Bucha Date: Wed, 11 Sep 2019 14:51:20 +0530 Subject: [PATCH] ASoC: Add support for tx data lane3 for lito v2 Lito has three data lanes for tx swr. As gpio support for swr tx data3 is present for lito v2, enable data lane for lito v2. Change-Id: I56faee1974f59e0a506fc74f2dadb95a52071907 Signed-off-by: Vatsal Bucha --- asoc/kona-port-config.h | 16 ++++++++++++++++ asoc/kona.c | 18 ++++++++++++++++-- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/asoc/kona-port-config.h b/asoc/kona-port-config.h index 0f73791753..723c94a7dd 100644 --- a/asoc/kona-port-config.h +++ b/asoc/kona-port-config.h @@ -50,6 +50,15 @@ static struct port_params tx_frame_params_default[SWR_MSTR_PORT_LEN] = { {3, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 1}, /* TX4 */ }; +/* TX UC1: TX1: 1ch, TX2: 2chs, TX3: 1ch(MBHC) */ +static struct port_params tx_frame_params_v2[SWR_MSTR_PORT_LEN] = { + {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},/* PCM OUT */ + {1, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 1}, /* TX1 */ + {1, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 2}, /* TX2 */ + {3, 2, 0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0}, /* TX3 */ + {3, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 2}, /* TX4 */ +}; + 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}, @@ -57,4 +66,11 @@ static struct swr_mstr_port_map sm_port_map[] = { {WSA_MACRO, SWR_UC0, wsa_frame_params_default}, }; +static struct swr_mstr_port_map sm_port_map_v2[] = { + {TX_MACRO, SWR_UC0, tx_frame_params_v2}, + {RX_MACRO, SWR_UC0, rx_frame_params_default}, + {RX_MACRO, SWR_UC1, rx_frame_params_dsd}, + {WSA_MACRO, SWR_UC0, wsa_frame_params_default}, +}; + #endif /* _KONA_PORT_CONFIG */ diff --git a/asoc/kona.c b/asoc/kona.c index 41a4ac6cdd..995a2b86b2 100644 --- a/asoc/kona.c +++ b/asoc/kona.c @@ -167,6 +167,7 @@ enum { struct msm_asoc_mach_data { struct snd_info_entry *codec_root; int usbc_en2_gpio; /* used by gpio driver API */ + int lito_v2_enabled; struct device_node *dmic01_gpio_p; /* used by pinctrl API */ struct device_node *dmic23_gpio_p; /* used by pinctrl API */ struct device_node *dmic45_gpio_p; /* used by pinctrl API */ @@ -5288,8 +5289,17 @@ static int msm_int_audrx_init(struct snd_soc_pcm_runtime *rtd) WSA_MACRO_GAIN_OFFSET_M1P5_DB); } } - bolero_set_port_map(component, ARRAY_SIZE(sm_port_map), - sm_port_map); + if (pdata->lito_v2_enabled) { + /* + * Enable tx data line3 for saipan version v2 amd + * write corresponding lpi register. + */ + bolero_set_port_map(component, ARRAY_SIZE(sm_port_map_v2), + sm_port_map_v2); + } else { + bolero_set_port_map(component, ARRAY_SIZE(sm_port_map), + sm_port_map); + } } card = rtd->card->snd_card; if (!pdata->codec_root) { @@ -7898,6 +7908,10 @@ static int msm_asoc_machine_probe(struct platform_device *pdev) if (!pdata) return -ENOMEM; + of_property_read_u32(pdev->dev.of_node, + "qcom,lito-is-v2-enabled", + &pdata->lito_v2_enabled); + card = populate_snd_card_dailinks(&pdev->dev); if (!card) { dev_err(&pdev->dev, "%s: Card uninitialized\n", __func__);