From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from vps0.lunn.ch ([185.16.172.187]:41124 "EHLO vps0.lunn.ch" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S965429AbeCABDk (ORCPT ); Wed, 28 Feb 2018 20:03:40 -0500 From: Andrew Lunn To: David Miller Cc: netdev , Vivien Didelot , Florian Fainelli , Andrew Lunn Subject: [PATCH v2 net-next 4/5] net: dsa: mv88e6xxx: Add helper to determining if port has SERDES Date: Thu, 1 Mar 2018 02:02:30 +0100 Message-Id: <1519866151-13419-5-git-send-email-andrew@lunn.ch> In-Reply-To: <1519866151-13419-1-git-send-email-andrew@lunn.ch> References: <1519866151-13419-1-git-send-email-andrew@lunn.ch> Sender: netdev-owner@vger.kernel.org List-ID: Refactor the existing code. This helper will be used for SERDES statistics. Signed-off-by: Andrew Lunn Tested-by: Florian Fainelli --- v2: Use Boolean return value --- drivers/net/dsa/mv88e6xxx/serdes.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/drivers/net/dsa/mv88e6xxx/serdes.c b/drivers/net/dsa/mv88e6xxx/serdes.c index f3c01119b3d1..4487d18132a4 100644 --- a/drivers/net/dsa/mv88e6xxx/serdes.c +++ b/drivers/net/dsa/mv88e6xxx/serdes.c @@ -55,18 +55,30 @@ static int mv88e6352_serdes_power_set(struct mv88e6xxx_chip *chip, bool on) return err; } -int mv88e6352_serdes_power(struct mv88e6xxx_chip *chip, int port, bool on) +static bool mv88e6352_port_has_serdes(struct mv88e6xxx_chip *chip, int port) { - int err; u8 cmode; + int err; err = mv88e6xxx_port_get_cmode(chip, port, &cmode); - if (err) - return err; + if (err) { + dev_err(chip->dev, "failed to read cmode\n"); + return 0; + } if ((cmode == MV88E6XXX_PORT_STS_CMODE_100BASE_X) || (cmode == MV88E6XXX_PORT_STS_CMODE_1000BASE_X) || - (cmode == MV88E6XXX_PORT_STS_CMODE_SGMII)) { + (cmode == MV88E6XXX_PORT_STS_CMODE_SGMII)) + return 1; + + return 0; +} + +int mv88e6352_serdes_power(struct mv88e6xxx_chip *chip, int port, bool on) +{ + int err; + + if (mv88e6352_port_has_serdes(chip, port)) { err = mv88e6352_serdes_power_set(chip, on); if (err < 0) return err; -- 2.16.2