Lines Matching +full:sparx5 +full:- +full:switch
1 // SPDX-License-Identifier: GPL-2.0+
2 /* Microchip lan969x Switch driver
123 static u32 lan969x_get_dev_mode_bit(struct sparx5 *sparx5, int port) in lan969x_get_dev_mode_bit() argument
129 switch (port) { in lan969x_get_dev_mode_bit()
143 static u32 lan969x_port_dev_mapping(struct sparx5 *sparx5, int port) in lan969x_port_dev_mapping() argument
146 switch (port) { in lan969x_port_dev_mapping()
159 switch (port) { in lan969x_port_dev_mapping()
187 static int lan969x_port_mux_set(struct sparx5 *sparx5, struct sparx5_port *port, in lan969x_port_mux_set() argument
190 u32 portno = port->portno; in lan969x_port_mux_set()
193 if (port->conf.portmode == conf->portmode) in lan969x_port_mux_set()
196 switch (conf->portmode) { in lan969x_port_mux_set()
198 inst = (portno - portno % 4) / 4; in lan969x_port_mux_set()
199 spx5_rmw(BIT(inst), BIT(inst), sparx5, PORT_CONF_QSGMII_ENA); in lan969x_port_mux_set()
210 struct sparx5 *sparx5 = args; in lan969x_ptp_irq_handler() local
212 while (budget--) { in lan969x_ptp_irq_handler()
221 val = spx5_rd(sparx5, PTP_TWOSTEP_CTRL); in lan969x_ptp_irq_handler()
236 port = sparx5->ports[txport]; in lan969x_ptp_irq_handler()
239 delay = spx5_rd(sparx5, PTP_TWOSTEP_STAMP_NSEC); in lan969x_ptp_irq_handler()
247 sparx5, PTP_TWOSTEP_CTRL); in lan969x_ptp_irq_handler()
249 val = spx5_rd(sparx5, PTP_TWOSTEP_CTRL); in lan969x_ptp_irq_handler()
256 id = spx5_rd(sparx5, PTP_TWOSTEP_STAMP_NSEC); in lan969x_ptp_irq_handler()
258 id |= spx5_rd(sparx5, PTP_TWOSTEP_STAMP_SUBNS); in lan969x_ptp_irq_handler()
260 spin_lock_irqsave(&port->tx_skbs.lock, flags); in lan969x_ptp_irq_handler()
261 skb_queue_walk_safe(&port->tx_skbs, skb, skb_tmp) { in lan969x_ptp_irq_handler()
262 if (SPARX5_SKB_CB(skb)->ts_id != id) in lan969x_ptp_irq_handler()
265 __skb_unlink(skb, &port->tx_skbs); in lan969x_ptp_irq_handler()
269 spin_unlock_irqrestore(&port->tx_skbs.lock, flags); in lan969x_ptp_irq_handler()
274 sparx5, PTP_TWOSTEP_CTRL); in lan969x_ptp_irq_handler()
279 spin_lock_irqsave(&sparx5->ptp_ts_id_lock, flags); in lan969x_ptp_irq_handler()
280 sparx5->ptp_skbs--; in lan969x_ptp_irq_handler()
281 spin_unlock_irqrestore(&sparx5->ptp_ts_id_lock, flags); in lan969x_ptp_irq_handler()
284 sparx5_get_hwtimestamp(sparx5, &ts, delay); in lan969x_ptp_irq_handler()