上面这段代码注册了内核在start_kernel()中会调用的函数,如map_io提供将各IP寄存器地址到内核虚拟地址的转换,init_early()函数由start_kernel()--->setup_arch()--->mdesc->init_early()调用,其余的init_irq,handle_irq()等会在start_kernel()中分别调用。其中init_machine()函数用于初始化各IP模块的device...
sdio_init_func(host->card, i + 1); --->func = sdio_alloc_func(card); //分配struct sdio_fun(sdio功能设备)结构体 mmc_io_rw_direct(); card->sdio_func[fn - 1] = func; mmc_add_card(host->card); //将详细的sdio设备挂载到mmc_bus_types 总线 sdio_add_func(host->card->sdio_func...
structsdio_func *sdio_func[SDIO_MAX_FUNCS]; //SDIO functions (devices) sdio_init_func(host->card, i + 1); —>func = sdio_alloc_func(card); //分配struct sdio_fun(sdio功能设备)结构体 mmc_io_rw_direct(); card->sdio_func[fn – 1] = func; mmc_add_card(host->card); //将具体...
sdio_init_func(host->card, i + 1); --->func = sdio_alloc_func(card); //分配struct sdio_fun(sdio功能设备)结构体 mmc_io_rw_direct(); card->sdio_func[fn - 1] = func; mmc_add_card(host->card); //将详细的sdio设备挂载到mmc_bus_types 总线 sdio_add_func(host->card->sdio_func...
INIT_WORK(&card->packet_worker, if_sdio_host_to_card_worker); if_sdio_host_to_card_worker(struct work_struct *work) ---> sdio_writesb(card->func, card->ioport,packet->buffer, packet->nb); //将io端口、sk_buff的数据包信息写到card->func中。 -...
3)sdio_init_func-> sdioreadfbr->(cmd52…)读取fbr sdioreadfunccis->(cmd52…) 读取CIS,读取function的CIS与前面sdio_read_common_cis读取CIS是一样的流程,只是读取CIS的地址不同,CIS的内容也不同而已。 其中一个很重要的参数是:func->max_blksize; ...
INIT_WORK(&card->packet_worker, if_sdio_host_to_card_worker); if_sdio_host_to_card_worker(struct work_struct *work) ---> sdio_writesb(card->func, card->ioport,packet->buffer, packet->nb); //将io端口、sk_buff的数据包信息写到card->func中。 -...
紧接着2.2.5后面,在函数sdio_init_func()函数中将创建一个device对象并挂载到sdio_bus_type上。具体的流程参考5.1。 2.2.7 小结 到此为止,mmc下三条总线、六个device/driver对象只差一个sdio driver了。这个driver对象对应着具体的sdio IP驱动,比如sdio_wifi, sdio_uart等。这样来看sdio IP驱动其实是构建在mmc...
sdio_init_func(host->card, i + 1); --->func = sdio_alloc_func(card); //分配struct sdio_fun(sdio功能设备)结构体 mmc_io_rw_direct(); card->sdio_func[fn - 1] = func; mmc_add_card(host->card); //将具体的sdio设备挂载到mmc_bus_types 总线 ...
28、 35. sdio_init_func(host->card, i + 1); 36. ->func = sdio_alloc_func(card); /分配struct sdio_fun(sdio功能设备)结构体 37. mmc_io_rw_direct(); 38. &29、#160; card->sdio_funcfn - 1 = func; 39. 40. mmc_add_card(host->card); /将具体的sdio设备挂载到mmc_bus_types ...