diff options
author | Sebastian Reichel <sre@kernel.org> | 2016-05-11 21:33:45 +0300 |
---|---|---|
committer | Sebastian Reichel <sre@kernel.org> | 2016-06-28 01:39:15 +0300 |
commit | 7c5d81620ecd37702e86232de819eb1dd4c738e0 (patch) | |
tree | 6d47fa843b20df8ce67b842f454d07b6cefbde95 /drivers/hsi/controllers/omap_ssi.h | |
parent | de5a3774dde2c2f3b3a9a48b880fd820142706f0 (diff) | |
download | linux-7c5d81620ecd37702e86232de819eb1dd4c738e0.tar.xz |
HSI: omap_ssi_port: prepare start_tx/stop_tx for blocking pm_runtime calls
ssi_start_tx and ssi_stop_tx may be called from atomic context. Once
pm_runtime_irq_safe() is removed for omap-ssi, this will fail, due
to blocking pm_runtime_*_sync() calls.
This fixes ssi_stop_tx by using non-sync API and ssi_start_tx by
using a worker thread.
Signed-off-by: Sebastian Reichel <sre@kernel.org>
Tested-by: Pavel Machek <pavel@ucw.cz>
Diffstat (limited to 'drivers/hsi/controllers/omap_ssi.h')
-rw-r--r-- | drivers/hsi/controllers/omap_ssi.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/hsi/controllers/omap_ssi.h b/drivers/hsi/controllers/omap_ssi.h index 6cdaad8805f7..5467f61e5086 100644 --- a/drivers/hsi/controllers/omap_ssi.h +++ b/drivers/hsi/controllers/omap_ssi.h @@ -79,6 +79,7 @@ struct omap_ssm_ctx { * @pio_tasklet: Bottom half for PIO transfers and events * @flags: flags to keep track of states * @wk_refcount: Reference count for output wake line + * @work: worker for starting TX * @sys_mpu_enable: Context for the interrupt enable register for irq 0 * @sst: Context for the synchronous serial transmitter * @ssr: Context for the synchronous serial receiver @@ -103,6 +104,7 @@ struct omap_ssi_port { bool wktest:1; /* FIXME: HACK to be removed */ unsigned long flags; unsigned int wk_refcount; + struct work_struct work; /* OMAP SSI port context */ u32 sys_mpu_enable; /* We use only one irq */ struct omap_ssm_ctx sst; |