ASoC: Intel: Skylake: Use num_core to allocate instead of macro
For different platforms, number of dsp cores can vary. So instead of creating array of size SKL_DSP_CORES_MAX, use num_core in dsp_ops() of the respective platform to allocate core usage counts and states. Signed-off-by: Guneshwor Singh <guneshwor.o.singh@intel.com> Acked-By: Vinod Koul <vinod.koul@intel.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
Родитель
363d45385f
Коммит
f0a550a883
|
@ -253,6 +253,7 @@ int skl_init_dsp(struct skl *skl)
|
|||
struct skl_dsp_loader_ops loader_ops;
|
||||
int irq = bus->irq;
|
||||
const struct skl_dsp_ops *ops;
|
||||
struct skl_dsp_cores *cores;
|
||||
int ret;
|
||||
|
||||
/* enable ppcap interrupt */
|
||||
|
@ -279,7 +280,19 @@ int skl_init_dsp(struct skl *skl)
|
|||
return ret;
|
||||
|
||||
skl->skl_sst->dsp_ops = ops;
|
||||
skl->skl_sst->cores.count = ops->num_cores;
|
||||
cores = &skl->skl_sst->cores;
|
||||
cores->count = ops->num_cores;
|
||||
|
||||
cores->state = kcalloc(cores->count, sizeof(*cores->state), GFP_KERNEL);
|
||||
if (!cores->state)
|
||||
return -ENOMEM;
|
||||
|
||||
cores->usage_count = kcalloc(cores->count, sizeof(*cores->usage_count),
|
||||
GFP_KERNEL);
|
||||
if (!cores->usage_count) {
|
||||
kfree(cores->state);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
dev_dbg(bus->dev, "dsp registration status=%d\n", ret);
|
||||
|
||||
|
@ -297,6 +310,9 @@ int skl_free_dsp(struct skl *skl)
|
|||
|
||||
ctx->dsp_ops->cleanup(bus->dev, ctx);
|
||||
|
||||
kfree(ctx->cores.state);
|
||||
kfree(ctx->cores.usage_count);
|
||||
|
||||
if (ctx->dsp->addr.lpe)
|
||||
iounmap(ctx->dsp->addr.lpe);
|
||||
|
||||
|
|
|
@ -47,7 +47,7 @@ void skl_dsp_init_core_state(struct sst_dsp *ctx)
|
|||
skl->cores.state[SKL_DSP_CORE0_ID] = SKL_DSP_RUNNING;
|
||||
skl->cores.usage_count[SKL_DSP_CORE0_ID] = 1;
|
||||
|
||||
for (i = SKL_DSP_CORE0_ID + 1; i < SKL_DSP_CORES_MAX; i++) {
|
||||
for (i = SKL_DSP_CORE0_ID + 1; i < skl->cores.count; i++) {
|
||||
skl->cores.state[i] = SKL_DSP_RESET;
|
||||
skl->cores.usage_count[i] = 0;
|
||||
}
|
||||
|
|
|
@ -44,12 +44,10 @@ struct skl_ipc_header {
|
|||
u32 extension;
|
||||
};
|
||||
|
||||
#define SKL_DSP_CORES_MAX 2
|
||||
|
||||
struct skl_dsp_cores {
|
||||
unsigned int count;
|
||||
enum skl_dsp_states state[SKL_DSP_CORES_MAX];
|
||||
int usage_count[SKL_DSP_CORES_MAX];
|
||||
enum skl_dsp_states *state;
|
||||
int *usage_count;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
Загрузка…
Ссылка в новой задаче