block.c (684da7628d93bbdcfba9081b917d99f29ad04c23) | block.c (93f1c150cb0d043e1e8985db7824b4e2e1ac653f) |
---|---|
1/* 2 * Block driver for media (i.e., flash cards) 3 * 4 * Copyright 2002 Hewlett-Packard Company 5 * Copyright 2005-2008 Pierre Ossman 6 * 7 * Use consistent with the GNU GPL is permitted, 8 * provided that this copyright notice is --- 37 unchanged lines hidden (view full) --- 46#include <linux/mmc/sd.h> 47 48#include <linux/uaccess.h> 49 50#include "queue.h" 51#include "block.h" 52#include "core.h" 53#include "card.h" | 1/* 2 * Block driver for media (i.e., flash cards) 3 * 4 * Copyright 2002 Hewlett-Packard Company 5 * Copyright 2005-2008 Pierre Ossman 6 * 7 * Use consistent with the GNU GPL is permitted, 8 * provided that this copyright notice is --- 37 unchanged lines hidden (view full) --- 46#include <linux/mmc/sd.h> 47 48#include <linux/uaccess.h> 49 50#include "queue.h" 51#include "block.h" 52#include "core.h" 53#include "card.h" |
54#include "crypto.h" |
|
54#include "host.h" 55#include "bus.h" 56#include "mmc_ops.h" 57#include "quirks.h" 58#include "sd_ops.h" 59 60MODULE_ALIAS("mmc:block"); 61#ifdef MODULE_PARAM_PREFIX --- 186 unchanged lines hidden (view full) --- 248 249 /* Dispatch locking to the block layer */ 250 req = blk_get_request(mq->queue, REQ_OP_DRV_OUT, 0); 251 if (IS_ERR(req)) { 252 count = PTR_ERR(req); 253 goto out_put; 254 } 255 req_to_mmc_queue_req(req)->drv_op = MMC_DRV_OP_BOOT_WP; | 55#include "host.h" 56#include "bus.h" 57#include "mmc_ops.h" 58#include "quirks.h" 59#include "sd_ops.h" 60 61MODULE_ALIAS("mmc:block"); 62#ifdef MODULE_PARAM_PREFIX --- 186 unchanged lines hidden (view full) --- 249 250 /* Dispatch locking to the block layer */ 251 req = blk_get_request(mq->queue, REQ_OP_DRV_OUT, 0); 252 if (IS_ERR(req)) { 253 count = PTR_ERR(req); 254 goto out_put; 255 } 256 req_to_mmc_queue_req(req)->drv_op = MMC_DRV_OP_BOOT_WP; |
256 blk_execute_rq(NULL, req, 0); | 257 blk_execute_rq(mq->queue, NULL, req, 0); |
257 ret = req_to_mmc_queue_req(req)->drv_op_result; 258 blk_put_request(req); 259 260 if (!ret) { 261 pr_info("%s: Locking boot partition ro until next power on\n", 262 md->disk->disk_name); 263 set_disk_ro(md->disk, 1); 264 --- 359 unchanged lines hidden (view full) --- 624 err = PTR_ERR(req); 625 goto cmd_done; 626 } 627 idatas[0] = idata; 628 req_to_mmc_queue_req(req)->drv_op = 629 rpmb ? MMC_DRV_OP_IOCTL_RPMB : MMC_DRV_OP_IOCTL; 630 req_to_mmc_queue_req(req)->drv_op_data = idatas; 631 req_to_mmc_queue_req(req)->ioc_count = 1; | 258 ret = req_to_mmc_queue_req(req)->drv_op_result; 259 blk_put_request(req); 260 261 if (!ret) { 262 pr_info("%s: Locking boot partition ro until next power on\n", 263 md->disk->disk_name); 264 set_disk_ro(md->disk, 1); 265 --- 359 unchanged lines hidden (view full) --- 625 err = PTR_ERR(req); 626 goto cmd_done; 627 } 628 idatas[0] = idata; 629 req_to_mmc_queue_req(req)->drv_op = 630 rpmb ? MMC_DRV_OP_IOCTL_RPMB : MMC_DRV_OP_IOCTL; 631 req_to_mmc_queue_req(req)->drv_op_data = idatas; 632 req_to_mmc_queue_req(req)->ioc_count = 1; |
632 blk_execute_rq(NULL, req, 0); | 633 blk_execute_rq(mq->queue, NULL, req, 0); |
633 ioc_err = req_to_mmc_queue_req(req)->drv_op_result; 634 err = mmc_blk_ioctl_copy_to_user(ic_ptr, idata); 635 blk_put_request(req); 636 637cmd_done: 638 kfree(idata->buf); 639 kfree(idata); 640 return ioc_err ? ioc_err : err; --- 52 unchanged lines hidden (view full) --- 693 if (IS_ERR(req)) { 694 err = PTR_ERR(req); 695 goto cmd_err; 696 } 697 req_to_mmc_queue_req(req)->drv_op = 698 rpmb ? MMC_DRV_OP_IOCTL_RPMB : MMC_DRV_OP_IOCTL; 699 req_to_mmc_queue_req(req)->drv_op_data = idata; 700 req_to_mmc_queue_req(req)->ioc_count = num_of_cmds; | 634 ioc_err = req_to_mmc_queue_req(req)->drv_op_result; 635 err = mmc_blk_ioctl_copy_to_user(ic_ptr, idata); 636 blk_put_request(req); 637 638cmd_done: 639 kfree(idata->buf); 640 kfree(idata); 641 return ioc_err ? ioc_err : err; --- 52 unchanged lines hidden (view full) --- 694 if (IS_ERR(req)) { 695 err = PTR_ERR(req); 696 goto cmd_err; 697 } 698 req_to_mmc_queue_req(req)->drv_op = 699 rpmb ? MMC_DRV_OP_IOCTL_RPMB : MMC_DRV_OP_IOCTL; 700 req_to_mmc_queue_req(req)->drv_op_data = idata; 701 req_to_mmc_queue_req(req)->ioc_count = num_of_cmds; |
701 blk_execute_rq(NULL, req, 0); | 702 blk_execute_rq(mq->queue, NULL, req, 0); |
702 ioc_err = req_to_mmc_queue_req(req)->drv_op_result; 703 704 /* copy to user if data and response */ 705 for (i = 0; i < num_of_cmds && !err; i++) 706 err = mmc_blk_ioctl_copy_to_user(&cmds[i], idata[i]); 707 708 blk_put_request(req); 709 --- 532 unchanged lines hidden (view full) --- 1242 * are supported only on MMCs. 1243 */ 1244 do_rel_wr = (req->cmd_flags & REQ_FUA) && 1245 rq_data_dir(req) == WRITE && 1246 (md->flags & MMC_BLK_REL_WR); 1247 1248 memset(brq, 0, sizeof(struct mmc_blk_request)); 1249 | 703 ioc_err = req_to_mmc_queue_req(req)->drv_op_result; 704 705 /* copy to user if data and response */ 706 for (i = 0; i < num_of_cmds && !err; i++) 707 err = mmc_blk_ioctl_copy_to_user(&cmds[i], idata[i]); 708 709 blk_put_request(req); 710 --- 532 unchanged lines hidden (view full) --- 1243 * are supported only on MMCs. 1244 */ 1245 do_rel_wr = (req->cmd_flags & REQ_FUA) && 1246 rq_data_dir(req) == WRITE && 1247 (md->flags & MMC_BLK_REL_WR); 1248 1249 memset(brq, 0, sizeof(struct mmc_blk_request)); 1250 |
1251 mmc_crypto_prepare_req(mqrq); 1252 |
|
1250 brq->mrq.data = &brq->data; 1251 brq->mrq.tag = req->tag; 1252 1253 brq->stop.opcode = MMC_STOP_TRANSMISSION; 1254 brq->stop.arg = 0; 1255 1256 if (rq_data_dir(req) == READ) { 1257 brq->data.flags = MMC_DATA_READ; --- 1459 unchanged lines hidden (view full) --- 2717 struct request *req; 2718 int ret; 2719 2720 /* Ask the block layer about the card status */ 2721 req = blk_get_request(mq->queue, REQ_OP_DRV_IN, 0); 2722 if (IS_ERR(req)) 2723 return PTR_ERR(req); 2724 req_to_mmc_queue_req(req)->drv_op = MMC_DRV_OP_GET_CARD_STATUS; | 1253 brq->mrq.data = &brq->data; 1254 brq->mrq.tag = req->tag; 1255 1256 brq->stop.opcode = MMC_STOP_TRANSMISSION; 1257 brq->stop.arg = 0; 1258 1259 if (rq_data_dir(req) == READ) { 1260 brq->data.flags = MMC_DATA_READ; --- 1459 unchanged lines hidden (view full) --- 2720 struct request *req; 2721 int ret; 2722 2723 /* Ask the block layer about the card status */ 2724 req = blk_get_request(mq->queue, REQ_OP_DRV_IN, 0); 2725 if (IS_ERR(req)) 2726 return PTR_ERR(req); 2727 req_to_mmc_queue_req(req)->drv_op = MMC_DRV_OP_GET_CARD_STATUS; |
2725 blk_execute_rq(NULL, req, 0); | 2728 blk_execute_rq(mq->queue, NULL, req, 0); |
2726 ret = req_to_mmc_queue_req(req)->drv_op_result; 2727 if (ret >= 0) { 2728 *val = ret; 2729 ret = 0; 2730 } 2731 blk_put_request(req); 2732 2733 return ret; --- 22 unchanged lines hidden (view full) --- 2756 /* Ask the block layer for the EXT CSD */ 2757 req = blk_get_request(mq->queue, REQ_OP_DRV_IN, 0); 2758 if (IS_ERR(req)) { 2759 err = PTR_ERR(req); 2760 goto out_free; 2761 } 2762 req_to_mmc_queue_req(req)->drv_op = MMC_DRV_OP_GET_EXT_CSD; 2763 req_to_mmc_queue_req(req)->drv_op_data = &ext_csd; | 2729 ret = req_to_mmc_queue_req(req)->drv_op_result; 2730 if (ret >= 0) { 2731 *val = ret; 2732 ret = 0; 2733 } 2734 blk_put_request(req); 2735 2736 return ret; --- 22 unchanged lines hidden (view full) --- 2759 /* Ask the block layer for the EXT CSD */ 2760 req = blk_get_request(mq->queue, REQ_OP_DRV_IN, 0); 2761 if (IS_ERR(req)) { 2762 err = PTR_ERR(req); 2763 goto out_free; 2764 } 2765 req_to_mmc_queue_req(req)->drv_op = MMC_DRV_OP_GET_EXT_CSD; 2766 req_to_mmc_queue_req(req)->drv_op_data = &ext_csd; |
2764 blk_execute_rq(NULL, req, 0); | 2767 blk_execute_rq(mq->queue, NULL, req, 0); |
2765 err = req_to_mmc_queue_req(req)->drv_op_result; 2766 blk_put_request(req); 2767 if (err) { 2768 pr_err("FAILED %d\n", err); 2769 goto out_free; 2770 } 2771 2772 for (i = 0; i < 512; i++) --- 298 unchanged lines hidden --- | 2768 err = req_to_mmc_queue_req(req)->drv_op_result; 2769 blk_put_request(req); 2770 if (err) { 2771 pr_err("FAILED %d\n", err); 2772 goto out_free; 2773 } 2774 2775 for (i = 0; i < 512; i++) --- 298 unchanged lines hidden --- |