This patch series adds the driver and the devicetree binding documentation for the Airoha en8811h PHY. Changes in PATCH v3: air_en8811h.c: * Dedicated __air_buckpbus_reg_modify() * Renamed host to mcu * Append 'S' to AIR_PHY_LED_DUR_BLINK_xxxM * Handle hw-leds as in mt798x_phy_led_hw_control_set(), add 2500Mbps * Moved firmware loading to .probe() * Disable leds after firmware load * Moved 'waiting for mcu ready' to dedicated function * Return -EINVAL from .config_aneg() when auto-neg is turned off * Removed check for AUTONEG_ENABLE from .read_status() * Added more details about mode 1 * Use macros from wordpart.h * Set rate_matching in .read_status(), fixes 100Mbps traffic Changes in PATCH v2: air_en8811h.c: * Implement air_buckpbus_reg_modify() * Added if (saved_page >= 0) * Use linkmode_adv_to_mii_10gbt_adv_t() * Check led index within limit, before using it * Renamed AIR_PBUS_XXX to AIR_BPBUS_XXX to indicate buckpbus, not pbus * Cosmetic changes airoha,en8811h.yaml: * Add compatible * Add description * Cosmetic changes Changes in PATCH (mistakenly considered as v1): air_en8811h.c: * Use the correct order in Kconfig and Makefile * Change some register naming to correspond with datasheet * Use phy_driver .read_page() and .write_page() * Use module_phy_driver() * Use get_unaligned_le16() instead of macro * In .config_aneg() and .read_status() use genphy_xxx() C22 * Use another vendor register to read real speed * Load firmware only once and store firmware version * Apply 2.5G LPA work-around (firmware before 24011202) * Read 2.5G LPA from vendor register (firmware 24011202 and later) airoha,en8811h.yaml: * Explicitly describe which pins are reversed in polarity. Notes for original RFC patch: * Source originated from airoha's en8811h v1.2.1 driver * Moved air_en8811h.h to air_en8811h.c * Removed air_pbus_reg_write() as it writes to another device on mdio-bus (Confirmed by Airoha, register on pbus does not need to be written to) * Load firmware from /lib/firmware/airoha/ instead of /lib/firmware/ * Added .get_rate_matching() * Use generic phy_read/write() and phy_read/write_mmd() * Edited .get_features() to use generic C45 functions * Edited .config_aneg() and .read_status() to use a mix of generic C22/C45 * Use led handling functions from mediatek-ge-soc.c * Simplified led handling by storing led rules * Cleanup macro definitions * Cleanup code to pass checkpatch.pl * General code cleanup Eric Woudstra (2): dt-bindings: net: airoha,en8811h: Add en8811h net: phy: air_en8811h: Add the Airoha EN8811H PHY driver .../bindings/net/airoha,en8811h.yaml | 56 + drivers/net/phy/Kconfig | 5 + drivers/net/phy/Makefile | 1 + drivers/net/phy/air_en8811h.c | 1086 +++++++++++++++++ 4 files changed, 1148 insertions(+) create mode 100644 Documentation/devicetree/bindings/net/airoha,en8811h.yaml create mode 100644 drivers/net/phy/air_en8811h.c -- 2.42.1