Lines Matching full:cp
82 int (*tx)(struct imx_mu_priv *priv, struct imx_mu_con_priv *cp, void *data);
83 int (*rx)(struct imx_mu_priv *priv, struct imx_mu_con_priv *cp);
137 struct imx_mu_con_priv *cp, in imx_mu_generic_tx() argument
142 switch (cp->type) { in imx_mu_generic_tx()
144 imx_mu_write(priv, *arg, priv->dcfg->xTR + cp->idx * 4); in imx_mu_generic_tx()
145 imx_mu_xcr_rmw(priv, IMX_MU_TCR, IMX_MU_xCR_TIEn(priv->dcfg->type, cp->idx), 0); in imx_mu_generic_tx()
148 imx_mu_xcr_rmw(priv, IMX_MU_GCR, IMX_MU_xCR_GIRn(priv->dcfg->type, cp->idx), 0); in imx_mu_generic_tx()
149 tasklet_schedule(&cp->txdb_tasklet); in imx_mu_generic_tx()
152 dev_warn_ratelimited(priv->dev, "Send data on wrong channel type: %d\n", cp->type); in imx_mu_generic_tx()
160 struct imx_mu_con_priv *cp) in imx_mu_generic_rx() argument
164 dat = imx_mu_read(priv, priv->dcfg->xRR + (cp->idx) * 4); in imx_mu_generic_rx()
165 mbox_chan_received_data(cp->chan, (void *)&dat); in imx_mu_generic_rx()
171 struct imx_mu_con_priv *cp, in imx_mu_scu_tx() argument
179 switch (cp->type) { in imx_mu_scu_tx()
209 imx_mu_xcr_rmw(priv, IMX_MU_TCR, IMX_MU_xCR_TIEn(priv->dcfg->type, cp->idx), 0); in imx_mu_scu_tx()
212 dev_warn_ratelimited(priv->dev, "Send data on wrong channel type: %d\n", cp->type); in imx_mu_scu_tx()
220 struct imx_mu_con_priv *cp) in imx_mu_scu_rx() argument
246 mbox_chan_received_data(cp->chan, (void *)&msg); in imx_mu_scu_rx()
253 struct imx_mu_con_priv *cp = (struct imx_mu_con_priv *)data; in imx_mu_txdb_tasklet() local
255 mbox_chan_txdone(cp->chan, 0); in imx_mu_txdb_tasklet()
262 struct imx_mu_con_priv *cp = chan->con_priv; in imx_mu_isr() local
265 switch (cp->type) { in imx_mu_isr()
269 val &= IMX_MU_xSR_TEn(priv->dcfg->type, cp->idx) & in imx_mu_isr()
270 (ctrl & IMX_MU_xCR_TIEn(priv->dcfg->type, cp->idx)); in imx_mu_isr()
275 val &= IMX_MU_xSR_RFn(priv->dcfg->type, cp->idx) & in imx_mu_isr()
276 (ctrl & IMX_MU_xCR_RIEn(priv->dcfg->type, cp->idx)); in imx_mu_isr()
281 val &= IMX_MU_xSR_GIPn(priv->dcfg->type, cp->idx) & in imx_mu_isr()
282 (ctrl & IMX_MU_xCR_GIEn(priv->dcfg->type, cp->idx)); in imx_mu_isr()
286 cp->type); in imx_mu_isr()
293 if ((val == IMX_MU_xSR_TEn(priv->dcfg->type, cp->idx)) && in imx_mu_isr()
294 (cp->type == IMX_MU_TYPE_TX)) { in imx_mu_isr()
295 imx_mu_xcr_rmw(priv, IMX_MU_TCR, 0, IMX_MU_xCR_TIEn(priv->dcfg->type, cp->idx)); in imx_mu_isr()
297 } else if ((val == IMX_MU_xSR_RFn(priv->dcfg->type, cp->idx)) && in imx_mu_isr()
298 (cp->type == IMX_MU_TYPE_RX)) { in imx_mu_isr()
299 priv->dcfg->rx(priv, cp); in imx_mu_isr()
300 } else if ((val == IMX_MU_xSR_GIPn(priv->dcfg->type, cp->idx)) && in imx_mu_isr()
301 (cp->type == IMX_MU_TYPE_RXDB)) { in imx_mu_isr()
302 imx_mu_write(priv, IMX_MU_xSR_GIPn(priv->dcfg->type, cp->idx), in imx_mu_isr()
316 struct imx_mu_con_priv *cp = chan->con_priv; in imx_mu_send_data() local
318 return priv->dcfg->tx(priv, cp, data); in imx_mu_send_data()
324 struct imx_mu_con_priv *cp = chan->con_priv; in imx_mu_startup() local
329 if (cp->type == IMX_MU_TYPE_TXDB) { in imx_mu_startup()
331 tasklet_init(&cp->txdb_tasklet, imx_mu_txdb_tasklet, in imx_mu_startup()
332 (unsigned long)cp); in imx_mu_startup()
341 cp->irq_desc, chan); in imx_mu_startup()
348 switch (cp->type) { in imx_mu_startup()
350 imx_mu_xcr_rmw(priv, IMX_MU_RCR, IMX_MU_xCR_RIEn(priv->dcfg->type, cp->idx), 0); in imx_mu_startup()
353 imx_mu_xcr_rmw(priv, IMX_MU_GIER, IMX_MU_xCR_GIEn(priv->dcfg->type, cp->idx), 0); in imx_mu_startup()
365 struct imx_mu_con_priv *cp = chan->con_priv; in imx_mu_shutdown() local
367 if (cp->type == IMX_MU_TYPE_TXDB) { in imx_mu_shutdown()
368 tasklet_kill(&cp->txdb_tasklet); in imx_mu_shutdown()
373 switch (cp->type) { in imx_mu_shutdown()
375 imx_mu_xcr_rmw(priv, IMX_MU_TCR, 0, IMX_MU_xCR_TIEn(priv->dcfg->type, cp->idx)); in imx_mu_shutdown()
378 imx_mu_xcr_rmw(priv, IMX_MU_RCR, 0, IMX_MU_xCR_RIEn(priv->dcfg->type, cp->idx)); in imx_mu_shutdown()
381 imx_mu_xcr_rmw(priv, IMX_MU_GIER, 0, IMX_MU_xCR_GIEn(priv->dcfg->type, cp->idx)); in imx_mu_shutdown()
460 struct imx_mu_con_priv *cp = &priv->con_priv[i]; in imx_mu_init_generic() local
462 cp->idx = i % 4; in imx_mu_init_generic()
463 cp->type = i >> 2; in imx_mu_init_generic()
464 cp->chan = &priv->mbox_chans[i]; in imx_mu_init_generic()
465 priv->mbox_chans[i].con_priv = cp; in imx_mu_init_generic()
466 snprintf(cp->irq_desc, sizeof(cp->irq_desc), in imx_mu_init_generic()
467 "imx_mu_chan[%i-%i]", cp->type, cp->idx); in imx_mu_init_generic()
486 struct imx_mu_con_priv *cp = &priv->con_priv[i]; in imx_mu_init_scu() local
488 cp->idx = i < 2 ? 0 : i - 2; in imx_mu_init_scu()
489 cp->type = i < 2 ? i : IMX_MU_TYPE_RXDB; in imx_mu_init_scu()
490 cp->chan = &priv->mbox_chans[i]; in imx_mu_init_scu()
491 priv->mbox_chans[i].con_priv = cp; in imx_mu_init_scu()
492 snprintf(cp->irq_desc, sizeof(cp->irq_desc), in imx_mu_init_scu()
493 "imx_mu_chan[%i-%i]", cp->type, cp->idx); in imx_mu_init_scu()