Lines Matching full:sparx5

2 /* Microchip Sparx5 Switch driver
23 void sparx5_xtr_flush(struct sparx5 *sparx5, u8 grp) in sparx5_xtr_flush() argument
26 spx5_wr(QS_XTR_FLUSH_FLUSH_SET(BIT(grp)), sparx5, QS_XTR_FLUSH); in sparx5_xtr_flush()
32 spx5_wr(0, sparx5, QS_XTR_FLUSH); in sparx5_xtr_flush()
49 static void sparx5_xtr_grp(struct sparx5 *sparx5, u8 grp, bool byte_swap) in sparx5_xtr_grp() argument
62 ifh[i] = spx5_rd(sparx5, QS_XTR_RD(grp)); in sparx5_xtr_grp()
69 sparx5->ports[fi.src_port] : NULL; in sparx5_xtr_grp()
71 dev_err(sparx5->dev, "Data on inactive port %d\n", fi.src_port); in sparx5_xtr_grp()
72 sparx5_xtr_flush(sparx5, grp); in sparx5_xtr_grp()
80 sparx5_xtr_flush(sparx5, grp); in sparx5_xtr_grp()
81 dev_err(sparx5->dev, "No skb allocated\n"); in sparx5_xtr_grp()
89 u32 val = spx5_rd(sparx5, QS_XTR_RD(grp)); in sparx5_xtr_grp()
119 *rxbuf = spx5_rd(sparx5, QS_XTR_RD(grp)); in sparx5_xtr_grp()
141 if (test_bit(port->portno, sparx5->bridge_mask)) in sparx5_xtr_grp()
153 static int sparx5_inject(struct sparx5 *sparx5, in sparx5_inject() argument
162 val = spx5_rd(sparx5, QS_INJ_STATUS); in sparx5_inject()
172 sparx5, QS_INJ_CTRL(grp)); in sparx5_inject()
176 spx5_wr(ifh[w], sparx5, QS_INJ_WR(grp)); in sparx5_inject()
183 spx5_wr(val, sparx5, QS_INJ_WR(grp)); in sparx5_inject()
188 spx5_wr(0, sparx5, QS_INJ_WR(grp)); in sparx5_inject()
196 sparx5, QS_INJ_CTRL(grp)); in sparx5_inject()
199 spx5_wr(0, sparx5, QS_INJ_WR(grp)); in sparx5_inject()
202 val = spx5_rd(sparx5, QS_INJ_STATUS); in sparx5_inject()
220 struct sparx5 *sparx5 = port->sparx5; in sparx5_port_xmit_impl() local
223 if (sparx5->fdma_irq > 0) in sparx5_port_xmit_impl()
224 ret = sparx5_fdma_xmit(sparx5, port->ifh, skb); in sparx5_port_xmit_impl()
226 ret = sparx5_inject(sparx5, port->ifh, skb, dev); in sparx5_port_xmit_impl()
246 val = spx5_rd(port->sparx5, QS_INJ_STATUS); in sparx5_injection_timeout()
252 port->sparx5, in sparx5_injection_timeout()
259 int sparx5_manual_injection_mode(struct sparx5 *sparx5) in sparx5_manual_injection_mode() argument
268 sparx5, QS_XTR_GRP_CFG(XTR_QUEUE)); in sparx5_manual_injection_mode()
271 sparx5, QS_INJ_GRP_CFG(INJ_QUEUE)); in sparx5_manual_injection_mode()
279 sparx5, ASM_PORT_CFG(portno)); in sparx5_manual_injection_mode()
284 sparx5, in sparx5_manual_injection_mode()
290 sparx5, in sparx5_manual_injection_mode()
297 sparx5, in sparx5_manual_injection_mode()
305 struct sparx5 *s5 = _sparx5; in sparx5_xtr_handler()