Page MenuHomeFreeBSD

bcm2835_sdhci.c: save block registers to avoid controller bug
ClosedPublic

Authored by bz on May 8 2019, 9:45 AM.
Tags
None
Referenced Files
F103494695: D20197.id57173.diff
Mon, Nov 25, 5:57 PM
Unknown Object (File)
Fri, Nov 22, 4:25 AM
Unknown Object (File)
Sep 26 2024, 3:57 AM
Unknown Object (File)
Sep 25 2024, 1:38 PM
Unknown Object (File)
Sep 25 2024, 7:26 AM
Unknown Object (File)
Sep 24 2024, 5:23 PM
Unknown Object (File)
Sep 24 2024, 4:22 PM
Unknown Object (File)
Sep 23 2024, 12:26 PM
Subscribers

Details

Summary
Extending what the initial revision, r273264, r276985, r277346 have
started for the transfer mode and command registers, another pair of
16bit registers written in sequence are block size and block count,
which fall together onto the same 32bit line and hence the same
register(s) would be written twice in sequence for those as well.

Use a similar approach to transfer mode and command and save the writes
to either of the block regiters and then only execute a write once.
We can do this as with transfer mode their values are meaningless until
a command is issued so we can use that write to command as a trigger
to also write out the block registers.
Compared to transfer mode and command the value of block count can
change, so we need to keep state and actually read the block registers
back the first time after a write.

MFC after:      6 weeks

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

I'd like to commit this the next days. Can someone please review? If not it'll go in by Sat 8 June.

This revision was not accepted when it landed; it landed in state Needs Review.Jun 8 2019, 4:05 PM
This revision was automatically updated to reflect the committed changes.