00b799d512
Per local/docs/PATCH-PRESERVATION-AUDIT-2026-07-12.md the base fork was carrying only 38 of 100 patches in local/patches/base/. The other 62 patches' content was silently missing from the fork working tree, even though their .patch files were preserved. This commit re-applies 41 patches that genuinely still apply cleanly + 17 hunks that partially applied. Recovery covers: - D-Bus initfs service wiring (P4-initfs-dbus-services) - USB service wiring (P4-initfs-usb-drm-services) - netcfg/dhcp/dhcpv6 driver fixes - acpid shutdown/PM/quirk fixes - inputd/ps2d hard-fail logging - pcid driver interface refinements (server cmd channel) - virtio-core for VirtualBox support - ixgbed/rtl8139/rtl8168 net drivers - ahcid NCQ + per-function interrupt coalescing - logd persistent logging - bootstrap procmgr race-condition fixes - cargo version pin to +rb0.3.0 (synchronized release branch) 58 files changed, +1444/-318 lines. Untracked mnt/ tree and *.orig / *.rej files cleaned up after patch application (leftover from absolute-path patch headers).
6 lines
1.2 KiB
Rust
6 lines
1.2 KiB
Rust
#[derive(Clone,Copy,PartialEq,Debug)] pub enum ChipVersion { Rtl8168b, Rtl8168c, Rtl8168cp, Rtl8168d, Rtl8168dp, Rtl8168e, Rtl8168evl, Rtl8168f, Rtl8168g, Rtl8168h, Rtl8168ep, Unknown }
|
|
pub fn identify_chip(rev: u8, mac0: u32, _m1: u32, _m2: u32, _m3: u32, _m4: u32) -> ChipVersion { match ((mac0>>20)&0x7, rev) { (0,_)=>ChipVersion::Rtl8168b, (1,0x00..=0x01)=>ChipVersion::Rtl8168c, (1,0x02)=>ChipVersion::Rtl8168cp, (2,_)=>ChipVersion::Rtl8168d, (3,r) if r<=0x02=>ChipVersion::Rtl8168e, (3,_)=>ChipVersion::Rtl8168evl, (4,_)=>ChipVersion::Rtl8168f, (5,_)=>ChipVersion::Rtl8168g, (6,_)=>ChipVersion::Rtl8168h, (7,_)=>ChipVersion::Rtl8168ep, _=>ChipVersion::Unknown } }
|
|
pub mod phy_regs { pub const BMCR: u32 = 0x00; pub const BMSR: u32 = 0x01; pub const BMCR_RESET: u16 = 1<<15; pub const BMCR_AUTONEG_ENABLE: u16 = 1<<12; pub const BMSR_LINK_STATUS: u16 = 1<<2; }
|
|
pub fn phy_link_up(read: &dyn Fn(u32)->u16) -> bool { read(phy_regs::BMSR) & phy_regs::BMSR_LINK_STATUS != 0 }
|
|
pub fn phy_reset(write: &dyn Fn(u32,u16), read: &dyn Fn(u32)->u16) -> bool { write(phy_regs::BMCR, phy_regs::BMCR_RESET); for _ in 0..500 { if read(phy_regs::BMCR) & phy_regs::BMCR_RESET == 0 { return true; } } false }
|