Lines Matching refs:idata
344 struct mmc_blk_ioc_data *idata; in mmc_blk_ioctl_copy_from_user() local
347 idata = kzalloc(sizeof(*idata), GFP_KERNEL); in mmc_blk_ioctl_copy_from_user()
348 if (!idata) { in mmc_blk_ioctl_copy_from_user()
353 if (copy_from_user(&idata->ic, user, sizeof(idata->ic))) { in mmc_blk_ioctl_copy_from_user()
358 idata->buf_bytes = (u64) idata->ic.blksz * idata->ic.blocks; in mmc_blk_ioctl_copy_from_user()
359 if (idata->buf_bytes > MMC_IOC_MAX_BYTES) { in mmc_blk_ioctl_copy_from_user()
364 if (!idata->buf_bytes) in mmc_blk_ioctl_copy_from_user()
365 return idata; in mmc_blk_ioctl_copy_from_user()
367 idata->buf = kzalloc(idata->buf_bytes, GFP_KERNEL); in mmc_blk_ioctl_copy_from_user()
368 if (!idata->buf) { in mmc_blk_ioctl_copy_from_user()
373 if (copy_from_user(idata->buf, (void __user *)(unsigned long) in mmc_blk_ioctl_copy_from_user()
374 idata->ic.data_ptr, idata->buf_bytes)) { in mmc_blk_ioctl_copy_from_user()
379 return idata; in mmc_blk_ioctl_copy_from_user()
382 kfree(idata->buf); in mmc_blk_ioctl_copy_from_user()
384 kfree(idata); in mmc_blk_ioctl_copy_from_user()
390 struct mmc_blk_ioc_data *idata) in mmc_blk_ioctl_copy_to_user() argument
392 struct mmc_ioc_cmd *ic = &idata->ic; in mmc_blk_ioctl_copy_to_user()
398 if (!idata->ic.write_flag) { in mmc_blk_ioctl_copy_to_user()
400 idata->buf, idata->buf_bytes)) in mmc_blk_ioctl_copy_to_user()
468 struct mmc_blk_ioc_data *idata) in __mmc_blk_ioctl_cmd() argument
478 if (!card || !md || !idata) in __mmc_blk_ioctl_cmd()
484 cmd.opcode = idata->ic.opcode; in __mmc_blk_ioctl_cmd()
485 cmd.arg = idata->ic.arg; in __mmc_blk_ioctl_cmd()
486 cmd.flags = idata->ic.flags; in __mmc_blk_ioctl_cmd()
488 if (idata->buf_bytes) { in __mmc_blk_ioctl_cmd()
491 data.blksz = idata->ic.blksz; in __mmc_blk_ioctl_cmd()
492 data.blocks = idata->ic.blocks; in __mmc_blk_ioctl_cmd()
494 sg_init_one(data.sg, idata->buf, idata->buf_bytes); in __mmc_blk_ioctl_cmd()
496 if (idata->ic.write_flag) in __mmc_blk_ioctl_cmd()
505 if (idata->ic.data_timeout_ns) in __mmc_blk_ioctl_cmd()
506 data.timeout_ns = idata->ic.data_timeout_ns; in __mmc_blk_ioctl_cmd()
518 data.timeout_ns = idata->ic.cmd_timeout_ms * 1000000; in __mmc_blk_ioctl_cmd()
530 if (idata->ic.is_acmd) { in __mmc_blk_ioctl_cmd()
538 idata->ic.write_flag & (1 << 31)); in __mmc_blk_ioctl_cmd()
571 if (idata->ic.postsleep_min_us) in __mmc_blk_ioctl_cmd()
572 usleep_range(idata->ic.postsleep_min_us, idata->ic.postsleep_max_us); in __mmc_blk_ioctl_cmd()
574 memcpy(&(idata->ic.response), cmd.resp, sizeof(cmd.resp)); in __mmc_blk_ioctl_cmd()
594 struct mmc_blk_ioc_data *idata; in mmc_blk_ioctl_cmd() local
607 idata = mmc_blk_ioctl_copy_from_user(ic_ptr); in mmc_blk_ioctl_cmd()
608 if (IS_ERR(idata)) in mmc_blk_ioctl_cmd()
609 return PTR_ERR(idata); in mmc_blk_ioctl_cmd()
625 ioc_err = __mmc_blk_ioctl_cmd(card, md, idata); in mmc_blk_ioctl_cmd()
629 err = mmc_blk_ioctl_copy_to_user(ic_ptr, idata); in mmc_blk_ioctl_cmd()
634 kfree(idata->buf); in mmc_blk_ioctl_cmd()
635 kfree(idata); in mmc_blk_ioctl_cmd()
642 struct mmc_blk_ioc_data **idata = NULL; in mmc_blk_ioctl_multi_cmd() local
664 idata = kcalloc(num_of_cmds, sizeof(*idata), GFP_KERNEL); in mmc_blk_ioctl_multi_cmd()
665 if (!idata) in mmc_blk_ioctl_multi_cmd()
669 idata[i] = mmc_blk_ioctl_copy_from_user(&cmds[i]); in mmc_blk_ioctl_multi_cmd()
670 if (IS_ERR(idata[i])) { in mmc_blk_ioctl_multi_cmd()
671 err = PTR_ERR(idata[i]); in mmc_blk_ioctl_multi_cmd()
690 ioc_err = __mmc_blk_ioctl_cmd(card, md, idata[i]); in mmc_blk_ioctl_multi_cmd()
696 err = mmc_blk_ioctl_copy_to_user(&cmds[i], idata[i]); in mmc_blk_ioctl_multi_cmd()
702 kfree(idata[i]->buf); in mmc_blk_ioctl_multi_cmd()
703 kfree(idata[i]); in mmc_blk_ioctl_multi_cmd()
705 kfree(idata); in mmc_blk_ioctl_multi_cmd()