Lines Matching full:cp
76 int (*tx)(struct imx_mu_priv *priv, struct imx_mu_con_priv *cp, void *data);
77 int (*rx)(struct imx_mu_priv *priv, struct imx_mu_con_priv *cp);
116 struct imx_mu_con_priv *cp, in imx_mu_generic_tx() argument
121 switch (cp->type) { in imx_mu_generic_tx()
123 imx_mu_write(priv, *arg, priv->dcfg->xTR[cp->idx]); in imx_mu_generic_tx()
124 imx_mu_xcr_rmw(priv, IMX_MU_xCR_TIEn(cp->idx), 0); in imx_mu_generic_tx()
127 imx_mu_xcr_rmw(priv, IMX_MU_xCR_GIRn(cp->idx), 0); in imx_mu_generic_tx()
128 tasklet_schedule(&cp->txdb_tasklet); in imx_mu_generic_tx()
131 dev_warn_ratelimited(priv->dev, "Send data on wrong channel type: %d\n", cp->type); in imx_mu_generic_tx()
139 struct imx_mu_con_priv *cp) in imx_mu_generic_rx() argument
143 dat = imx_mu_read(priv, priv->dcfg->xRR[cp->idx]); in imx_mu_generic_rx()
144 mbox_chan_received_data(cp->chan, (void *)&dat); in imx_mu_generic_rx()
150 struct imx_mu_con_priv *cp, in imx_mu_scu_tx() argument
158 switch (cp->type) { in imx_mu_scu_tx()
188 imx_mu_xcr_rmw(priv, IMX_MU_xCR_TIEn(cp->idx), 0); in imx_mu_scu_tx()
191 dev_warn_ratelimited(priv->dev, "Send data on wrong channel type: %d\n", cp->type); in imx_mu_scu_tx()
199 struct imx_mu_con_priv *cp) in imx_mu_scu_rx() argument
225 mbox_chan_received_data(cp->chan, (void *)&msg); in imx_mu_scu_rx()
232 struct imx_mu_con_priv *cp = (struct imx_mu_con_priv *)data; in imx_mu_txdb_tasklet() local
234 mbox_chan_txdone(cp->chan, 0); in imx_mu_txdb_tasklet()
241 struct imx_mu_con_priv *cp = chan->con_priv; in imx_mu_isr() local
247 switch (cp->type) { in imx_mu_isr()
249 val &= IMX_MU_xSR_TEn(cp->idx) & in imx_mu_isr()
250 (ctrl & IMX_MU_xCR_TIEn(cp->idx)); in imx_mu_isr()
253 val &= IMX_MU_xSR_RFn(cp->idx) & in imx_mu_isr()
254 (ctrl & IMX_MU_xCR_RIEn(cp->idx)); in imx_mu_isr()
257 val &= IMX_MU_xSR_GIPn(cp->idx) & in imx_mu_isr()
258 (ctrl & IMX_MU_xCR_GIEn(cp->idx)); in imx_mu_isr()
267 if (val == IMX_MU_xSR_TEn(cp->idx)) { in imx_mu_isr()
268 imx_mu_xcr_rmw(priv, 0, IMX_MU_xCR_TIEn(cp->idx)); in imx_mu_isr()
270 } else if (val == IMX_MU_xSR_RFn(cp->idx)) { in imx_mu_isr()
271 priv->dcfg->rx(priv, cp); in imx_mu_isr()
272 } else if (val == IMX_MU_xSR_GIPn(cp->idx)) { in imx_mu_isr()
273 imx_mu_write(priv, IMX_MU_xSR_GIPn(cp->idx), priv->dcfg->xSR); in imx_mu_isr()
286 struct imx_mu_con_priv *cp = chan->con_priv; in imx_mu_send_data() local
288 return priv->dcfg->tx(priv, cp, data); in imx_mu_send_data()
294 struct imx_mu_con_priv *cp = chan->con_priv; in imx_mu_startup() local
299 if (cp->type == IMX_MU_TYPE_TXDB) { in imx_mu_startup()
301 tasklet_init(&cp->txdb_tasklet, imx_mu_txdb_tasklet, in imx_mu_startup()
302 (unsigned long)cp); in imx_mu_startup()
311 cp->irq_desc, chan); in imx_mu_startup()
318 switch (cp->type) { in imx_mu_startup()
320 imx_mu_xcr_rmw(priv, IMX_MU_xCR_RIEn(cp->idx), 0); in imx_mu_startup()
323 imx_mu_xcr_rmw(priv, IMX_MU_xCR_GIEn(cp->idx), 0); in imx_mu_startup()
335 struct imx_mu_con_priv *cp = chan->con_priv; in imx_mu_shutdown() local
337 if (cp->type == IMX_MU_TYPE_TXDB) { in imx_mu_shutdown()
338 tasklet_kill(&cp->txdb_tasklet); in imx_mu_shutdown()
343 switch (cp->type) { in imx_mu_shutdown()
345 imx_mu_xcr_rmw(priv, 0, IMX_MU_xCR_TIEn(cp->idx)); in imx_mu_shutdown()
348 imx_mu_xcr_rmw(priv, 0, IMX_MU_xCR_RIEn(cp->idx)); in imx_mu_shutdown()
351 imx_mu_xcr_rmw(priv, 0, IMX_MU_xCR_GIEn(cp->idx)); in imx_mu_shutdown()
430 struct imx_mu_con_priv *cp = &priv->con_priv[i]; in imx_mu_init_generic() local
432 cp->idx = i % 4; in imx_mu_init_generic()
433 cp->type = i >> 2; in imx_mu_init_generic()
434 cp->chan = &priv->mbox_chans[i]; in imx_mu_init_generic()
435 priv->mbox_chans[i].con_priv = cp; in imx_mu_init_generic()
436 snprintf(cp->irq_desc, sizeof(cp->irq_desc), in imx_mu_init_generic()
437 "imx_mu_chan[%i-%i]", cp->type, cp->idx); in imx_mu_init_generic()
455 struct imx_mu_con_priv *cp = &priv->con_priv[i]; in imx_mu_init_scu() local
457 cp->idx = i < 2 ? 0 : i - 2; in imx_mu_init_scu()
458 cp->type = i < 2 ? i : IMX_MU_TYPE_RXDB; in imx_mu_init_scu()
459 cp->chan = &priv->mbox_chans[i]; in imx_mu_init_scu()
460 priv->mbox_chans[i].con_priv = cp; in imx_mu_init_scu()
461 snprintf(cp->irq_desc, sizeof(cp->irq_desc), in imx_mu_init_scu()
462 "imx_mu_chan[%i-%i]", cp->type, cp->idx); in imx_mu_init_scu()