aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSubhransu S. Prusty <subhransu.s.prusty@intel.com>2017-04-25 02:48:22 -0400
committerMark Brown <broonie@kernel.org>2017-04-26 10:47:45 -0400
commit89b0d8a5bae91cb8ef23b1834c97d1db367f2db6 (patch)
tree0d618b3d39e888b60977f20b48c9cc24bf6e1bba
parent4e0277d226b578be99cf8899fd1442bf11873d12 (diff)
ASoC: Intel: Skylake: Register dsp_fw_ops for kabylake
For audio kabylake is same as skylake except the module load approach. This patch registers different dsp_fw_ops for kabylake and next patch adds the module load support for kabylake. Signed-off-by: Subhransu S. Prusty <subhransu.s.prusty@intel.com> Acked-by: Vinod Koul <vinod.koul@intel.com> Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r--sound/soc/intel/skylake/skl-messages.c2
-rw-r--r--sound/soc/intel/skylake/skl-sst-dsp.h3
-rw-r--r--sound/soc/intel/skylake/skl-sst.c30
3 files changed, 34 insertions, 1 deletions
diff --git a/sound/soc/intel/skylake/skl-messages.c b/sound/soc/intel/skylake/skl-messages.c
index 09730dd8e6a3..ab1adc0c9cc3 100644
--- a/sound/soc/intel/skylake/skl-messages.c
+++ b/sound/soc/intel/skylake/skl-messages.c
@@ -209,7 +209,7 @@ static const struct skl_dsp_ops dsp_ops[] = {
209 { 209 {
210 .id = 0x9d71, 210 .id = 0x9d71,
211 .loader_ops = skl_get_loader_ops, 211 .loader_ops = skl_get_loader_ops,
212 .init = skl_sst_dsp_init, 212 .init = kbl_sst_dsp_init,
213 .init_fw = skl_sst_init_fw, 213 .init_fw = skl_sst_init_fw,
214 .cleanup = skl_sst_dsp_cleanup 214 .cleanup = skl_sst_dsp_cleanup
215 }, 215 },
diff --git a/sound/soc/intel/skylake/skl-sst-dsp.h b/sound/soc/intel/skylake/skl-sst-dsp.h
index 6d9aed23d5cd..eba20d37ba8c 100644
--- a/sound/soc/intel/skylake/skl-sst-dsp.h
+++ b/sound/soc/intel/skylake/skl-sst-dsp.h
@@ -230,6 +230,9 @@ int skl_dsp_boot(struct sst_dsp *ctx);
230int skl_sst_dsp_init(struct device *dev, void __iomem *mmio_base, int irq, 230int skl_sst_dsp_init(struct device *dev, void __iomem *mmio_base, int irq,
231 const char *fw_name, struct skl_dsp_loader_ops dsp_ops, 231 const char *fw_name, struct skl_dsp_loader_ops dsp_ops,
232 struct skl_sst **dsp); 232 struct skl_sst **dsp);
233int kbl_sst_dsp_init(struct device *dev, void __iomem *mmio_base, int irq,
234 const char *fw_name, struct skl_dsp_loader_ops dsp_ops,
235 struct skl_sst **dsp);
233int bxt_sst_dsp_init(struct device *dev, void __iomem *mmio_base, int irq, 236int bxt_sst_dsp_init(struct device *dev, void __iomem *mmio_base, int irq,
234 const char *fw_name, struct skl_dsp_loader_ops dsp_ops, 237 const char *fw_name, struct skl_dsp_loader_ops dsp_ops,
235 struct skl_sst **dsp); 238 struct skl_sst **dsp);
diff --git a/sound/soc/intel/skylake/skl-sst.c b/sound/soc/intel/skylake/skl-sst.c
index b4c3b5c63115..20968e5ec86d 100644
--- a/sound/soc/intel/skylake/skl-sst.c
+++ b/sound/soc/intel/skylake/skl-sst.c
@@ -470,6 +470,15 @@ static struct skl_dsp_fw_ops skl_fw_ops = {
470 .unload_mod = skl_unload_module, 470 .unload_mod = skl_unload_module,
471}; 471};
472 472
473static struct skl_dsp_fw_ops kbl_fw_ops = {
474 .set_state_D0 = skl_set_dsp_D0,
475 .set_state_D3 = skl_set_dsp_D3,
476 .load_fw = skl_load_base_firmware,
477 .get_fw_errcode = skl_get_errorcode,
478 .load_mod = skl_load_module,
479 .unload_mod = skl_unload_module,
480};
481
473static struct sst_ops skl_ops = { 482static struct sst_ops skl_ops = {
474 .irq_handler = skl_dsp_sst_interrupt, 483 .irq_handler = skl_dsp_sst_interrupt,
475 .write = sst_shim32_write, 484 .write = sst_shim32_write,
@@ -512,6 +521,27 @@ int skl_sst_dsp_init(struct device *dev, void __iomem *mmio_base, int irq,
512} 521}
513EXPORT_SYMBOL_GPL(skl_sst_dsp_init); 522EXPORT_SYMBOL_GPL(skl_sst_dsp_init);
514 523
524int kbl_sst_dsp_init(struct device *dev, void __iomem *mmio_base, int irq,
525 const char *fw_name, struct skl_dsp_loader_ops dsp_ops,
526 struct skl_sst **dsp)
527{
528 struct sst_dsp *sst;
529 int ret;
530
531 ret = skl_sst_dsp_init(dev, mmio_base, irq, fw_name, dsp_ops, dsp);
532 if (ret < 0) {
533 dev_err(dev, "%s: Init failed %d\n", __func__, ret);
534 return ret;
535 }
536
537 sst = (*dsp)->dsp;
538 sst->fw_ops = kbl_fw_ops;
539
540 return 0;
541
542}
543EXPORT_SYMBOL_GPL(kbl_sst_dsp_init);
544
515int skl_sst_init_fw(struct device *dev, struct skl_sst *ctx) 545int skl_sst_init_fw(struct device *dev, struct skl_sst *ctx)
516{ 546{
517 int ret; 547 int ret;