Skip to content

uboot: fix the jz4775 ethernet driver - #1556

Merged
themactep merged 1 commit into
themactep:ciaofrom
spamcop:uboot-jz4775-eth-fixes
Aug 29, 2026
Merged

uboot: fix the jz4775 ethernet driver#1556
themactep merged 1 commit into
themactep:ciaofrom
spamcop:uboot-jz4775-eth-fixes

Conversation

@spamcop

@spamcop spamcop commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Four patches against the 2013.07 tree, found by bringing netconsole up on an isvp_t31x board but independent of it -- they repair the driver for any network use in U-Boot.

0007 fixes the transmit and receive paths: a dozen defects including a zero-valued mask that could never select 10Mb/s, unaligned DMA descriptors sharing cache lines with data written through the cached alias, an untrackable four-deep transmit ring collapsed to a single descriptor, a transmit FIFO nobody ever flushed so the first send after every init jammed, latched CSR5 status never cleared so suspended engines ignored poll demands in both directions, a receive descriptor leaked on short frames, halt enabling the transmitter it meant to disable, and console output emitted from inside the init of the very interface carrying it.

0008 resolves link speed from the autonegotiation result (ANAR & ANLPAR) instead of a vendor status register that reads a constant on the fitted PHY, tests the real link bit instead of Extended Capability, and restarts autonegotiation only when the link is not already up and settled.

0009 releases the interface when NetLoop fails, as the success path already does; leaving it ETH_STATE_ACTIVE silenced netconsole input for good.

0010 reports the resolved link with the advertisement words behind it (adv/partner/common) and demotes the misleading BMCR readback line.

All verified on a vanhua_fjz_t31x_gc4653_eth at 10 and 100Mb/s.

Four patches against the 2013.07 tree, found by bringing netconsole up on
an isvp_t31x board but independent of it -- they repair the driver for any
network use in U-Boot.

0007 fixes the transmit and receive paths: a dozen defects including a
zero-valued mask that could never select 10Mb/s, unaligned DMA descriptors
sharing cache lines with data written through the cached alias, an
untrackable four-deep transmit ring collapsed to a single descriptor, a
transmit FIFO nobody ever flushed so the first send after every init
jammed, latched CSR5 status never cleared so suspended engines ignored
poll demands in both directions, a receive descriptor leaked on short
frames, halt enabling the transmitter it meant to disable, and console
output emitted from inside the init of the very interface carrying it.

0008 resolves link speed from the autonegotiation result (ANAR & ANLPAR)
instead of a vendor status register that reads a constant on the fitted
PHY, tests the real link bit instead of Extended Capability, and restarts
autonegotiation only when the link is not already up and settled.

0009 releases the interface when NetLoop fails, as the success path
already does; leaving it ETH_STATE_ACTIVE silenced netconsole input for
good.

0010 reports the resolved link with the advertisement words behind it
(adv/partner/common) and demotes the misleading BMCR readback line.

All verified on a vanhua_fjz_t31x_gc4653_eth at 10 and 100Mb/s.
@themactep
themactep merged commit f84057f into themactep:ciao Aug 29, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants