[PATCH v7 net-next 00/14] net: phy: marvell-88q2xxx: add driver for the Marvell 88Q2220 PHY

From: Dimitri Fedrau
Date: Sun Feb 18 2024 - 02:58:11 EST


Changes in v2:
- used defines MDIO_CTRL1_LPOWER and MDIO_PMA_CTRL1_SPEED1000
in mv88q222x_config_aneg_preinit
- use genphy_c45_loopback
- mv88q2xxx_read_status reads speed, master or slave state when
autonegotiation is enabled
- added defines for magic values in mv88q222x_get_sqi

Changes in v3:
- mv88q2xxx_read_status includes autonegotiation case
- add support for 100BT1 and 1000BT1 linkmode advertisement
- use mv88q2xxx_get_sqi and mv88q2xxx_get_sqi_max, remove
mv88q222x_get_sqi and mv88q222x_get_sqi_max
- fix typo: rename mv88q2xxxx_get_sqi and mv88q2xxxx_get_sqi_max to
mv88q2xxx_get_sqi and mv88q2xxx_get_sqi
- add define MDIO_MMD_PCS_MV_RX_STAT for magic value 0x8230, documented
in latest datasheets for both PHYs

Changes in V4:
- clean up init sequence
- separate patch for fixing typos in upstreamed code

Changes in V5:
- add missing statics for mv88q222x_revb0_init_seq0 and
mv88q222x_revb0_init_seq1
- fix typo in commit message: autonegotiation
- fix ordering of Signed-off-by and Reviewed-by in commit messages
- add interrupt support for link detection
- add suspend / resume ops
- add support for internal temperature sensor
- add cable test support
- call .soft_reset in mv88q2xxx_config_aneg, this makes
mv88q2xxx_config_aneg compatible for Marvell88Q222x devices and
remove mv88q222x_config_aneg which is then just duplicated code
- cleanup mv88q2xxx_config_init and make it compatible with
Marvell88Q222x devices
- move parts from mv88q222x_config_init to mv88q2xxx_config_init
that are applicable for all Marvell88Q2xxx devices.

Changes in V6:
- add copyright and where the code is derived from (patch 5). Sorry
Andrew. It is already reviewed, but I think it is the right place.
Didn't remove the Reviewed-by because the changes doesn't touch any
code that is getting executed.
- add HWMON dependeny in Kconfig (patch 8)
- use IS_ENABLED(CONFIG_HWMON) instead of ifdef CONFIG_HWMON to support
hwmon built as module (patch 8)
- drop shift constant MDIO_MMD_PCS_MV_TEMP_SENSOR3_INT_THRESH_SHIFT
and use FIELD_GET and FIELD_PREP instead(patch 8)
- drop shift constant MDIO_MMD_PCS_MV_TDR_STATUS_DIST_SHIFT and use
FIELD_GET and FIELD_PREP instead (patch 9)
- split previous patch 13 into two patches.

Changes in V7:
- Check if cable test id done, rather than checking if test is in
progress

Dimitri Fedrau (14):
net: phy: Add BaseT1 auto-negotiation constants
net: phy: Support 100/1000BT1 linkmode advertisements
net: phy: c45: detect 100/1000BASE-T1 linkmode advertisements
net: phy: marvell-88q2xxx: fix typos
net: phy: marvell-88q2xxx: add driver for the Marvell 88Q2220 PHY
net: phy: marvell-88q2xxx: add interrupt support for link detection
net: phy: marvell-88q2xxx: add suspend / resume ops
net: phy: marvell-88q2xxx: add support for temperature sensor
net: phy: marvell-88q2xxx: add cable test support
net: phy: marvell-88q2xxx: make mv88q2xxx_config_aneg generic
net: phy: marvell-88q2xxx: switch to mv88q2xxx_config_aneg
net: phy: marvell-88q2xxx: cleanup mv88q2xxx_config_init
net: phy: marvell-88q2xxx: remove duplicated assignment of pma_extable
net: phy: marvell-88q2xxx: move interrupt configuration

drivers/net/phy/Kconfig | 1 +
drivers/net/phy/marvell-88q2xxx.c | 640 ++++++++++++++++++++++++++++--
drivers/net/phy/phy-c45.c | 3 +-
include/linux/marvell_phy.h | 1 +
include/linux/mdio.h | 8 +
include/uapi/linux/mdio.h | 2 +
6 files changed, 625 insertions(+), 30 deletions(-)

--
2.39.2