sdhci.h

本文详细介绍了SDHCI控制器的各种特性及偏离规范的行为标志,包括时钟配置、DMA支持、电源管理等方面的问题及其解决方案。
struct sdhci_host {
	/* Data set by hardware interface driver */
	const char *hw_name;	/* Hardware bus name */

	unsigned int quirks;	/* Deviations from spec. */

/* 在复位前需要设置时钟 */
/* Controller doesn't honor resets unless we touch the clock register */
#define SDHCI_QUIRK_CLOCK_BEFORE_RESET			(1<<0)

/* 强制使用DMA */
/* Controller has bad caps bits, but really supports DMA */
#define SDHCI_QUIRK_FORCE_DMA				(1<<1)

/* 没有卡插入时不复位 */
/* Controller doesn't like to be reset when there is no card inserted. */
#define SDHCI_QUIRK_NO_CARD_NO_RESET			(1<<2)

/* 控制器不喜欢在MMC_VDD改变前清除电源寄存器 */
/* 遇到这个,直接改电源寄存器,不清除 */
/* Controller doesn't like clearing the power reg before a change */
#define SDHCI_QUIRK_SINGLE_POWER_WRITE			(1<<3)

/* 在sdhci_do_set_ios()中会用到 */
/* 解释:有些控制器在一些操作时会疯,即使是CMD0,解决方法就是复位每一个IOS */
/* Controller has flaky internal state so reset it on each ios change */
#define SDHCI_QUIRK_RESET_CMD_DATA_ON_IOS		(1<<4)

/* 控制器有一个不可使用的DMA引擎 */
/* Controller has an unusable DMA engine */
#define SDHCI_QUIRK_BROKEN_DMA				(1<<5)

/* ADMA: Advanced DMA */
/* 控制器有一个不可使用的ADMA引擎 */
/* Controller has an unusable ADMA engine */
#define SDHCI_QUIRK_BROKEN_ADMA				(1<<6)

/* DMA要32位地址对齐 */
/* Controller can only DMA from 32-bit aligned addresses */
#define SDHCI_QUIRK_32BIT_DMA_ADDR			(1<<7)

/* DMA的大小是32的倍数 */
/* Controller can only DMA chunk sizes that are a multiple of 32 bits */
#define SDHCI_QUIRK_32BIT_DMA_SIZE			(1<<8)

/* ADMA的大小是32位的倍数 */
/* Controller can only ADMA chunks that are a multiple of 32 bits */
#define SDHCI_QUIRK_32BIT_ADMA_SIZE			(1<<9)

/* 每个请求之后,控制器需要复位来爆出稳定 */
/* 在sdhci_tasklet_finish()中,即任务完成时, */
/* 当host->quirks & SDHCI_QUIRK_RESET_AFTER_REQUEST成立时,执行复位 */
/* Controller needs to be reset after each request to stay stable */
#define SDHCI_QUIRK_RESET_AFTER_REQUEST			(1<<10)

/* 控制器需要分别写入电压和电源 */
/* 这个标准是开启电源时,要先设置电压 */
/* Marvell CaFe芯片就是如此,代码上要先设置,再或上SDHCI_POWER_ON开启 */
/*     if (host->quirks & SDHCI_Q
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值