diff mbox

[RFC,1/7] ASoC: hda: Add skl dsp init and registering with SST IPC lib

Message ID 1429390653-8194-2-git-send-email-vinod.koul@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Vinod Koul April 18, 2015, 8:57 p.m. UTC
From: Jeeja KP <jeeja.kp@intel.com>

This will be used by the controller to register/unregister
with the SST IPC lib if processing pipe caps is supported

Signed-off-by: Jeeja KP <jeeja.kp@intel.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
---
 include/sound/soc-hda-sst-dsp.h |    3 ++
 sound/soc/hda/Kconfig           |    1 +
 sound/soc/hda/Makefile          |    2 +-
 sound/soc/hda/hda_skl.h         |   16 ++--------
 sound/soc/hda/hda_soc_dsp.c     |   62 +++++++++++++++++++++++++++++++++++++++
 5 files changed, 70 insertions(+), 14 deletions(-)
 create mode 100644 sound/soc/hda/hda_soc_dsp.c

Comments

Mark Brown April 24, 2015, 5:36 p.m. UTC | #1
On Sun, Apr 19, 2015 at 02:27:27AM +0530, Vinod Koul wrote:

>  config SND_SOC_I2S_SKL_MACH
>          tristate "SOC Machine Audio driver for SKL Onboard I2S"
> +	 select SND_HDA_DSP_LOADER

Looking at what this is modifying it really looks like there's some
other patch series I wanted to look at first?

> diff --git a/sound/soc/hda/hda_skl.h b/sound/soc/hda/hda_skl.h
> index 0cc2ac69a9ab..914ea05da6aa 100644
> --- a/sound/soc/hda/hda_skl.h
> +++ b/sound/soc/hda/hda_skl.h
> @@ -1,15 +1,3 @@
> -/*
> - *  This program is free software; you can redistribute it and/or modify it
> - *  under the terms of the GNU General Public License as published by the Free
> - *  Software Foundation; either version 2 of the License, or (at your option)
> - *  any later version.
> - *
> - *  This program is distributed in the hope that it will be useful, but WITHOUT
> - *  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
> - *  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
> - *  more details.
> - */
> -

Oh?
Vinod Koul April 26, 2015, 1:53 p.m. UTC | #2
On Fri, Apr 24, 2015 at 06:36:57PM +0100, Mark Brown wrote:
> On Sun, Apr 19, 2015 at 02:27:27AM +0530, Vinod Koul wrote:
> 
> >  config SND_SOC_I2S_SKL_MACH
> >          tristate "SOC Machine Audio driver for SKL Onboard I2S"
> > +	 select SND_HDA_DSP_LOADER
> 
> Looking at what this is modifying it really looks like there's some
> other patch series I wanted to look at first?
Yes that was the SKL PCM driver series. I will repost that in this week
along with few more changes, so you can look at updated series.


> 
> > diff --git a/sound/soc/hda/hda_skl.h b/sound/soc/hda/hda_skl.h
> > index 0cc2ac69a9ab..914ea05da6aa 100644
> > --- a/sound/soc/hda/hda_skl.h
> > +++ b/sound/soc/hda/hda_skl.h
> > @@ -1,15 +1,3 @@
> > -/*
> > - *  This program is free software; you can redistribute it and/or modify it
> > - *  under the terms of the GNU General Public License as published by the Free
> > - *  Software Foundation; either version 2 of the License, or (at your option)
> > - *  any later version.
> > - *
> > - *  This program is distributed in the hope that it will be useful, but WITHOUT
> > - *  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
> > - *  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
> > - *  more details.
> > - */
> > -
> 
> Oh?  
Terrible :(

Will try to see these dont creep in patches

Thanks
diff mbox

Patch

diff --git a/include/sound/soc-hda-sst-dsp.h b/include/sound/soc-hda-sst-dsp.h
index 9adeb49cf126..a85f95be13c1 100644
--- a/include/sound/soc-hda-sst-dsp.h
+++ b/include/sound/soc-hda-sst-dsp.h
@@ -263,4 +263,7 @@  int ssth_cl_dma_prepare(struct ssth_lib *ctx);
 void ssth_process_cl_dma(struct work_struct *work);
 void ssth_cldma_int_disable(struct ssth_lib *ctx);
 
+int ssth_skl_init(struct device *dev, void __iomem *mmio_base, int irq,
+		struct ssth_dsp_loader_ops dsp_ops, struct ssth_lib **dsp);
+void ssth_skl_cleanup(struct device *dev, struct ssth_lib *ctx);
 #endif /*__HDA_SST_DSP_H__*/
diff --git a/sound/soc/hda/Kconfig b/sound/soc/hda/Kconfig
index 841ea5276fe3..445fa9842127 100644
--- a/sound/soc/hda/Kconfig
+++ b/sound/soc/hda/Kconfig
@@ -29,6 +29,7 @@  config SND_SOC_HDA_SKL
 
 config SND_SOC_I2S_SKL_MACH
         tristate "SOC Machine Audio driver for SKL Onboard I2S"
+	 select SND_HDA_DSP_LOADER
         select SND_SOC_HDA_SKL
         select SND_SOC_RT286
         select SND_SOC_HDMI
diff --git a/sound/soc/hda/Makefile b/sound/soc/hda/Makefile
index d318d4acb8a7..2be667dc0724 100644
--- a/sound/soc/hda/Makefile
+++ b/sound/soc/hda/Makefile
@@ -1,4 +1,4 @@ 
-snd-soc-hda-skl-objs := hda_skl.o hda_skl_pcm.o
+snd-soc-hda-skl-objs := hda_skl.o hda_skl_pcm.o hda_soc_dsp.o
 
 obj-$(CONFIG_SND_SOC_HDA_SKL) += snd-soc-hda-skl.o
 
diff --git a/sound/soc/hda/hda_skl.h b/sound/soc/hda/hda_skl.h
index 0cc2ac69a9ab..914ea05da6aa 100644
--- a/sound/soc/hda/hda_skl.h
+++ b/sound/soc/hda/hda_skl.h
@@ -1,15 +1,3 @@ 
-/*
- *  This program is free software; you can redistribute it and/or modify it
- *  under the terms of the GNU General Public License as published by the Free
- *  Software Foundation; either version 2 of the License, or (at your option)
- *  any later version.
- *
- *  This program is distributed in the hope that it will be useful, but WITHOUT
- *  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- *  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- *  more details.
- */
-
 #ifndef __SOUND_SOC_HDA_SKL_H
 #define __SOUND_SOC_HDA_SKL_H
 
@@ -22,13 +10,15 @@ 
 
 struct hda_soc_bus {
 	struct hdac_bus chip;
+	struct device *dev;
 	struct pci_dev *pci;
 
 	unsigned int init_failed:1; /* delayed init failed */
 	unsigned int msi:1;
+	struct ssth_lib *dsp; /* ssth lib ctx */
 };
 
-/* to pass dai dma data */
+/*to pass dai dma data */
 struct soc_hda_dma_params {
 	u32 format;
 	u8 stream_tag;
diff --git a/sound/soc/hda/hda_soc_dsp.c b/sound/soc/hda/hda_soc_dsp.c
new file mode 100644
index 000000000000..3fa033ecaa90
--- /dev/null
+++ b/sound/soc/hda/hda_soc_dsp.c
@@ -0,0 +1,62 @@ 
+/*
+ *  hda_soc_dsp.c - HDA DSP interface for FW registration, Pipe and Module
+ *  configurations
+ *
+ *  Copyright (C) 2015 Intel Corp
+ *  Author:Rafal Redzimski <rafal.f.redzimski@intel.com>
+ *	   Jeeja KP <jeeja.kp@intel.com>
+ *  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; version 2 of the License.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  General Public License for more details.
+ *
+ *
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ */
+
+#include <linux/slab.h>
+#include <linux/pci.h>
+#include <sound/core.h>
+#include <sound/pcm_params.h>
+#include <sound/pcm.h>
+#include <sound/soc-hda-sst-dsp.h>
+#include <sound/soc-hda-sst-ipc.h>
+#include "hda_skl.h"
+
+int ssth_dsp_register(struct hda_soc_bus *schip)
+{
+	void __iomem *mmio_base;
+	int irq = schip->chip.irq;
+	int ret = 0;
+	struct ssth_dsp_loader_ops loader_ops;
+
+	/*TODO assign dsp loader ops */
+
+	/*TODO enable ppcap interrupt */
+	/*read the BAR of the ADSP MMIO */
+	mmio_base = pci_ioremap_bar(schip->pci, 4);
+	if (mmio_base == NULL) {
+		dev_err(schip->dev, "ioremap error\n");
+		return -ENXIO;
+	}
+
+	ret = ssth_skl_init(schip->dev, mmio_base, irq,
+			loader_ops, &schip->dsp);
+
+	dev_dbg(schip->dev, "dsp registeration status=%d\n", ret);
+	return ret;
+}
+
+void ssth_dsp_unregister(struct hda_soc_bus *schip)
+{
+	/*TODO disbale ppcap interrupt */
+	ssth_skl_cleanup(schip->dev, schip->dsp);
+	if (schip->dsp->mmio_base)
+		iounmap(schip->dsp->mmio_base);
+}