Lines Matching refs:idata

354 	struct mmc_blk_ioc_data *idata;  in mmc_blk_ioctl_copy_from_user()  local
357 idata = kmalloc(sizeof(*idata), GFP_KERNEL); in mmc_blk_ioctl_copy_from_user()
358 if (!idata) { in mmc_blk_ioctl_copy_from_user()
363 if (copy_from_user(&idata->ic, user, sizeof(idata->ic))) { in mmc_blk_ioctl_copy_from_user()
368 idata->buf_bytes = (u64) idata->ic.blksz * idata->ic.blocks; in mmc_blk_ioctl_copy_from_user()
369 if (idata->buf_bytes > MMC_IOC_MAX_BYTES) { in mmc_blk_ioctl_copy_from_user()
374 if (!idata->buf_bytes) { in mmc_blk_ioctl_copy_from_user()
375 idata->buf = NULL; in mmc_blk_ioctl_copy_from_user()
376 return idata; in mmc_blk_ioctl_copy_from_user()
379 idata->buf = memdup_user((void __user *)(unsigned long) in mmc_blk_ioctl_copy_from_user()
380 idata->ic.data_ptr, idata->buf_bytes); in mmc_blk_ioctl_copy_from_user()
381 if (IS_ERR(idata->buf)) { in mmc_blk_ioctl_copy_from_user()
382 err = PTR_ERR(idata->buf); in mmc_blk_ioctl_copy_from_user()
386 return idata; in mmc_blk_ioctl_copy_from_user()
389 kfree(idata); in mmc_blk_ioctl_copy_from_user()
395 struct mmc_blk_ioc_data *idata) in mmc_blk_ioctl_copy_to_user() argument
397 struct mmc_ioc_cmd *ic = &idata->ic; in mmc_blk_ioctl_copy_to_user()
403 if (!idata->ic.write_flag) { in mmc_blk_ioctl_copy_to_user()
405 idata->buf, idata->buf_bytes)) in mmc_blk_ioctl_copy_to_user()
449 struct mmc_blk_ioc_data *idata) in __mmc_blk_ioctl_cmd() argument
458 if (!card || !md || !idata) in __mmc_blk_ioctl_cmd()
467 if (idata->rpmb) { in __mmc_blk_ioctl_cmd()
469 target_part = idata->rpmb->part_index; in __mmc_blk_ioctl_cmd()
475 cmd.opcode = idata->ic.opcode; in __mmc_blk_ioctl_cmd()
476 cmd.arg = idata->ic.arg; in __mmc_blk_ioctl_cmd()
477 cmd.flags = idata->ic.flags; in __mmc_blk_ioctl_cmd()
479 if (idata->buf_bytes) { in __mmc_blk_ioctl_cmd()
482 data.blksz = idata->ic.blksz; in __mmc_blk_ioctl_cmd()
483 data.blocks = idata->ic.blocks; in __mmc_blk_ioctl_cmd()
485 sg_init_one(data.sg, idata->buf, idata->buf_bytes); in __mmc_blk_ioctl_cmd()
487 if (idata->ic.write_flag) in __mmc_blk_ioctl_cmd()
496 if (idata->ic.data_timeout_ns) in __mmc_blk_ioctl_cmd()
497 data.timeout_ns = idata->ic.data_timeout_ns; in __mmc_blk_ioctl_cmd()
509 data.timeout_ns = idata->ic.cmd_timeout_ms * 1000000; in __mmc_blk_ioctl_cmd()
521 if (idata->ic.is_acmd) { in __mmc_blk_ioctl_cmd()
527 if (idata->rpmb) { in __mmc_blk_ioctl_cmd()
534 sbc.arg = data.blocks | (idata->ic.write_flag & BIT(31)); in __mmc_blk_ioctl_cmd()
578 if (idata->ic.postsleep_min_us) in __mmc_blk_ioctl_cmd()
579 usleep_range(idata->ic.postsleep_min_us, idata->ic.postsleep_max_us); in __mmc_blk_ioctl_cmd()
581 memcpy(&(idata->ic.response), cmd.resp, sizeof(cmd.resp)); in __mmc_blk_ioctl_cmd()
583 if (idata->rpmb || (cmd.flags & MMC_RSP_R1B) == MMC_RSP_R1B) { in __mmc_blk_ioctl_cmd()
598 struct mmc_blk_ioc_data *idata; in mmc_blk_ioctl_cmd() local
605 idata = mmc_blk_ioctl_copy_from_user(ic_ptr); in mmc_blk_ioctl_cmd()
606 if (IS_ERR(idata)) in mmc_blk_ioctl_cmd()
607 return PTR_ERR(idata); in mmc_blk_ioctl_cmd()
609 idata->rpmb = rpmb; in mmc_blk_ioctl_cmd()
622 idata->ic.write_flag ? REQ_OP_DRV_OUT : REQ_OP_DRV_IN, 0); in mmc_blk_ioctl_cmd()
627 idatas[0] = idata; in mmc_blk_ioctl_cmd()
634 err = mmc_blk_ioctl_copy_to_user(ic_ptr, idata); in mmc_blk_ioctl_cmd()
638 kfree(idata->buf); in mmc_blk_ioctl_cmd()
639 kfree(idata); in mmc_blk_ioctl_cmd()
647 struct mmc_blk_ioc_data **idata = NULL; in mmc_blk_ioctl_multi_cmd() local
665 idata = kcalloc(num_of_cmds, sizeof(*idata), GFP_KERNEL); in mmc_blk_ioctl_multi_cmd()
666 if (!idata) in mmc_blk_ioctl_multi_cmd()
670 idata[i] = mmc_blk_ioctl_copy_from_user(&cmds[i]); in mmc_blk_ioctl_multi_cmd()
671 if (IS_ERR(idata[i])) { in mmc_blk_ioctl_multi_cmd()
672 err = PTR_ERR(idata[i]); in mmc_blk_ioctl_multi_cmd()
677 idata[i]->rpmb = rpmb; in mmc_blk_ioctl_multi_cmd()
692 idata[0]->ic.write_flag ? REQ_OP_DRV_OUT : REQ_OP_DRV_IN, 0); in mmc_blk_ioctl_multi_cmd()
699 req_to_mmc_queue_req(req)->drv_op_data = idata; in mmc_blk_ioctl_multi_cmd()
706 err = mmc_blk_ioctl_copy_to_user(&cmds[i], idata[i]); in mmc_blk_ioctl_multi_cmd()
712 kfree(idata[i]->buf); in mmc_blk_ioctl_multi_cmd()
713 kfree(idata[i]); in mmc_blk_ioctl_multi_cmd()
715 kfree(idata); in mmc_blk_ioctl_multi_cmd()
982 struct mmc_blk_ioc_data **idata; in mmc_blk_issue_drv_op() local
995 idata = mq_rq->drv_op_data; in mmc_blk_issue_drv_op()
997 ret = __mmc_blk_ioctl_cmd(card, md, idata[i]); in mmc_blk_issue_drv_op()