All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/6 v3] Add ASoC support for AMD Stoney APUs
@ 2017-08-18 18:10 Alex Deucher
  2017-08-18 18:10 ` [PATCH 1/6 v3] drm/amd/amdgpu: Added asic_type as ACP DMA driver platform data Alex Deucher
                   ` (2 more replies)
  0 siblings, 3 replies; 19+ messages in thread
From: Alex Deucher @ 2017-08-18 18:10 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	airlied-Re5JQEeQqe8AvxtiuMwx3w,
	alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw,
	broonie-DgEjT+Ai2ygdnm+yROfE0A, Vijendar.Mukunda-5C7GfCeVMHo,
	rajeevkumar.linux-Re5JQEeQqe8AvxtiuMwx3w, perex-/Fr2/VpizcU
  Cc: tiwai-l3A5Bk7waGM, Alex Deucher, lgirdwood-Re5JQEeQqe8AvxtiuMwx3w

This patch set updates the AMD GPU and Audio CoProcessor (ACP)
audio drivers and the designware i2s driver for Stoney (ST).
ST is an APU similar to Carrizo (CZ) which already has ACP audio
support.  The i2s controller and ACP audio DMA engine are part of
the GPU and both need updating so I would like to upstream the
whole patch set via one tree if possible.

The current code is based on drm-next, but I'm happy to rebase on
whatever tree this ends up going through if there are any problems
applying.  These patches touch both audio and drm.

The entire patch set can be viewed here:
https://cgit.freedesktop.org/~agd5f/linux/log/?h=stoney_acp2

Thanks!

Alex

v2:
- Patch 1 is already applied to the audio tree, just including it for
  completeness since it's required for this patch set and it's not yet
  in the drm tree.
- New patch to share asic types between gpu and audio drivers
- ACPI ID changed for rt5650 machine driver
- Integrate feedback on other patches

v3:
- resend remaining patches that have not been applied yet

Akshu Agrawal (2):
  drm/amdgpu Moving amdgpu asic types to a separate file
  ASoC: AMD: Add machine driver for cz rt5650

Vijendar Mukunda (4):
  drm/amd/amdgpu: Added asic_type as ACP DMA driver platform data
  ASoC: AMD: disabling memory gating in stoney platform
  ASoC: AMD: DMA driver changes for Stoney Platform
  ASoC: AMD: Audio buffer related changes for Stoney

 drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c  |   2 +
 drivers/gpu/drm/amd/include/amd_shared.h |  29 +---
 include/drm/amd_asic_type.h              |  52 +++++++
 sound/soc/amd/Kconfig                    |   7 +
 sound/soc/amd/Makefile                   |   2 +
 sound/soc/amd/acp-pcm-dma.c              | 243 ++++++++++++++++++++++++-------
 sound/soc/amd/acp-rt5645.c               | 210 ++++++++++++++++++++++++++
 sound/soc/amd/acp.h                      |   9 ++
 8 files changed, 472 insertions(+), 82 deletions(-)
 create mode 100644 include/drm/amd_asic_type.h
 create mode 100644 sound/soc/amd/acp-rt5645.c

-- 
2.5.5

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 19+ messages in thread

* [PATCH 1/6 v3] drm/amd/amdgpu: Added asic_type as ACP DMA driver platform data
  2017-08-18 18:10 [PATCH 0/6 v3] Add ASoC support for AMD Stoney APUs Alex Deucher
@ 2017-08-18 18:10 ` Alex Deucher
  2017-08-18 18:10 ` [PATCH 2/6 v2] drm/amdgpu Moving amdgpu asic types to a separate file Alex Deucher
       [not found] ` <1503079830-16072-1-git-send-email-alexander.deucher-5C7GfCeVMHo@public.gmane.org>
  2 siblings, 0 replies; 19+ messages in thread
From: Alex Deucher @ 2017-08-18 18:10 UTC (permalink / raw)
  To: amd-gfx, dri-devel, airlied, alsa-devel, broonie,
	Vijendar.Mukunda, rajeevkumar.linux, perex
  Cc: Alex Deucher, lgirdwood

From: Vijendar Mukunda <Vijendar.Mukunda@amd.com>

asic_type information is passed to ACP DMA Driver as platform data.

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
---

v2: Removed asic_type local variable and directly passing asic_type
instance to ACP DMA driver as platform data.
v3: Add R-b, resend.

 drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c | 2 ++
 sound/soc/amd/acp-pcm-dma.c             | 8 ++------
 sound/soc/amd/acp.h                     | 7 +++++++
 3 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c
index a52795d..ebca223 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c
@@ -371,6 +371,8 @@ static int acp_hw_init(void *handle)
 	adev->acp.acp_cell[0].name = "acp_audio_dma";
 	adev->acp.acp_cell[0].num_resources = 4;
 	adev->acp.acp_cell[0].resources = &adev->acp.acp_res[0];
+	adev->acp.acp_cell[0].platform_data = &adev->asic_type;
+	adev->acp.acp_cell[0].pdata_size = sizeof(adev->asic_type);
 
 	adev->acp.acp_cell[1].name = "designware-i2s";
 	adev->acp.acp_cell[1].num_resources = 1;
diff --git a/sound/soc/amd/acp-pcm-dma.c b/sound/soc/amd/acp-pcm-dma.c
index 08b1399..dcbf997 100644
--- a/sound/soc/amd/acp-pcm-dma.c
+++ b/sound/soc/amd/acp-pcm-dma.c
@@ -73,12 +73,6 @@ static const struct snd_pcm_hardware acp_pcm_hardware_capture = {
 	.periods_max = CAPTURE_MAX_NUM_PERIODS,
 };
 
-struct audio_drv_data {
-	struct snd_pcm_substream *play_stream;
-	struct snd_pcm_substream *capture_stream;
-	void __iomem *acp_mmio;
-};
-
 static u32 acp_reg_read(void __iomem *acp_mmio, u32 reg)
 {
 	return readl(acp_mmio + (reg * 4));
@@ -916,6 +910,7 @@ static int acp_audio_probe(struct platform_device *pdev)
 	int status;
 	struct audio_drv_data *audio_drv_data;
 	struct resource *res;
+	const u32 *pdata = pdev->dev.platform_data;
 
 	audio_drv_data = devm_kzalloc(&pdev->dev, sizeof(struct audio_drv_data),
 					GFP_KERNEL);
@@ -932,6 +927,7 @@ static int acp_audio_probe(struct platform_device *pdev)
 
 	audio_drv_data->play_stream = NULL;
 	audio_drv_data->capture_stream = NULL;
+	audio_drv_data->asic_type =  *pdata;
 
 	res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
 	if (!res) {
diff --git a/sound/soc/amd/acp.h b/sound/soc/amd/acp.h
index 330832e..28cf914 100644
--- a/sound/soc/amd/acp.h
+++ b/sound/soc/amd/acp.h
@@ -84,6 +84,13 @@ struct audio_substream_data {
 	void __iomem *acp_mmio;
 };
 
+struct audio_drv_data {
+	struct snd_pcm_substream *play_stream;
+	struct snd_pcm_substream *capture_stream;
+	void __iomem *acp_mmio;
+	u32 asic_type;
+};
+
 enum {
 	ACP_TILE_P1 = 0,
 	ACP_TILE_P2,
-- 
2.5.5

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH 2/6 v2] drm/amdgpu Moving amdgpu asic types to a separate file
  2017-08-18 18:10 [PATCH 0/6 v3] Add ASoC support for AMD Stoney APUs Alex Deucher
  2017-08-18 18:10 ` [PATCH 1/6 v3] drm/amd/amdgpu: Added asic_type as ACP DMA driver platform data Alex Deucher
@ 2017-08-18 18:10 ` Alex Deucher
       [not found] ` <1503079830-16072-1-git-send-email-alexander.deucher-5C7GfCeVMHo@public.gmane.org>
  2 siblings, 0 replies; 19+ messages in thread
From: Alex Deucher @ 2017-08-18 18:10 UTC (permalink / raw)
  To: amd-gfx, dri-devel, airlied, alsa-devel, broonie,
	Vijendar.Mukunda, rajeevkumar.linux, perex
  Cc: Alex Deucher, lgirdwood, Akshu Agrawal

From: Akshu Agrawal <akshu.agrawal@amd.com>

Amdgpu asic types will be required for other drivers too.
Hence, its better to keep it in a separate include file.

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Akshu Agrawal <akshu.agrawal@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
---

v1: New patch to share asic_type definitions between GPU and audio driver.
v2: add R-b, resend

 drivers/gpu/drm/amd/include/amd_shared.h | 29 ++----------------
 include/drm/amd_asic_type.h              | 52 ++++++++++++++++++++++++++++++++
 2 files changed, 54 insertions(+), 27 deletions(-)
 create mode 100644 include/drm/amd_asic_type.h

diff --git a/drivers/gpu/drm/amd/include/amd_shared.h b/drivers/gpu/drm/amd/include/amd_shared.h
index 70e8c20..3a49fbd 100644
--- a/drivers/gpu/drm/amd/include/amd_shared.h
+++ b/drivers/gpu/drm/amd/include/amd_shared.h
@@ -23,34 +23,9 @@
 #ifndef __AMD_SHARED_H__
 #define __AMD_SHARED_H__
 
-#define AMD_MAX_USEC_TIMEOUT		200000  /* 200 ms */
+#include <drm/amd_asic_type.h>
 
-/*
- * Supported ASIC types
- */
-enum amd_asic_type {
-	CHIP_TAHITI = 0,
-	CHIP_PITCAIRN,
-	CHIP_VERDE,
-	CHIP_OLAND,
-	CHIP_HAINAN,
-	CHIP_BONAIRE,
-	CHIP_KAVERI,
-	CHIP_KABINI,
-	CHIP_HAWAII,
-	CHIP_MULLINS,
-	CHIP_TOPAZ,
-	CHIP_TONGA,
-	CHIP_FIJI,
-	CHIP_CARRIZO,
-	CHIP_STONEY,
-	CHIP_POLARIS10,
-	CHIP_POLARIS11,
-	CHIP_POLARIS12,
-	CHIP_VEGA10,
-	CHIP_RAVEN,
-	CHIP_LAST,
-};
+#define AMD_MAX_USEC_TIMEOUT		200000  /* 200 ms */
 
 /*
  * Chip flags
diff --git a/include/drm/amd_asic_type.h b/include/drm/amd_asic_type.h
new file mode 100644
index 0000000..599028f
--- /dev/null
+++ b/include/drm/amd_asic_type.h
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2017 Advanced Micro Devices, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#ifndef __AMD_ASIC_TYPE_H__
+#define __AMD_ASIC_TYPE_H__
+/*
+ * Supported ASIC types
+ */
+enum amd_asic_type {
+	CHIP_TAHITI = 0,
+	CHIP_PITCAIRN,
+	CHIP_VERDE,
+	CHIP_OLAND,
+	CHIP_HAINAN,
+	CHIP_BONAIRE,
+	CHIP_KAVERI,
+	CHIP_KABINI,
+	CHIP_HAWAII,
+	CHIP_MULLINS,
+	CHIP_TOPAZ,
+	CHIP_TONGA,
+	CHIP_FIJI,
+	CHIP_CARRIZO,
+	CHIP_STONEY,
+	CHIP_POLARIS10,
+	CHIP_POLARIS11,
+	CHIP_POLARIS12,
+	CHIP_VEGA10,
+	CHIP_RAVEN,
+	CHIP_LAST,
+};
+
+#endif /*__AMD_ASIC_TYPE_H__ */
-- 
2.5.5

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH 3/6 v3] ASoC: AMD: disabling memory gating in stoney platform
       [not found] ` <1503079830-16072-1-git-send-email-alexander.deucher-5C7GfCeVMHo@public.gmane.org>
@ 2017-08-18 18:10   ` Alex Deucher
  2017-08-31 11:39     ` Mark Brown
  2017-08-18 18:10   ` [PATCH 4/6 v2] ASoC: AMD: DMA driver changes for Stoney Platform Alex Deucher
                     ` (3 subsequent siblings)
  4 siblings, 1 reply; 19+ messages in thread
From: Alex Deucher @ 2017-08-18 18:10 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	airlied-Re5JQEeQqe8AvxtiuMwx3w,
	alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw,
	broonie-DgEjT+Ai2ygdnm+yROfE0A, Vijendar.Mukunda-5C7GfCeVMHo,
	rajeevkumar.linux-Re5JQEeQqe8AvxtiuMwx3w, perex-/Fr2/VpizcU
  Cc: tiwai-l3A5Bk7waGM, Alex Deucher, lgirdwood-Re5JQEeQqe8AvxtiuMwx3w

From: Vijendar Mukunda <Vijendar.Mukunda@amd.com>

For Stoney platform, Memory gating is disabled.i.e SRAM Banks
won't be turned off. By Default, SRAM Bank state set to ON.
Added condition checks to skip SRAM Bank state set logic for
Stoney platform.

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
---

v2: Added comments in code and removed locally defined macros
    for STONEY and Carrizo.
v3: add R-b, resend

sound/soc/amd/acp-pcm-dma.c | 79 +++++++++++++++++++++++++++++++--------------
 1 file changed, 55 insertions(+), 24 deletions(-)

diff --git a/sound/soc/amd/acp-pcm-dma.c b/sound/soc/amd/acp-pcm-dma.c
index dcbf997..f00b6b9 100644
--- a/sound/soc/amd/acp-pcm-dma.c
+++ b/sound/soc/amd/acp-pcm-dma.c
@@ -20,7 +20,7 @@
 #include <linux/pm_runtime.h>
 
 #include <sound/soc.h>
-
+#include <drm/amd_asic_type.h>
 #include "acp.h"
 
 #define PLAYBACK_MIN_NUM_PERIODS    2
@@ -419,7 +419,7 @@ static void acp_set_sram_bank_state(void __iomem *acp_mmio, u16 bank,
 }
 
 /* Initialize and bring ACP hardware to default state. */
-static int acp_init(void __iomem *acp_mmio)
+static int acp_init(void __iomem *acp_mmio, u32 asic_type)
 {
 	u16 bank;
 	u32 val, count, sram_pte_offset;
@@ -493,9 +493,14 @@ static int acp_init(void __iomem *acp_mmio)
        /* When ACP_TILE_P1 is turned on, all SRAM banks get turned on.
 	* Now, turn off all of them. This can't be done in 'poweron' of
 	* ACP pm domain, as this requires ACP to be initialized.
+	* For Stoney, Memory gating is disabled,i.e SRAM Banks
+	* won't be turned off. The default state for SRAM banks is ON.
+	* Setting SRAM bank state code skipped for STONEY platform.
 	*/
-	for (bank = 1; bank < 48; bank++)
-		acp_set_sram_bank_state(acp_mmio, bank, false);
+	if (asic_type != CHIP_STONEY) {
+		for (bank = 1; bank < 48; bank++)
+			acp_set_sram_bank_state(acp_mmio, bank, false);
+	}
 
 	return 0;
 }
@@ -646,14 +651,22 @@ static int acp_dma_open(struct snd_pcm_substream *substream)
 
 	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
 		intr_data->play_stream = substream;
-		for (bank = 1; bank <= 4; bank++)
-			acp_set_sram_bank_state(intr_data->acp_mmio, bank,
-						true);
+		/* For Stoney, Memory gating is disabled,i.e SRAM Banks
+		 * won't be turned off. The default state for SRAM banks is ON.
+		 * Setting SRAM bank state code skipped for STONEY platform.
+		 */
+		if (intr_data->asic_type != CHIP_STONEY) {
+			for (bank = 1; bank <= 4; bank++)
+				acp_set_sram_bank_state(intr_data->acp_mmio,
+							bank, true);
+		}
 	} else {
 		intr_data->capture_stream = substream;
-		for (bank = 5; bank <= 8; bank++)
-			acp_set_sram_bank_state(intr_data->acp_mmio, bank,
-						true);
+		if (intr_data->asic_type != CHIP_STONEY) {
+			for (bank = 5; bank <= 8; bank++)
+				acp_set_sram_bank_state(intr_data->acp_mmio,
+							bank, true);
+		}
 	}
 
 	return 0;
@@ -869,14 +882,23 @@ static int acp_dma_close(struct snd_pcm_substream *substream)
 
 	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
 		adata->play_stream = NULL;
-		for (bank = 1; bank <= 4; bank++)
-			acp_set_sram_bank_state(adata->acp_mmio, bank,
-						false);
-	} else {
+		/* For Stoney, Memory gating is disabled,i.e SRAM Banks
+		 * won't be turned off. The default state for SRAM banks is ON.
+		 * Setting SRAM bank state code skipped for STONEY platform.
+		 * added condition checks for Carrizo platform only
+		 */
+		if (adata->asic_type != CHIP_STONEY) {
+			for (bank = 1; bank <= 4; bank++)
+				acp_set_sram_bank_state(adata->acp_mmio, bank,
+				false);
+		}
+	} else  {
 		adata->capture_stream = NULL;
-		for (bank = 5; bank <= 8; bank++)
-			acp_set_sram_bank_state(adata->acp_mmio, bank,
-						false);
+		if (adata->asic_type != CHIP_STONEY) {
+			for (bank = 5; bank <= 8; bank++)
+				acp_set_sram_bank_state(adata->acp_mmio, bank,
+						     false);
+		}
 	}
 
 	/* Disable ACP irq, when the current stream is being closed and
@@ -945,7 +967,7 @@ static int acp_audio_probe(struct platform_device *pdev)
 	dev_set_drvdata(&pdev->dev, audio_drv_data);
 
 	/* Initialize the ACP */
-	acp_init(audio_drv_data->acp_mmio);
+	acp_init(audio_drv_data->acp_mmio, audio_drv_data->asic_type);
 
 	status = snd_soc_register_platform(&pdev->dev, &acp_asoc_platform);
 	if (status != 0) {
@@ -976,19 +998,27 @@ static int acp_pcm_resume(struct device *dev)
 	u16 bank;
 	struct audio_drv_data *adata = dev_get_drvdata(dev);
 
-	acp_init(adata->acp_mmio);
+	acp_init(adata->acp_mmio, adata->asic_type);
 
 	if (adata->play_stream && adata->play_stream->runtime) {
-		for (bank = 1; bank <= 4; bank++)
-			acp_set_sram_bank_state(adata->acp_mmio, bank,
+		/* For Stoney, Memory gating is disabled,i.e SRAM Banks
+		 * won't be turned off. The default state for SRAM banks is ON.
+		 * Setting SRAM bank state code skipped for STONEY platform.
+		 */
+		if (adata->asic_type != CHIP_STONEY) {
+			for (bank = 1; bank <= 4; bank++)
+				acp_set_sram_bank_state(adata->acp_mmio, bank,
 						true);
+		}
 		config_acp_dma(adata->acp_mmio,
 				adata->play_stream->runtime->private_data);
 	}
 	if (adata->capture_stream && adata->capture_stream->runtime) {
-		for (bank = 5; bank <= 8; bank++)
-			acp_set_sram_bank_state(adata->acp_mmio, bank,
+		if (adata->asic_type != CHIP_STONEY) {
+			for (bank = 5; bank <= 8; bank++)
+				acp_set_sram_bank_state(adata->acp_mmio, bank,
 						true);
+		}
 		config_acp_dma(adata->acp_mmio,
 				adata->capture_stream->runtime->private_data);
 	}
@@ -1009,7 +1039,7 @@ static int acp_pcm_runtime_resume(struct device *dev)
 {
 	struct audio_drv_data *adata = dev_get_drvdata(dev);
 
-	acp_init(adata->acp_mmio);
+	acp_init(adata->acp_mmio, adata->asic_type);
 	acp_reg_write(1, adata->acp_mmio, mmACP_EXTERNAL_INTR_ENB);
 	return 0;
 }
@@ -1031,6 +1061,7 @@ static struct platform_driver acp_dma_driver = {
 
 module_platform_driver(acp_dma_driver);
 
+MODULE_AUTHOR("Vijendar.Mukunda@amd.com");
 MODULE_AUTHOR("Maruthi.Bayyavarapu@amd.com");
 MODULE_DESCRIPTION("AMD ACP PCM Driver");
 MODULE_LICENSE("GPL v2");
-- 
2.5.5

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH 4/6 v2] ASoC: AMD: DMA driver changes for Stoney Platform
       [not found] ` <1503079830-16072-1-git-send-email-alexander.deucher-5C7GfCeVMHo@public.gmane.org>
  2017-08-18 18:10   ` [PATCH 3/6 v3] ASoC: AMD: disabling memory gating in stoney platform Alex Deucher
@ 2017-08-18 18:10   ` Alex Deucher
  2017-08-31 11:39     ` Mark Brown
  2017-08-18 18:10   ` [PATCH 5/6 v3] ASoC: AMD: Audio buffer related changes for Stoney Alex Deucher
                     ` (2 subsequent siblings)
  4 siblings, 1 reply; 19+ messages in thread
From: Alex Deucher @ 2017-08-18 18:10 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	airlied-Re5JQEeQqe8AvxtiuMwx3w,
	alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw,
	broonie-DgEjT+Ai2ygdnm+yROfE0A, Vijendar.Mukunda-5C7GfCeVMHo,
	rajeevkumar.linux-Re5JQEeQqe8AvxtiuMwx3w, perex-/Fr2/VpizcU
  Cc: tiwai-l3A5Bk7waGM, Alex Deucher, lgirdwood-Re5JQEeQqe8AvxtiuMwx3w

From: Vijendar Mukunda <Vijendar.Mukunda@amd.com>

Added DMA driver changes for Stoney platform.
Below are the key differences between Stoney and CZ

In Stoney, Memory Gating is disabled.SRAM Banks won't
be turned off.No Of SRAM Banks reduced to 6.
DAGB Garlic Interface used and 16 bit resolution is supported.
SRAM bank 1 & SRAM bank 2 will be used for playback scenario.
SRAM Bank 3 & SRAM Bank 4 will be used for Capture scenario.

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
---

v2: Added switch cases for asic type.
v3: Add R-b, resend

 sound/soc/amd/acp-pcm-dma.c | 87 +++++++++++++++++++++++++++++++++------------
 sound/soc/amd/acp.h         |  2 ++
 2 files changed, 67 insertions(+), 22 deletions(-)

diff --git a/sound/soc/amd/acp-pcm-dma.c b/sound/soc/amd/acp-pcm-dma.c
index f00b6b9..f16e0b8 100644
--- a/sound/soc/amd/acp-pcm-dma.c
+++ b/sound/soc/amd/acp-pcm-dma.c
@@ -137,8 +137,8 @@ static void config_dma_descriptor_in_sram(void __iomem *acp_mmio,
  * system memory <-> ACP SRAM
  */
 static void set_acp_sysmem_dma_descriptors(void __iomem *acp_mmio,
-					   u32 size, int direction,
-					   u32 pte_offset)
+					u32 size, int direction,
+					u32 pte_offset, u32 asic_type)
 {
 	u16 i;
 	u16 dma_dscr_idx = PLAYBACK_START_DMA_DESCR_CH12;
@@ -152,20 +152,42 @@ static void set_acp_sysmem_dma_descriptors(void __iomem *acp_mmio,
 					(size / 2) - (i * (size/2));
 			dmadscr[i].src = ACP_INTERNAL_APERTURE_WINDOW_0_ADDRESS
 				+ (pte_offset * SZ_4K) + (i * (size/2));
-			dmadscr[i].xfer_val |=
-			(ACP_DMA_ATTRIBUTES_DAGB_ONION_TO_SHAREDMEM << 16) |
-			(size / 2);
+			switch (asic_type) {
+			case CHIP_STONEY:
+				dmadscr[i].xfer_val |=
+				(ACP_DMA_ATTRIBUTES_DAGB_GARLIC_TO_SHAREDMEM  << 16) |
+				(size / 2);
+				break;
+			default:
+				dmadscr[i].xfer_val |=
+				(ACP_DMA_ATTRIBUTES_DAGB_ONION_TO_SHAREDMEM  << 16) |
+				(size / 2);
+			}
 		} else {
 			dma_dscr_idx = CAPTURE_START_DMA_DESCR_CH14 + i;
-			dmadscr[i].src = ACP_SHARED_RAM_BANK_5_ADDRESS +
-					(i * (size/2));
-			dmadscr[i].dest = ACP_INTERNAL_APERTURE_WINDOW_0_ADDRESS
-						+ (pte_offset * SZ_4K) +
-						(i * (size/2));
-			dmadscr[i].xfer_val |=
-			BIT(22) |
-			(ACP_DMA_ATTRIBUTES_SHAREDMEM_TO_DAGB_ONION << 16) |
-			(size / 2);
+			switch (asic_type) {
+			case CHIP_STONEY:
+				dmadscr[i].src = ACP_SHARED_RAM_BANK_3_ADDRESS +
+				(i * (size/2));
+				dmadscr[i].dest =
+				ACP_INTERNAL_APERTURE_WINDOW_0_ADDRESS +
+				(pte_offset * SZ_4K) + (i * (size/2));
+				dmadscr[i].xfer_val |=
+				BIT(22) |
+				(ACP_DMA_ATTRIBUTES_SHARED_MEM_TO_DAGB_GARLIC << 16) |
+				(size / 2);
+				break;
+			default:
+				dmadscr[i].src = ACP_SHARED_RAM_BANK_5_ADDRESS +
+				(i * (size/2));
+				dmadscr[i].dest =
+				ACP_INTERNAL_APERTURE_WINDOW_0_ADDRESS +
+				(pte_offset * SZ_4K) + (i * (size/2));
+				dmadscr[i].xfer_val |=
+				BIT(22) |
+				(ACP_DMA_ATTRIBUTES_SHAREDMEM_TO_DAGB_ONION << 16) |
+				(size / 2);
+			}
 		}
 		config_dma_descriptor_in_sram(acp_mmio, dma_dscr_idx,
 						&dmadscr[i]);
@@ -186,7 +208,8 @@ static void set_acp_sysmem_dma_descriptors(void __iomem *acp_mmio,
  * ACP SRAM <-> I2S
  */
 static void set_acp_to_i2s_dma_descriptors(void __iomem *acp_mmio,
-					   u32 size, int direction)
+					u32 size, int direction,
+					u32 asic_type)
 {
 
 	u16 i;
@@ -207,8 +230,17 @@ static void set_acp_to_i2s_dma_descriptors(void __iomem *acp_mmio,
 			dma_dscr_idx = CAPTURE_START_DMA_DESCR_CH15 + i;
 			/* dmadscr[i].src is unused by hardware. */
 			dmadscr[i].src = 0;
-			dmadscr[i].dest = ACP_SHARED_RAM_BANK_5_ADDRESS +
+			switch (asic_type) {
+			case CHIP_STONEY:
+				dmadscr[i].dest =
+					 ACP_SHARED_RAM_BANK_3_ADDRESS +
 					(i * (size / 2));
+				break;
+			default:
+				dmadscr[i].dest =
+					 ACP_SHARED_RAM_BANK_5_ADDRESS +
+					(i * (size / 2));
+			}
 			dmadscr[i].xfer_val |= BIT(22) |
 					(FROM_ACP_I2S_1 << 16) | (size / 2);
 		}
@@ -264,7 +296,8 @@ static void acp_pte_config(void __iomem *acp_mmio, struct page *pg,
 }
 
 static void config_acp_dma(void __iomem *acp_mmio,
-			   struct audio_substream_data *audio_config)
+			struct audio_substream_data *audio_config,
+			u32 asic_type)
 {
 	u32 pte_offset;
 
@@ -278,11 +311,11 @@ static void config_acp_dma(void __iomem *acp_mmio,
 
 	/* Configure System memory <-> ACP SRAM DMA descriptors */
 	set_acp_sysmem_dma_descriptors(acp_mmio, audio_config->size,
-				       audio_config->direction, pte_offset);
+				audio_config->direction, pte_offset, asic_type);
 
 	/* Configure ACP SRAM <-> I2S DMA descriptors */
 	set_acp_to_i2s_dma_descriptors(acp_mmio, audio_config->size,
-					audio_config->direction);
+				audio_config->direction, asic_type);
 }
 
 /* Start a given DMA channel transfer */
@@ -502,6 +535,12 @@ static int acp_init(void __iomem *acp_mmio, u32 asic_type)
 			acp_set_sram_bank_state(acp_mmio, bank, false);
 	}
 
+	/* Stoney supports 16bit resolution */
+	if (asic_type == CHIP_STONEY) {
+		val = acp_reg_read(acp_mmio, mmACP_I2S_16BIT_RESOLUTION_EN);
+		val |= 0x03;
+		acp_reg_write(val, acp_mmio, mmACP_I2S_16BIT_RESOLUTION_EN);
+	}
 	return 0;
 }
 
@@ -680,6 +719,8 @@ static int acp_dma_hw_params(struct snd_pcm_substream *substream,
 	struct page *pg;
 	struct snd_pcm_runtime *runtime;
 	struct audio_substream_data *rtd;
+	struct snd_soc_pcm_runtime *prtd = substream->private_data;
+	struct audio_drv_data *adata = dev_get_drvdata(prtd->platform->dev);
 
 	runtime = substream->runtime;
 	rtd = runtime->private_data;
@@ -707,7 +748,7 @@ static int acp_dma_hw_params(struct snd_pcm_substream *substream,
 		rtd->num_of_pages = PAGE_ALIGN(size) >> PAGE_SHIFT;
 		rtd->direction = substream->stream;
 
-		config_acp_dma(rtd->acp_mmio, rtd);
+		config_acp_dma(rtd->acp_mmio, rtd, adata->asic_type);
 		status = 0;
 	} else {
 		status = -ENOMEM;
@@ -1011,7 +1052,8 @@ static int acp_pcm_resume(struct device *dev)
 						true);
 		}
 		config_acp_dma(adata->acp_mmio,
-				adata->play_stream->runtime->private_data);
+			adata->play_stream->runtime->private_data,
+			adata->asic_type);
 	}
 	if (adata->capture_stream && adata->capture_stream->runtime) {
 		if (adata->asic_type != CHIP_STONEY) {
@@ -1020,7 +1062,8 @@ static int acp_pcm_resume(struct device *dev)
 						true);
 		}
 		config_acp_dma(adata->acp_mmio,
-				adata->capture_stream->runtime->private_data);
+			adata->capture_stream->runtime->private_data,
+			adata->asic_type);
 	}
 	acp_reg_write(1, adata->acp_mmio, mmACP_EXTERNAL_INTR_ENB);
 	return 0;
diff --git a/sound/soc/amd/acp.h b/sound/soc/amd/acp.h
index 28cf914..a330a99 100644
--- a/sound/soc/amd/acp.h
+++ b/sound/soc/amd/acp.h
@@ -19,6 +19,7 @@
 
 /* Capture SRAM address (as a source in dma descriptor) */
 #define ACP_SHARED_RAM_BANK_5_ADDRESS		0x400A000
+#define ACP_SHARED_RAM_BANK_3_ADDRESS		0x4006000
 
 #define ACP_DMA_RESET_TIME			10000
 #define ACP_CLOCK_EN_TIME_OUT_VALUE		0x000000FF
@@ -67,6 +68,7 @@
 #define CAPTURE_START_DMA_DESCR_CH15 6
 #define CAPTURE_END_DMA_DESCR_CH15 7
 
+#define mmACP_I2S_16BIT_RESOLUTION_EN       0x5209
 enum acp_dma_priority_level {
 	/* 0x0 Specifies the DMA channel is given normal priority */
 	ACP_DMA_PRIORITY_LEVEL_NORMAL = 0x0,
-- 
2.5.5

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH 5/6 v3] ASoC: AMD: Audio buffer related changes for Stoney
       [not found] ` <1503079830-16072-1-git-send-email-alexander.deucher-5C7GfCeVMHo@public.gmane.org>
  2017-08-18 18:10   ` [PATCH 3/6 v3] ASoC: AMD: disabling memory gating in stoney platform Alex Deucher
  2017-08-18 18:10   ` [PATCH 4/6 v2] ASoC: AMD: DMA driver changes for Stoney Platform Alex Deucher
@ 2017-08-18 18:10   ` Alex Deucher
  2017-08-31 11:27     ` Mark Brown
  2017-08-18 18:10   ` [PATCH 6/6 v3] ASoC: AMD: Add machine driver for cz rt5650 Alex Deucher
  2017-08-30 13:33   ` [PATCH 0/6 v3] Add ASoC support for AMD Stoney APUs Alex Deucher
  4 siblings, 1 reply; 19+ messages in thread
From: Alex Deucher @ 2017-08-18 18:10 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	airlied-Re5JQEeQqe8AvxtiuMwx3w,
	alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw,
	broonie-DgEjT+Ai2ygdnm+yROfE0A, Vijendar.Mukunda-5C7GfCeVMHo,
	rajeevkumar.linux-Re5JQEeQqe8AvxtiuMwx3w, perex-/Fr2/VpizcU
  Cc: tiwai-l3A5Bk7waGM, Alex Deucher, lgirdwood-Re5JQEeQqe8AvxtiuMwx3w

From: Vijendar Mukunda <Vijendar.Mukunda@amd.com>

Stoney uses 16kb SRAM memory for playback and 16Kb
for capture.Modified Max buffer size to have the
correct mapping between System Memory and SRAM.

Added snd_pcm_hardware structures for playback
and capture for Stoney.

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
---

v2: Added switch cases for asic type.
v3: add R-b, resend

 sound/soc/amd/acp-pcm-dma.c | 73 +++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 68 insertions(+), 5 deletions(-)

diff --git a/sound/soc/amd/acp-pcm-dma.c b/sound/soc/amd/acp-pcm-dma.c
index f16e0b8..a6def3b 100644
--- a/sound/soc/amd/acp-pcm-dma.c
+++ b/sound/soc/amd/acp-pcm-dma.c
@@ -35,6 +35,10 @@
 #define MAX_BUFFER (PLAYBACK_MAX_PERIOD_SIZE * PLAYBACK_MAX_NUM_PERIODS)
 #define MIN_BUFFER MAX_BUFFER
 
+#define ST_PLAYBACK_MAX_PERIOD_SIZE 8192
+#define ST_CAPTURE_MAX_PERIOD_SIZE  8192
+#define ST_MAX_BUFFER (ST_PLAYBACK_MAX_PERIOD_SIZE * PLAYBACK_MAX_NUM_PERIODS)
+#define ST_MIN_BUFFER ST_MAX_BUFFER
 static const struct snd_pcm_hardware acp_pcm_hardware_playback = {
 	.info = SNDRV_PCM_INFO_INTERLEAVED |
 		SNDRV_PCM_INFO_BLOCK_TRANSFER | SNDRV_PCM_INFO_MMAP |
@@ -73,6 +77,44 @@ static const struct snd_pcm_hardware acp_pcm_hardware_capture = {
 	.periods_max = CAPTURE_MAX_NUM_PERIODS,
 };
 
+static const struct snd_pcm_hardware acp_st_pcm_hardware_playback = {
+	.info = SNDRV_PCM_INFO_INTERLEAVED |
+		SNDRV_PCM_INFO_BLOCK_TRANSFER | SNDRV_PCM_INFO_MMAP |
+		SNDRV_PCM_INFO_MMAP_VALID | SNDRV_PCM_INFO_BATCH |
+		SNDRV_PCM_INFO_PAUSE | SNDRV_PCM_INFO_RESUME,
+	.formats = SNDRV_PCM_FMTBIT_S16_LE |
+		SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE,
+	.channels_min = 1,
+	.channels_max = 8,
+	.rates = SNDRV_PCM_RATE_8000_96000,
+	.rate_min = 8000,
+	.rate_max = 96000,
+	.buffer_bytes_max = ST_MAX_BUFFER,
+	.period_bytes_min = PLAYBACK_MIN_PERIOD_SIZE,
+	.period_bytes_max = ST_PLAYBACK_MAX_PERIOD_SIZE,
+	.periods_min = PLAYBACK_MIN_NUM_PERIODS,
+	.periods_max = PLAYBACK_MAX_NUM_PERIODS,
+};
+
+static const struct snd_pcm_hardware acp_st_pcm_hardware_capture = {
+	.info = SNDRV_PCM_INFO_INTERLEAVED |
+		SNDRV_PCM_INFO_BLOCK_TRANSFER | SNDRV_PCM_INFO_MMAP |
+		SNDRV_PCM_INFO_MMAP_VALID | SNDRV_PCM_INFO_BATCH |
+		SNDRV_PCM_INFO_PAUSE | SNDRV_PCM_INFO_RESUME,
+	.formats = SNDRV_PCM_FMTBIT_S16_LE |
+		SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE,
+	.channels_min = 1,
+	.channels_max = 2,
+	.rates = SNDRV_PCM_RATE_8000_48000,
+	.rate_min = 8000,
+	.rate_max = 48000,
+	.buffer_bytes_max = ST_MAX_BUFFER,
+	.period_bytes_min = CAPTURE_MIN_PERIOD_SIZE,
+	.period_bytes_max = ST_CAPTURE_MAX_PERIOD_SIZE,
+	.periods_min = CAPTURE_MIN_NUM_PERIODS,
+	.periods_max = CAPTURE_MAX_NUM_PERIODS,
+};
+
 static u32 acp_reg_read(void __iomem *acp_mmio, u32 reg)
 {
 	return readl(acp_mmio + (reg * 4));
@@ -664,10 +706,23 @@ static int acp_dma_open(struct snd_pcm_substream *substream)
 	if (adata == NULL)
 		return -ENOMEM;
 
-	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-		runtime->hw = acp_pcm_hardware_playback;
-	else
-		runtime->hw = acp_pcm_hardware_capture;
+	if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
+		switch (intr_data->asic_type) {
+		case CHIP_STONEY:
+			runtime->hw = acp_st_pcm_hardware_playback;
+			break;
+		default:
+			runtime->hw = acp_pcm_hardware_playback;
+		}
+	} else {
+		switch (intr_data->asic_type) {
+		case CHIP_STONEY:
+			runtime->hw = acp_st_pcm_hardware_capture;
+			break;
+		default:
+			runtime->hw = acp_pcm_hardware_capture;
+		}
+	}
 
 	ret = snd_pcm_hw_constraint_integer(runtime,
 					    SNDRV_PCM_HW_PARAM_PERIODS);
@@ -905,7 +960,15 @@ static int acp_dma_trigger(struct snd_pcm_substream *substream, int cmd)
 
 static int acp_dma_new(struct snd_soc_pcm_runtime *rtd)
 {
-	return snd_pcm_lib_preallocate_pages_for_all(rtd->pcm,
+	struct audio_drv_data *adata = dev_get_drvdata(rtd->platform->dev);
+
+	if (adata->asic_type == CHIP_STONEY)
+		return snd_pcm_lib_preallocate_pages_for_all(rtd->pcm,
+							SNDRV_DMA_TYPE_DEV,
+							NULL, ST_MIN_BUFFER,
+							ST_MAX_BUFFER);
+	else
+		return snd_pcm_lib_preallocate_pages_for_all(rtd->pcm,
 							SNDRV_DMA_TYPE_DEV,
 							NULL, MIN_BUFFER,
 							MAX_BUFFER);
-- 
2.5.5

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH 6/6 v3] ASoC: AMD: Add machine driver for cz rt5650
       [not found] ` <1503079830-16072-1-git-send-email-alexander.deucher-5C7GfCeVMHo@public.gmane.org>
                     ` (2 preceding siblings ...)
  2017-08-18 18:10   ` [PATCH 5/6 v3] ASoC: AMD: Audio buffer related changes for Stoney Alex Deucher
@ 2017-08-18 18:10   ` Alex Deucher
  2017-08-31 11:38     ` Mark Brown
  2017-08-30 13:33   ` [PATCH 0/6 v3] Add ASoC support for AMD Stoney APUs Alex Deucher
  4 siblings, 1 reply; 19+ messages in thread
From: Alex Deucher @ 2017-08-18 18:10 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	airlied-Re5JQEeQqe8AvxtiuMwx3w,
	alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw,
	broonie-DgEjT+Ai2ygdnm+yROfE0A, Vijendar.Mukunda-5C7GfCeVMHo,
	rajeevkumar.linux-Re5JQEeQqe8AvxtiuMwx3w, perex-/Fr2/VpizcU
  Cc: tiwai-l3A5Bk7waGM, Alex Deucher,
	lgirdwood-Re5JQEeQqe8AvxtiuMwx3w, Akshu Agrawal

From: Akshu Agrawal <akshu.agrawal@amd.com>

The driver is used for AMD board using rt5650 codec.

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Akshu Agrawal <akshu.agrawal@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
---

v2: Change ACPI ID to AMDI1002
v3: add R-b, resend

 sound/soc/amd/Kconfig      |   7 ++
 sound/soc/amd/Makefile     |   2 +
 sound/soc/amd/acp-rt5645.c | 210 +++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 219 insertions(+)
 create mode 100644 sound/soc/amd/acp-rt5645.c

diff --git a/sound/soc/amd/Kconfig b/sound/soc/amd/Kconfig
index 78187eb..eb0ae60 100644
--- a/sound/soc/amd/Kconfig
+++ b/sound/soc/amd/Kconfig
@@ -2,3 +2,10 @@ config SND_SOC_AMD_ACP
 	tristate "AMD Audio Coprocessor support"
 	help
 	 This option enables ACP DMA support on AMD platform.
+config SND_SOC_AMD_CZ_RT5645_MACH
+	tristate "AMD CZ support for RT5645"
+	select SND_SOC_RT5645
+	select SND_SOC_AMD_ACP
+	depends on I2C_DESIGNWARE_PLATFORM
+	help
+	 This option enables machine driver for rt5645.
diff --git a/sound/soc/amd/Makefile b/sound/soc/amd/Makefile
index 1a66ec0..eed64ff 100644
--- a/sound/soc/amd/Makefile
+++ b/sound/soc/amd/Makefile
@@ -1,3 +1,5 @@
 snd-soc-acp-pcm-objs	:= acp-pcm-dma.o
+snd-soc-acp-rt5645-mach-objs := acp-rt5645.o
 
 obj-$(CONFIG_SND_SOC_AMD_ACP) += snd-soc-acp-pcm.o
+obj-$(CONFIG_SND_SOC_AMD_CZ_RT5645_MACH) += snd-soc-acp-rt5645-mach.o
diff --git a/sound/soc/amd/acp-rt5645.c b/sound/soc/amd/acp-rt5645.c
new file mode 100644
index 0000000..a17dbea
--- /dev/null
+++ b/sound/soc/amd/acp-rt5645.c
@@ -0,0 +1,210 @@
+/*
+ * Machine driver for AMD ACP Audio engine using Realtek RT5645 codec
+ *
+ * Copyright 2017 Advanced Micro Devices, Inc.
+ *
+ * This file is modified from rt288 machine driver
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ *
+ *
+ */
+
+#include <sound/core.h>
+#include <sound/soc.h>
+#include <sound/pcm.h>
+#include <sound/pcm_params.h>
+#include <sound/soc-dapm.h>
+#include <sound/jack.h>
+#include <linux/gpio.h>
+#include <linux/module.h>
+#include <linux/i2c.h>
+#include <linux/acpi.h>
+
+#include "../codecs/rt5645.h"
+
+#define CZ_PLAT_CLK 24000000
+
+static struct snd_soc_jack cz_jack;
+
+static int cz_aif1_hw_params(struct snd_pcm_substream *substream,
+			     struct snd_pcm_hw_params *params)
+{
+	int ret = 0;
+	struct snd_soc_pcm_runtime *rtd = substream->private_data;
+	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+
+	ret = snd_soc_dai_set_pll(codec_dai, 0, RT5645_PLL1_S_MCLK,
+				  CZ_PLAT_CLK, params_rate(params) * 512);
+	if (ret < 0) {
+		dev_err(rtd->dev, "can't set codec pll: %d\n", ret);
+		return ret;
+	}
+
+	ret = snd_soc_dai_set_sysclk(codec_dai, RT5645_SCLK_S_PLL1,
+				params_rate(params) * 512, SND_SOC_CLOCK_OUT);
+	if (ret < 0) {
+		dev_err(rtd->dev, "can't set codec sysclk: %d\n", ret);
+		return ret;
+	}
+
+	return ret;
+}
+
+static int cz_init(struct snd_soc_pcm_runtime *rtd)
+{
+	int ret;
+	struct snd_soc_card *card;
+	struct snd_soc_codec *codec;
+
+	codec = rtd->codec;
+	card = rtd->card;
+
+	ret = snd_soc_card_jack_new(card, "Headset Jack",
+				SND_JACK_HEADPHONE | SND_JACK_MICROPHONE |
+				SND_JACK_BTN_0 | SND_JACK_BTN_1 |
+				SND_JACK_BTN_2 | SND_JACK_BTN_3,
+				&cz_jack, NULL, 0);
+	if (ret) {
+		dev_err(card->dev, "HP jack creation failed %d\n", ret);
+		return ret;
+	}
+
+	rt5645_set_jack_detect(codec, &cz_jack, &cz_jack, &cz_jack);
+
+	return 0;
+}
+
+static struct snd_soc_ops cz_aif1_ops = {
+	.hw_params = cz_aif1_hw_params,
+};
+
+static struct snd_soc_dai_link cz_dai_rt5650[] = {
+	{
+		.name = "amd-rt5645-play",
+		.stream_name = "RT5645_AIF1",
+		.platform_name = "acp_audio_dma.0.auto",
+		.cpu_dai_name = "designware-i2s.1.auto",
+		.codec_dai_name = "rt5645-aif1",
+		.codec_name = "i2c-10EC5650:00",
+		.dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF
+				| SND_SOC_DAIFMT_CBM_CFM,
+		.init = cz_init,
+		.ops = &cz_aif1_ops,
+	},
+	{
+		.name = "amd-rt5645-cap",
+		.stream_name = "RT5645_AIF1",
+		.platform_name = "acp_audio_dma.0.auto",
+		.cpu_dai_name = "designware-i2s.2.auto",
+		.codec_dai_name = "rt5645-aif1",
+		.codec_name = "i2c-10EC5650:00",
+		.dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF
+				| SND_SOC_DAIFMT_CBM_CFM,
+		.init = cz_init,
+		.ops = &cz_aif1_ops,
+	},
+};
+
+static const struct snd_soc_dapm_widget cz_widgets[] = {
+	SND_SOC_DAPM_HP("Headphones", NULL),
+	SND_SOC_DAPM_SPK("Speakers", NULL),
+	SND_SOC_DAPM_MIC("Headset Mic", NULL),
+	SND_SOC_DAPM_MIC("Int Mic", NULL),
+};
+
+static const struct snd_soc_dapm_route cz_audio_route[] = {
+	{"Headphones", NULL, "HPOL"},
+	{"Headphones", NULL, "HPOR"},
+	{"RECMIXL", NULL, "Headset Mic"},
+	{"RECMIXR", NULL, "Headset Mic"},
+	{"Speakers", NULL, "SPOL"},
+	{"Speakers", NULL, "SPOR"},
+	{"DMIC L2", NULL, "Int Mic"},
+	{"DMIC R2", NULL, "Int Mic"},
+};
+
+static const struct snd_kcontrol_new cz_mc_controls[] = {
+	SOC_DAPM_PIN_SWITCH("Headphones"),
+	SOC_DAPM_PIN_SWITCH("Speakers"),
+	SOC_DAPM_PIN_SWITCH("Headset Mic"),
+	SOC_DAPM_PIN_SWITCH("Int Mic"),
+};
+
+static struct snd_soc_card cz_card = {
+	.name = "acprt5650",
+	.owner = THIS_MODULE,
+	.dai_link = cz_dai_rt5650,
+	.num_links = ARRAY_SIZE(cz_dai_rt5650),
+	.dapm_widgets = cz_widgets,
+	.num_dapm_widgets = ARRAY_SIZE(cz_widgets),
+	.dapm_routes = cz_audio_route,
+	.num_dapm_routes = ARRAY_SIZE(cz_audio_route),
+	.controls = cz_mc_controls,
+	.num_controls = ARRAY_SIZE(cz_mc_controls),
+};
+
+static int cz_probe(struct platform_device *pdev)
+{
+	int ret;
+	struct snd_soc_card *card;
+
+	card = &cz_card;
+	cz_card.dev = &pdev->dev;
+	platform_set_drvdata(pdev, card);
+	ret = snd_soc_register_card(card);
+	if (ret) {
+		dev_err(&pdev->dev,
+				"snd_soc_register_card(%s) failed: %d\n",
+				cz_card.name, ret);
+		return ret;
+	}
+	return 0;
+}
+
+static int cz_remove(struct platform_device *pdev)
+{
+	struct snd_soc_card *card;
+
+	card = platform_get_drvdata(pdev);
+	snd_soc_unregister_card(card);
+
+	return 0;
+}
+
+static const struct acpi_device_id cz_audio_acpi_match[] = {
+	{ "AMDI1002", 0 },
+	{},
+};
+
+static struct platform_driver cz_pcm_driver = {
+	.driver = {
+		.name = "cz-rt5645",
+		.acpi_match_table = ACPI_PTR(cz_audio_acpi_match),
+		.pm = &snd_soc_pm_ops,
+	},
+	.probe = cz_probe,
+	.remove = cz_remove,
+};
+
+module_platform_driver(cz_pcm_driver);
+
+MODULE_AUTHOR("akshu.agrawal@amd.com");
+MODULE_DESCRIPTION("cz-rt5645 audio support");
+MODULE_LICENSE("GPL v2");
-- 
2.5.5

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 19+ messages in thread

* Re: [PATCH 0/6 v3] Add ASoC support for AMD Stoney APUs
       [not found] ` <1503079830-16072-1-git-send-email-alexander.deucher-5C7GfCeVMHo@public.gmane.org>
                     ` (3 preceding siblings ...)
  2017-08-18 18:10   ` [PATCH 6/6 v3] ASoC: AMD: Add machine driver for cz rt5650 Alex Deucher
@ 2017-08-30 13:33   ` Alex Deucher
  2017-08-30 15:19     ` Mark Brown
  4 siblings, 1 reply; 19+ messages in thread
From: Alex Deucher @ 2017-08-30 13:33 UTC (permalink / raw)
  To: amd-gfx list, Maling list - DRI developers, Dave Airlie,
	alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw, Mark Brown, Vijendar Mukunda,
	rajeev kumar, perex-/Fr2/VpizcU
  Cc: Takashi Iwai, Alex Deucher, Liam Girdwood

On Fri, Aug 18, 2017 at 2:10 PM, Alex Deucher <alexdeucher@gmail.com> wrote:
> This patch set updates the AMD GPU and Audio CoProcessor (ACP)
> audio drivers and the designware i2s driver for Stoney (ST).
> ST is an APU similar to Carrizo (CZ) which already has ACP audio
> support.  The i2s controller and ACP audio DMA engine are part of
> the GPU and both need updating so I would like to upstream the
> whole patch set via one tree if possible.
>
> The current code is based on drm-next, but I'm happy to rebase on
> whatever tree this ends up going through if there are any problems
> applying.  These patches touch both audio and drm.
>
> The entire patch set can be viewed here:
> https://cgit.freedesktop.org/~agd5f/linux/log/?h=stoney_acp2
>

Any comments?  Can this patch set go in?  This is the second time I've
resent it since the addressing the initial feedback.  Does anyone have
a preference on which tree?

Thanks,

Alex

> Thanks!
>
> Alex
>
> v2:
> - Patch 1 is already applied to the audio tree, just including it for
>   completeness since it's required for this patch set and it's not yet
>   in the drm tree.
> - New patch to share asic types between gpu and audio drivers
> - ACPI ID changed for rt5650 machine driver
> - Integrate feedback on other patches
>
> v3:
> - resend remaining patches that have not been applied yet
>
> Akshu Agrawal (2):
>   drm/amdgpu Moving amdgpu asic types to a separate file
>   ASoC: AMD: Add machine driver for cz rt5650
>
> Vijendar Mukunda (4):
>   drm/amd/amdgpu: Added asic_type as ACP DMA driver platform data
>   ASoC: AMD: disabling memory gating in stoney platform
>   ASoC: AMD: DMA driver changes for Stoney Platform
>   ASoC: AMD: Audio buffer related changes for Stoney
>
>  drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c  |   2 +
>  drivers/gpu/drm/amd/include/amd_shared.h |  29 +---
>  include/drm/amd_asic_type.h              |  52 +++++++
>  sound/soc/amd/Kconfig                    |   7 +
>  sound/soc/amd/Makefile                   |   2 +
>  sound/soc/amd/acp-pcm-dma.c              | 243 ++++++++++++++++++++++++-------
>  sound/soc/amd/acp-rt5645.c               | 210 ++++++++++++++++++++++++++
>  sound/soc/amd/acp.h                      |   9 ++
>  8 files changed, 472 insertions(+), 82 deletions(-)
>  create mode 100644 include/drm/amd_asic_type.h
>  create mode 100644 sound/soc/amd/acp-rt5645.c
>
> --
> 2.5.5
>
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 0/6 v3] Add ASoC support for AMD Stoney APUs
  2017-08-30 13:33   ` [PATCH 0/6 v3] Add ASoC support for AMD Stoney APUs Alex Deucher
@ 2017-08-30 15:19     ` Mark Brown
       [not found]       ` <20170830151913.6vknazyhh4se5524-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
  2017-08-30 18:49       ` Eric Anholt
  0 siblings, 2 replies; 19+ messages in thread
From: Mark Brown @ 2017-08-30 15:19 UTC (permalink / raw)
  To: Alex Deucher
  Cc: alsa-devel, Takashi Iwai, Liam Girdwood,
	Maling list - DRI developers, rajeev kumar, amd-gfx list,
	Vijendar Mukunda, Alex Deucher, Dave Airlie


[-- Attachment #1.1: Type: text/plain, Size: 486 bytes --]

On Wed, Aug 30, 2017 at 09:33:35AM -0400, Alex Deucher wrote:

> Any comments?  Can this patch set go in?  This is the second time I've
> resent it since the addressing the initial feedback.  Does anyone have
> a preference on which tree?

You need to get someone from the DRM side to pay attention to the second
patch and you need to stop resending the first patch since as has been
pointed out a few times now you need to stop sending the first patch
which is already in Linus' tree.

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



^ permalink raw reply	[flat|nested] 19+ messages in thread

* RE: [PATCH 0/6 v3] Add ASoC support for AMD Stoney APUs
       [not found]       ` <20170830151913.6vknazyhh4se5524-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
@ 2017-08-30 15:46         ` Deucher, Alexander
  0 siblings, 0 replies; 19+ messages in thread
From: Deucher, Alexander @ 2017-08-30 15:46 UTC (permalink / raw)
  To: 'Mark Brown', Alex Deucher
  Cc: alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw, Takashi Iwai, Liam Girdwood,
	Maling list - DRI developers, rajeev kumar, amd-gfx list,
	Mukunda, Vijendar, perex-/Fr2/VpizcU, Dave Airlie

> -----Original Message-----
> From: Mark Brown [mailto:broonie@kernel.org]
> Sent: Wednesday, August 30, 2017 11:19 AM
> To: Alex Deucher
> Cc: amd-gfx list; Maling list - DRI developers; Dave Airlie; alsa-devel@alsa-
> project.org; Mukunda, Vijendar; rajeev kumar; perex@perex.cz; Liam
> Girdwood; Takashi Iwai; Deucher, Alexander
> Subject: Re: [PATCH 0/6 v3] Add ASoC support for AMD Stoney APUs
> 
> On Wed, Aug 30, 2017 at 09:33:35AM -0400, Alex Deucher wrote:
> 
> > Any comments?  Can this patch set go in?  This is the second time I've
> > resent it since the addressing the initial feedback.  Does anyone have
> > a preference on which tree?
> 
> You need to get someone from the DRM side to pay attention to the second
> patch and you need to stop resending the first patch since as has been
> pointed out a few times now you need to stop sending the first patch
> which is already in Linus' tree.

I didn't resent any patches that are already upstream in v3 of this patch set.  The rest of the patches have dependencies between drm and audio.  I'd like to get them in all together via one tree or the other.

Alex

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 0/6 v3] Add ASoC support for AMD Stoney APUs
  2017-08-30 15:19     ` Mark Brown
       [not found]       ` <20170830151913.6vknazyhh4se5524-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
@ 2017-08-30 18:49       ` Eric Anholt
  2017-08-30 21:10         ` Mark Brown
  1 sibling, 1 reply; 19+ messages in thread
From: Eric Anholt @ 2017-08-30 18:49 UTC (permalink / raw)
  To: Mark Brown, Alex Deucher
  Cc: alsa-devel, Liam Girdwood, amd-gfx list, rajeev kumar,
	Maling list - DRI developers, Vijendar Mukunda, Alex Deucher


[-- Attachment #1.1: Type: text/plain, Size: 631 bytes --]

Mark Brown <broonie@kernel.org> writes:

> [ Unknown signature status ]
> On Wed, Aug 30, 2017 at 09:33:35AM -0400, Alex Deucher wrote:
>
>> Any comments?  Can this patch set go in?  This is the second time I've
>> resent it since the addressing the initial feedback.  Does anyone have
>> a preference on which tree?
>
> You need to get someone from the DRM side to pay attention to the second
> patch and you need to stop resending the first patch since as has been
> pointed out a few times now you need to stop sending the first patch
> which is already in Linus' tree.

Alex *is* from the DRM side and has reviewed that patch.

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 0/6 v3] Add ASoC support for AMD Stoney APUs
  2017-08-30 18:49       ` Eric Anholt
@ 2017-08-30 21:10         ` Mark Brown
  2017-08-30 21:40           ` Deucher, Alexander
  0 siblings, 1 reply; 19+ messages in thread
From: Mark Brown @ 2017-08-30 21:10 UTC (permalink / raw)
  To: Eric Anholt
  Cc: alsa-devel, Liam Girdwood, amd-gfx list, rajeev kumar,
	Alex Deucher, Maling list - DRI developers, Vijendar Mukunda,
	Alex Deucher


[-- Attachment #1.1: Type: text/plain, Size: 796 bytes --]

On Wed, Aug 30, 2017 at 11:49:02AM -0700, Eric Anholt wrote:
> Mark Brown <broonie@kernel.org> writes:

> > You need to get someone from the DRM side to pay attention to the second
> > patch and you need to stop resending the first patch since as has been
> > pointed out a few times now you need to stop sending the first patch
> > which is already in Linus' tree.

> Alex *is* from the DRM side and has reviewed that patch.

*sigh*  Right, OK in that case it would have been really helpful to see
either some mention of this either in text or via a pull request (which
would show the patch having been applied).  It's difficult to keep track
of all the different people who might be DRM maintainers especially when
there's process things like the resend of the patch from Linus' tree
going on.

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



^ permalink raw reply	[flat|nested] 19+ messages in thread

* RE: [PATCH 0/6 v3] Add ASoC support for AMD Stoney APUs
  2017-08-30 21:10         ` Mark Brown
@ 2017-08-30 21:40           ` Deucher, Alexander
  2017-08-31 10:28             ` Mark Brown
  0 siblings, 1 reply; 19+ messages in thread
From: Deucher, Alexander @ 2017-08-30 21:40 UTC (permalink / raw)
  To: 'Mark Brown', Eric Anholt
  Cc: alsa-devel, Liam Girdwood, amd-gfx list, rajeev kumar,
	Maling list - DRI developers, Mukunda, Vijendar, perex

> -----Original Message-----
> From: Mark Brown [mailto:broonie@kernel.org]
> Sent: Wednesday, August 30, 2017 5:10 PM
> To: Eric Anholt
> Cc: Alex Deucher; alsa-devel@alsa-project.org; Liam Girdwood; Maling list -
> DRI developers; rajeev kumar; amd-gfx list; Mukunda, Vijendar; Deucher,
> Alexander; perex@perex.cz
> Subject: Re: [PATCH 0/6 v3] Add ASoC support for AMD Stoney APUs
> 
> On Wed, Aug 30, 2017 at 11:49:02AM -0700, Eric Anholt wrote:
> > Mark Brown <broonie@kernel.org> writes:
> 
> > > You need to get someone from the DRM side to pay attention to the
> second
> > > patch and you need to stop resending the first patch since as has been
> > > pointed out a few times now you need to stop sending the first patch
> > > which is already in Linus' tree.
> 
> > Alex *is* from the DRM side and has reviewed that patch.
> 
> *sigh*  Right, OK in that case it would have been really helpful to see
> either some mention of this either in text or via a pull request (which
> would show the patch having been applied).  It's difficult to keep track
> of all the different people who might be DRM maintainers especially when
> there's process things like the resend of the patch from Linus' tree
> going on.

I sent one patch in the v2 patch set that had already gone upstream because I didn't know that it had landed in Linus' tree yet.  I had thought it had just landed in the audio tree.  I apologize for that.  On the v3 cover page, I mentioned that v3 was a resend of the patches that had not been applied to any tree yet; I did not resend any patches that were already applied.  I believe all the previous comments were addressed.  Now that we've clarified that, are there an outstanding objections to these patches?  The patches touch both drm and audio.  My preference would be to take them through the drm tree, but I'm happy to have them go through the audio tree if you prefer.

Thanks,

Alex

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 0/6 v3] Add ASoC support for AMD Stoney APUs
  2017-08-30 21:40           ` Deucher, Alexander
@ 2017-08-31 10:28             ` Mark Brown
  0 siblings, 0 replies; 19+ messages in thread
From: Mark Brown @ 2017-08-31 10:28 UTC (permalink / raw)
  To: Deucher, Alexander
  Cc: alsa-devel, Liam Girdwood, Maling list - DRI developers,
	rajeev kumar, Eric Anholt, amd-gfx list, Mukunda, Vijendar,
	Alex Deucher


[-- Attachment #1.1: Type: text/plain, Size: 1407 bytes --]

On Wed, Aug 30, 2017 at 09:40:07PM +0000, Deucher, Alexander wrote:

Please fix your mail client to word wrap within paragraphs at something
substantially less than 80 columns.  Doing this makes your messages much
easier to read and reply to.

> I sent one patch in the v2 patch set that had already gone upstream
> because I didn't know that it had landed in Linus' tree yet.  I had
> thought it had just landed in the audio tree.  I apologize for that.
> On the v3 cover page, I mentioned that v3 was a resend of the patches
> that had not been applied to any tree yet; I did not resend any
> patches that were already applied.  I believe all the previous
> comments were addressed.  Now that we've clarified that, are there an
> outstanding objections to these patches?  The patches touch both drm
> and audio.  My preference would be to take them through the drm tree,
> but I'm happy to have them go through the audio tree if you prefer.

I haven't really looked at them yet because I was waiting for the DRM
side of it to get sorted out (previous experience has been that DRM
changes that need review can take a while to figure out).  To be a bit
clearer about what I said in the mail you're replying to you should just
apply the initial DRM bits and send a pull request, this is a standard
way of handling cross tree stuff and means that worst case there's fewer
dependencies after the merge window.

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 5/6 v3] ASoC: AMD: Audio buffer related changes for Stoney
  2017-08-18 18:10   ` [PATCH 5/6 v3] ASoC: AMD: Audio buffer related changes for Stoney Alex Deucher
@ 2017-08-31 11:27     ` Mark Brown
  0 siblings, 0 replies; 19+ messages in thread
From: Mark Brown @ 2017-08-31 11:27 UTC (permalink / raw)
  To: Alex Deucher
  Cc: alsa-devel, tiwai, lgirdwood, dri-devel, rajeevkumar.linux,
	amd-gfx, Vijendar.Mukunda, Alex Deucher, airlied


[-- Attachment #1.1: Type: text/plain, Size: 924 bytes --]

On Fri, Aug 18, 2017 at 02:10:29PM -0400, Alex Deucher wrote:

> +#define ST_PLAYBACK_MAX_PERIOD_SIZE 8192
> +#define ST_CAPTURE_MAX_PERIOD_SIZE  8192
> +#define ST_MAX_BUFFER (ST_PLAYBACK_MAX_PERIOD_SIZE * PLAYBACK_MAX_NUM_PERIODS)

These defines will go wrong if the capture size is changed independently
of the playback size.  Either just use a single define for both or have
separate defines for the maximum buffer as well as for the period.

> +#define ST_MIN_BUFFER ST_MAX_BUFFER
>  static const struct snd_pcm_hardware acp_pcm_hardware_playback = {

Missing blank line between the defines and here.

> +	if (adata->asic_type == CHIP_STONEY)
> +		return snd_pcm_lib_preallocate_pages_for_all(rtd->pcm,

As I've said previously it's better to write these variant checks as
switch statements, that way if more variants appear (or special handling
is discovered for existing chips) the code can be modified more cleanly.

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 6/6 v3] ASoC: AMD: Add machine driver for cz rt5650
  2017-08-18 18:10   ` [PATCH 6/6 v3] ASoC: AMD: Add machine driver for cz rt5650 Alex Deucher
@ 2017-08-31 11:38     ` Mark Brown
  2017-09-01 11:08       ` Agrawal, Akshu
  0 siblings, 1 reply; 19+ messages in thread
From: Mark Brown @ 2017-08-31 11:38 UTC (permalink / raw)
  To: Alex Deucher
  Cc: alsa-devel, lgirdwood, dri-devel, rajeevkumar.linux, amd-gfx,
	Vijendar.Mukunda, Alex Deucher, perex, Akshu Agrawal


[-- Attachment #1.1: Type: text/plain, Size: 952 bytes --]

On Fri, Aug 18, 2017 at 02:10:30PM -0400, Alex Deucher wrote:

> +++ b/sound/soc/amd/Kconfig
> @@ -2,3 +2,10 @@ config SND_SOC_AMD_ACP
>  	tristate "AMD Audio Coprocessor support"
>  	help
>  	 This option enables ACP DMA support on AMD platform.
> +config SND_SOC_AMD_CZ_RT5645_MACH
> +	tristate "AMD CZ support for RT5645"

Missing blank line between the stanzas.

> +	select SND_SOC_RT5645
> +	select SND_SOC_AMD_ACP
> +	depends on I2C_DESIGNWARE_PLATFORM

No system dependencies of any kind?  Looking at this I'd expect at least
CONFIG_ACPI || COMPILE_TEST.  It's also unclear to me how the DesignWare
device is going to be instantiated here or if that should be a direct
depenency at all here.

> +	ret = snd_soc_register_card(card);

devm_snd_soc_register_card() and then you don't need the remove
function.

> +static const struct acpi_device_id cz_audio_acpi_match[] = {
> +	{ "AMDI1002", 0 },
> +	{},
> +};
> +

Missing MODULE_DEVICE_TABLE().

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 3/6 v3] ASoC: AMD: disabling memory gating in stoney platform
  2017-08-18 18:10   ` [PATCH 3/6 v3] ASoC: AMD: disabling memory gating in stoney platform Alex Deucher
@ 2017-08-31 11:39     ` Mark Brown
  0 siblings, 0 replies; 19+ messages in thread
From: Mark Brown @ 2017-08-31 11:39 UTC (permalink / raw)
  To: Alex Deucher
  Cc: alsa-devel, lgirdwood, dri-devel, rajeevkumar.linux, amd-gfx,
	Vijendar.Mukunda, Alex Deucher, perex


[-- Attachment #1.1: Type: text/plain, Size: 377 bytes --]

On Fri, Aug 18, 2017 at 02:10:27PM -0400, Alex Deucher wrote:
> From: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
> 
> For Stoney platform, Memory gating is disabled.i.e SRAM Banks
> won't be turned off. By Default, SRAM Bank state set to ON.
> Added condition checks to skip SRAM Bank state set logic for
> Stoney platform.

Acked-by: Mark Brown <broonie@kernel.org>

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 4/6 v2] ASoC: AMD: DMA driver changes for Stoney Platform
  2017-08-18 18:10   ` [PATCH 4/6 v2] ASoC: AMD: DMA driver changes for Stoney Platform Alex Deucher
@ 2017-08-31 11:39     ` Mark Brown
  0 siblings, 0 replies; 19+ messages in thread
From: Mark Brown @ 2017-08-31 11:39 UTC (permalink / raw)
  To: Alex Deucher
  Cc: alsa-devel, lgirdwood, dri-devel, rajeevkumar.linux, amd-gfx,
	Vijendar.Mukunda, Alex Deucher, perex


[-- Attachment #1.1: Type: text/plain, Size: 269 bytes --]

On Fri, Aug 18, 2017 at 02:10:28PM -0400, Alex Deucher wrote:
> From: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
> 
> Added DMA driver changes for Stoney platform.
> Below are the key differences between Stoney and CZ

Acked-by: Mark Brown <broonie@kernel.org>

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH 6/6 v3] ASoC: AMD: Add machine driver for cz rt5650
  2017-08-31 11:38     ` Mark Brown
@ 2017-09-01 11:08       ` Agrawal, Akshu
  0 siblings, 0 replies; 19+ messages in thread
From: Agrawal, Akshu @ 2017-09-01 11:08 UTC (permalink / raw)
  To: Mark Brown, Alex Deucher
  Cc: alsa-devel, lgirdwood, dri-devel, rajeevkumar.linux, amd-gfx,
	Mukunda, Vijendar, Deucher, Alexander, perex



On 8/31/2017 5:08 PM, Mark Brown wrote:
> On Fri, Aug 18, 2017 at 02:10:30PM -0400, Alex Deucher wrote:
> 
>> +++ b/sound/soc/amd/Kconfig
>> @@ -2,3 +2,10 @@ config SND_SOC_AMD_ACP
>>   	tristate "AMD Audio Coprocessor support"
>>   	help
>>   	 This option enables ACP DMA support on AMD platform.
>> +config SND_SOC_AMD_CZ_RT5645_MACH
>> +	tristate "AMD CZ support for RT5645"
> 
> Missing blank line between the stanzas.

Done. Will push the change in next revision.

> 
>> +	select SND_SOC_RT5645
>> +	select SND_SOC_AMD_ACP
>> +	depends on I2C_DESIGNWARE_PLATFORM
> 
> No system dependencies of any kind?  Looking at this I'd expect at least
> CONFIG_ACPI || COMPILE_TEST.  It's also unclear to me how the DesignWare
> device is going to be instantiated here or if that should be a direct
> depenency at all here.
>

Added I2C for system dependency and removed 
I2C_DESIGNWARE_PLATFORM as dependency

>> +	ret = snd_soc_register_card(card);
> 
> devm_snd_soc_register_card() and then you don't need the remove
> function.
>

Done.

>> +static const struct acpi_device_id cz_audio_acpi_match[] = {
>> +	{ "AMDI1002", 0 },
>> +	{},
>> +};
>> +
> 
> Missing MODULE_DEVICE_TABLE().
>

Done.


_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2017-09-01 11:08 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-08-18 18:10 [PATCH 0/6 v3] Add ASoC support for AMD Stoney APUs Alex Deucher
2017-08-18 18:10 ` [PATCH 1/6 v3] drm/amd/amdgpu: Added asic_type as ACP DMA driver platform data Alex Deucher
2017-08-18 18:10 ` [PATCH 2/6 v2] drm/amdgpu Moving amdgpu asic types to a separate file Alex Deucher
     [not found] ` <1503079830-16072-1-git-send-email-alexander.deucher-5C7GfCeVMHo@public.gmane.org>
2017-08-18 18:10   ` [PATCH 3/6 v3] ASoC: AMD: disabling memory gating in stoney platform Alex Deucher
2017-08-31 11:39     ` Mark Brown
2017-08-18 18:10   ` [PATCH 4/6 v2] ASoC: AMD: DMA driver changes for Stoney Platform Alex Deucher
2017-08-31 11:39     ` Mark Brown
2017-08-18 18:10   ` [PATCH 5/6 v3] ASoC: AMD: Audio buffer related changes for Stoney Alex Deucher
2017-08-31 11:27     ` Mark Brown
2017-08-18 18:10   ` [PATCH 6/6 v3] ASoC: AMD: Add machine driver for cz rt5650 Alex Deucher
2017-08-31 11:38     ` Mark Brown
2017-09-01 11:08       ` Agrawal, Akshu
2017-08-30 13:33   ` [PATCH 0/6 v3] Add ASoC support for AMD Stoney APUs Alex Deucher
2017-08-30 15:19     ` Mark Brown
     [not found]       ` <20170830151913.6vknazyhh4se5524-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2017-08-30 15:46         ` Deucher, Alexander
2017-08-30 18:49       ` Eric Anholt
2017-08-30 21:10         ` Mark Brown
2017-08-30 21:40           ` Deucher, Alexander
2017-08-31 10:28             ` Mark Brown

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.