All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH net v2 3/6] net: dsa: mv88e6xxx: Save power by disabling SerDes trasmitter and receiver
@ 2021-12-02 10:37 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2021-12-02 10:37 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 3573 bytes --]

CC: kbuild-all(a)lists.01.org
In-Reply-To: <20211130170151.7741-4-kabel@kernel.org>
References: <20211130170151.7741-4-kabel@kernel.org>
TO: "Marek Behún" <kabel@kernel.org>

Hi "Marek,

I love your patch! Perhaps something to improve:

[auto build test WARNING on net/master]

url:    https://github.com/0day-ci/linux/commits/Marek-Beh-n/mv88e6xxx-fixes-mainly-88E6393X-family/20211201-011600
base:   https://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git 34d8778a943761121f391b7921f79a7adbe1feaf
:::::: branch date: 2 days ago
:::::: commit date: 2 days ago
config: arm-randconfig-m031-20211128 (https://download.01.org/0day-ci/archive/20211202/202112021828.M2Es3NN7-lkp(a)intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 11.2.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
drivers/net/dsa/mv88e6xxx/serdes.c:1409 mv88e6393x_serdes_power() error: uninitialized symbol 'err'.

vim +/err +1409 drivers/net/dsa/mv88e6xxx/serdes.c

de776d0d316f72 Pavana Sharma 2021-03-17  1377  
de776d0d316f72 Pavana Sharma 2021-03-17  1378  int mv88e6393x_serdes_power(struct mv88e6xxx_chip *chip, int port, int lane,
de776d0d316f72 Pavana Sharma 2021-03-17  1379  			    bool on)
de776d0d316f72 Pavana Sharma 2021-03-17  1380  {
de776d0d316f72 Pavana Sharma 2021-03-17  1381  	u8 cmode = chip->ports[port].cmode;
4ac5ae42775ac2 Marek Behún   2021-11-30  1382  	int err;
de776d0d316f72 Pavana Sharma 2021-03-17  1383  
de776d0d316f72 Pavana Sharma 2021-03-17  1384  	if (port != 0 && port != 9 && port != 10)
de776d0d316f72 Pavana Sharma 2021-03-17  1385  		return -EOPNOTSUPP;
de776d0d316f72 Pavana Sharma 2021-03-17  1386  
4ac5ae42775ac2 Marek Behún   2021-11-30  1387  	if (on) {
4ac5ae42775ac2 Marek Behún   2021-11-30  1388  		err = mv88e6393x_serdes_erratum_4_8(chip, lane);
4ac5ae42775ac2 Marek Behún   2021-11-30  1389  		if (err)
4ac5ae42775ac2 Marek Behún   2021-11-30  1390  			return err;
89085d6bbe9f67 Marek Behún   2021-11-30  1391  
89085d6bbe9f67 Marek Behún   2021-11-30  1392  		err = mv88e6393x_serdes_power_lane(chip, lane, true);
89085d6bbe9f67 Marek Behún   2021-11-30  1393  		if (err)
89085d6bbe9f67 Marek Behún   2021-11-30  1394  			return err;
4ac5ae42775ac2 Marek Behún   2021-11-30  1395  	}
4ac5ae42775ac2 Marek Behún   2021-11-30  1396  
de776d0d316f72 Pavana Sharma 2021-03-17  1397  	switch (cmode) {
de776d0d316f72 Pavana Sharma 2021-03-17  1398  	case MV88E6XXX_PORT_STS_CMODE_SGMII:
de776d0d316f72 Pavana Sharma 2021-03-17  1399  	case MV88E6XXX_PORT_STS_CMODE_1000BASEX:
de776d0d316f72 Pavana Sharma 2021-03-17  1400  	case MV88E6XXX_PORT_STS_CMODE_2500BASEX:
89085d6bbe9f67 Marek Behún   2021-11-30  1401  		err = mv88e6390_serdes_power_sgmii(chip, lane, on);
89085d6bbe9f67 Marek Behún   2021-11-30  1402  		break;
de776d0d316f72 Pavana Sharma 2021-03-17  1403  	case MV88E6393X_PORT_STS_CMODE_5GBASER:
de776d0d316f72 Pavana Sharma 2021-03-17  1404  	case MV88E6393X_PORT_STS_CMODE_10GBASER:
89085d6bbe9f67 Marek Behún   2021-11-30  1405  		err = mv88e6390_serdes_power_10g(chip, lane, on);
89085d6bbe9f67 Marek Behún   2021-11-30  1406  		break;
de776d0d316f72 Pavana Sharma 2021-03-17  1407  	}
de776d0d316f72 Pavana Sharma 2021-03-17  1408  
89085d6bbe9f67 Marek Behún   2021-11-30 @1409  	if (err)

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [PATCH net v2 3/6] net: dsa: mv88e6xxx: Save power by disabling SerDes trasmitter and receiver
  2021-11-30 17:01 [PATCH net v2 0/6] mv88e6xxx fixes (mainly 88E6393X family) Marek Behún
@ 2021-11-30 17:01 ` Marek Behún
  0 siblings, 0 replies; 2+ messages in thread
From: Marek Behún @ 2021-11-30 17:01 UTC (permalink / raw)
  To: netdev, Andrew Lunn
  Cc: Russell King, Jakub Kicinski, davem, Vladimir Oltean, Marek Behún

Save power on 88E6393X by disabling SerDes receiver and transmitter
after SerDes is SerDes is disabled.

Signed-off-by: Marek Behún <kabel@kernel.org>
Cc: stable@vger.kernel.org # de776d0d316f ("net: dsa: mv88e6xxx: add support for mv88e6393x family")
---
 drivers/net/dsa/mv88e6xxx/serdes.c | 46 +++++++++++++++++++++++++++---
 drivers/net/dsa/mv88e6xxx/serdes.h |  3 ++
 2 files changed, 45 insertions(+), 4 deletions(-)

diff --git a/drivers/net/dsa/mv88e6xxx/serdes.c b/drivers/net/dsa/mv88e6xxx/serdes.c
index 3a6244596a67..ceb63d7f1f97 100644
--- a/drivers/net/dsa/mv88e6xxx/serdes.c
+++ b/drivers/net/dsa/mv88e6xxx/serdes.c
@@ -1271,6 +1271,28 @@ void mv88e6390_serdes_get_regs(struct mv88e6xxx_chip *chip, int port, void *_p)
 	}
 }
 
+static int mv88e6393x_serdes_power_lane(struct mv88e6xxx_chip *chip, int lane,
+					bool on)
+{
+	u16 reg;
+	int err;
+
+	err = mv88e6390_serdes_read(chip, lane, MDIO_MMD_PHYXS,
+				    MV88E6393X_SERDES_CTRL1, &reg);
+	if (err)
+		return err;
+
+	if (on)
+		reg &= ~(MV88E6393X_SERDES_CTRL1_TX_PDOWN |
+			 MV88E6393X_SERDES_CTRL1_RX_PDOWN);
+	else
+		reg |= MV88E6393X_SERDES_CTRL1_TX_PDOWN |
+		       MV88E6393X_SERDES_CTRL1_RX_PDOWN;
+
+	return mv88e6390_serdes_write(chip, lane, MDIO_MMD_PHYXS,
+				      MV88E6393X_SERDES_CTRL1, reg);
+}
+
 static int mv88e6393x_serdes_erratum_4_6(struct mv88e6xxx_chip *chip, int lane)
 {
 	u16 reg;
@@ -1297,7 +1319,11 @@ static int mv88e6393x_serdes_erratum_4_6(struct mv88e6xxx_chip *chip, int lane)
 	if (err)
 		return err;
 
-	return mv88e6390_serdes_power_sgmii(chip, lane, false);
+	err = mv88e6390_serdes_power_sgmii(chip, lane, false);
+	if (err)
+		return err;
+
+	return mv88e6393x_serdes_power_lane(chip, lane, false);
 }
 
 int mv88e6393x_serdes_setup_errata(struct mv88e6xxx_chip *chip)
@@ -1362,17 +1388,29 @@ int mv88e6393x_serdes_power(struct mv88e6xxx_chip *chip, int port, int lane,
 		err = mv88e6393x_serdes_erratum_4_8(chip, lane);
 		if (err)
 			return err;
+
+		err = mv88e6393x_serdes_power_lane(chip, lane, true);
+		if (err)
+			return err;
 	}
 
 	switch (cmode) {
 	case MV88E6XXX_PORT_STS_CMODE_SGMII:
 	case MV88E6XXX_PORT_STS_CMODE_1000BASEX:
 	case MV88E6XXX_PORT_STS_CMODE_2500BASEX:
-		return mv88e6390_serdes_power_sgmii(chip, lane, on);
+		err = mv88e6390_serdes_power_sgmii(chip, lane, on);
+		break;
 	case MV88E6393X_PORT_STS_CMODE_5GBASER:
 	case MV88E6393X_PORT_STS_CMODE_10GBASER:
-		return mv88e6390_serdes_power_10g(chip, lane, on);
+		err = mv88e6390_serdes_power_10g(chip, lane, on);
+		break;
 	}
 
-	return 0;
+	if (err)
+		return err;
+
+	if (!on)
+		err = mv88e6393x_serdes_power_lane(chip, lane, false);
+
+	return err;
 }
diff --git a/drivers/net/dsa/mv88e6xxx/serdes.h b/drivers/net/dsa/mv88e6xxx/serdes.h
index cbb3ba30caea..e9292c8beee4 100644
--- a/drivers/net/dsa/mv88e6xxx/serdes.h
+++ b/drivers/net/dsa/mv88e6xxx/serdes.h
@@ -93,6 +93,9 @@
 #define MV88E6393X_SERDES_POC_PCS_MASK		0x0007
 #define MV88E6393X_SERDES_POC_RESET		BIT(15)
 #define MV88E6393X_SERDES_POC_PDOWN		BIT(5)
+#define MV88E6393X_SERDES_CTRL1			0xf003
+#define MV88E6393X_SERDES_CTRL1_TX_PDOWN	BIT(9)
+#define MV88E6393X_SERDES_CTRL1_RX_PDOWN	BIT(8)
 
 #define MV88E6393X_ERRATA_4_8_REG		0xF074
 #define MV88E6393X_ERRATA_4_8_BIT		BIT(14)
-- 
2.32.0


^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-12-02 10:37 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-02 10:37 [PATCH net v2 3/6] net: dsa: mv88e6xxx: Save power by disabling SerDes trasmitter and receiver kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2021-11-30 17:01 [PATCH net v2 0/6] mv88e6xxx fixes (mainly 88E6393X family) Marek Behún
2021-11-30 17:01 ` [PATCH net v2 3/6] net: dsa: mv88e6xxx: Save power by disabling SerDes trasmitter and receiver Marek Behún

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.