mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-27 06:34:11 +08:00
ASoC: Intel: Skylake: Add support to disable module notifications
Each FW modules can report underrun/overrun notification from all modules. This patch disables underrun/overrun notification after firmware is loaded. This will be supportted for debug mode only thru debugfs Signed-off-by: Jeeja KP <jeeja.kp@intel.com> Signed-off-by: Vinod Koul <vinod.koul@intel.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
d7b188131c
commit
4e10996ba8
@ -54,6 +54,24 @@ static int skl_free_dma_buf(struct device *dev, struct snd_dma_buffer *dmab)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define NOTIFICATION_PARAM_ID 3
|
||||
#define NOTIFICATION_MASK 0xf
|
||||
|
||||
/* disable notfication for underruns/overruns from firmware module */
|
||||
static void skl_dsp_enable_notification(struct skl_sst *ctx, bool enable)
|
||||
{
|
||||
struct notification_mask mask;
|
||||
struct skl_ipc_large_config_msg msg = {0};
|
||||
|
||||
mask.notify = NOTIFICATION_MASK;
|
||||
mask.enable = enable;
|
||||
|
||||
msg.large_param_id = NOTIFICATION_PARAM_ID;
|
||||
msg.param_data_size = sizeof(mask);
|
||||
|
||||
skl_ipc_set_large_config(&ctx->ipc, &msg, (u32 *)&mask);
|
||||
}
|
||||
|
||||
int skl_init_dsp(struct skl *skl)
|
||||
{
|
||||
void __iomem *mmio_base;
|
||||
@ -79,7 +97,7 @@ int skl_init_dsp(struct skl *skl)
|
||||
|
||||
ret = skl_sst_dsp_init(bus->dev, mmio_base, irq,
|
||||
loader_ops, &skl->skl_sst);
|
||||
|
||||
skl_dsp_enable_notification(skl->skl_sst, false);
|
||||
dev_dbg(bus->dev, "dsp registration status=%d\n", ret);
|
||||
|
||||
return ret;
|
||||
@ -122,6 +140,7 @@ int skl_suspend_dsp(struct skl *skl)
|
||||
int skl_resume_dsp(struct skl *skl)
|
||||
{
|
||||
struct skl_sst *ctx = skl->skl_sst;
|
||||
int ret;
|
||||
|
||||
/* if ppcap is not supported return 0 */
|
||||
if (!skl->ebus.ppcap)
|
||||
@ -131,7 +150,12 @@ int skl_resume_dsp(struct skl *skl)
|
||||
snd_hdac_ext_bus_ppcap_enable(&skl->ebus, true);
|
||||
snd_hdac_ext_bus_ppcap_int_enable(&skl->ebus, true);
|
||||
|
||||
return skl_dsp_wake(ctx->dsp);
|
||||
ret = skl_dsp_wake(ctx->dsp);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
skl_dsp_enable_notification(skl->skl_sst, false);
|
||||
return ret;
|
||||
}
|
||||
|
||||
enum skl_bitdepth skl_get_bit_depth(int params)
|
||||
|
@ -129,6 +129,11 @@ struct skl_src_module_cfg {
|
||||
enum skl_s_freq src_cfg;
|
||||
} __packed;
|
||||
|
||||
struct notification_mask {
|
||||
u32 notify;
|
||||
u32 enable;
|
||||
} __packed;
|
||||
|
||||
struct skl_up_down_mixer_cfg {
|
||||
struct skl_base_cfg base_cfg;
|
||||
enum skl_ch_cfg out_ch_cfg;
|
||||
|
Loading…
Reference in New Issue
Block a user