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
Unknown Object (File)
Thu, Mar 28, 5:30 PM
Unknown Object (File)
Feb 19 2024, 5:49 PM
Unknown Object (File)
Dec 13 2023, 10:33 PM
Unknown Object (File)
Oct 29 2023, 10:26 AM
Unknown Object (File)
Oct 12 2023, 6:23 PM
Unknown Object (File)
Aug 27 2023, 1:28 PM
Unknown Object (File)
Jul 14 2023, 8:38 PM
Unknown Object (File)
May 27 2023, 11:57 AM
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.