Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: phy: qt2025: Wait until PHY becomes ready

Wait until a PHY becomes ready in the probe callback by
using read_poll_timeout function.

Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
Reviewed-by: Gary Guo <gary@garyguo.net>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com>
Link: https://patch.msgid.link/20251105133126.3221948-1-fujita.tomonori@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

FUJITA Tomonori and committed by
Jakub Kicinski
8a25a2e3 c04956cc

+9 -1
+9 -1
drivers/net/phy/qt2025.rs
··· 12 12 use kernel::c_str; 13 13 use kernel::error::code; 14 14 use kernel::firmware::Firmware; 15 + use kernel::io::poll::read_poll_timeout; 15 16 use kernel::net::phy::{ 16 17 self, 17 18 reg::{Mmd, C45}, ··· 20 19 }; 21 20 use kernel::prelude::*; 22 21 use kernel::sizes::{SZ_16K, SZ_8K}; 22 + use kernel::time::Delta; 23 23 24 24 kernel::module_phy_driver! { 25 25 drivers: [PhyQT2025], ··· 95 93 // The micro-controller will start running from SRAM. 96 94 dev.write(C45::new(Mmd::PCS, 0xe854), 0x0040)?; 97 95 98 - // TODO: sleep here until the hw becomes ready. 96 + read_poll_timeout( 97 + || dev.read(C45::new(Mmd::PCS, 0xd7fd)), 98 + |val| *val != 0x00 && *val != 0x10, 99 + Delta::from_millis(50), 100 + Delta::from_secs(3), 101 + )?; 102 + 99 103 Ok(()) 100 104 } 101 105