* 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, ®);
+ 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.