[alsa-devel] [PATCH 4/4] ASoC: amd: enabling bt i2s config after acp reset
On ST/CZ based platforms, for specific platform bt uart mux to be defined for bt i2s. By default, these pins will be used for uart. After acp reset , it requires to reprogram bt i2s config mux pins to enable bt i2s instance. added bt i2s enablement sequence during acp init.
Signed-off-by: Vijendar Mukunda Vijendar.Mukunda@amd.com Signed-off-by: Akshu Agrawal akshu.agrawal@amd.com --- sound/soc/amd/acp-da7219-max98357a.c | 2 ++ sound/soc/amd/acp-pcm-dma.c | 9 +++++++++ sound/soc/amd/acp.h | 1 + 3 files changed, 12 insertions(+)
diff --git a/sound/soc/amd/acp-da7219-max98357a.c b/sound/soc/amd/acp-da7219-max98357a.c index b205c78..6dad0cb 100644 --- a/sound/soc/amd/acp-da7219-max98357a.c +++ b/sound/soc/amd/acp-da7219-max98357a.c @@ -44,6 +44,7 @@
static struct snd_soc_jack cz_jack; struct clk *da7219_dai_clk; +extern int bt_pad_enable;
static int cz_da7219_init(struct snd_soc_pcm_runtime *rtd) { @@ -81,6 +82,7 @@ static int cz_da7219_init(struct snd_soc_pcm_runtime *rtd) }
da7219_aad_jack_det(component, &cz_jack); + bt_pad_enable = device_property_read_bool(&pdev->dev, "bt-pad-enable");
return 0; } diff --git a/sound/soc/amd/acp-pcm-dma.c b/sound/soc/amd/acp-pcm-dma.c index 7c392fe..b52c660 100644 --- a/sound/soc/amd/acp-pcm-dma.c +++ b/sound/soc/amd/acp-pcm-dma.c @@ -46,6 +46,8 @@
#define DRV_NAME "acp_audio_dma"
+bool bt_pad_enable = false; +EXPORT_SYMBOL(bt_pad_enable);
static const struct snd_pcm_hardware acp_pcm_hardware_playback = { .info = SNDRV_PCM_INFO_INTERLEAVED | @@ -525,6 +527,13 @@ static int acp_init(void __iomem *acp_mmio, u32 asic_type) val &= ~ACP_SOFT_RESET__SoftResetAud_MASK; acp_reg_write(val, acp_mmio, mmACP_SOFT_RESET);
+ /* For BT instance change pins from UART to BT */ + if (bt_pad_enable) { + val = acp_reg_read(acp_mmio, mmACP_BT_UART_PAD_SEL); + val |= ACP_BT_UART_PAD_SELECT_MASK; + acp_reg_write(val, acp_mmio, mmACP_BT_UART_PAD_SEL); + } + /* initiailize Onion control DAGB register */ acp_reg_write(ACP_ONION_CNTL_DEFAULT, acp_mmio, mmACP_AXI2DAGB_ONION_CNTL); diff --git a/sound/soc/amd/acp.h b/sound/soc/amd/acp.h index 460365c..6b43144 100644 --- a/sound/soc/amd/acp.h +++ b/sound/soc/amd/acp.h @@ -107,6 +107,7 @@ #define ACP_I2S_MIC_16BIT_RESOLUTION_EN 0x01 #define ACP_I2S_SP_16BIT_RESOLUTION_EN 0x02 #define ACP_I2S_BT_16BIT_RESOLUTION_EN 0x04 +#define ACP_BT_UART_PAD_SELECT_MASK 0x1
enum acp_dma_priority_level { /* 0x0 Specifies the DMA channel is given normal priority */
On 4/17/2018 10:29 AM, Vijendar Mukunda wrote:
On ST/CZ based platforms, for specific platform bt uart mux to be defined for bt i2s. By default, these pins will be used for uart. After acp reset , it requires to reprogram bt i2s config mux pins to enable bt i2s instance. added bt i2s enablement sequence during acp init.
Signed-off-by: Vijendar Mukunda Vijendar.Mukunda@amd.com Signed-off-by: Akshu Agrawal akshu.agrawal@amd.com
sound/soc/amd/acp-da7219-max98357a.c | 2 ++ sound/soc/amd/acp-pcm-dma.c | 9 +++++++++ sound/soc/amd/acp.h | 1 + 3 files changed, 12 insertions(+)
diff --git a/sound/soc/amd/acp-da7219-max98357a.c b/sound/soc/amd/acp-da7219-max98357a.c index b205c78..6dad0cb 100644 --- a/sound/soc/amd/acp-da7219-max98357a.c +++ b/sound/soc/amd/acp-da7219-max98357a.c @@ -44,6 +44,7 @@
static struct snd_soc_jack cz_jack; struct clk *da7219_dai_clk; +extern int bt_pad_enable;
static int cz_da7219_init(struct snd_soc_pcm_runtime *rtd) { @@ -81,6 +82,7 @@ static int cz_da7219_init(struct snd_soc_pcm_runtime *rtd) }
da7219_aad_jack_det(component, &cz_jack);
- bt_pad_enable = device_property_read_bool(&pdev->dev, "bt-pad-enable");
This is to be done in probe.
return 0; } diff --git a/sound/soc/amd/acp-pcm-dma.c b/sound/soc/amd/acp-pcm-dma.c index 7c392fe..b52c660 100644 --- a/sound/soc/amd/acp-pcm-dma.c +++ b/sound/soc/amd/acp-pcm-dma.c @@ -46,6 +46,8 @@
#define DRV_NAME "acp_audio_dma"
+bool bt_pad_enable = false; +EXPORT_SYMBOL(bt_pad_enable);
static const struct snd_pcm_hardware acp_pcm_hardware_playback = { .info = SNDRV_PCM_INFO_INTERLEAVED | @@ -525,6 +527,13 @@ static int acp_init(void __iomem *acp_mmio, u32 asic_type) val &= ~ACP_SOFT_RESET__SoftResetAud_MASK; acp_reg_write(val, acp_mmio, mmACP_SOFT_RESET);
- /* For BT instance change pins from UART to BT */
- if (bt_pad_enable) {
val = acp_reg_read(acp_mmio, mmACP_BT_UART_PAD_SEL);
val |= ACP_BT_UART_PAD_SELECT_MASK;
acp_reg_write(val, acp_mmio, mmACP_BT_UART_PAD_SEL);
- }
- /* initiailize Onion control DAGB register */ acp_reg_write(ACP_ONION_CNTL_DEFAULT, acp_mmio, mmACP_AXI2DAGB_ONION_CNTL);
diff --git a/sound/soc/amd/acp.h b/sound/soc/amd/acp.h index 460365c..6b43144 100644 --- a/sound/soc/amd/acp.h +++ b/sound/soc/amd/acp.h @@ -107,6 +107,7 @@ #define ACP_I2S_MIC_16BIT_RESOLUTION_EN 0x01 #define ACP_I2S_SP_16BIT_RESOLUTION_EN 0x02 #define ACP_I2S_BT_16BIT_RESOLUTION_EN 0x04 +#define ACP_BT_UART_PAD_SELECT_MASK 0x1
enum acp_dma_priority_level { /* 0x0 Specifies the DMA channel is given normal priority */
Hi Vijendar,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on sound/for-next] [also build test ERROR on v4.17-rc1 next-20180417] [cannot apply to asoc/for-next] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Vijendar-Mukunda/ASoC-dwc-I2S-Contr... base: https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git for-next config: i386-randconfig-x015-201815 (attached as .config) compiler: gcc-7 (Debian 7.3.0-1) 7.3.0 reproduce: # save the attached .config to linux build tree make ARCH=i386
All errors (new ones prefixed by >>):
sound/soc/amd/acp-da7219-max98357a.c: In function 'cz_da7219_init':
sound/soc/amd/acp-da7219-max98357a.c:85:45: error: 'pdev' undeclared (first use in this function); did you mean 'cdev'?
bt_pad_enable = device_property_read_bool(&pdev->dev, "bt-pad-enable"); ^~~~ cdev sound/soc/amd/acp-da7219-max98357a.c:85:45: note: each undeclared identifier is reported only once for each function it appears in
vim +85 sound/soc/amd/acp-da7219-max98357a.c
48 49 static int cz_da7219_init(struct snd_soc_pcm_runtime *rtd) 50 { 51 int ret; 52 struct snd_soc_card *card = rtd->card; 53 struct snd_soc_dai *codec_dai = rtd->codec_dai; 54 struct snd_soc_component *component = codec_dai->component; 55 56 dev_info(rtd->dev, "codec dai name = %s\n", codec_dai->name); 57 58 ret = snd_soc_dai_set_sysclk(codec_dai, DA7219_CLKSRC_MCLK, 59 CZ_PLAT_CLK, SND_SOC_CLOCK_IN); 60 if (ret < 0) { 61 dev_err(rtd->dev, "can't set codec sysclk: %d\n", ret); 62 return ret; 63 } 64 65 ret = snd_soc_dai_set_pll(codec_dai, 0, DA7219_SYSCLK_PLL, 66 CZ_PLAT_CLK, MCLK_RATE); 67 if (ret < 0) { 68 dev_err(rtd->dev, "can't set codec pll: %d\n", ret); 69 return ret; 70 } 71 72 da7219_dai_clk = clk_get(component->dev, "da7219-dai-clks"); 73 74 ret = snd_soc_card_jack_new(card, "Headset Jack", 75 SND_JACK_HEADPHONE | SND_JACK_MICROPHONE | 76 SND_JACK_BTN_0 | SND_JACK_BTN_1 | 77 SND_JACK_BTN_2 | SND_JACK_BTN_3, 78 &cz_jack, NULL, 0); 79 if (ret) { 80 dev_err(card->dev, "HP jack creation failed %d\n", ret); 81 return ret; 82 } 83 84 da7219_aad_jack_det(component, &cz_jack);
85 bt_pad_enable = device_property_read_bool(&pdev->dev, "bt-pad-enable");
86 87 return 0; 88 } 89
--- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
On Tuesday 17 April 2018 04:47 PM, kbuild test robot wrote:
Hi Vijendar,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on sound/for-next] [also build test ERROR on v4.17-rc1 next-20180417] [cannot apply to asoc/for-next] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Vijendar-Mukunda/ASoC-dwc-I2S-Contr... base: https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git for-next config: i386-randconfig-x015-201815 (attached as .config) compiler: gcc-7 (Debian 7.3.0-1) 7.3.0 reproduce: # save the attached .config to linux build tree make ARCH=i386
All errors (new ones prefixed by >>):
sound/soc/amd/acp-da7219-max98357a.c: In function 'cz_da7219_init':
sound/soc/amd/acp-da7219-max98357a.c:85:45: error: 'pdev' undeclared (first use in this function); did you mean 'cdev'?
bt_pad_enable = device_property_read_bool(&pdev->dev, "bt-pad-enable"); ^~~~ cdev sound/soc/amd/acp-da7219-max98357a.c:85:45: note: each undeclared identifier is reported only once for each function it appears in
vim +85 sound/soc/amd/acp-da7219-max98357a.c
48 49 static int cz_da7219_init(struct snd_soc_pcm_runtime *rtd) 50 { 51 int ret; 52 struct snd_soc_card *card = rtd->card; 53 struct snd_soc_dai *codec_dai = rtd->codec_dai; 54 struct snd_soc_component *component = codec_dai->component; 55 56 dev_info(rtd->dev, "codec dai name = %s\n", codec_dai->name); 57 58 ret = snd_soc_dai_set_sysclk(codec_dai, DA7219_CLKSRC_MCLK, 59 CZ_PLAT_CLK, SND_SOC_CLOCK_IN); 60 if (ret < 0) { 61 dev_err(rtd->dev, "can't set codec sysclk: %d\n", ret); 62 return ret; 63 } 64 65 ret = snd_soc_dai_set_pll(codec_dai, 0, DA7219_SYSCLK_PLL, 66 CZ_PLAT_CLK, MCLK_RATE); 67 if (ret < 0) { 68 dev_err(rtd->dev, "can't set codec pll: %d\n", ret); 69 return ret; 70 } 71 72 da7219_dai_clk = clk_get(component->dev, "da7219-dai-clks"); 73 74 ret = snd_soc_card_jack_new(card, "Headset Jack", 75 SND_JACK_HEADPHONE | SND_JACK_MICROPHONE | 76 SND_JACK_BTN_0 | SND_JACK_BTN_1 | 77 SND_JACK_BTN_2 | SND_JACK_BTN_3, 78 &cz_jack, NULL, 0); 79 if (ret) { 80 dev_err(card->dev, "HP jack creation failed %d\n", ret); 81 return ret; 82 } 83 84 da7219_aad_jack_det(component, &cz_jack);
85 bt_pad_enable = device_property_read_bool(&pdev->dev, "bt-pad-enable");
86 87 return 0; 88 } 89
0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
I will fix it and post the patch as V2 version.
Hi Vijendar,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on sound/for-next] [also build test ERROR on v4.17-rc1 next-20180417] [cannot apply to asoc/for-next] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Vijendar-Mukunda/ASoC-dwc-I2S-Contr... base: https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git for-next config: x86_64-randconfig-g0-04170933 (attached as .config) compiler: gcc-4.9 (Debian 4.9.4-2) 4.9.4 reproduce: # save the attached .config to linux build tree make ARCH=x86_64
All errors (new ones prefixed by >>):
sound/soc/amd/acp-da7219-max98357a.c: In function 'cz_da7219_init':
sound/soc/amd/acp-da7219-max98357a.c:85:45: error: 'pdev' undeclared (first use in this function)
bt_pad_enable = device_property_read_bool(&pdev->dev, "bt-pad-enable"); ^ sound/soc/amd/acp-da7219-max98357a.c:85:45: note: each undeclared identifier is reported only once for each function it appears in
vim +/pdev +85 sound/soc/amd/acp-da7219-max98357a.c
48 49 static int cz_da7219_init(struct snd_soc_pcm_runtime *rtd) 50 { 51 int ret; 52 struct snd_soc_card *card = rtd->card; 53 struct snd_soc_dai *codec_dai = rtd->codec_dai; 54 struct snd_soc_component *component = codec_dai->component; 55 56 dev_info(rtd->dev, "codec dai name = %s\n", codec_dai->name); 57 58 ret = snd_soc_dai_set_sysclk(codec_dai, DA7219_CLKSRC_MCLK, 59 CZ_PLAT_CLK, SND_SOC_CLOCK_IN); 60 if (ret < 0) { 61 dev_err(rtd->dev, "can't set codec sysclk: %d\n", ret); 62 return ret; 63 } 64 65 ret = snd_soc_dai_set_pll(codec_dai, 0, DA7219_SYSCLK_PLL, 66 CZ_PLAT_CLK, MCLK_RATE); 67 if (ret < 0) { 68 dev_err(rtd->dev, "can't set codec pll: %d\n", ret); 69 return ret; 70 } 71 72 da7219_dai_clk = clk_get(component->dev, "da7219-dai-clks"); 73 74 ret = snd_soc_card_jack_new(card, "Headset Jack", 75 SND_JACK_HEADPHONE | SND_JACK_MICROPHONE | 76 SND_JACK_BTN_0 | SND_JACK_BTN_1 | 77 SND_JACK_BTN_2 | SND_JACK_BTN_3, 78 &cz_jack, NULL, 0); 79 if (ret) { 80 dev_err(card->dev, "HP jack creation failed %d\n", ret); 81 return ret; 82 } 83 84 da7219_aad_jack_det(component, &cz_jack);
85 bt_pad_enable = device_property_read_bool(&pdev->dev, "bt-pad-enable");
86 87 return 0; 88 } 89
--- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
On ST/CZ based platforms, for specific platform bt uart mux to be defined for bt i2s. By default, these pins will be used for uart. After acp reset , it requires to reprogram bt i2s config mux pins to enable bt i2s instance. added bt i2s enablement sequence during acp init.
Signed-off-by: Vijendar Mukunda Vijendar.Mukunda@amd.com Signed-off-by: Akshu Agrawal akshu.agrawal@amd.com
v1->v2: fixed kbuild errors --- sound/soc/amd/acp-da7219-max98357a.c | 2 ++ sound/soc/amd/acp-pcm-dma.c | 9 +++++++++ sound/soc/amd/acp.h | 1 + 3 files changed, 12 insertions(+)
diff --git a/sound/soc/amd/acp-da7219-max98357a.c b/sound/soc/amd/acp-da7219-max98357a.c index b205c78..9ff2138 100644 --- a/sound/soc/amd/acp-da7219-max98357a.c +++ b/sound/soc/amd/acp-da7219-max98357a.c @@ -44,6 +44,7 @@
static struct snd_soc_jack cz_jack; struct clk *da7219_dai_clk; +extern int bt_pad_enable;
static int cz_da7219_init(struct snd_soc_pcm_runtime *rtd) { @@ -251,6 +252,7 @@ static int cz_probe(struct platform_device *pdev) cz_card.name, ret); return ret; } + bt_pad_enable = device_property_read_bool(&pdev->dev, "bt-pad-enable"); return 0; }
diff --git a/sound/soc/amd/acp-pcm-dma.c b/sound/soc/amd/acp-pcm-dma.c index 7c392fe..b52c660 100644 --- a/sound/soc/amd/acp-pcm-dma.c +++ b/sound/soc/amd/acp-pcm-dma.c @@ -46,6 +46,8 @@
#define DRV_NAME "acp_audio_dma"
+bool bt_pad_enable = false; +EXPORT_SYMBOL(bt_pad_enable);
static const struct snd_pcm_hardware acp_pcm_hardware_playback = { .info = SNDRV_PCM_INFO_INTERLEAVED | @@ -525,6 +527,13 @@ static int acp_init(void __iomem *acp_mmio, u32 asic_type) val &= ~ACP_SOFT_RESET__SoftResetAud_MASK; acp_reg_write(val, acp_mmio, mmACP_SOFT_RESET);
+ /* For BT instance change pins from UART to BT */ + if (bt_pad_enable) { + val = acp_reg_read(acp_mmio, mmACP_BT_UART_PAD_SEL); + val |= ACP_BT_UART_PAD_SELECT_MASK; + acp_reg_write(val, acp_mmio, mmACP_BT_UART_PAD_SEL); + } + /* initiailize Onion control DAGB register */ acp_reg_write(ACP_ONION_CNTL_DEFAULT, acp_mmio, mmACP_AXI2DAGB_ONION_CNTL); diff --git a/sound/soc/amd/acp.h b/sound/soc/amd/acp.h index 460365c..6b43144 100644 --- a/sound/soc/amd/acp.h +++ b/sound/soc/amd/acp.h @@ -107,6 +107,7 @@ #define ACP_I2S_MIC_16BIT_RESOLUTION_EN 0x01 #define ACP_I2S_SP_16BIT_RESOLUTION_EN 0x02 #define ACP_I2S_BT_16BIT_RESOLUTION_EN 0x04 +#define ACP_BT_UART_PAD_SELECT_MASK 0x1
enum acp_dma_priority_level { /* 0x0 Specifies the DMA channel is given normal priority */
On Tue, Apr 17, 2018 at 09:21:45PM +0530, Vijendar Mukunda wrote:
On ST/CZ based platforms, for specific platform bt uart mux to be defined for bt i2s.
Please don't send isolated patches numbered like they're in a series, the numbering is only there so people know what order a series should be handled in - outside of a series they mean nothing so just number within what you're posting.
participants (5)
-
Agrawal, Akshu
-
kbuild test robot
-
Mark Brown
-
Mukunda,Vijendar
-
Vijendar Mukunda