Lines Matching refs:mc_io
154 * @mc_io: MC I/O object to be used
158 static int mc_polling_wait_preemptible(struct fsl_mc_io *mc_io,
170 status = mc_read_response(mc_io->portal_virt_addr, cmd);
182 dev_dbg(mc_io->dev,
184 &mc_io->portal_phys_addr,
200 * @mc_io: MC I/O object to be used
204 static int mc_polling_wait_atomic(struct fsl_mc_io *mc_io,
215 status = mc_read_response(mc_io->portal_virt_addr, cmd);
222 dev_dbg(mc_io->dev,
224 &mc_io->portal_phys_addr,
239 * @mc_io: MC I/O object to be used
244 int mc_send_command(struct fsl_mc_io *mc_io, struct fsl_mc_command *cmd)
250 if (in_irq() && !(mc_io->flags & FSL_MC_IO_ATOMIC_CONTEXT_PORTAL))
253 if (mc_io->flags & FSL_MC_IO_ATOMIC_CONTEXT_PORTAL)
254 raw_spin_lock_irqsave(&mc_io->spinlock, irq_flags);
256 mutex_lock(&mc_io->mutex);
261 mc_write_command(mc_io->portal_virt_addr, cmd);
266 if (!(mc_io->flags & FSL_MC_IO_ATOMIC_CONTEXT_PORTAL))
267 error = mc_polling_wait_preemptible(mc_io, cmd, &status);
269 error = mc_polling_wait_atomic(mc_io, cmd, &status);
275 dev_dbg(mc_io->dev,
277 &mc_io->portal_phys_addr,
289 if (mc_io->flags & FSL_MC_IO_ATOMIC_CONTEXT_PORTAL)
290 raw_spin_unlock_irqrestore(&mc_io->spinlock, irq_flags);
292 mutex_unlock(&mc_io->mutex);