[PATCH net-next 0/9] net: phy: mediatek: Introduce mtk-phy-lib which integrates common part of MediaTek's internal ethernet PHYs

From: Sky Huang
Date: Fri Oct 04 2024 - 06:25:18 EST


From: "SkyLake.Huang" <skylake.huang@xxxxxxxxxxxx>

This patchset is derived from patch[01/13]-patch[9/13] of Message ID:
20240701105417.19941-1-SkyLake.Huang@xxxxxxxxxxxx. This integrates
MediaTek's built-in Ethernet PHY helper functions into mtk-phy-lib
and add more functions into it.

Considering that original patchset may be too large to be reviewed.
I break down the original patchset. This is the first one. The rest
patch[10/13]-patch[13/13] will be proposed later.

Signed-off-by: SkyLake.Huang <skylake.huang@xxxxxxxxxxxx>
---
[Previous change log in 20240701105417.19941-1-SkyLake.Huang@xxxxxxxxxxxx]
Changes in v2:
- Apply correct PATCH tag.
- Break LED/Token ring/Extend-link-pulse-time features into 3 patches.
- Fix contents according to v1 comments.

Changes in v3:
- Rebase code and now this patch series can apply to net-next tree.
[PATCH 4/5]
Refactor mtk_gphy_cl22_read_status() with genphy_read_status().
[PATCH 5/5]
1. Add range check for firmware.
2. Fix c45_ids.mmds_present in probe function.
3. Still use genphy_update_link() in read_status because
genphy_c45_read_link() can't correct detect link on this phy.

Changes in v4:
[PATCH 4/5]
1. Change extend_an_new_lp_cnt_limit()'s return type and all return values
2. Refactor comments in extend_an_new_lp_cnt_limit()
[PATCH 5/5]
1. Move firmware loading function to mt798x_2p5ge_phy_load_fw()
2. Add AN disable warning in mt798x_2p5ge_phy_config_aneg()
3. Clarify the HDX comments in mt798x_2p5ge_phy_get_features()

Changes in v5:
- Fix syntax errors of comments in drivers/net/phy/mediatek/*
[PATCH 1/5]
- Change MEDIATEK_GE_SOC_PHY from bool back to tristate.
[PATCH 5/5]
1. Move md32_en_cfg_base & pmb_addr to local variables to achieve
symmetric code.
2. Print out firmware date code & version.
3. Don't return error if LED pinctrl switching fails. Also, add
comments to this unusual operations.
4. Return -EOPNOTSUPP for AN off case in config_aneg().

Changes in v6:
- Re-arrange patch and changes description in cover letter.
- Contraint code inside 80 columns wide.
[PATCH 4/5]
1. Add LP_DETECTED so extend_an_new_lp_cnt_limit() won't be called every
time we poll the PHY for its status. It'll be called only when cable is
plugged in and 1G training starts.
2. Call phy_read_paged() instead of calling phy_select_page() &
phy_restore_page() pair.
[PATCH 5/5]
1. Force casting (fw->data + MT7988_2P5GE_PMB_SIZE - 8) with __be16.
2. Remove parens on RHS of "phydev->c45_ids.mmds_present |=".
3. Add PHY_INTERFACE_MODE_INTERNAL check in
mt798x_2p5ge_phy_get_rate_matching()
4. Arrange local variables in reverse Xmas tree order.

Changes in v7:
[PATCH 5/5]
1. Add phy mode check(PHY_INTERFACE_MODE_INTERNAL) in config_init().
2. Always return RATE_MATCH_PAUSE in get_rate_matching().

Changes in v8:
- Make sure that each variables in drivers/net/phy/mediatek/* follows reverse
Xmas tree order.
- Split v7 patches in this way:
[PATCH net-next v7 1/5] net: phy: mediatek: Re-organize MediaTek ethernet phy drivers
-> [PATCH net-next v8 01/13] net: phy: mediatek: Re-organize MediaTek ethernet phy drivers
-> [PATCH net-next v8 02/13] net: phy: mediatek: Fix spelling errors and rearrange variables
[PATCH net-next v7 2/5] net: phy: mediatek: Move LED and read/write page helper functions into mtk phy lib
-> [PATCH net-next v8 03/13] net: phy: mediatek: Move LED helper functions into mtk phy lib
-> [PATCH net-next v8 04/13] net: phy: mediatek: Improve readability of mtk-phy-lib.c's mtk_phy_led_hw_ctrl_set()
-> [PATCH net-next v8 05/13] net: phy: mediatek: Integrate read/write page helper functions
-> [PATCH net-next v8 06/13] net: phy: mediatek: Hook LED helper functions in mtk-ge.c
-> [PATCH net-next v8 07/13] net: phy: mediatek: add MT7530 & MT7531's PHY ID macros
-> [PATCH net-next v8 08/13] net: phy: mediatek: Change mtk-ge-soc.c line wrapping
[PATCH net-next v7 3/5] net: phy: mediatek: Add token ring access helper functions in mtk-phy-lib
-> [PATCH net-next v8 09/13] net: phy: mediatek: Add token ring access helper functions in mtk-phy-lib
[PATCH net-next v7 4/5] net: phy: mediatek: Extend 1G TX/RX link pulse time
-> [PATCH net-next v8 10/13] net: phy: mediatek: Extend 1G TX/RX link pulse time
[PATCH net-next v7 5/5] net: phy: add driver for built-in 2.5G ethernet PHY on MT7988
-> [PATCH net-next v8 11/13] net: phy: add driver for built-in 2.5G ethernet PHY on MT7988
- Create another 2 patches to:
- fix alignment in callback functions declarations in mtk-ge.c & mtk-ge-soc.c
- Remove unnecessary outer parens of "supported_triggers" var
- Replace token ring API, tr* & __tr* with mtk_tr* & __mtk_tr* and fix
alignment.

Changes in v9:
[PATCH 03/13][PATCH 06/13][PATCH 11/13]
- Add mtk_phy_led_num_dly_cfg helper function to check led number & set
delay on/off time.
[PATCH 07/13][PATCH 12/13]
- Remove "mt753x_phy_led_hw_is_supported," callback function hook in MT7530
part of mtk-ge.c
[PATCH 09/13]
- Replace EEE1000_SELECT_SIGNEL_DETECTION_FROM_DFE with
EEE1000_SELECT_SIGNAL_DETECTION_FROM_DFE. SIGNEL->SIGNAL.
[PATCH 11/13]
- Add MODULE_FIRMARE()
- Replace "MT7988_2P5GE_PMB" with "MT7988_2P5GE_PMB_FW" so we can recognize
it literally.
- Remove unused macro names:
1. BASE100T_STATUS_EXTEND
2. BASE1000T_STATUS_EXTEND
3. EXTEND_CTRL_AND_STATUS
4. PHY_AUX_DPX_MASK

Changes in v10:
[PATCH 11/13]
- Move release_firmware() to correct position.
- Return ret directly in mt798x_2p5ge_phy_load_fw().
---
SkyLake.Huang (9):
net: phy: mediatek: Re-organize MediaTek ethernet phy drivers
net: phy: mediatek: Fix spelling errors and rearrange variables
net: phy: mediatek: Move LED helper functions into mtk phy lib
net: phy: mediatek: Improve readability of mtk-phy-lib.c's
mtk_phy_led_hw_ctrl_set()
net: phy: mediatek: Integrate read/write page helper functions
net: phy: mediatek: Hook LED helper functions in mtk-ge.c
net: phy: mediatek: add MT7530 & MT7531's PHY ID macros
net: phy: mediatek: Change mtk-ge-soc.c line wrapping
net: phy: mediatek: Add token ring access helper functions in
mtk-phy-lib

MAINTAINERS | 6 +-
drivers/net/phy/Kconfig | 17 +-
drivers/net/phy/Makefile | 3 +-
drivers/net/phy/mediatek-ge.c | 111 ---
drivers/net/phy/mediatek/Kconfig | 27 +
drivers/net/phy/mediatek/Makefile | 4 +
.../mtk-ge-soc.c} | 663 ++++++++----------
drivers/net/phy/mediatek/mtk-ge.c | 246 +++++++
drivers/net/phy/mediatek/mtk-phy-lib.c | 358 ++++++++++
drivers/net/phy/mediatek/mtk.h | 98 +++
10 files changed, 1015 insertions(+), 518 deletions(-)
delete mode 100644 drivers/net/phy/mediatek-ge.c
create mode 100644 drivers/net/phy/mediatek/Kconfig
create mode 100644 drivers/net/phy/mediatek/Makefile
rename drivers/net/phy/{mediatek-ge-soc.c => mediatek/mtk-ge-soc.c} (74%)
create mode 100644 drivers/net/phy/mediatek/mtk-ge.c
create mode 100644 drivers/net/phy/mediatek/mtk-phy-lib.c
create mode 100644 drivers/net/phy/mediatek/mtk.h

--
2.45.2