mbox series

[net-next,v14,0/6] Add support for mv88e6393x family of Marvell

Message ID 20210111012156.27799-1-kabel@kernel.org
Headers show
Series Add support for mv88e6393x family of Marvell | expand

Message

Marek Behún Jan. 11, 2021, 1:21 a.m. UTC
Hello,

so I took Pavana's patches for Amethyst and did some more work on this.
I am sending version 14, which should apply cleanly on net-next.

This series is tested on Marvell CN9130-CRB.

Changes from v13:
- added patch that wraps .set_egress_port into mv88e6xxx_set_egress_port,
  so that we do not have to set chip->*gress_dest_port members in every
  implementation of this method
- for the patch that adds Amethyst support:
  - added more information into commit message
  - added these methods for mv88e6393x_ops:
      .port_sync_link
      .port_setup_message_port
      .port_max_speed_mode (new implementation needed)
      .atu_get_hash
      .atu_set_hash
      .serdes_pcs_config
      .serdes_pcs_an_restart
      .serdes_pcs_link_up
  - this device can set upstream port per port, so implement
      .port_set_upstream_port
    instead of
      .set_cpu_port
  - removed USXGMII cmode (not yet supported, working on it)
  - added debug messages into mv88e6393x_port_set_speed_duplex
  - added Amethyst errata 4.5 (EEE should be disabled on SERDES ports)
  - fixed 5gbase-r serdes configuration and interrupt handling
  - refactored mv88e6393x_serdes_setup_errata
  - refactored mv88e6393x_port_policy_write
- added patch implementing .port_set_policy for Amethyst

Marek

Marek Behún (2):
  net: dsa: mv88e6xxx: wrap .set_egress_port method
  net: dsa: mv88e6xxx: implement .port_set_policy for Amethyst

Pavana Sharma (4):
  dt-bindings: net: Add 5GBASER phy interface
  net: phy: Add 5GBASER interface mode
  net: dsa: mv88e6xxx: Change serdes lane parameter type from u8 type to
    int
  net: dsa: mv88e6xxx: Add support for mv88e6393x family of Marvell

 .../bindings/net/ethernet-controller.yaml     |   1 +
 drivers/net/dsa/mv88e6xxx/chip.c              | 227 ++++++++--
 drivers/net/dsa/mv88e6xxx/chip.h              |  20 +-
 drivers/net/dsa/mv88e6xxx/global1.c           |  19 +-
 drivers/net/dsa/mv88e6xxx/global1.h           |   2 +
 drivers/net/dsa/mv88e6xxx/global2.h           |   8 +
 drivers/net/dsa/mv88e6xxx/port.c              | 398 ++++++++++++++++--
 drivers/net/dsa/mv88e6xxx/port.h              |  50 ++-
 drivers/net/dsa/mv88e6xxx/serdes.c            | 398 ++++++++++++++++--
 drivers/net/dsa/mv88e6xxx/serdes.h            | 108 +++--
 include/linux/phy.h                           |   4 +
 11 files changed, 1072 insertions(+), 163 deletions(-)


base-commit: 73b7a6047971aa6ce4a70fc4901964d14f077171

Comments

Vladimir Oltean Jan. 12, 2021, 10:53 a.m. UTC | #1
On Mon, Jan 11, 2021 at 02:21:54AM +0100, Marek Behún wrote:
> There are two implementations of the .set_egress_port method, and both

> of them, if successful, set chip->*gress_dest_port variable.

> 

> To avoid code repetition, wrap this method into

> mv88e6xxx_set_egress_port.

> 

> Signed-off-by: Marek Behún <kabel@kernel.org>

> ---

>  drivers/net/dsa/mv88e6xxx/chip.c    | 48 ++++++++++++++++++-----------

>  drivers/net/dsa/mv88e6xxx/global1.c | 19 ++----------

>  2 files changed, 32 insertions(+), 35 deletions(-)

> 

> diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c

> index 9bddd70449c6..62bef0759077 100644

> --- a/drivers/net/dsa/mv88e6xxx/chip.c

> +++ b/drivers/net/dsa/mv88e6xxx/chip.c

> @@ -2521,6 +2521,26 @@ static int mv88e6xxx_serdes_power(struct mv88e6xxx_chip *chip, int port,

>  	return err;

>  }

>  

> +static int mv88e6xxx_set_egress_port(struct mv88e6xxx_chip *chip,

> +				     enum mv88e6xxx_egress_direction direction,

> +				     int port)

> +{

> +	int err = -EOPNOTSUPP;

> +

> +	if (chip->info->ops->set_egress_port) {


I would probably return -EOPNOTSUPP early and reduce the indentation
level by one:

	if (!chip->info->ops->set_egress_port)
		return -EOPNOTSUPP;