diff options
author | Mark Brown <broonie@kernel.org> | 2015-03-04 15:42:39 -0500 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2015-03-04 15:42:39 -0500 |
commit | 09269e4eefcdfcb8b27b3dd1783a1a7b916c5e17 (patch) | |
tree | a6f145b6364e16c07044462f0e72d5913f0a0985 /sound | |
parent | 9d22fd3ca7dba0027a3f121d0ba525f65f8b13fb (diff) | |
parent | de251d773bb214fa5e7666a0da1225528e07da5e (diff) |
Merge remote-tracking branch 'asoc/fix/intel' into asoc-linus
Diffstat (limited to 'sound')
-rw-r--r-- | sound/soc/intel/sst-atom-controls.h | 2 | ||||
-rw-r--r-- | sound/soc/intel/sst/sst.c | 10 |
2 files changed, 10 insertions, 2 deletions
diff --git a/sound/soc/intel/sst-atom-controls.h b/sound/soc/intel/sst-atom-controls.h index dfebfdd5eb2a..daecc58f28af 100644 --- a/sound/soc/intel/sst-atom-controls.h +++ b/sound/soc/intel/sst-atom-controls.h | |||
@@ -150,7 +150,7 @@ enum sst_cmd_type { | |||
150 | 150 | ||
151 | enum sst_task { | 151 | enum sst_task { |
152 | SST_TASK_SBA = 1, | 152 | SST_TASK_SBA = 1, |
153 | SST_TASK_MMX, | 153 | SST_TASK_MMX = 3, |
154 | }; | 154 | }; |
155 | 155 | ||
156 | enum sst_type { | 156 | enum sst_type { |
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 | ||