MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / rt_mmcsd_blk_probe

Function rt_mmcsd_blk_probe

components/drivers/sdio/dev_block.c:353–406  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

351};
352
353rt_int32_t rt_mmcsd_blk_probe(struct rt_mmcsd_card *card)
354{
355 rt_err_t err;
356 struct rt_mmcsd_host *host = card->host;
357 struct mmcsd_blk_device *blk_dev = rt_calloc(1, sizeof(*blk_dev));
358
359 if (!blk_dev)
360 {
361 return -RT_ENOMEM;
362 }
363 card->blk_dev = blk_dev;
364
365#ifdef RT_USING_DM
366 blk_dev->parent.ida = &sdio_ida;
367#endif
368 blk_dev->parent.parallel_io = RT_FALSE;
369 blk_dev->parent.removable = controller_is_removable(host);
370 blk_dev->parent.ops = &mmcsd_blk_ops;
371 blk_dev->parent.max_partitions = RT_MMCSD_MAX_PARTITION;
372
373 blk_dev->card = card;
374 blk_dev->max_req_size = rt_min_t(rt_size_t,
375 host->max_dma_segs * host->max_seg_size,
376 host->max_blk_count * host->max_blk_size) >> 9;
377 blk_dev->geometry.bytes_per_sector = 1 << 9;
378 blk_dev->geometry.block_size = card->card_blksize;
379 blk_dev->geometry.sector_count = card->card_capacity * (1024 / 512);
380
381 /* Set blk size before partitions probe, Why? */
382 if ((err = mmcsd_set_blksize(card)))
383 {
384 goto _fail;
385 }
386 rt_thread_mdelay(1);
387
388#ifdef RT_USING_DM
389 rt_dm_dev_set_name(&blk_dev->parent.parent, host->name);
390#else
391 rt_strncpy(blk_dev->parent.parent.parent.name, host->name, RT_NAME_MAX);
392#endif
393
394 if ((err = rt_hw_blk_disk_register(&blk_dev->parent)))
395 {
396 goto _fail;
397 }
398
399 return RT_EOK;
400
401_fail:
402 card->blk_dev = RT_NULL;
403 free(blk_dev);
404
405 return err;
406}
407
408void rt_mmcsd_blk_remove(struct rt_mmcsd_card *card)
409{

Callers 2

init_sdFunction · 0.85
init_mmcFunction · 0.85

Calls 6

rt_callocFunction · 0.85
mmcsd_set_blksizeFunction · 0.85
rt_thread_mdelayFunction · 0.85
rt_dm_dev_set_nameFunction · 0.85
rt_strncpyFunction · 0.85
freeFunction · 0.50

Tested by

no test coverage detected