Browse Source

Merge remote-tracking branch 'asoc/fix/intel' into asoc-linus

Mark Brown 10 years ago
parent
commit
a55ede1661

+ 1 - 0
sound/soc/intel/sst-acpi.c

@@ -142,6 +142,7 @@ static int sst_acpi_probe(struct platform_device *pdev)
 	sst_acpi->desc = desc;
 	sst_acpi->desc = desc;
 	sst_acpi->mach = mach;
 	sst_acpi->mach = mach;
 
 
+	sst_pdata->resindex_dma_base = desc->resindex_dma_base;
 	if (desc->resindex_dma_base >= 0) {
 	if (desc->resindex_dma_base >= 0) {
 		sst_pdata->dma_engine = desc->dma_engine;
 		sst_pdata->dma_engine = desc->dma_engine;
 		sst_pdata->dma_base = desc->resindex_dma_base;
 		sst_pdata->dma_base = desc->resindex_dma_base;

+ 1 - 0
sound/soc/intel/sst-dsp.h

@@ -206,6 +206,7 @@ struct sst_pdata {
 	const struct firmware *fw;
 	const struct firmware *fw;
 
 
 	/* DMA */
 	/* DMA */
+	int resindex_dma_base; /* other fields invalid if equals to -1 */
 	u32 dma_base;
 	u32 dma_base;
 	u32 dma_size;
 	u32 dma_size;
 	int dma_engine;
 	int dma_engine;

+ 4 - 0
sound/soc/intel/sst-firmware.c

@@ -271,6 +271,10 @@ int sst_dma_new(struct sst_dsp *sst)
 	const char *dma_dev_name;
 	const char *dma_dev_name;
 	int ret = 0;
 	int ret = 0;
 
 
+	if (sst->pdata->resindex_dma_base == -1)
+		/* DMA is not used, return and squelsh error messages */
+		return 0;
+
 	/* configure the correct platform data for whatever DMA engine
 	/* configure the correct platform data for whatever DMA engine
 	* is attached to the ADSP IP. */
 	* is attached to the ADSP IP. */
 	switch (sst->pdata->dma_engine) {
 	switch (sst->pdata->dma_engine) {

+ 1 - 1
sound/soc/intel/sst/sst_acpi.c

@@ -309,7 +309,7 @@ static int sst_acpi_probe(struct platform_device *pdev)
 	ctx->shim_regs64 = devm_kzalloc(ctx->dev, sizeof(*ctx->shim_regs64),
 	ctx->shim_regs64 = devm_kzalloc(ctx->dev, sizeof(*ctx->shim_regs64),
 					GFP_KERNEL);
 					GFP_KERNEL);
 	if (!ctx->shim_regs64) {
 	if (!ctx->shim_regs64) {
-		return -ENOMEM;
+		ret = -ENOMEM;
 		goto do_sst_cleanup;
 		goto do_sst_cleanup;
 	}
 	}