Skip to content

Commit 193c5b2

Browse files
Pavana Sharmadavem330
authored andcommitted
net: dsa: mv88e6xxx: change serdes lane parameter type from u8 type to int
Returning 0 is no more an error case with MV88E6393 family which has serdes lane numbers 0, 9 or 10. So with this change .serdes_get_lane will return lane number or -errno (-ENODEV or -EOPNOTSUPP). Signed-off-by: Pavana Sharma <[email protected]> Reviewed-by: Andrew Lunn <[email protected]> Reviewed-by: Vladimir Oltean <[email protected]> Signed-off-by: Marek Behún <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent ac1bbf8 commit 193c5b2

File tree

5 files changed

+99
-99
lines changed

5 files changed

+99
-99
lines changed

drivers/net/dsa/mv88e6xxx/chip.c

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -485,12 +485,12 @@ static int mv88e6xxx_serdes_pcs_get_state(struct dsa_switch *ds, int port,
485485
struct phylink_link_state *state)
486486
{
487487
struct mv88e6xxx_chip *chip = ds->priv;
488-
u8 lane;
488+
int lane;
489489
int err;
490490

491491
mv88e6xxx_reg_lock(chip);
492492
lane = mv88e6xxx_serdes_get_lane(chip, port);
493-
if (lane && chip->info->ops->serdes_pcs_get_state)
493+
if (lane >= 0 && chip->info->ops->serdes_pcs_get_state)
494494
err = chip->info->ops->serdes_pcs_get_state(chip, port, lane,
495495
state);
496496
else
@@ -506,11 +506,11 @@ static int mv88e6xxx_serdes_pcs_config(struct mv88e6xxx_chip *chip, int port,
506506
const unsigned long *advertise)
507507
{
508508
const struct mv88e6xxx_ops *ops = chip->info->ops;
509-
u8 lane;
509+
int lane;
510510

511511
if (ops->serdes_pcs_config) {
512512
lane = mv88e6xxx_serdes_get_lane(chip, port);
513-
if (lane)
513+
if (lane >= 0)
514514
return ops->serdes_pcs_config(chip, port, lane, mode,
515515
interface, advertise);
516516
}
@@ -523,14 +523,14 @@ static void mv88e6xxx_serdes_pcs_an_restart(struct dsa_switch *ds, int port)
523523
struct mv88e6xxx_chip *chip = ds->priv;
524524
const struct mv88e6xxx_ops *ops;
525525
int err = 0;
526-
u8 lane;
526+
int lane;
527527

528528
ops = chip->info->ops;
529529

530530
if (ops->serdes_pcs_an_restart) {
531531
mv88e6xxx_reg_lock(chip);
532532
lane = mv88e6xxx_serdes_get_lane(chip, port);
533-
if (lane)
533+
if (lane >= 0)
534534
err = ops->serdes_pcs_an_restart(chip, port, lane);
535535
mv88e6xxx_reg_unlock(chip);
536536

@@ -544,11 +544,11 @@ static int mv88e6xxx_serdes_pcs_link_up(struct mv88e6xxx_chip *chip, int port,
544544
int speed, int duplex)
545545
{
546546
const struct mv88e6xxx_ops *ops = chip->info->ops;
547-
u8 lane;
547+
int lane;
548548

549549
if (!phylink_autoneg_inband(mode) && ops->serdes_pcs_link_up) {
550550
lane = mv88e6xxx_serdes_get_lane(chip, port);
551-
if (lane)
551+
if (lane >= 0)
552552
return ops->serdes_pcs_link_up(chip, port, lane,
553553
speed, duplex);
554554
}
@@ -2460,19 +2460,19 @@ static irqreturn_t mv88e6xxx_serdes_irq_thread_fn(int irq, void *dev_id)
24602460
struct mv88e6xxx_chip *chip = mvp->chip;
24612461
irqreturn_t ret = IRQ_NONE;
24622462
int port = mvp->port;
2463-
u8 lane;
2463+
int lane;
24642464

24652465
mv88e6xxx_reg_lock(chip);
24662466
lane = mv88e6xxx_serdes_get_lane(chip, port);
2467-
if (lane)
2467+
if (lane >= 0)
24682468
ret = mv88e6xxx_serdes_irq_status(chip, port, lane);
24692469
mv88e6xxx_reg_unlock(chip);
24702470

24712471
return ret;
24722472
}
24732473

24742474
static int mv88e6xxx_serdes_irq_request(struct mv88e6xxx_chip *chip, int port,
2475-
u8 lane)
2475+
int lane)
24762476
{
24772477
struct mv88e6xxx_port *dev_id = &chip->ports[port];
24782478
unsigned int irq;
@@ -2501,7 +2501,7 @@ static int mv88e6xxx_serdes_irq_request(struct mv88e6xxx_chip *chip, int port,
25012501
}
25022502

25032503
static int mv88e6xxx_serdes_irq_free(struct mv88e6xxx_chip *chip, int port,
2504-
u8 lane)
2504+
int lane)
25052505
{
25062506
struct mv88e6xxx_port *dev_id = &chip->ports[port];
25072507
unsigned int irq = dev_id->serdes_irq;
@@ -2526,11 +2526,11 @@ static int mv88e6xxx_serdes_irq_free(struct mv88e6xxx_chip *chip, int port,
25262526
static int mv88e6xxx_serdes_power(struct mv88e6xxx_chip *chip, int port,
25272527
bool on)
25282528
{
2529-
u8 lane;
2529+
int lane;
25302530
int err;
25312531

25322532
lane = mv88e6xxx_serdes_get_lane(chip, port);
2533-
if (!lane)
2533+
if (lane < 0)
25342534
return 0;
25352535

25362536
if (on) {

drivers/net/dsa/mv88e6xxx/chip.h

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -513,30 +513,30 @@ struct mv88e6xxx_ops {
513513
int (*mgmt_rsvd2cpu)(struct mv88e6xxx_chip *chip);
514514

515515
/* Power on/off a SERDES interface */
516-
int (*serdes_power)(struct mv88e6xxx_chip *chip, int port, u8 lane,
516+
int (*serdes_power)(struct mv88e6xxx_chip *chip, int port, int lane,
517517
bool up);
518518

519519
/* SERDES lane mapping */
520-
u8 (*serdes_get_lane)(struct mv88e6xxx_chip *chip, int port);
520+
int (*serdes_get_lane)(struct mv88e6xxx_chip *chip, int port);
521521

522522
int (*serdes_pcs_get_state)(struct mv88e6xxx_chip *chip, int port,
523-
u8 lane, struct phylink_link_state *state);
523+
int lane, struct phylink_link_state *state);
524524
int (*serdes_pcs_config)(struct mv88e6xxx_chip *chip, int port,
525-
u8 lane, unsigned int mode,
525+
int lane, unsigned int mode,
526526
phy_interface_t interface,
527527
const unsigned long *advertise);
528528
int (*serdes_pcs_an_restart)(struct mv88e6xxx_chip *chip, int port,
529-
u8 lane);
529+
int lane);
530530
int (*serdes_pcs_link_up)(struct mv88e6xxx_chip *chip, int port,
531-
u8 lane, int speed, int duplex);
531+
int lane, int speed, int duplex);
532532

533533
/* SERDES interrupt handling */
534534
unsigned int (*serdes_irq_mapping)(struct mv88e6xxx_chip *chip,
535535
int port);
536-
int (*serdes_irq_enable)(struct mv88e6xxx_chip *chip, int port, u8 lane,
536+
int (*serdes_irq_enable)(struct mv88e6xxx_chip *chip, int port, int lane,
537537
bool enable);
538538
irqreturn_t (*serdes_irq_status)(struct mv88e6xxx_chip *chip, int port,
539-
u8 lane);
539+
int lane);
540540

541541
/* Statistics from the SERDES interface */
542542
int (*serdes_get_sset_count)(struct mv88e6xxx_chip *chip, int port);

drivers/net/dsa/mv88e6xxx/port.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -429,8 +429,8 @@ phy_interface_t mv88e6390x_port_max_speed_mode(int port)
429429
static int mv88e6xxx_port_set_cmode(struct mv88e6xxx_chip *chip, int port,
430430
phy_interface_t mode, bool force)
431431
{
432-
u8 lane;
433432
u16 cmode;
433+
int lane;
434434
u16 reg;
435435
int err;
436436

@@ -466,7 +466,7 @@ static int mv88e6xxx_port_set_cmode(struct mv88e6xxx_chip *chip, int port,
466466
return 0;
467467

468468
lane = mv88e6xxx_serdes_get_lane(chip, port);
469-
if (lane) {
469+
if (lane >= 0) {
470470
if (chip->ports[port].serdes_irq) {
471471
err = mv88e6xxx_serdes_irq_disable(chip, port, lane);
472472
if (err)
@@ -495,8 +495,8 @@ static int mv88e6xxx_port_set_cmode(struct mv88e6xxx_chip *chip, int port,
495495
chip->ports[port].cmode = cmode;
496496

497497
lane = mv88e6xxx_serdes_get_lane(chip, port);
498-
if (!lane)
499-
return -ENODEV;
498+
if (lane < 0)
499+
return lane;
500500

501501
err = mv88e6xxx_serdes_power_up(chip, port, lane);
502502
if (err)

0 commit comments

Comments
 (0)