Lines Matching refs:brq

996 	struct mmc_blk_request *brq, int *ecc_err, int *gen_err)  in mmc_blk_cmd_recovery()  argument
1033 (brq->stop.resp[0] & R1_CARD_ECC_FAILED) || in mmc_blk_cmd_recovery()
1034 (brq->cmd.resp[0] & R1_CARD_ECC_FAILED)) in mmc_blk_cmd_recovery()
1040 (brq->stop.resp[0] & R1_ERROR)) { in mmc_blk_cmd_recovery()
1043 brq->stop.resp[0], status); in mmc_blk_cmd_recovery()
1054 DIV_ROUND_UP(brq->data.timeout_ns, 1000000), in mmc_blk_cmd_recovery()
1071 if (brq->sbc.error) in mmc_blk_cmd_recovery()
1072 return mmc_blk_cmd_error(req, "SET_BLOCK_COUNT", brq->sbc.error, in mmc_blk_cmd_recovery()
1076 if (brq->cmd.error) in mmc_blk_cmd_recovery()
1077 return mmc_blk_cmd_error(req, "r/w cmd", brq->cmd.error, in mmc_blk_cmd_recovery()
1081 if (!brq->stop.error) in mmc_blk_cmd_recovery()
1086 req->rq_disk->disk_name, brq->stop.error, in mmc_blk_cmd_recovery()
1087 brq->cmd.resp[0], status); in mmc_blk_cmd_recovery()
1094 brq->stop.resp[0] = stop_status; in mmc_blk_cmd_recovery()
1095 brq->stop.error = 0; in mmc_blk_cmd_recovery()
1278 static inline void mmc_apply_rel_rw(struct mmc_blk_request *brq, in mmc_apply_rel_rw() argument
1284 if (!IS_ALIGNED(brq->cmd.arg, card->ext_csd.rel_sectors)) in mmc_apply_rel_rw()
1285 brq->data.blocks = 1; in mmc_apply_rel_rw()
1287 if (brq->data.blocks > card->ext_csd.rel_sectors) in mmc_apply_rel_rw()
1288 brq->data.blocks = card->ext_csd.rel_sectors; in mmc_apply_rel_rw()
1289 else if (brq->data.blocks < card->ext_csd.rel_sectors) in mmc_apply_rel_rw()
1290 brq->data.blocks = 1; in mmc_apply_rel_rw()
1307 struct mmc_blk_request *brq = &mq_mrq->brq; in mmc_blk_err_check() local
1322 if (brq->sbc.error || brq->cmd.error || brq->stop.error || in mmc_blk_err_check()
1323 brq->data.error) { in mmc_blk_err_check()
1324 switch (mmc_blk_cmd_recovery(card, req, brq, &ecc_err, &gen_err)) { in mmc_blk_err_check()
1341 if (brq->cmd.resp[0] & CMD_ERRORS) { in mmc_blk_err_check()
1343 req->rq_disk->disk_name, brq->cmd.resp[0]); in mmc_blk_err_check()
1356 if (brq->stop.resp[0] & R1_ERROR) { in mmc_blk_err_check()
1359 brq->stop.resp[0]); in mmc_blk_err_check()
1376 if (brq->data.error) { in mmc_blk_err_check()
1377 if (need_retune && !brq->retune_retry_done) { in mmc_blk_err_check()
1380 brq->retune_retry_done = 1; in mmc_blk_err_check()
1384 req->rq_disk->disk_name, brq->data.error, in mmc_blk_err_check()
1387 brq->cmd.resp[0], brq->stop.resp[0]); in mmc_blk_err_check()
1398 if (!brq->data.bytes_xfered) in mmc_blk_err_check()
1402 if (unlikely(brq->data.blocks << 9 != brq->data.bytes_xfered)) in mmc_blk_err_check()
1408 if (blk_rq_bytes(req) != brq->data.bytes_xfered) in mmc_blk_err_check()
1470 struct mmc_blk_request *brq = &mqrq->brq; in mmc_blk_rw_rq_prep() local
1483 memset(brq, 0, sizeof(struct mmc_blk_request)); in mmc_blk_rw_rq_prep()
1484 brq->mrq.cmd = &brq->cmd; in mmc_blk_rw_rq_prep()
1485 brq->mrq.data = &brq->data; in mmc_blk_rw_rq_prep()
1487 brq->cmd.arg = blk_rq_pos(req); in mmc_blk_rw_rq_prep()
1489 brq->cmd.arg <<= 9; in mmc_blk_rw_rq_prep()
1490 brq->cmd.flags = MMC_RSP_SPI_R1 | MMC_RSP_R1 | MMC_CMD_ADTC; in mmc_blk_rw_rq_prep()
1491 brq->data.blksz = 512; in mmc_blk_rw_rq_prep()
1492 brq->stop.opcode = MMC_STOP_TRANSMISSION; in mmc_blk_rw_rq_prep()
1493 brq->stop.arg = 0; in mmc_blk_rw_rq_prep()
1494 brq->data.blocks = blk_rq_sectors(req); in mmc_blk_rw_rq_prep()
1501 if (brq->data.blocks > card->host->max_blk_count) in mmc_blk_rw_rq_prep()
1502 brq->data.blocks = card->host->max_blk_count; in mmc_blk_rw_rq_prep()
1504 if (brq->data.blocks > 1) { in mmc_blk_rw_rq_prep()
1511 brq->data.blocks = 1; in mmc_blk_rw_rq_prep()
1518 brq->data.blocks = card->host->ops->multi_io_quirk(card, in mmc_blk_rw_rq_prep()
1521 brq->data.blocks); in mmc_blk_rw_rq_prep()
1524 if (brq->data.blocks > 1 || do_rel_wr) { in mmc_blk_rw_rq_prep()
1530 brq->mrq.stop = &brq->stop; in mmc_blk_rw_rq_prep()
1534 brq->mrq.stop = NULL; in mmc_blk_rw_rq_prep()
1539 brq->cmd.opcode = readcmd; in mmc_blk_rw_rq_prep()
1540 brq->data.flags |= MMC_DATA_READ; in mmc_blk_rw_rq_prep()
1541 if (brq->mrq.stop) in mmc_blk_rw_rq_prep()
1542 brq->stop.flags = MMC_RSP_SPI_R1 | MMC_RSP_R1 | in mmc_blk_rw_rq_prep()
1545 brq->cmd.opcode = writecmd; in mmc_blk_rw_rq_prep()
1546 brq->data.flags |= MMC_DATA_WRITE; in mmc_blk_rw_rq_prep()
1547 if (brq->mrq.stop) in mmc_blk_rw_rq_prep()
1548 brq->stop.flags = MMC_RSP_SPI_R1B | MMC_RSP_R1B | in mmc_blk_rw_rq_prep()
1553 mmc_apply_rel_rw(brq, card, req); in mmc_blk_rw_rq_prep()
1562 ((brq->data.blocks * brq->data.blksz) >= in mmc_blk_rw_rq_prep()
1583 if ((md->flags & MMC_BLK_CMD23) && mmc_op_multi(brq->cmd.opcode) && in mmc_blk_rw_rq_prep()
1586 brq->sbc.opcode = MMC_SET_BLOCK_COUNT; in mmc_blk_rw_rq_prep()
1587 brq->sbc.arg = brq->data.blocks | in mmc_blk_rw_rq_prep()
1590 brq->sbc.flags = MMC_RSP_R1 | MMC_CMD_AC; in mmc_blk_rw_rq_prep()
1591 brq->mrq.sbc = &brq->sbc; in mmc_blk_rw_rq_prep()
1594 mmc_set_data_timeout(&brq->data, card); in mmc_blk_rw_rq_prep()
1596 brq->data.sg = mqrq->sg; in mmc_blk_rw_rq_prep()
1597 brq->data.sg_len = mmc_queue_map_sg(mq, mqrq); in mmc_blk_rw_rq_prep()
1603 if (brq->data.blocks != blk_rq_sectors(req)) { in mmc_blk_rw_rq_prep()
1604 int i, data_size = brq->data.blocks << 9; in mmc_blk_rw_rq_prep()
1607 for_each_sg(brq->data.sg, sg, brq->data.sg_len, i) { in mmc_blk_rw_rq_prep()
1615 brq->data.sg_len = i; in mmc_blk_rw_rq_prep()
1618 mqrq->mmc_active.mrq = &brq->mrq; in mmc_blk_rw_rq_prep()
1752 struct mmc_blk_request *brq = &mqrq->brq; in mmc_blk_packed_hdr_wrq_prep() local
1782 ((brq->data.blocks * brq->data.blksz) >= in mmc_blk_packed_hdr_wrq_prep()
1797 memset(brq, 0, sizeof(struct mmc_blk_request)); in mmc_blk_packed_hdr_wrq_prep()
1798 brq->mrq.cmd = &brq->cmd; in mmc_blk_packed_hdr_wrq_prep()
1799 brq->mrq.data = &brq->data; in mmc_blk_packed_hdr_wrq_prep()
1800 brq->mrq.sbc = &brq->sbc; in mmc_blk_packed_hdr_wrq_prep()
1801 brq->mrq.stop = &brq->stop; in mmc_blk_packed_hdr_wrq_prep()
1803 brq->sbc.opcode = MMC_SET_BLOCK_COUNT; in mmc_blk_packed_hdr_wrq_prep()
1804 brq->sbc.arg = MMC_CMD23_ARG_PACKED | (packed->blocks + hdr_blocks); in mmc_blk_packed_hdr_wrq_prep()
1805 brq->sbc.flags = MMC_RSP_R1 | MMC_CMD_AC; in mmc_blk_packed_hdr_wrq_prep()
1807 brq->cmd.opcode = MMC_WRITE_MULTIPLE_BLOCK; in mmc_blk_packed_hdr_wrq_prep()
1808 brq->cmd.arg = blk_rq_pos(req); in mmc_blk_packed_hdr_wrq_prep()
1810 brq->cmd.arg <<= 9; in mmc_blk_packed_hdr_wrq_prep()
1811 brq->cmd.flags = MMC_RSP_SPI_R1 | MMC_RSP_R1 | MMC_CMD_ADTC; in mmc_blk_packed_hdr_wrq_prep()
1813 brq->data.blksz = 512; in mmc_blk_packed_hdr_wrq_prep()
1814 brq->data.blocks = packed->blocks + hdr_blocks; in mmc_blk_packed_hdr_wrq_prep()
1815 brq->data.flags |= MMC_DATA_WRITE; in mmc_blk_packed_hdr_wrq_prep()
1817 brq->stop.opcode = MMC_STOP_TRANSMISSION; in mmc_blk_packed_hdr_wrq_prep()
1818 brq->stop.arg = 0; in mmc_blk_packed_hdr_wrq_prep()
1819 brq->stop.flags = MMC_RSP_SPI_R1B | MMC_RSP_R1B | MMC_CMD_AC; in mmc_blk_packed_hdr_wrq_prep()
1821 mmc_set_data_timeout(&brq->data, card); in mmc_blk_packed_hdr_wrq_prep()
1823 brq->data.sg = mqrq->sg; in mmc_blk_packed_hdr_wrq_prep()
1824 brq->data.sg_len = mmc_queue_map_sg(mq, mqrq); in mmc_blk_packed_hdr_wrq_prep()
1826 mqrq->mmc_active.mrq = &brq->mrq; in mmc_blk_packed_hdr_wrq_prep()
1833 struct mmc_blk_request *brq, struct request *req, in mmc_blk_cmd_err() argument
1837 mq_rq = container_of(brq, struct mmc_queue_req, brq); in mmc_blk_cmd_err()
1856 ret = blk_end_request(req, 0, brq->data.bytes_xfered); in mmc_blk_cmd_err()
1937 struct mmc_blk_request *brq = &mq->mqrq_cur->brq; in mmc_blk_issue_rw_rq() local
1958 if ((brq->data.blocks & 0x07) && in mmc_blk_issue_rw_rq()
1982 brq = &mq_rq->brq; in mmc_blk_issue_rw_rq()
2000 brq->data.bytes_xfered); in mmc_blk_issue_rw_rq()
2011 brq->data.bytes_xfered); in mmc_blk_issue_rw_rq()
2017 ret = mmc_blk_cmd_err(md, card, brq, req, ret); in mmc_blk_issue_rw_rq()
2024 retune_retry_done = brq->retune_retry_done; in mmc_blk_issue_rw_rq()
2044 if (brq->data.blocks > 1) { in mmc_blk_issue_rw_rq()
2057 brq->data.blksz); in mmc_blk_issue_rw_rq()
2087 mq_rq->brq.retune_retry_done = retune_retry_done; in mmc_blk_issue_rw_rq()