Lines Matching refs:mc_io
158 static int mc_polling_wait_preemptible(struct fsl_mc_io *mc_io, in mc_polling_wait_preemptible() argument
170 status = mc_read_response(mc_io->portal_virt_addr, cmd); in mc_polling_wait_preemptible()
182 dev_dbg(mc_io->dev, in mc_polling_wait_preemptible()
184 &mc_io->portal_phys_addr, in mc_polling_wait_preemptible()
204 static int mc_polling_wait_atomic(struct fsl_mc_io *mc_io, in mc_polling_wait_atomic() argument
215 status = mc_read_response(mc_io->portal_virt_addr, cmd); in mc_polling_wait_atomic()
222 dev_dbg(mc_io->dev, in mc_polling_wait_atomic()
224 &mc_io->portal_phys_addr, in mc_polling_wait_atomic()
244 int mc_send_command(struct fsl_mc_io *mc_io, struct fsl_mc_command *cmd) in mc_send_command() argument
250 if (in_irq() && !(mc_io->flags & FSL_MC_IO_ATOMIC_CONTEXT_PORTAL)) in mc_send_command()
253 if (mc_io->flags & FSL_MC_IO_ATOMIC_CONTEXT_PORTAL) in mc_send_command()
254 spin_lock_irqsave(&mc_io->spinlock, irq_flags); in mc_send_command()
256 mutex_lock(&mc_io->mutex); in mc_send_command()
261 mc_write_command(mc_io->portal_virt_addr, cmd); in mc_send_command()
266 if (!(mc_io->flags & FSL_MC_IO_ATOMIC_CONTEXT_PORTAL)) in mc_send_command()
267 error = mc_polling_wait_preemptible(mc_io, cmd, &status); in mc_send_command()
269 error = mc_polling_wait_atomic(mc_io, cmd, &status); in mc_send_command()
275 dev_dbg(mc_io->dev, in mc_send_command()
277 &mc_io->portal_phys_addr, in mc_send_command()
289 if (mc_io->flags & FSL_MC_IO_ATOMIC_CONTEXT_PORTAL) in mc_send_command()
290 spin_unlock_irqrestore(&mc_io->spinlock, irq_flags); in mc_send_command()
292 mutex_unlock(&mc_io->mutex); in mc_send_command()