Lines Matching refs:md
168 struct mmc_blk_data *md; member
187 struct mmc_blk_data *md; in mmc_blk_get() local
190 md = disk->private_data; in mmc_blk_get()
191 if (md && !kref_get_unless_zero(&md->kref)) in mmc_blk_get()
192 md = NULL; in mmc_blk_get()
195 return md; in mmc_blk_get()
206 struct mmc_blk_data *md = container_of(ref, struct mmc_blk_data, kref); in mmc_blk_kref_release() local
209 devidx = mmc_get_devidx(md->disk); in mmc_blk_kref_release()
213 md->disk->private_data = NULL; in mmc_blk_kref_release()
216 put_disk(md->disk); in mmc_blk_kref_release()
217 kfree(md); in mmc_blk_kref_release()
220 static void mmc_blk_put(struct mmc_blk_data *md) in mmc_blk_put() argument
222 kref_put(&md->kref, mmc_blk_kref_release); in mmc_blk_put()
229 struct mmc_blk_data *md = mmc_blk_get(dev_to_disk(dev)); in power_ro_lock_show() local
230 struct mmc_card *card = md->queue.card; in power_ro_lock_show()
240 mmc_blk_put(md); in power_ro_lock_show()
249 struct mmc_blk_data *md, *part_md; in power_ro_lock_store() local
260 md = mmc_blk_get(dev_to_disk(dev)); in power_ro_lock_store()
261 mq = &md->queue; in power_ro_lock_store()
277 md->disk->disk_name); in power_ro_lock_store()
278 set_disk_ro(md->disk, 1); in power_ro_lock_store()
280 list_for_each_entry(part_md, &md->part, part) in power_ro_lock_store()
287 mmc_blk_put(md); in power_ro_lock_store()
298 struct mmc_blk_data *md = mmc_blk_get(dev_to_disk(dev)); in force_ro_show() local
302 md->read_only); in force_ro_show()
303 mmc_blk_put(md); in force_ro_show()
312 struct mmc_blk_data *md = mmc_blk_get(dev_to_disk(dev)); in force_ro_store() local
319 set_disk_ro(dev_to_disk(dev), set || md->read_only); in force_ro_store()
322 mmc_blk_put(md); in force_ro_store()
338 struct mmc_blk_data *md = mmc_blk_get(dev_to_disk(dev)); in mmc_disk_attrs_is_visible() local
342 (md->area_type & MMC_BLK_DATA_AREA_BOOT) && in mmc_disk_attrs_is_visible()
343 md->queue.card->ext_csd.boot_ro_lockable) { in mmc_disk_attrs_is_visible()
345 if (!(md->queue.card->ext_csd.boot_ro_lock & in mmc_disk_attrs_is_visible()
350 mmc_blk_put(md); in mmc_disk_attrs_is_visible()
366 struct mmc_blk_data *md = mmc_blk_get(bdev->bd_disk); in mmc_blk_open() local
370 if (md) { in mmc_blk_open()
372 if ((mode & FMODE_WRITE) && md->read_only) { in mmc_blk_open()
373 mmc_blk_put(md); in mmc_blk_open()
384 struct mmc_blk_data *md = disk->private_data; in mmc_blk_release() local
387 mmc_blk_put(md); in mmc_blk_release()
472 static int __mmc_blk_ioctl_cmd(struct mmc_card *card, struct mmc_blk_data *md, in __mmc_blk_ioctl_cmd() argument
484 if (!card || !md || !idata) in __mmc_blk_ioctl_cmd()
504 target_part = md->part_type; in __mmc_blk_ioctl_cmd()
649 static int mmc_blk_ioctl_cmd(struct mmc_blk_data *md, in mmc_blk_ioctl_cmd() argument
666 card = md->queue.card; in mmc_blk_ioctl_cmd()
675 mq = &md->queue; in mmc_blk_ioctl_cmd()
699 static int mmc_blk_ioctl_multi_cmd(struct mmc_blk_data *md, in mmc_blk_ioctl_multi_cmd() argument
736 card = md->queue.card; in mmc_blk_ioctl_multi_cmd()
746 mq = &md->queue; in mmc_blk_ioctl_multi_cmd()
791 struct mmc_blk_data *md; in mmc_blk_ioctl() local
799 md = mmc_blk_get(bdev->bd_disk); in mmc_blk_ioctl()
800 if (!md) in mmc_blk_ioctl()
802 ret = mmc_blk_ioctl_cmd(md, in mmc_blk_ioctl()
805 mmc_blk_put(md); in mmc_blk_ioctl()
811 md = mmc_blk_get(bdev->bd_disk); in mmc_blk_ioctl()
812 if (!md) in mmc_blk_ioctl()
814 ret = mmc_blk_ioctl_multi_cmd(md, in mmc_blk_ioctl()
817 mmc_blk_put(md); in mmc_blk_ioctl()
835 struct mmc_blk_data *md; in mmc_blk_alternative_gpt_sector() local
838 md = mmc_blk_get(disk); in mmc_blk_alternative_gpt_sector()
839 if (!md) in mmc_blk_alternative_gpt_sector()
842 if (md->queue.card) in mmc_blk_alternative_gpt_sector()
843 ret = mmc_card_alternative_gpt_sector(md->queue.card, sector); in mmc_blk_alternative_gpt_sector()
847 mmc_blk_put(md); in mmc_blk_alternative_gpt_sector()
1024 static int mmc_blk_reset(struct mmc_blk_data *md, struct mmc_host *host, in mmc_blk_reset() argument
1030 if (md->reset_done & type) in mmc_blk_reset()
1033 md->reset_done |= type; in mmc_blk_reset()
1048 part_err = mmc_blk_part_switch(host->card, md->part_type); in mmc_blk_reset()
1062 static inline void mmc_blk_reset_success(struct mmc_blk_data *md, int type) in mmc_blk_reset_success() argument
1064 md->reset_done &= ~type; in mmc_blk_reset_success()
1090 struct mmc_blk_data *md = mq->blkdata; in mmc_blk_issue_drv_op() local
1115 ret = __mmc_blk_ioctl_cmd(card, md, idata, i); in mmc_blk_issue_drv_op()
1132 md->disk->disk_name, ret); in mmc_blk_issue_drv_op()
1148 md->disk->disk_name); in mmc_blk_issue_drv_op()
1158 struct mmc_blk_data *md = mq->blkdata; in mmc_blk_issue_discard_rq() local
1159 struct mmc_card *card = md->queue.card; in mmc_blk_issue_discard_rq()
1189 } while (err == -EIO && !mmc_blk_reset(md, card->host, type)); in mmc_blk_issue_discard_rq()
1193 mmc_blk_reset_success(md, type); in mmc_blk_issue_discard_rq()
1201 struct mmc_blk_data *md = mq->blkdata; in mmc_blk_issue_secdiscard_rq() local
1202 struct mmc_card *card = md->queue.card; in mmc_blk_issue_secdiscard_rq()
1260 if (err && !mmc_blk_reset(md, card->host, type)) in mmc_blk_issue_secdiscard_rq()
1263 mmc_blk_reset_success(md, type); in mmc_blk_issue_secdiscard_rq()
1270 struct mmc_blk_data *md = mq->blkdata; in mmc_blk_issue_flush() local
1271 struct mmc_card *card = md->queue.card; in mmc_blk_issue_flush()
1359 struct mmc_blk_data *md = mq->blkdata; in mmc_blk_data_prep() local
1360 struct mmc_card *card = md->queue.card; in mmc_blk_data_prep()
1371 (md->flags & MMC_BLK_REL_WR); in mmc_blk_data_prep()
1418 get_capacity(md->disk))) in mmc_blk_data_prep()
1652 struct mmc_blk_data *md = mq->blkdata; in mmc_blk_rw_rq_prep() local
1698 if ((md->flags & MMC_BLK_CMD23) && mmc_op_multi(brq->cmd.opcode) && in mmc_blk_rw_rq_prep()
1860 struct mmc_blk_data *md = mq->blkdata; in mmc_blk_mq_rw_recovery() local
1909 err && mmc_blk_reset(md, card->host, type)) { in mmc_blk_mq_rw_recovery()
1925 mmc_blk_reset(md, card->host, type)) in mmc_blk_mq_rw_recovery()
2371 struct mmc_blk_data *md = mq->blkdata; in mmc_blk_mq_issue_rq() local
2372 struct mmc_card *card = md->queue.card; in mmc_blk_mq_issue_rq()
2376 ret = mmc_blk_part_switch(card, md->part_type); in mmc_blk_mq_issue_rq()
2448 struct mmc_blk_data *md; in mmc_blk_alloc_req() local
2470 md = kzalloc(sizeof(struct mmc_blk_data), GFP_KERNEL); in mmc_blk_alloc_req()
2471 if (!md) { in mmc_blk_alloc_req()
2476 md->area_type = area_type; in mmc_blk_alloc_req()
2482 md->read_only = mmc_blk_readonly(card); in mmc_blk_alloc_req()
2484 md->disk = mmc_init_queue(&md->queue, card); in mmc_blk_alloc_req()
2485 if (IS_ERR(md->disk)) { in mmc_blk_alloc_req()
2486 ret = PTR_ERR(md->disk); in mmc_blk_alloc_req()
2490 INIT_LIST_HEAD(&md->part); in mmc_blk_alloc_req()
2491 INIT_LIST_HEAD(&md->rpmbs); in mmc_blk_alloc_req()
2492 kref_init(&md->kref); in mmc_blk_alloc_req()
2494 md->queue.blkdata = md; in mmc_blk_alloc_req()
2495 md->part_type = part_type; in mmc_blk_alloc_req()
2497 md->disk->major = MMC_BLOCK_MAJOR; in mmc_blk_alloc_req()
2498 md->disk->minors = perdev_minors; in mmc_blk_alloc_req()
2499 md->disk->first_minor = devidx * perdev_minors; in mmc_blk_alloc_req()
2500 md->disk->fops = &mmc_bdops; in mmc_blk_alloc_req()
2501 md->disk->private_data = md; in mmc_blk_alloc_req()
2502 md->parent = parent; in mmc_blk_alloc_req()
2503 set_disk_ro(md->disk, md->read_only || default_ro); in mmc_blk_alloc_req()
2504 md->disk->flags = GENHD_FL_EXT_DEVT; in mmc_blk_alloc_req()
2506 md->disk->flags |= GENHD_FL_NO_PART | in mmc_blk_alloc_req()
2521 snprintf(md->disk->disk_name, sizeof(md->disk->disk_name), in mmc_blk_alloc_req()
2524 set_capacity(md->disk, size); in mmc_blk_alloc_req()
2531 md->flags |= MMC_BLK_CMD23; in mmc_blk_alloc_req()
2534 if (md->flags & MMC_BLK_CMD23 && in mmc_blk_alloc_req()
2537 md->flags |= MMC_BLK_REL_WR; in mmc_blk_alloc_req()
2544 blk_queue_write_cache(md->queue.queue, cache_enabled, fua_enabled); in mmc_blk_alloc_req()
2549 md->disk->disk_name, mmc_card_id(card), mmc_card_name(card), in mmc_blk_alloc_req()
2550 cap_str, md->read_only ? "(ro)" : ""); in mmc_blk_alloc_req()
2554 dev_set_drvdata(&card->dev, md); in mmc_blk_alloc_req()
2555 device_add_disk(md->parent, md->disk, mmc_disk_attr_groups); in mmc_blk_alloc_req()
2556 return md; in mmc_blk_alloc_req()
2559 kfree(md); in mmc_blk_alloc_req()
2589 struct mmc_blk_data *md, in mmc_blk_alloc_part() argument
2598 part_md = mmc_blk_alloc_req(card, disk_to_dev(md->disk), size, default_ro, in mmc_blk_alloc_part()
2602 list_add(&part_md->part, &md->part); in mmc_blk_alloc_part()
2624 ret = mmc_blk_ioctl_cmd(rpmb->md, in mmc_rpmb_ioctl()
2629 ret = mmc_blk_ioctl_multi_cmd(rpmb->md, in mmc_rpmb_ioctl()
2656 mmc_blk_get(rpmb->md->disk); in mmc_rpmb_chrdev_open()
2666 mmc_blk_put(rpmb->md); in mmc_rpmb_chrdev_release()
2692 struct mmc_blk_data *md, in mmc_blk_alloc_rpmb_part() argument
2725 rpmb->md = md; in mmc_blk_alloc_rpmb_part()
2735 list_add(&rpmb->node, &md->rpmbs); in mmc_blk_alloc_rpmb_part()
2764 static int mmc_blk_alloc_parts(struct mmc_card *card, struct mmc_blk_data *md) in mmc_blk_alloc_parts() argument
2779 ret = mmc_blk_alloc_rpmb_part(card, md, in mmc_blk_alloc_parts()
2786 ret = mmc_blk_alloc_part(card, md, in mmc_blk_alloc_parts()
2800 static void mmc_blk_remove_req(struct mmc_blk_data *md) in mmc_blk_remove_req() argument
2806 del_gendisk(md->disk); in mmc_blk_remove_req()
2807 mmc_cleanup_queue(&md->queue); in mmc_blk_remove_req()
2808 mmc_blk_put(md); in mmc_blk_remove_req()
2812 struct mmc_blk_data *md) in mmc_blk_remove_parts() argument
2819 list_for_each_safe(pos, q, &md->rpmbs) { in mmc_blk_remove_parts()
2825 list_for_each_safe(pos, q, &md->part) { in mmc_blk_remove_parts()
2837 struct mmc_blk_data *md = dev_get_drvdata(&card->dev); in mmc_dbg_card_status_get() local
2838 struct mmc_queue *mq = &md->queue; in mmc_dbg_card_status_get()
2867 struct mmc_blk_data *md = dev_get_drvdata(&card->dev); in mmc_ext_csd_open() local
2868 struct mmc_queue *mq = &md->queue; in mmc_ext_csd_open()
2937 static int mmc_blk_add_debugfs(struct mmc_card *card, struct mmc_blk_data *md) in mmc_blk_add_debugfs() argument
2947 md->status_dentry = in mmc_blk_add_debugfs()
2951 if (!md->status_dentry) in mmc_blk_add_debugfs()
2956 md->ext_csd_dentry = in mmc_blk_add_debugfs()
2959 if (!md->ext_csd_dentry) in mmc_blk_add_debugfs()
2967 struct mmc_blk_data *md) in mmc_blk_remove_debugfs() argument
2972 if (!IS_ERR_OR_NULL(md->status_dentry)) { in mmc_blk_remove_debugfs()
2973 debugfs_remove(md->status_dentry); in mmc_blk_remove_debugfs()
2974 md->status_dentry = NULL; in mmc_blk_remove_debugfs()
2977 if (!IS_ERR_OR_NULL(md->ext_csd_dentry)) { in mmc_blk_remove_debugfs()
2978 debugfs_remove(md->ext_csd_dentry); in mmc_blk_remove_debugfs()
2979 md->ext_csd_dentry = NULL; in mmc_blk_remove_debugfs()
2985 static int mmc_blk_add_debugfs(struct mmc_card *card, struct mmc_blk_data *md) in mmc_blk_add_debugfs() argument
2991 struct mmc_blk_data *md) in mmc_blk_remove_debugfs() argument
2999 struct mmc_blk_data *md; in mmc_blk_probe() local
3017 md = mmc_blk_alloc(card); in mmc_blk_probe()
3018 if (IS_ERR(md)) { in mmc_blk_probe()
3019 ret = PTR_ERR(md); in mmc_blk_probe()
3023 ret = mmc_blk_alloc_parts(card, md); in mmc_blk_probe()
3028 mmc_blk_add_debugfs(card, md); in mmc_blk_probe()
3045 mmc_blk_remove_parts(card, md); in mmc_blk_probe()
3046 mmc_blk_remove_req(md); in mmc_blk_probe()
3054 struct mmc_blk_data *md = dev_get_drvdata(&card->dev); in mmc_blk_remove() local
3056 mmc_blk_remove_debugfs(card, md); in mmc_blk_remove()
3057 mmc_blk_remove_parts(card, md); in mmc_blk_remove()
3059 if (md->part_curr != md->part_type) { in mmc_blk_remove()
3061 mmc_blk_part_switch(card, md->part_type); in mmc_blk_remove()
3067 mmc_blk_remove_req(md); in mmc_blk_remove()
3075 struct mmc_blk_data *md = dev_get_drvdata(&card->dev); in _mmc_blk_suspend() local
3077 if (md) { in _mmc_blk_suspend()
3078 mmc_queue_suspend(&md->queue); in _mmc_blk_suspend()
3079 list_for_each_entry(part_md, &md->part, part) { in _mmc_blk_suspend()
3102 struct mmc_blk_data *md = dev_get_drvdata(dev); in mmc_blk_resume() local
3104 if (md) { in mmc_blk_resume()
3109 md->part_curr = md->part_type; in mmc_blk_resume()
3110 mmc_queue_resume(&md->queue); in mmc_blk_resume()
3111 list_for_each_entry(part_md, &md->part, part) { in mmc_blk_resume()