• Home
  • Raw
  • Download

Lines Matching +full:1 +full:- +full:lane

41 				 int lane, int device, int reg, u16 *val)  in mv88e6390_serdes_read()  argument
45 return mv88e6xxx_phy_read(chip, lane, reg_c45, val); in mv88e6390_serdes_read()
49 int lane, int device, int reg, u16 val) in mv88e6390_serdes_write() argument
53 return mv88e6xxx_phy_write(chip, lane, reg_c45, val); in mv88e6390_serdes_write()
78 u8 cmode = chip->ports[port].cmode; in mv88e6352_port_has_serdes()
131 memcpy(data + i * ETH_GSTRING_LEN, stat->string, in mv88e6352_serdes_get_strings()
144 err = mv88e6352_serdes_read(chip, stat->reg, &reg); in mv88e6352_serdes_get_stat()
146 dev_err(chip->dev, "failed to read statistic\n"); in mv88e6352_serdes_get_stat()
152 if (stat->sizeof_stat == 32) { in mv88e6352_serdes_get_stat()
153 err = mv88e6352_serdes_read(chip, stat->reg + 1, &reg); in mv88e6352_serdes_get_stat()
155 dev_err(chip->dev, "failed to read statistic\n"); in mv88e6352_serdes_get_stat()
167 struct mv88e6xxx_port *mv88e6xxx_port = &chip->ports[port]; in mv88e6352_serdes_get_stats()
176 ARRAY_SIZE(mv88e6xxx_port->serdes_stats)); in mv88e6352_serdes_get_stats()
181 mv88e6xxx_port->serdes_stats[i] += value; in mv88e6352_serdes_get_stats()
182 data[i] = mv88e6xxx_port->serdes_stats[i]; in mv88e6352_serdes_get_stats()
188 /* Return the SERDES lane address a port is using. Only Ports 9 and 10
189 * have SERDES lanes. Returns -ENODEV if a port does not have a lane.
193 u8 cmode = chip->ports[port].cmode; in mv88e6390_serdes_get_lane()
201 return -ENODEV; in mv88e6390_serdes_get_lane()
207 return -ENODEV; in mv88e6390_serdes_get_lane()
209 return -ENODEV; in mv88e6390_serdes_get_lane()
213 /* Return the SERDES lane address a port is using. Ports 9 and 10 can
214 * use multiple lanes. If so, return the first lane the port uses.
215 * Returns -ENODEV if a port does not have a lane.
221 cmode_port9 = chip->ports[9].cmode; in mv88e6390x_serdes_get_lane()
222 cmode_port10 = chip->ports[10].cmode; in mv88e6390x_serdes_get_lane()
223 cmode_port = chip->ports[port].cmode; in mv88e6390x_serdes_get_lane()
232 return -ENODEV; in mv88e6390x_serdes_get_lane()
240 return -ENODEV; in mv88e6390x_serdes_get_lane()
248 return -ENODEV; in mv88e6390x_serdes_get_lane()
255 return -ENODEV; in mv88e6390x_serdes_get_lane()
263 return -ENODEV; in mv88e6390x_serdes_get_lane()
271 return -ENODEV; in mv88e6390x_serdes_get_lane()
279 return -ENODEV; in mv88e6390x_serdes_get_lane()
287 return -ENODEV; in mv88e6390x_serdes_get_lane()
289 return -ENODEV; in mv88e6390x_serdes_get_lane()
293 /* Set the power on/off for 10GBASE-R and 10GBASE-X4/X2 */
294 static int mv88e6390_serdes_power_10g(struct mv88e6xxx_chip *chip, int lane, in mv88e6390_serdes_power_10g() argument
300 err = mv88e6390_serdes_read(chip, lane, MDIO_MMD_PHYXS, in mv88e6390_serdes_power_10g()
314 err = mv88e6390_serdes_write(chip, lane, MDIO_MMD_PHYXS, in mv88e6390_serdes_power_10g()
320 /* Set the power on/off for SGMII and 1000Base-X */
321 static int mv88e6390_serdes_power_sgmii(struct mv88e6xxx_chip *chip, int lane, in mv88e6390_serdes_power_sgmii() argument
327 err = mv88e6390_serdes_read(chip, lane, MDIO_MMD_PHYXS, in mv88e6390_serdes_power_sgmii()
340 err = mv88e6390_serdes_write(chip, lane, MDIO_MMD_PHYXS, in mv88e6390_serdes_power_sgmii()
347 int lane, bool on) in mv88e6390_serdes_power_lane() argument
349 u8 cmode = chip->ports[port].cmode; in mv88e6390_serdes_power_lane()
355 return mv88e6390_serdes_power_sgmii(chip, lane, on); in mv88e6390_serdes_power_lane()
358 return mv88e6390_serdes_power_10g(chip, lane, on); in mv88e6390_serdes_power_lane()
366 int lane; in mv88e6390_serdes_power() local
368 lane = mv88e6390_serdes_get_lane(chip, port); in mv88e6390_serdes_power()
369 if (lane == -ENODEV) in mv88e6390_serdes_power()
372 if (lane < 0) in mv88e6390_serdes_power()
373 return lane; in mv88e6390_serdes_power()
377 return mv88e6390_serdes_power_lane(chip, port, lane, on); in mv88e6390_serdes_power()
385 int lane; in mv88e6390x_serdes_power() local
387 lane = mv88e6390x_serdes_get_lane(chip, port); in mv88e6390x_serdes_power()
388 if (lane == -ENODEV) in mv88e6390x_serdes_power()
391 if (lane < 0) in mv88e6390x_serdes_power()
392 return lane; in mv88e6390x_serdes_power()
398 return mv88e6390_serdes_power_lane(chip, port, lane, on); in mv88e6390x_serdes_power()
405 int port, int lane) in mv88e6390_serdes_irq_link_sgmii() argument
407 struct dsa_switch *ds = chip->ds; in mv88e6390_serdes_irq_link_sgmii()
411 mv88e6390_serdes_read(chip, lane, MDIO_MMD_PHYXS, in mv88e6390_serdes_irq_link_sgmii()
418 mv88e6390_serdes_read(chip, lane, MDIO_MMD_PHYXS, in mv88e6390_serdes_irq_link_sgmii()
426 int lane) in mv88e6390_serdes_irq_enable_sgmii() argument
428 return mv88e6390_serdes_write(chip, lane, MDIO_MMD_PHYXS, in mv88e6390_serdes_irq_enable_sgmii()
435 int lane) in mv88e6390_serdes_irq_disable_sgmii() argument
437 return mv88e6390_serdes_write(chip, lane, MDIO_MMD_PHYXS, in mv88e6390_serdes_irq_disable_sgmii()
442 int lane) in mv88e6390_serdes_irq_enable() argument
444 u8 cmode = chip->ports[port].cmode; in mv88e6390_serdes_irq_enable()
451 err = mv88e6390_serdes_irq_enable_sgmii(chip, lane); in mv88e6390_serdes_irq_enable()
458 int lane) in mv88e6390_serdes_irq_disable() argument
460 u8 cmode = chip->ports[port].cmode; in mv88e6390_serdes_irq_disable()
467 err = mv88e6390_serdes_irq_disable_sgmii(chip, lane); in mv88e6390_serdes_irq_disable()
474 int lane, u16 *status) in mv88e6390_serdes_irq_status_sgmii() argument
478 err = mv88e6390_serdes_read(chip, lane, MDIO_MMD_PHYXS, in mv88e6390_serdes_irq_status_sgmii()
487 struct mv88e6xxx_chip *chip = port->chip; in mv88e6390_serdes_thread_fn()
489 u8 cmode = port->cmode; in mv88e6390_serdes_thread_fn()
491 int lane; in mv88e6390_serdes_thread_fn() local
494 lane = mv88e6390x_serdes_get_lane(chip, port->port); in mv88e6390_serdes_thread_fn()
496 mutex_lock(&chip->reg_lock); in mv88e6390_serdes_thread_fn()
502 err = mv88e6390_serdes_irq_status_sgmii(chip, lane, &status); in mv88e6390_serdes_thread_fn()
508 mv88e6390_serdes_irq_link_sgmii(chip, port->port, lane); in mv88e6390_serdes_thread_fn()
512 mutex_unlock(&chip->reg_lock); in mv88e6390_serdes_thread_fn()
519 int lane; in mv88e6390_serdes_irq_setup() local
526 lane = mv88e6390x_serdes_get_lane(chip, port); in mv88e6390_serdes_irq_setup()
528 if (lane == -ENODEV) in mv88e6390_serdes_irq_setup()
531 if (lane < 0) in mv88e6390_serdes_irq_setup()
532 return lane; in mv88e6390_serdes_irq_setup()
534 chip->ports[port].serdes_irq = irq_find_mapping(chip->g2_irq.domain, in mv88e6390_serdes_irq_setup()
536 if (chip->ports[port].serdes_irq < 0) { in mv88e6390_serdes_irq_setup()
537 dev_err(chip->dev, "Unable to map SERDES irq: %d\n", in mv88e6390_serdes_irq_setup()
538 chip->ports[port].serdes_irq); in mv88e6390_serdes_irq_setup()
539 return chip->ports[port].serdes_irq; in mv88e6390_serdes_irq_setup()
545 mutex_unlock(&chip->reg_lock); in mv88e6390_serdes_irq_setup()
546 err = request_threaded_irq(chip->ports[port].serdes_irq, NULL, in mv88e6390_serdes_irq_setup()
548 IRQF_ONESHOT, "mv88e6xxx-serdes", in mv88e6390_serdes_irq_setup()
549 &chip->ports[port]); in mv88e6390_serdes_irq_setup()
550 mutex_lock(&chip->reg_lock); in mv88e6390_serdes_irq_setup()
553 dev_err(chip->dev, "Unable to request SERDES interrupt: %d\n", in mv88e6390_serdes_irq_setup()
558 return mv88e6390_serdes_irq_enable(chip, port, lane); in mv88e6390_serdes_irq_setup()
563 int lane = mv88e6390x_serdes_get_lane(chip, port); in mv88e6390_serdes_irq_free() local
568 if (lane < 0) in mv88e6390_serdes_irq_free()
571 mv88e6390_serdes_irq_disable(chip, port, lane); in mv88e6390_serdes_irq_free()
576 mutex_unlock(&chip->reg_lock); in mv88e6390_serdes_irq_free()
577 free_irq(chip->ports[port].serdes_irq, &chip->ports[port]); in mv88e6390_serdes_irq_free()
578 mutex_lock(&chip->reg_lock); in mv88e6390_serdes_irq_free()
580 chip->ports[port].serdes_irq = 0; in mv88e6390_serdes_irq_free()
585 u8 cmode = chip->ports[port].cmode; in mv88e6341_serdes_power()