diff options
Diffstat (limited to 'sound/soc/intel/sst/sst.c')
| -rw-r--r-- | sound/soc/intel/sst/sst.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/sound/soc/intel/sst/sst.c b/sound/soc/intel/sst/sst.c index 8a8d56a146e7..11c578651c1c 100644 --- a/sound/soc/intel/sst/sst.c +++ b/sound/soc/intel/sst/sst.c | |||
| @@ -350,7 +350,9 @@ static inline void sst_save_shim64(struct intel_sst_drv *ctx, | |||
| 350 | 350 | ||
| 351 | spin_lock_irqsave(&ctx->ipc_spin_lock, irq_flags); | 351 | spin_lock_irqsave(&ctx->ipc_spin_lock, irq_flags); |
| 352 | 352 | ||
| 353 | shim_regs->imrx = sst_shim_read64(shim, SST_IMRX), | 353 | shim_regs->imrx = sst_shim_read64(shim, SST_IMRX); |
| 354 | shim_regs->csr = sst_shim_read64(shim, SST_CSR); | ||
| 355 | |||
| 354 | 356 | ||
| 355 | spin_unlock_irqrestore(&ctx->ipc_spin_lock, irq_flags); | 357 | spin_unlock_irqrestore(&ctx->ipc_spin_lock, irq_flags); |
| 356 | } | 358 | } |
| @@ -367,6 +369,7 @@ static inline void sst_restore_shim64(struct intel_sst_drv *ctx, | |||
| 367 | */ | 369 | */ |
| 368 | spin_lock_irqsave(&ctx->ipc_spin_lock, irq_flags); | 370 | spin_lock_irqsave(&ctx->ipc_spin_lock, irq_flags); |
| 369 | sst_shim_write64(shim, SST_IMRX, shim_regs->imrx), | 371 | sst_shim_write64(shim, SST_IMRX, shim_regs->imrx), |
| 372 | sst_shim_write64(shim, SST_CSR, shim_regs->csr), | ||
| 370 | spin_unlock_irqrestore(&ctx->ipc_spin_lock, irq_flags); | 373 | spin_unlock_irqrestore(&ctx->ipc_spin_lock, irq_flags); |
| 371 | } | 374 | } |
| 372 | 375 | ||
| @@ -379,6 +382,10 @@ void sst_configure_runtime_pm(struct intel_sst_drv *ctx) | |||
| 379 | * initially active. So change the state to active before | 382 | * initially active. So change the state to active before |
| 380 | * enabling the pm | 383 | * enabling the pm |
| 381 | */ | 384 | */ |
| 385 | |||
| 386 | if (!acpi_disabled) | ||
| 387 | pm_runtime_set_active(ctx->dev); | ||
| 388 | |||
| 382 | pm_runtime_enable(ctx->dev); | 389 | pm_runtime_enable(ctx->dev); |
| 383 | 390 | ||
| 384 | if (acpi_disabled) | 391 | if (acpi_disabled) |
| @@ -409,6 +416,7 @@ static int intel_sst_runtime_suspend(struct device *dev) | |||
| 409 | synchronize_irq(ctx->irq_num); | 416 | synchronize_irq(ctx->irq_num); |
| 410 | flush_workqueue(ctx->post_msg_wq); | 417 | flush_workqueue(ctx->post_msg_wq); |
| 411 | 418 | ||
| 419 | ctx->ops->reset(ctx); | ||
| 412 | /* save the shim registers because PMC doesn't save state */ | 420 | /* save the shim registers because PMC doesn't save state */ |
| 413 | sst_save_shim64(ctx, ctx->shim, ctx->shim_regs64); | 421 | sst_save_shim64(ctx, ctx->shim, ctx->shim_regs64); |
| 414 | 422 | ||
