ASoC: Intel: Add generic support for DSP wake, sleep and stall
Add generic functions to support DSP sleep, wake and stall. Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
137f6d541a
commit
d96c53a193
@ -36,6 +36,9 @@ struct sst_ops {
|
|||||||
/* DSP core boot / reset */
|
/* DSP core boot / reset */
|
||||||
void (*boot)(struct sst_dsp *);
|
void (*boot)(struct sst_dsp *);
|
||||||
void (*reset)(struct sst_dsp *);
|
void (*reset)(struct sst_dsp *);
|
||||||
|
int (*wake)(struct sst_dsp *);
|
||||||
|
void (*sleep)(struct sst_dsp *);
|
||||||
|
void (*stall)(struct sst_dsp *);
|
||||||
|
|
||||||
/* Shim IO */
|
/* Shim IO */
|
||||||
void (*write)(void __iomem *addr, u32 offset, u32 value);
|
void (*write)(void __iomem *addr, u32 offset, u32 value);
|
||||||
|
@ -245,6 +245,29 @@ int sst_dsp_boot(struct sst_dsp *sst)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(sst_dsp_boot);
|
EXPORT_SYMBOL_GPL(sst_dsp_boot);
|
||||||
|
|
||||||
|
int sst_dsp_wake(struct sst_dsp *sst)
|
||||||
|
{
|
||||||
|
if (sst->ops->wake)
|
||||||
|
return sst->ops->wake(sst);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(sst_dsp_wake);
|
||||||
|
|
||||||
|
void sst_dsp_sleep(struct sst_dsp *sst)
|
||||||
|
{
|
||||||
|
if (sst->ops->sleep)
|
||||||
|
sst->ops->sleep(sst);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(sst_dsp_sleep);
|
||||||
|
|
||||||
|
void sst_dsp_stall(struct sst_dsp *sst)
|
||||||
|
{
|
||||||
|
if (sst->ops->stall)
|
||||||
|
sst->ops->stall(sst);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(sst_dsp_stall);
|
||||||
|
|
||||||
void sst_dsp_ipc_msg_tx(struct sst_dsp *dsp, u32 msg)
|
void sst_dsp_ipc_msg_tx(struct sst_dsp *dsp, u32 msg)
|
||||||
{
|
{
|
||||||
sst_dsp_shim_write_unlocked(dsp, SST_IPCX, msg | SST_IPCX_BUSY);
|
sst_dsp_shim_write_unlocked(dsp, SST_IPCX, msg | SST_IPCX_BUSY);
|
||||||
|
@ -245,6 +245,10 @@ void sst_memcpy_fromio_32(struct sst_dsp *sst,
|
|||||||
/* DSP reset & boot */
|
/* DSP reset & boot */
|
||||||
void sst_dsp_reset(struct sst_dsp *sst);
|
void sst_dsp_reset(struct sst_dsp *sst);
|
||||||
int sst_dsp_boot(struct sst_dsp *sst);
|
int sst_dsp_boot(struct sst_dsp *sst);
|
||||||
|
int sst_dsp_wake(struct sst_dsp *sst);
|
||||||
|
void sst_dsp_sleep(struct sst_dsp *sst);
|
||||||
|
void sst_dsp_stall(struct sst_dsp *sst);
|
||||||
|
|
||||||
/* DMA */
|
/* DMA */
|
||||||
int sst_dsp_dma_get_channel(struct sst_dsp *dsp, int chan_id);
|
int sst_dsp_dma_get_channel(struct sst_dsp *dsp, int chan_id);
|
||||||
void sst_dsp_dma_put_channel(struct sst_dsp *dsp);
|
void sst_dsp_dma_put_channel(struct sst_dsp *dsp);
|
||||||
|
Loading…
Reference in New Issue
Block a user