/* migrate from sdhci_of_host */ unsignedint clock;
u16 xfer_mode_shadow;
unsignedlongprivate[] ____cacheline_aligned;
};
#ifdef CONFIG_MMC_SDHCI_BIG_ENDIAN_32BIT_BYTE_SWAPPER /* * These accessors are designed for big endian hosts doing I/O to * little endian controllers incorporating a 32-bit hardware byte swapper.
*/ staticinline u32 sdhci_be32bs_readl(struct sdhci_host *host, int reg)
{ return in_be32(host->ioaddr + reg);
}
staticinlinevoid sdhci_be32bs_writew(struct sdhci_host *host,
u16 val, int reg)
{ struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); int base = reg & ~0x3; int shift = (reg & 0x2) * 8;
switch (reg) { case SDHCI_TRANSFER_MODE: /* * Postpone this write, we must do it together with a * command write that is down below.
*/
pltfm_host->xfer_mode_shadow = val; return; case SDHCI_COMMAND:
sdhci_be32bs_writel(host,
val << 16 | pltfm_host->xfer_mode_shadow,
SDHCI_TRANSFER_MODE); return;
}
clrsetbits_be32(host->ioaddr + base, 0xffff << shift, val << shift);
}
staticinlinevoid sdhci_be32bs_writeb(struct sdhci_host *host, u8 val, int reg)
{ int base = reg & ~0x3; int shift = (reg & 0x3) * 8;
clrsetbits_be32(host->ioaddr + base , 0xff << shift, val << shift);
} #endif/* CONFIG_MMC_SDHCI_BIG_ENDIAN_32BIT_BYTE_SWAPPER */
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.