]> git.ipfire.org Git - thirdparty/linux.git/commit
net: phy: air_en8811h: add AN8811HB MCU assert/deassert support
authorLucien.Jheng <lucienzx159@gmail.com>
Sun, 24 May 2026 06:39:15 +0000 (14:39 +0800)
committerJakub Kicinski <kuba@kernel.org>
Wed, 27 May 2026 00:59:47 +0000 (17:59 -0700)
commitd895767c337814cf4b97d5ad5375e5ed7e12018d
tree386a4372d37fefcd1b274e123bf8e8409c638f4d
parent05f95729ca844704d15e49ce14868af4b403b32b
net: phy: air_en8811h: add AN8811HB MCU assert/deassert support

AN8811HB needs a MCU soft-reset cycle before firmware loading begins.
Assert the MCU (hold it in reset) and immediately deassert (release)
via a dedicated PBUS register pair (0x5cf9f8 / 0x5cf9fc), accessed
through a registered mdio_device at PHY-addr+8.

Add __air_pbus_reg_write() as a low-level helper taking a struct
mdio_device *, create and register the PBUS mdio_device in
an8811hb_probe() and store it in priv->pbusdev, then implement
an8811hb_mcu_assert() / _deassert() on top of it. Add
an8811hb_remove() to unregister the PBUS device on teardown. Wire
both calls into an8811hb_load_firmware() and en8811h_restart_mcu()
so every firmware load or MCU restart on AN8811HB correctly sequences
the reset control registers.

Fixes: 5afda1d734ed ("net: phy: air_en8811h: add Airoha AN8811HB support")
Signed-off-by: Lucien Jheng <lucienzx159@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://patch.msgid.link/20260524063915.47961-1-lucienzx159@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/phy/air_en8811h.c