struct sdio_func 是怎样的
时间: 2024-02-28 13:52:48 浏览: 357
`struct sdio_func`是Linux内核中表示SDIO设备的结构体,它包含了SDIO设备的各种信息。在Linux内核中,每个SDIO设备都对应着一个`struct sdio_func`结构体,通过该结构体可以访问SDIO设备的寄存器、执行SDIO命令、发送和接收数据等。
`struct sdio_func`结构体定义如下:
```
struct sdio_func {
u32 num; // SDIO设备的编号
struct mmc_card *card; // 对应的MMC卡
struct mmc_host *host; // 所在的MMC主机
unsigned int max_blksize; // 最大块大小
unsigned int cur_blksize; // 当前块大小
unsigned int enable_timeout_ms; // 使能超时时间
unsigned int io_abort; // 是否中断IO操作
void *class_dev; // 对应的设备结构体
struct sdio_func_tuple *tuples; // SDIO Tuple列表
unsigned int num_info; // Tuple的数量
unsigned int state; // SDIO设备状态
unsigned int irq_handler; // 中断处理函数
void *irq_data; // 中断处理函数的参数
unsigned int card_busy; // 卡忙标志
unsigned int ocr; // OCR寄存器的值
unsigned int cccr; // CCCR寄存器的值
unsigned int cisd; // CISD寄存器的值
unsigned int sdio_irqs; // SDIO中断标志
unsigned int num_funcs; // SDIO设备的函数数
struct sdio_func_tuple *common_cis; // 公共CIS
struct sdio_func_tuple *cis; // CIS
struct sdio_func_tuple *cccr_func; // CCCR函数
struct sdio_func_tuple *tuples_buf; // Tuple缓存
unsigned int max_busy_timeout; // 最大卡忙超时时间
unsigned int max_timeout; // 最大超时时间
unsigned int max_seg_size; // 最大段大小
unsigned int multi_block; // 是否支持多块传输
unsigned int no_preblock; // 不需要块预处理
unsigned int sdio_ver; // SDIO版本
unsigned int sd_ver; // SD版本
unsigned int sdio_funcs[8]; // SDIO设备的函数信息
struct device dev; // 对应的设备结构体
};
```
`struct sdio_func`结构体中包含了SDIO设备的编号、对应的MMC卡、所在的MMC主机、最大块大小、当前块大小、使能超时时间、中断处理函数、设备结构体等信息。在使用`struct sdio_func`结构体时,可以根据SDIO设备的编号、MMC卡和MMC主机等信息来获取相应的`struct sdio_func`结构体,然后通过该结构体访问SDIO设备的寄存器、执行SDIO命令、发送和接收数据等。
阅读全文