Skip to content

Commit 5480db6

Browse files
viviendavem330
authored andcommitted
net: dsa: mv88e6xxx: remove EEE support
The PHY's EEE settings are already accessed by the DSA layer through the Marvell PHY driver and there is nothing to be done for switch's MACs. Remove all EEE support from the mv88e6xxx driver and simply return 0 from the EEE ops. Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 46587e4 commit 5480db6

File tree

6 files changed

+4
-214
lines changed

6 files changed

+4
-214
lines changed

drivers/net/dsa/mv88e6xxx/chip.c

Lines changed: 4 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -810,56 +810,18 @@ static void mv88e6xxx_get_regs(struct dsa_switch *ds, int port,
810810
mutex_unlock(&chip->reg_lock);
811811
}
812812

813-
static int mv88e6xxx_energy_detect_read(struct mv88e6xxx_chip *chip, int port,
814-
struct ethtool_eee *eee)
815-
{
816-
int err;
817-
818-
if (!chip->info->ops->phy_energy_detect_read)
819-
return -EOPNOTSUPP;
820-
821-
/* assign eee->eee_enabled and eee->tx_lpi_enabled */
822-
err = chip->info->ops->phy_energy_detect_read(chip, port, eee);
823-
if (err)
824-
return err;
825-
826-
/* assign eee->eee_active */
827-
return mv88e6xxx_port_status_eee(chip, port, eee);
828-
}
829-
830-
static int mv88e6xxx_energy_detect_write(struct mv88e6xxx_chip *chip, int port,
831-
struct ethtool_eee *eee)
832-
{
833-
if (!chip->info->ops->phy_energy_detect_write)
834-
return -EOPNOTSUPP;
835-
836-
return chip->info->ops->phy_energy_detect_write(chip, port, eee);
837-
}
838-
839813
static int mv88e6xxx_get_eee(struct dsa_switch *ds, int port,
840814
struct ethtool_eee *e)
841815
{
842-
struct mv88e6xxx_chip *chip = ds->priv;
843-
int err;
844-
845-
mutex_lock(&chip->reg_lock);
846-
err = mv88e6xxx_energy_detect_read(chip, port, e);
847-
mutex_unlock(&chip->reg_lock);
848-
849-
return err;
816+
/* Nothing to do on the port's MAC */
817+
return 0;
850818
}
851819

852820
static int mv88e6xxx_set_eee(struct dsa_switch *ds, int port,
853821
struct ethtool_eee *e)
854822
{
855-
struct mv88e6xxx_chip *chip = ds->priv;
856-
int err;
857-
858-
mutex_lock(&chip->reg_lock);
859-
err = mv88e6xxx_energy_detect_write(chip, port, e);
860-
mutex_unlock(&chip->reg_lock);
861-
862-
return err;
823+
/* Nothing to do on the port's MAC */
824+
return 0;
863825
}
864826

865827
static u16 mv88e6xxx_port_vlan(struct mv88e6xxx_chip *chip, int dev, int port)
@@ -2521,8 +2483,6 @@ static const struct mv88e6xxx_ops mv88e6141_ops = {
25212483
.set_switch_mac = mv88e6xxx_g2_set_switch_mac,
25222484
.phy_read = mv88e6xxx_g2_smi_phy_read,
25232485
.phy_write = mv88e6xxx_g2_smi_phy_write,
2524-
.phy_energy_detect_read = mv88e6352_phy_energy_detect_read,
2525-
.phy_energy_detect_write = mv88e6352_phy_energy_detect_write,
25262486
.port_set_link = mv88e6xxx_port_set_link,
25272487
.port_set_duplex = mv88e6xxx_port_set_duplex,
25282488
.port_set_rgmii_delay = mv88e6390_port_set_rgmii_delay,
@@ -2648,8 +2608,6 @@ static const struct mv88e6xxx_ops mv88e6172_ops = {
26482608
.set_switch_mac = mv88e6xxx_g2_set_switch_mac,
26492609
.phy_read = mv88e6xxx_g2_smi_phy_read,
26502610
.phy_write = mv88e6xxx_g2_smi_phy_write,
2651-
.phy_energy_detect_read = mv88e6352_phy_energy_detect_read,
2652-
.phy_energy_detect_write = mv88e6352_phy_energy_detect_write,
26532611
.port_set_link = mv88e6xxx_port_set_link,
26542612
.port_set_duplex = mv88e6xxx_port_set_duplex,
26552613
.port_set_rgmii_delay = mv88e6352_port_set_rgmii_delay,
@@ -2719,8 +2677,6 @@ static const struct mv88e6xxx_ops mv88e6176_ops = {
27192677
.set_switch_mac = mv88e6xxx_g2_set_switch_mac,
27202678
.phy_read = mv88e6xxx_g2_smi_phy_read,
27212679
.phy_write = mv88e6xxx_g2_smi_phy_write,
2722-
.phy_energy_detect_read = mv88e6352_phy_energy_detect_read,
2723-
.phy_energy_detect_write = mv88e6352_phy_energy_detect_write,
27242680
.port_set_link = mv88e6xxx_port_set_link,
27252681
.port_set_duplex = mv88e6xxx_port_set_duplex,
27262682
.port_set_rgmii_delay = mv88e6352_port_set_rgmii_delay,
@@ -2784,8 +2740,6 @@ static const struct mv88e6xxx_ops mv88e6190_ops = {
27842740
.set_switch_mac = mv88e6xxx_g2_set_switch_mac,
27852741
.phy_read = mv88e6xxx_g2_smi_phy_read,
27862742
.phy_write = mv88e6xxx_g2_smi_phy_write,
2787-
.phy_energy_detect_read = mv88e6390_phy_energy_detect_read,
2788-
.phy_energy_detect_write = mv88e6390_phy_energy_detect_write,
27892743
.port_set_link = mv88e6xxx_port_set_link,
27902744
.port_set_duplex = mv88e6xxx_port_set_duplex,
27912745
.port_set_rgmii_delay = mv88e6390_port_set_rgmii_delay,
@@ -2821,8 +2775,6 @@ static const struct mv88e6xxx_ops mv88e6190x_ops = {
28212775
.set_switch_mac = mv88e6xxx_g2_set_switch_mac,
28222776
.phy_read = mv88e6xxx_g2_smi_phy_read,
28232777
.phy_write = mv88e6xxx_g2_smi_phy_write,
2824-
.phy_energy_detect_read = mv88e6390_phy_energy_detect_read,
2825-
.phy_energy_detect_write = mv88e6390_phy_energy_detect_write,
28262778
.port_set_link = mv88e6xxx_port_set_link,
28272779
.port_set_duplex = mv88e6xxx_port_set_duplex,
28282780
.port_set_rgmii_delay = mv88e6390_port_set_rgmii_delay,
@@ -2858,8 +2810,6 @@ static const struct mv88e6xxx_ops mv88e6191_ops = {
28582810
.set_switch_mac = mv88e6xxx_g2_set_switch_mac,
28592811
.phy_read = mv88e6xxx_g2_smi_phy_read,
28602812
.phy_write = mv88e6xxx_g2_smi_phy_write,
2861-
.phy_energy_detect_read = mv88e6390_phy_energy_detect_read,
2862-
.phy_energy_detect_write = mv88e6390_phy_energy_detect_write,
28632813
.port_set_link = mv88e6xxx_port_set_link,
28642814
.port_set_duplex = mv88e6xxx_port_set_duplex,
28652815
.port_set_rgmii_delay = mv88e6390_port_set_rgmii_delay,
@@ -2895,8 +2845,6 @@ static const struct mv88e6xxx_ops mv88e6240_ops = {
28952845
.set_switch_mac = mv88e6xxx_g2_set_switch_mac,
28962846
.phy_read = mv88e6xxx_g2_smi_phy_read,
28972847
.phy_write = mv88e6xxx_g2_smi_phy_write,
2898-
.phy_energy_detect_read = mv88e6352_phy_energy_detect_read,
2899-
.phy_energy_detect_write = mv88e6352_phy_energy_detect_write,
29002848
.port_set_link = mv88e6xxx_port_set_link,
29012849
.port_set_duplex = mv88e6xxx_port_set_duplex,
29022850
.port_set_rgmii_delay = mv88e6352_port_set_rgmii_delay,
@@ -2933,8 +2881,6 @@ static const struct mv88e6xxx_ops mv88e6290_ops = {
29332881
.set_switch_mac = mv88e6xxx_g2_set_switch_mac,
29342882
.phy_read = mv88e6xxx_g2_smi_phy_read,
29352883
.phy_write = mv88e6xxx_g2_smi_phy_write,
2936-
.phy_energy_detect_read = mv88e6390_phy_energy_detect_read,
2937-
.phy_energy_detect_write = mv88e6390_phy_energy_detect_write,
29382884
.port_set_link = mv88e6xxx_port_set_link,
29392885
.port_set_duplex = mv88e6xxx_port_set_duplex,
29402886
.port_set_rgmii_delay = mv88e6390_port_set_rgmii_delay,
@@ -2971,8 +2917,6 @@ static const struct mv88e6xxx_ops mv88e6320_ops = {
29712917
.set_switch_mac = mv88e6xxx_g2_set_switch_mac,
29722918
.phy_read = mv88e6xxx_g2_smi_phy_read,
29732919
.phy_write = mv88e6xxx_g2_smi_phy_write,
2974-
.phy_energy_detect_read = mv88e6352_phy_energy_detect_read,
2975-
.phy_energy_detect_write = mv88e6352_phy_energy_detect_write,
29762920
.port_set_link = mv88e6xxx_port_set_link,
29772921
.port_set_duplex = mv88e6xxx_port_set_duplex,
29782922
.port_set_speed = mv88e6185_port_set_speed,
@@ -3006,8 +2950,6 @@ static const struct mv88e6xxx_ops mv88e6321_ops = {
30062950
.set_switch_mac = mv88e6xxx_g2_set_switch_mac,
30072951
.phy_read = mv88e6xxx_g2_smi_phy_read,
30082952
.phy_write = mv88e6xxx_g2_smi_phy_write,
3009-
.phy_energy_detect_read = mv88e6352_phy_energy_detect_read,
3010-
.phy_energy_detect_write = mv88e6352_phy_energy_detect_write,
30112953
.port_set_link = mv88e6xxx_port_set_link,
30122954
.port_set_duplex = mv88e6xxx_port_set_duplex,
30132955
.port_set_speed = mv88e6185_port_set_speed,
@@ -3039,8 +2981,6 @@ static const struct mv88e6xxx_ops mv88e6341_ops = {
30392981
.set_switch_mac = mv88e6xxx_g2_set_switch_mac,
30402982
.phy_read = mv88e6xxx_g2_smi_phy_read,
30412983
.phy_write = mv88e6xxx_g2_smi_phy_write,
3042-
.phy_energy_detect_read = mv88e6352_phy_energy_detect_read,
3043-
.phy_energy_detect_write = mv88e6352_phy_energy_detect_write,
30442984
.port_set_link = mv88e6xxx_port_set_link,
30452985
.port_set_duplex = mv88e6xxx_port_set_duplex,
30462986
.port_set_rgmii_delay = mv88e6390_port_set_rgmii_delay,
@@ -3142,8 +3082,6 @@ static const struct mv88e6xxx_ops mv88e6352_ops = {
31423082
.set_switch_mac = mv88e6xxx_g2_set_switch_mac,
31433083
.phy_read = mv88e6xxx_g2_smi_phy_read,
31443084
.phy_write = mv88e6xxx_g2_smi_phy_write,
3145-
.phy_energy_detect_read = mv88e6352_phy_energy_detect_read,
3146-
.phy_energy_detect_write = mv88e6352_phy_energy_detect_write,
31473085
.port_set_link = mv88e6xxx_port_set_link,
31483086
.port_set_duplex = mv88e6xxx_port_set_duplex,
31493087
.port_set_rgmii_delay = mv88e6352_port_set_rgmii_delay,
@@ -3180,8 +3118,6 @@ static const struct mv88e6xxx_ops mv88e6390_ops = {
31803118
.set_switch_mac = mv88e6xxx_g2_set_switch_mac,
31813119
.phy_read = mv88e6xxx_g2_smi_phy_read,
31823120
.phy_write = mv88e6xxx_g2_smi_phy_write,
3183-
.phy_energy_detect_read = mv88e6390_phy_energy_detect_read,
3184-
.phy_energy_detect_write = mv88e6390_phy_energy_detect_write,
31853121
.port_set_link = mv88e6xxx_port_set_link,
31863122
.port_set_duplex = mv88e6xxx_port_set_duplex,
31873123
.port_set_rgmii_delay = mv88e6390_port_set_rgmii_delay,
@@ -3220,8 +3156,6 @@ static const struct mv88e6xxx_ops mv88e6390x_ops = {
32203156
.set_switch_mac = mv88e6xxx_g2_set_switch_mac,
32213157
.phy_read = mv88e6xxx_g2_smi_phy_read,
32223158
.phy_write = mv88e6xxx_g2_smi_phy_write,
3223-
.phy_energy_detect_read = mv88e6390_phy_energy_detect_read,
3224-
.phy_energy_detect_write = mv88e6390_phy_energy_detect_write,
32253159
.port_set_link = mv88e6xxx_port_set_link,
32263160
.port_set_duplex = mv88e6xxx_port_set_duplex,
32273161
.port_set_rgmii_delay = mv88e6390_port_set_rgmii_delay,

drivers/net/dsa/mv88e6xxx/chip.h

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -239,12 +239,6 @@ struct mv88e6xxx_ops {
239239
struct mii_bus *bus,
240240
int addr, int reg, u16 val);
241241

242-
/* Copper Energy Detect operations */
243-
int (*phy_energy_detect_read)(struct mv88e6xxx_chip *chip, int phy,
244-
struct ethtool_eee *eee);
245-
int (*phy_energy_detect_write)(struct mv88e6xxx_chip *chip, int phy,
246-
struct ethtool_eee *eee);
247-
248242
/* Priority Override Table operations */
249243
int (*pot_clear)(struct mv88e6xxx_chip *chip);
250244

drivers/net/dsa/mv88e6xxx/phy.c

Lines changed: 0 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -246,99 +246,3 @@ int mv88e6xxx_phy_setup(struct mv88e6xxx_chip *chip)
246246
{
247247
return mv88e6xxx_phy_ppu_enable(chip);
248248
}
249-
250-
/* Page 0, Register 16: Copper Specific Control Register 1 */
251-
252-
int mv88e6352_phy_energy_detect_read(struct mv88e6xxx_chip *chip, int phy,
253-
struct ethtool_eee *eee)
254-
{
255-
u16 val;
256-
int err;
257-
258-
err = mv88e6xxx_phy_read(chip, phy, MV88E6XXX_PHY_CSCTL1, &val);
259-
if (err)
260-
return err;
261-
262-
val &= MV88E6352_PHY_CSCTL1_ENERGY_DETECT_MASK;
263-
264-
eee->eee_enabled = false;
265-
eee->tx_lpi_enabled = false;
266-
267-
switch (val) {
268-
case MV88E6352_PHY_CSCTL1_ENERGY_DETECT_SENSE_NLP:
269-
eee->tx_lpi_enabled = true;
270-
/* fall through... */
271-
case MV88E6352_PHY_CSCTL1_ENERGY_DETECT_SENSE_RCV:
272-
eee->eee_enabled = true;
273-
}
274-
275-
return 0;
276-
}
277-
278-
int mv88e6352_phy_energy_detect_write(struct mv88e6xxx_chip *chip, int phy,
279-
struct ethtool_eee *eee)
280-
{
281-
u16 val;
282-
int err;
283-
284-
err = mv88e6xxx_phy_read(chip, phy, MV88E6XXX_PHY_CSCTL1, &val);
285-
if (err)
286-
return err;
287-
288-
val &= ~MV88E6352_PHY_CSCTL1_ENERGY_DETECT_MASK;
289-
290-
if (eee->eee_enabled)
291-
val |= MV88E6352_PHY_CSCTL1_ENERGY_DETECT_SENSE_RCV;
292-
if (eee->tx_lpi_enabled)
293-
val |= MV88E6352_PHY_CSCTL1_ENERGY_DETECT_SENSE_NLP;
294-
295-
return mv88e6xxx_phy_write(chip, phy, MV88E6XXX_PHY_CSCTL1, val);
296-
}
297-
298-
int mv88e6390_phy_energy_detect_read(struct mv88e6xxx_chip *chip, int phy,
299-
struct ethtool_eee *eee)
300-
{
301-
u16 val;
302-
int err;
303-
304-
err = mv88e6xxx_phy_read(chip, phy, MV88E6XXX_PHY_CSCTL1, &val);
305-
if (err)
306-
return err;
307-
308-
val &= MV88E6390_PHY_CSCTL1_ENERGY_DETECT_MASK;
309-
310-
eee->eee_enabled = false;
311-
eee->tx_lpi_enabled = false;
312-
313-
switch (val) {
314-
case MV88E6390_PHY_CSCTL1_ENERGY_DETECT_SENSE_NLP_AUTO:
315-
case MV88E6390_PHY_CSCTL1_ENERGY_DETECT_SENSE_NLP_SW:
316-
eee->tx_lpi_enabled = true;
317-
/* fall through... */
318-
case MV88E6390_PHY_CSCTL1_ENERGY_DETECT_SENSE_RCV_AUTO:
319-
case MV88E6390_PHY_CSCTL1_ENERGY_DETECT_SENSE_RCV_SW:
320-
eee->eee_enabled = true;
321-
}
322-
323-
return 0;
324-
}
325-
326-
int mv88e6390_phy_energy_detect_write(struct mv88e6xxx_chip *chip, int phy,
327-
struct ethtool_eee *eee)
328-
{
329-
u16 val;
330-
int err;
331-
332-
err = mv88e6xxx_phy_read(chip, phy, MV88E6XXX_PHY_CSCTL1, &val);
333-
if (err)
334-
return err;
335-
336-
val &= ~MV88E6390_PHY_CSCTL1_ENERGY_DETECT_MASK;
337-
338-
if (eee->eee_enabled)
339-
val |= MV88E6390_PHY_CSCTL1_ENERGY_DETECT_SENSE_RCV_AUTO;
340-
if (eee->tx_lpi_enabled)
341-
val |= MV88E6390_PHY_CSCTL1_ENERGY_DETECT_SENSE_NLP_AUTO;
342-
343-
return mv88e6xxx_phy_write(chip, phy, MV88E6XXX_PHY_CSCTL1, val);
344-
}

drivers/net/dsa/mv88e6xxx/phy.h

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,6 @@
1717
#define MV88E6XXX_PHY_PAGE 0x16
1818
#define MV88E6XXX_PHY_PAGE_COPPER 0x00
1919

20-
/* Page 0, Register 16: Copper Specific Control Register 1 */
21-
#define MV88E6XXX_PHY_CSCTL1 16
22-
#define MV88E6352_PHY_CSCTL1_ENERGY_DETECT_MASK 0x0300
23-
#define MV88E6352_PHY_CSCTL1_ENERGY_DETECT_OFF_MASK 0x0100 /* 0x */
24-
#define MV88E6352_PHY_CSCTL1_ENERGY_DETECT_SENSE_RCV 0x0200
25-
#define MV88E6352_PHY_CSCTL1_ENERGY_DETECT_SENSE_NLP 0x0300
26-
#define MV88E6390_PHY_CSCTL1_ENERGY_DETECT_MASK 0x0380
27-
#define MV88E6390_PHY_CSCTL1_ENERGY_DETECT_OFF_MASK 0x0180 /* 0xx */
28-
#define MV88E6390_PHY_CSCTL1_ENERGY_DETECT_SENSE_RCV_AUTO 0x0200
29-
#define MV88E6390_PHY_CSCTL1_ENERGY_DETECT_SENSE_RCV_SW 0x0280
30-
#define MV88E6390_PHY_CSCTL1_ENERGY_DETECT_SENSE_NLP_AUTO 0x0300
31-
#define MV88E6390_PHY_CSCTL1_ENERGY_DETECT_SENSE_NLP_SW 0x0380
32-
3320
/* PHY Registers accesses implementations */
3421
int mv88e6165_phy_read(struct mv88e6xxx_chip *chip, struct mii_bus *bus,
3522
int addr, int reg, u16 *val);
@@ -53,13 +40,4 @@ void mv88e6xxx_phy_init(struct mv88e6xxx_chip *chip);
5340
void mv88e6xxx_phy_destroy(struct mv88e6xxx_chip *chip);
5441
int mv88e6xxx_phy_setup(struct mv88e6xxx_chip *chip);
5542

56-
int mv88e6352_phy_energy_detect_read(struct mv88e6xxx_chip *chip, int phy,
57-
struct ethtool_eee *eee);
58-
int mv88e6352_phy_energy_detect_write(struct mv88e6xxx_chip *chip, int phy,
59-
struct ethtool_eee *eee);
60-
int mv88e6390_phy_energy_detect_read(struct mv88e6xxx_chip *chip, int phy,
61-
struct ethtool_eee *eee);
62-
int mv88e6390_phy_energy_detect_write(struct mv88e6xxx_chip *chip, int phy,
63-
struct ethtool_eee *eee);
64-
6543
#endif /*_MV88E6XXX_PHY_H */

drivers/net/dsa/mv88e6xxx/port.c

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -35,23 +35,6 @@ int mv88e6xxx_port_write(struct mv88e6xxx_chip *chip, int port, int reg,
3535
return mv88e6xxx_write(chip, addr, reg, val);
3636
}
3737

38-
/* Offset 0x00: Port Status Register */
39-
40-
int mv88e6xxx_port_status_eee(struct mv88e6xxx_chip *chip, int port,
41-
struct ethtool_eee *eee)
42-
{
43-
u16 val;
44-
int err;
45-
46-
err = mv88e6xxx_port_read(chip, port, MV88E6XXX_PORT_STS, &val);
47-
if (err)
48-
return err;
49-
50-
eee->eee_active = !!(val & MV88E6352_PORT_STS_EEE);
51-
52-
return 0;
53-
}
54-
5538
/* Offset 0x01: MAC (or PCS or Physical) Control Register
5639
*
5740
* Link, Duplex and Flow Control have one force bit, one value bit.

drivers/net/dsa/mv88e6xxx/port.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -241,9 +241,6 @@ int mv88e6xxx_port_read(struct mv88e6xxx_chip *chip, int port, int reg,
241241
int mv88e6xxx_port_write(struct mv88e6xxx_chip *chip, int port, int reg,
242242
u16 val);
243243

244-
int mv88e6xxx_port_status_eee(struct mv88e6xxx_chip *chip, int port,
245-
struct ethtool_eee *eee);
246-
247244
int mv88e6352_port_set_rgmii_delay(struct mv88e6xxx_chip *chip, int port,
248245
phy_interface_t mode);
249246
int mv88e6390_port_set_rgmii_delay(struct mv88e6xxx_chip *chip, int port,

0 commit comments

Comments
 (0)