Commit 89b0d8a5 authored by Subhransu S. Prusty's avatar Subhransu S. Prusty Committed by Mark Brown

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: default avatarSubhransu S. Prusty <subhransu.s.prusty@intel.com>
Acked-by: default avatarVinod Koul <vinod.koul@intel.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 4e0277d2
...@@ -209,7 +209,7 @@ static const struct skl_dsp_ops dsp_ops[] = { ...@@ -209,7 +209,7 @@ static const struct skl_dsp_ops dsp_ops[] = {
{ {
.id = 0x9d71, .id = 0x9d71,
.loader_ops = skl_get_loader_ops, .loader_ops = skl_get_loader_ops,
.init = skl_sst_dsp_init, .init = kbl_sst_dsp_init,
.init_fw = skl_sst_init_fw, .init_fw = skl_sst_init_fw,
.cleanup = skl_sst_dsp_cleanup .cleanup = skl_sst_dsp_cleanup
}, },
......
...@@ -230,6 +230,9 @@ int skl_dsp_boot(struct sst_dsp *ctx); ...@@ -230,6 +230,9 @@ int skl_dsp_boot(struct sst_dsp *ctx);
int skl_sst_dsp_init(struct device *dev, void __iomem *mmio_base, int irq, int skl_sst_dsp_init(struct device *dev, void __iomem *mmio_base, int irq,
const char *fw_name, struct skl_dsp_loader_ops dsp_ops, const char *fw_name, struct skl_dsp_loader_ops dsp_ops,
struct skl_sst **dsp); struct skl_sst **dsp);
int kbl_sst_dsp_init(struct device *dev, void __iomem *mmio_base, int irq,
const char *fw_name, struct skl_dsp_loader_ops dsp_ops,
struct skl_sst **dsp);
int bxt_sst_dsp_init(struct device *dev, void __iomem *mmio_base, int irq, int bxt_sst_dsp_init(struct device *dev, void __iomem *mmio_base, int irq,
const char *fw_name, struct skl_dsp_loader_ops dsp_ops, const char *fw_name, struct skl_dsp_loader_ops dsp_ops,
struct skl_sst **dsp); struct skl_sst **dsp);
......
...@@ -470,6 +470,15 @@ static struct skl_dsp_fw_ops skl_fw_ops = { ...@@ -470,6 +470,15 @@ static struct skl_dsp_fw_ops skl_fw_ops = {
.unload_mod = skl_unload_module, .unload_mod = skl_unload_module,
}; };
static struct skl_dsp_fw_ops kbl_fw_ops = {
.set_state_D0 = skl_set_dsp_D0,
.set_state_D3 = skl_set_dsp_D3,
.load_fw = skl_load_base_firmware,
.get_fw_errcode = skl_get_errorcode,
.load_mod = skl_load_module,
.unload_mod = skl_unload_module,
};
static struct sst_ops skl_ops = { static struct sst_ops skl_ops = {
.irq_handler = skl_dsp_sst_interrupt, .irq_handler = skl_dsp_sst_interrupt,
.write = sst_shim32_write, .write = sst_shim32_write,
...@@ -512,6 +521,27 @@ int skl_sst_dsp_init(struct device *dev, void __iomem *mmio_base, int irq, ...@@ -512,6 +521,27 @@ int skl_sst_dsp_init(struct device *dev, void __iomem *mmio_base, int irq,
} }
EXPORT_SYMBOL_GPL(skl_sst_dsp_init); EXPORT_SYMBOL_GPL(skl_sst_dsp_init);
int kbl_sst_dsp_init(struct device *dev, void __iomem *mmio_base, int irq,
const char *fw_name, struct skl_dsp_loader_ops dsp_ops,
struct skl_sst **dsp)
{
struct sst_dsp *sst;
int ret;
ret = skl_sst_dsp_init(dev, mmio_base, irq, fw_name, dsp_ops, dsp);
if (ret < 0) {
dev_err(dev, "%s: Init failed %d\n", __func__, ret);
return ret;
}
sst = (*dsp)->dsp;
sst->fw_ops = kbl_fw_ops;
return 0;
}
EXPORT_SYMBOL_GPL(kbl_sst_dsp_init);
int skl_sst_init_fw(struct device *dev, struct skl_sst *ctx) int skl_sst_init_fw(struct device *dev, struct skl_sst *ctx)
{ {
int ret; int ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment