Lines Matching refs:mc_io
155 * @mc_io: MC I/O object to be used
159 static int mc_polling_wait_preemptible(struct fsl_mc_io *mc_io,
171 status = mc_read_response(mc_io->portal_virt_addr, cmd);
183 dev_dbg(mc_io->dev,
185 &mc_io->portal_phys_addr,
201 * @mc_io: MC I/O object to be used
205 static int mc_polling_wait_atomic(struct fsl_mc_io *mc_io,
216 status = mc_read_response(mc_io->portal_virt_addr, cmd);
223 dev_dbg(mc_io->dev,
225 &mc_io->portal_phys_addr,
240 * @mc_io: MC I/O object to be used
245 int mc_send_command(struct fsl_mc_io *mc_io, struct fsl_mc_command *cmd)
251 if (in_irq() && !(mc_io->flags & FSL_MC_IO_ATOMIC_CONTEXT_PORTAL))
254 if (mc_io->flags & FSL_MC_IO_ATOMIC_CONTEXT_PORTAL)
255 raw_spin_lock_irqsave(&mc_io->spinlock, irq_flags);
257 mutex_lock(&mc_io->mutex);
262 mc_write_command(mc_io->portal_virt_addr, cmd);
267 if (!(mc_io->flags & FSL_MC_IO_ATOMIC_CONTEXT_PORTAL))
268 error = mc_polling_wait_preemptible(mc_io, cmd, &status);
270 error = mc_polling_wait_atomic(mc_io, cmd, &status);
276 dev_dbg(mc_io->dev,
278 &mc_io->portal_phys_addr,
290 if (mc_io->flags & FSL_MC_IO_ATOMIC_CONTEXT_PORTAL)
291 raw_spin_unlock_irqrestore(&mc_io->spinlock, irq_flags);
293 mutex_unlock(&mc_io->mutex);