Lines Matching refs:md

165 	struct mmc_blk_data *md;  member
184 struct mmc_blk_data *md; in mmc_blk_get() local
187 md = disk->private_data; in mmc_blk_get()
188 if (md && !kref_get_unless_zero(&md->kref)) in mmc_blk_get()
189 md = NULL; in mmc_blk_get()
192 return md; in mmc_blk_get()
203 struct mmc_blk_data *md = container_of(ref, struct mmc_blk_data, kref); in mmc_blk_kref_release() local
206 devidx = mmc_get_devidx(md->disk); in mmc_blk_kref_release()
210 md->disk->private_data = NULL; in mmc_blk_kref_release()
213 put_disk(md->disk); in mmc_blk_kref_release()
214 kfree(md); in mmc_blk_kref_release()
217 static void mmc_blk_put(struct mmc_blk_data *md) in mmc_blk_put() argument
219 kref_put(&md->kref, mmc_blk_kref_release); in mmc_blk_put()
226 struct mmc_blk_data *md = mmc_blk_get(dev_to_disk(dev)); in power_ro_lock_show() local
227 struct mmc_card *card = md->queue.card; in power_ro_lock_show()
237 mmc_blk_put(md); in power_ro_lock_show()
246 struct mmc_blk_data *md, *part_md; in power_ro_lock_store() local
257 md = mmc_blk_get(dev_to_disk(dev)); in power_ro_lock_store()
258 mq = &md->queue; in power_ro_lock_store()
273 md->disk->disk_name); in power_ro_lock_store()
274 set_disk_ro(md->disk, 1); in power_ro_lock_store()
276 list_for_each_entry(part_md, &md->part, part) in power_ro_lock_store()
283 mmc_blk_put(md); in power_ro_lock_store()
294 struct mmc_blk_data *md = mmc_blk_get(dev_to_disk(dev)); in force_ro_show() local
298 md->read_only); in force_ro_show()
299 mmc_blk_put(md); in force_ro_show()
308 struct mmc_blk_data *md = mmc_blk_get(dev_to_disk(dev)); in force_ro_store() local
315 set_disk_ro(dev_to_disk(dev), set || md->read_only); in force_ro_store()
318 mmc_blk_put(md); in force_ro_store()
334 struct mmc_blk_data *md = mmc_blk_get(dev_to_disk(dev)); in mmc_disk_attrs_is_visible() local
338 (md->area_type & MMC_BLK_DATA_AREA_BOOT) && in mmc_disk_attrs_is_visible()
339 md->queue.card->ext_csd.boot_ro_lockable) { in mmc_disk_attrs_is_visible()
341 if (!(md->queue.card->ext_csd.boot_ro_lock & in mmc_disk_attrs_is_visible()
346 mmc_blk_put(md); in mmc_disk_attrs_is_visible()
362 struct mmc_blk_data *md = mmc_blk_get(bdev->bd_disk); in mmc_blk_open() local
366 if (md) { in mmc_blk_open()
368 if ((mode & FMODE_WRITE) && md->read_only) { in mmc_blk_open()
369 mmc_blk_put(md); in mmc_blk_open()
380 struct mmc_blk_data *md = disk->private_data; in mmc_blk_release() local
383 mmc_blk_put(md); in mmc_blk_release()
464 static int __mmc_blk_ioctl_cmd(struct mmc_card *card, struct mmc_blk_data *md, in __mmc_blk_ioctl_cmd() argument
474 if (!card || !md || !idata) in __mmc_blk_ioctl_cmd()
488 target_part = md->part_type; in __mmc_blk_ioctl_cmd()
622 static int mmc_blk_ioctl_cmd(struct mmc_blk_data *md, in mmc_blk_ioctl_cmd() argument
639 card = md->queue.card; in mmc_blk_ioctl_cmd()
648 mq = &md->queue; in mmc_blk_ioctl_cmd()
671 static int mmc_blk_ioctl_multi_cmd(struct mmc_blk_data *md, in mmc_blk_ioctl_multi_cmd() argument
708 card = md->queue.card; in mmc_blk_ioctl_multi_cmd()
718 mq = &md->queue; in mmc_blk_ioctl_multi_cmd()
762 struct mmc_blk_data *md; in mmc_blk_ioctl() local
770 md = mmc_blk_get(bdev->bd_disk); in mmc_blk_ioctl()
771 if (!md) in mmc_blk_ioctl()
773 ret = mmc_blk_ioctl_cmd(md, in mmc_blk_ioctl()
776 mmc_blk_put(md); in mmc_blk_ioctl()
782 md = mmc_blk_get(bdev->bd_disk); in mmc_blk_ioctl()
783 if (!md) in mmc_blk_ioctl()
785 ret = mmc_blk_ioctl_multi_cmd(md, in mmc_blk_ioctl()
788 mmc_blk_put(md); in mmc_blk_ioctl()
806 struct mmc_blk_data *md; in mmc_blk_alternative_gpt_sector() local
809 md = mmc_blk_get(disk); in mmc_blk_alternative_gpt_sector()
810 if (!md) in mmc_blk_alternative_gpt_sector()
813 if (md->queue.card) in mmc_blk_alternative_gpt_sector()
814 ret = mmc_card_alternative_gpt_sector(md->queue.card, sector); in mmc_blk_alternative_gpt_sector()
818 mmc_blk_put(md); in mmc_blk_alternative_gpt_sector()
987 static int mmc_blk_reset(struct mmc_blk_data *md, struct mmc_host *host, in mmc_blk_reset() argument
992 if (md->reset_done & type) in mmc_blk_reset()
995 md->reset_done |= type; in mmc_blk_reset()
1004 part_err = mmc_blk_part_switch(host->card, md->part_type); in mmc_blk_reset()
1016 static inline void mmc_blk_reset_success(struct mmc_blk_data *md, int type) in mmc_blk_reset_success() argument
1018 md->reset_done &= ~type; in mmc_blk_reset_success()
1030 struct mmc_blk_data *md = mq->blkdata; in mmc_blk_issue_drv_op() local
1052 ret = __mmc_blk_ioctl_cmd(card, md, idata[i]); in mmc_blk_issue_drv_op()
1069 md->disk->disk_name, ret); in mmc_blk_issue_drv_op()
1085 md->disk->disk_name); in mmc_blk_issue_drv_op()
1095 struct mmc_blk_data *md = mq->blkdata; in mmc_blk_issue_discard_rq() local
1096 struct mmc_card *card = md->queue.card; in mmc_blk_issue_discard_rq()
1121 } while (err == -EIO && !mmc_blk_reset(md, card->host, type)); in mmc_blk_issue_discard_rq()
1125 mmc_blk_reset_success(md, type); in mmc_blk_issue_discard_rq()
1133 struct mmc_blk_data *md = mq->blkdata; in mmc_blk_issue_secdiscard_rq() local
1134 struct mmc_card *card = md->queue.card; in mmc_blk_issue_secdiscard_rq()
1192 if (err && !mmc_blk_reset(md, card->host, type)) in mmc_blk_issue_secdiscard_rq()
1195 mmc_blk_reset_success(md, type); in mmc_blk_issue_secdiscard_rq()
1202 struct mmc_blk_data *md = mq->blkdata; in mmc_blk_issue_flush() local
1203 struct mmc_card *card = md->queue.card; in mmc_blk_issue_flush()
1291 struct mmc_blk_data *md = mq->blkdata; in mmc_blk_data_prep() local
1292 struct mmc_card *card = md->queue.card; in mmc_blk_data_prep()
1303 (md->flags & MMC_BLK_REL_WR); in mmc_blk_data_prep()
1350 get_capacity(md->disk))) in mmc_blk_data_prep()
1583 struct mmc_blk_data *md = mq->blkdata; in mmc_blk_rw_rq_prep() local
1629 if ((md->flags & MMC_BLK_CMD23) && mmc_op_multi(brq->cmd.opcode) && in mmc_blk_rw_rq_prep()
1790 struct mmc_blk_data *md = mq->blkdata; in mmc_blk_mq_rw_recovery() local
1839 err && mmc_blk_reset(md, card->host, type)) { in mmc_blk_mq_rw_recovery()
1854 mmc_blk_reset(md, card->host, type); in mmc_blk_mq_rw_recovery()
2267 struct mmc_blk_data *md = mq->blkdata; in mmc_blk_mq_issue_rq() local
2268 struct mmc_card *card = md->queue.card; in mmc_blk_mq_issue_rq()
2272 ret = mmc_blk_part_switch(card, md->part_type); in mmc_blk_mq_issue_rq()
2344 struct mmc_blk_data *md; in mmc_blk_alloc_req() local
2364 md = kzalloc(sizeof(struct mmc_blk_data), GFP_KERNEL); in mmc_blk_alloc_req()
2365 if (!md) { in mmc_blk_alloc_req()
2370 md->area_type = area_type; in mmc_blk_alloc_req()
2376 md->read_only = mmc_blk_readonly(card); in mmc_blk_alloc_req()
2378 md->disk = mmc_init_queue(&md->queue, card); in mmc_blk_alloc_req()
2379 if (IS_ERR(md->disk)) { in mmc_blk_alloc_req()
2380 ret = PTR_ERR(md->disk); in mmc_blk_alloc_req()
2384 INIT_LIST_HEAD(&md->part); in mmc_blk_alloc_req()
2385 INIT_LIST_HEAD(&md->rpmbs); in mmc_blk_alloc_req()
2386 kref_init(&md->kref); in mmc_blk_alloc_req()
2388 md->queue.blkdata = md; in mmc_blk_alloc_req()
2389 md->part_type = part_type; in mmc_blk_alloc_req()
2391 md->disk->major = MMC_BLOCK_MAJOR; in mmc_blk_alloc_req()
2392 md->disk->minors = perdev_minors; in mmc_blk_alloc_req()
2393 md->disk->first_minor = devidx * perdev_minors; in mmc_blk_alloc_req()
2394 md->disk->fops = &mmc_bdops; in mmc_blk_alloc_req()
2395 md->disk->private_data = md; in mmc_blk_alloc_req()
2396 md->parent = parent; in mmc_blk_alloc_req()
2397 set_disk_ro(md->disk, md->read_only || default_ro); in mmc_blk_alloc_req()
2398 md->disk->flags = GENHD_FL_EXT_DEVT; in mmc_blk_alloc_req()
2400 md->disk->flags |= GENHD_FL_NO_PART_SCAN in mmc_blk_alloc_req()
2415 snprintf(md->disk->disk_name, sizeof(md->disk->disk_name), in mmc_blk_alloc_req()
2418 set_capacity(md->disk, size); in mmc_blk_alloc_req()
2425 md->flags |= MMC_BLK_CMD23; in mmc_blk_alloc_req()
2429 md->flags & MMC_BLK_CMD23 && in mmc_blk_alloc_req()
2432 md->flags |= MMC_BLK_REL_WR; in mmc_blk_alloc_req()
2433 blk_queue_write_cache(md->queue.queue, true, true); in mmc_blk_alloc_req()
2439 md->disk->disk_name, mmc_card_id(card), mmc_card_name(card), in mmc_blk_alloc_req()
2440 cap_str, md->read_only ? "(ro)" : ""); in mmc_blk_alloc_req()
2444 dev_set_drvdata(&card->dev, md); in mmc_blk_alloc_req()
2445 ret = device_add_disk(md->parent, md->disk, mmc_disk_attr_groups); in mmc_blk_alloc_req()
2448 return md; in mmc_blk_alloc_req()
2451 blk_cleanup_queue(md->disk->queue); in mmc_blk_alloc_req()
2452 blk_mq_free_tag_set(&md->queue.tag_set); in mmc_blk_alloc_req()
2454 kfree(md); in mmc_blk_alloc_req()
2484 struct mmc_blk_data *md, in mmc_blk_alloc_part() argument
2493 part_md = mmc_blk_alloc_req(card, disk_to_dev(md->disk), size, default_ro, in mmc_blk_alloc_part()
2497 list_add(&part_md->part, &md->part); in mmc_blk_alloc_part()
2519 ret = mmc_blk_ioctl_cmd(rpmb->md, in mmc_rpmb_ioctl()
2524 ret = mmc_blk_ioctl_multi_cmd(rpmb->md, in mmc_rpmb_ioctl()
2551 mmc_blk_get(rpmb->md->disk); in mmc_rpmb_chrdev_open()
2561 mmc_blk_put(rpmb->md); in mmc_rpmb_chrdev_release()
2587 struct mmc_blk_data *md, in mmc_blk_alloc_rpmb_part() argument
2620 rpmb->md = md; in mmc_blk_alloc_rpmb_part()
2630 list_add(&rpmb->node, &md->rpmbs); in mmc_blk_alloc_rpmb_part()
2659 static int mmc_blk_alloc_parts(struct mmc_card *card, struct mmc_blk_data *md) in mmc_blk_alloc_parts() argument
2674 ret = mmc_blk_alloc_rpmb_part(card, md, in mmc_blk_alloc_parts()
2681 ret = mmc_blk_alloc_part(card, md, in mmc_blk_alloc_parts()
2695 static void mmc_blk_remove_req(struct mmc_blk_data *md) in mmc_blk_remove_req() argument
2701 del_gendisk(md->disk); in mmc_blk_remove_req()
2702 mmc_cleanup_queue(&md->queue); in mmc_blk_remove_req()
2703 mmc_blk_put(md); in mmc_blk_remove_req()
2707 struct mmc_blk_data *md) in mmc_blk_remove_parts() argument
2714 list_for_each_safe(pos, q, &md->rpmbs) { in mmc_blk_remove_parts()
2720 list_for_each_safe(pos, q, &md->part) { in mmc_blk_remove_parts()
2732 struct mmc_blk_data *md = dev_get_drvdata(&card->dev); in mmc_dbg_card_status_get() local
2733 struct mmc_queue *mq = &md->queue; in mmc_dbg_card_status_get()
2761 struct mmc_blk_data *md = dev_get_drvdata(&card->dev); in mmc_ext_csd_open() local
2762 struct mmc_queue *mq = &md->queue; in mmc_ext_csd_open()
2830 static int mmc_blk_add_debugfs(struct mmc_card *card, struct mmc_blk_data *md) in mmc_blk_add_debugfs() argument
2840 md->status_dentry = in mmc_blk_add_debugfs()
2844 if (!md->status_dentry) in mmc_blk_add_debugfs()
2849 md->ext_csd_dentry = in mmc_blk_add_debugfs()
2852 if (!md->ext_csd_dentry) in mmc_blk_add_debugfs()
2860 struct mmc_blk_data *md) in mmc_blk_remove_debugfs() argument
2865 if (!IS_ERR_OR_NULL(md->status_dentry)) { in mmc_blk_remove_debugfs()
2866 debugfs_remove(md->status_dentry); in mmc_blk_remove_debugfs()
2867 md->status_dentry = NULL; in mmc_blk_remove_debugfs()
2870 if (!IS_ERR_OR_NULL(md->ext_csd_dentry)) { in mmc_blk_remove_debugfs()
2871 debugfs_remove(md->ext_csd_dentry); in mmc_blk_remove_debugfs()
2872 md->ext_csd_dentry = NULL; in mmc_blk_remove_debugfs()
2878 static int mmc_blk_add_debugfs(struct mmc_card *card, struct mmc_blk_data *md) in mmc_blk_add_debugfs() argument
2884 struct mmc_blk_data *md) in mmc_blk_remove_debugfs() argument
2892 struct mmc_blk_data *md; in mmc_blk_probe() local
2910 md = mmc_blk_alloc(card); in mmc_blk_probe()
2911 if (IS_ERR(md)) { in mmc_blk_probe()
2912 ret = PTR_ERR(md); in mmc_blk_probe()
2916 ret = mmc_blk_alloc_parts(card, md); in mmc_blk_probe()
2921 mmc_blk_add_debugfs(card, md); in mmc_blk_probe()
2938 mmc_blk_remove_parts(card, md); in mmc_blk_probe()
2939 mmc_blk_remove_req(md); in mmc_blk_probe()
2947 struct mmc_blk_data *md = dev_get_drvdata(&card->dev); in mmc_blk_remove() local
2949 mmc_blk_remove_debugfs(card, md); in mmc_blk_remove()
2950 mmc_blk_remove_parts(card, md); in mmc_blk_remove()
2952 if (md->part_curr != md->part_type) { in mmc_blk_remove()
2954 mmc_blk_part_switch(card, md->part_type); in mmc_blk_remove()
2960 mmc_blk_remove_req(md); in mmc_blk_remove()
2968 struct mmc_blk_data *md = dev_get_drvdata(&card->dev); in _mmc_blk_suspend() local
2970 if (md) { in _mmc_blk_suspend()
2971 mmc_queue_suspend(&md->queue); in _mmc_blk_suspend()
2972 list_for_each_entry(part_md, &md->part, part) { in _mmc_blk_suspend()
2995 struct mmc_blk_data *md = dev_get_drvdata(dev); in mmc_blk_resume() local
2997 if (md) { in mmc_blk_resume()
3002 md->part_curr = md->part_type; in mmc_blk_resume()
3003 mmc_queue_resume(&md->queue); in mmc_blk_resume()
3004 list_for_each_entry(part_md, &md->part, part) { in mmc_blk_resume()