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.bus.ppcap) return 0; /* enable ppcap interrupt */ snd_hdac_ext_bus_ppcap_enable(&skl->ebus, true); snd_hdac_ext_bus_ppcap_int_enable(&skl->ebus, true); /* check if DSP 1st boot is done */ if (skl->skl_sst->is_first_boot == true) return 0; /* disable dynamic clock gating during fw and lib download */ ctx->enable_miscbdcge(ctx->dev, false); ret = skl_dsp_wake(ctx->dsp); ctx->enable_miscbdcge(ctx->dev, true); if (ret < 0) return ret; skl_dsp_enable_notification(skl->skl_sst, false); if (skl->cfg.astate_cfg != NULL) { skl_dsp_set_astate_cfg(skl->skl_sst, skl->cfg.astate_cfg->count, skl->cfg.astate_cfg); } return ret; }
int skl_resume_dsp(struct skl *skl) { struct skl_sst *ctx = skl->skl_sst; /* if ppcap is not supported return 0 */ if (!skl->ebus.ppcap) return 0; /* enable ppcap interrupt */ 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); }
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) return 0; /* enable ppcap interrupt */ snd_hdac_ext_bus_ppcap_enable(&skl->ebus, true); snd_hdac_ext_bus_ppcap_int_enable(&skl->ebus, true); ret = skl_dsp_wake(ctx->dsp); if (ret < 0) return ret; skl_dsp_enable_notification(skl->skl_sst, false); return ret; }
int skl_resume_dsp(struct skl *skl) { struct skl_sst *ctx = skl->skl_sst; struct hdac_bus *bus = skl_to_bus(skl); int ret; /* if ppcap is not supported return 0 */ if (!bus->ppcap) return 0; /* enable ppcap interrupt */ snd_hdac_ext_bus_ppcap_enable(bus, true); snd_hdac_ext_bus_ppcap_int_enable(bus, true); /* check if DSP 1st boot is done */ if (skl->skl_sst->is_first_boot) return 0; /* * Disable dynamic clock and power gating during firmware * and library download */ ctx->enable_miscbdcge(ctx->dev, false); ctx->clock_power_gating(ctx->dev, false); ret = skl_dsp_wake(ctx->dsp); ctx->enable_miscbdcge(ctx->dev, true); ctx->clock_power_gating(ctx->dev, true); if (ret < 0) return ret; skl_dsp_enable_notification(skl->skl_sst, false); if (skl->cfg.astate_cfg != NULL) { skl_dsp_set_astate_cfg(skl->skl_sst, skl->cfg.astate_cfg->count, skl->cfg.astate_cfg); } return ret; }