On 10/30/2014 12:36 AM, Scott Branden wrote:This Verify workaround patch still a work in progress. I'm still getting more info from the silicon designers on the back-to-back register writes that are affect. The spew of 0x20 or 0x28 or 0x2c register writes are all ok locations that don't need to be worked around. This patch needs to be corrected with the proper register rules still.
Add a verify option to driver to print out an error message if a
potential back to back write could cause a clock domain issue.
index f8c450a..11af27f 100644
+#ifdef CONFIG_MMC_SDHCI_BCM2835_VERIFY_WORKAROUND
+ struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
+ struct bcm2835_sdhci_host *bcm2835_host = pltfm_host->priv;
+
+ if (bcm2835_host->previous_reg == reg) {
+ if ((reg != SDHCI_HOST_CONTROL)
+ && (reg != SDHCI_CLOCK_CONTROL)) {
The comment in patch 3 says the problem doesn't apply to the data
register. Why does this check for these two registers rather than data?
+ dev_err(mmc_dev(host->mmc),
+ "back-to-back write to 0x%x\n", reg);
The continuation line should be indented at least one more level here.