HomeFreeBSD

bcm2835_sdhci.c: save block registers to avoid controller bug

Description

bcm2835_sdhci.c: save block registers to avoid controller bug

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: 2 weeks
Differential Revision: https://reviews.freebsd.org/D20197

Details

Provenance
bzAuthored on
Differential Revision
D20197: bcm2835_sdhci.c: save block registers to avoid controller bug
Parents
rS348802: Remove lazy FPU switch support from amd64.
Branches
Unknown
Tags
Unknown