lrbp              334 drivers/scsi/ufs/ufshcd.c 	struct ufshcd_lrb *lrbp = &hba->lrb[tag];
lrbp              339 drivers/scsi/ufs/ufshcd.c 		if (lrbp->cmd)
lrbp              344 drivers/scsi/ufs/ufshcd.c 	if (lrbp->cmd) { /* data phase exists */
lrbp              347 drivers/scsi/ufs/ufshcd.c 		opcode = (u8)(*lrbp->cmd->cmnd);
lrbp              353 drivers/scsi/ufs/ufshcd.c 			if (lrbp->cmd->request && lrbp->cmd->request->bio)
lrbp              355 drivers/scsi/ufs/ufshcd.c 				  lrbp->cmd->request->bio->bi_iter.bi_sector;
lrbp              357 drivers/scsi/ufs/ufshcd.c 				lrbp->ucd_req_ptr->sc.exp_data_transfer_len);
lrbp              443 drivers/scsi/ufs/ufshcd.c 	struct ufshcd_lrb *lrbp;
lrbp              448 drivers/scsi/ufs/ufshcd.c 		lrbp = &hba->lrb[tag];
lrbp              451 drivers/scsi/ufs/ufshcd.c 				tag, ktime_to_us(lrbp->issue_time_stamp));
lrbp              453 drivers/scsi/ufs/ufshcd.c 				tag, ktime_to_us(lrbp->compl_time_stamp));
lrbp              456 drivers/scsi/ufs/ufshcd.c 			tag, (u64)lrbp->utrd_dma_addr);
lrbp              458 drivers/scsi/ufs/ufshcd.c 		ufshcd_hex_dump("UPIU TRD: ", lrbp->utr_descriptor_ptr,
lrbp              461 drivers/scsi/ufs/ufshcd.c 			(u64)lrbp->ucd_req_dma_addr);
lrbp              462 drivers/scsi/ufs/ufshcd.c 		ufshcd_hex_dump("UPIU REQ: ", lrbp->ucd_req_ptr,
lrbp              465 drivers/scsi/ufs/ufshcd.c 			(u64)lrbp->ucd_rsp_dma_addr);
lrbp              466 drivers/scsi/ufs/ufshcd.c 		ufshcd_hex_dump("UPIU RSP: ", lrbp->ucd_rsp_ptr,
lrbp              470 drivers/scsi/ufs/ufshcd.c 			lrbp->utr_descriptor_ptr->prd_table_length);
lrbp              474 drivers/scsi/ufs/ufshcd.c 			(u64)lrbp->ucd_prdt_dma_addr);
lrbp              477 drivers/scsi/ufs/ufshcd.c 			ufshcd_hex_dump("UPIU PRDT: ", lrbp->ucd_prdt_ptr,
lrbp              640 drivers/scsi/ufs/ufshcd.c static inline int ufshcd_get_tr_ocs(struct ufshcd_lrb *lrbp)
lrbp              642 drivers/scsi/ufs/ufshcd.c 	return le32_to_cpu(lrbp->utr_descriptor_ptr->header.dword_2) & MASK_OCS;
lrbp             1898 drivers/scsi/ufs/ufshcd.c static inline void ufshcd_copy_sense_data(struct ufshcd_lrb *lrbp)
lrbp             1901 drivers/scsi/ufs/ufshcd.c 	if (lrbp->sense_buffer &&
lrbp             1902 drivers/scsi/ufs/ufshcd.c 	    ufshcd_get_rsp_upiu_data_seg_len(lrbp->ucd_rsp_ptr)) {
lrbp             1905 drivers/scsi/ufs/ufshcd.c 		len = be16_to_cpu(lrbp->ucd_rsp_ptr->sr.sense_data_len);
lrbp             1908 drivers/scsi/ufs/ufshcd.c 		memcpy(lrbp->sense_buffer, lrbp->ucd_rsp_ptr->sr.sense_data,
lrbp             1920 drivers/scsi/ufs/ufshcd.c int ufshcd_copy_query_response(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)
lrbp             1924 drivers/scsi/ufs/ufshcd.c 	memcpy(&query_res->upiu_res, &lrbp->ucd_rsp_ptr->qr, QUERY_OSF_SIZE);
lrbp             1928 drivers/scsi/ufs/ufshcd.c 	    lrbp->ucd_rsp_ptr->qr.opcode == UPIU_QUERY_OPCODE_READ_DESC) {
lrbp             1929 drivers/scsi/ufs/ufshcd.c 		u8 *descp = (u8 *)lrbp->ucd_rsp_ptr +
lrbp             1935 drivers/scsi/ufs/ufshcd.c 		resp_len = be32_to_cpu(lrbp->ucd_rsp_ptr->header.dword_2) &
lrbp             2106 drivers/scsi/ufs/ufshcd.c static int ufshcd_map_sg(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)
lrbp             2114 drivers/scsi/ufs/ufshcd.c 	cmd = lrbp->cmd;
lrbp             2121 drivers/scsi/ufs/ufshcd.c 			lrbp->utr_descriptor_ptr->prd_table_length =
lrbp             2125 drivers/scsi/ufs/ufshcd.c 			lrbp->utr_descriptor_ptr->prd_table_length =
lrbp             2128 drivers/scsi/ufs/ufshcd.c 		prd_table = (struct ufshcd_sg_entry *)lrbp->ucd_prdt_ptr;
lrbp             2140 drivers/scsi/ufs/ufshcd.c 		lrbp->utr_descriptor_ptr->prd_table_length = 0;
lrbp             2195 drivers/scsi/ufs/ufshcd.c static void ufshcd_prepare_req_desc_hdr(struct ufshcd_lrb *lrbp,
lrbp             2198 drivers/scsi/ufs/ufshcd.c 	struct utp_transfer_req_desc *req_desc = lrbp->utr_descriptor_ptr;
lrbp             2213 drivers/scsi/ufs/ufshcd.c 	dword_0 = data_direction | (lrbp->command_type
lrbp             2215 drivers/scsi/ufs/ufshcd.c 	if (lrbp->intr_cmd)
lrbp             2242 drivers/scsi/ufs/ufshcd.c void ufshcd_prepare_utp_scsi_cmd_upiu(struct ufshcd_lrb *lrbp, u32 upiu_flags)
lrbp             2244 drivers/scsi/ufs/ufshcd.c 	struct utp_upiu_req *ucd_req_ptr = lrbp->ucd_req_ptr;
lrbp             2250 drivers/scsi/ufs/ufshcd.c 				lrbp->lun, lrbp->task_tag);
lrbp             2258 drivers/scsi/ufs/ufshcd.c 		cpu_to_be32(lrbp->cmd->sdb.length);
lrbp             2260 drivers/scsi/ufs/ufshcd.c 	cdb_len = min_t(unsigned short, lrbp->cmd->cmd_len, UFS_CDB_SIZE);
lrbp             2262 drivers/scsi/ufs/ufshcd.c 	memcpy(ucd_req_ptr->sc.cdb, lrbp->cmd->cmnd, cdb_len);
lrbp             2264 drivers/scsi/ufs/ufshcd.c 	memset(lrbp->ucd_rsp_ptr, 0, sizeof(struct utp_upiu_rsp));
lrbp             2275 drivers/scsi/ufs/ufshcd.c 				struct ufshcd_lrb *lrbp, u32 upiu_flags)
lrbp             2277 drivers/scsi/ufs/ufshcd.c 	struct utp_upiu_req *ucd_req_ptr = lrbp->ucd_req_ptr;
lrbp             2284 drivers/scsi/ufs/ufshcd.c 			lrbp->lun, lrbp->task_tag);
lrbp             2303 drivers/scsi/ufs/ufshcd.c 	memset(lrbp->ucd_rsp_ptr, 0, sizeof(struct utp_upiu_rsp));
lrbp             2306 drivers/scsi/ufs/ufshcd.c static inline void ufshcd_prepare_utp_nop_upiu(struct ufshcd_lrb *lrbp)
lrbp             2308 drivers/scsi/ufs/ufshcd.c 	struct utp_upiu_req *ucd_req_ptr = lrbp->ucd_req_ptr;
lrbp             2315 drivers/scsi/ufs/ufshcd.c 			UPIU_TRANSACTION_NOP_OUT, 0, 0, lrbp->task_tag);
lrbp             2320 drivers/scsi/ufs/ufshcd.c 	memset(lrbp->ucd_rsp_ptr, 0, sizeof(struct utp_upiu_rsp));
lrbp             2329 drivers/scsi/ufs/ufshcd.c static int ufshcd_comp_devman_upiu(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)
lrbp             2336 drivers/scsi/ufs/ufshcd.c 		lrbp->command_type = UTP_CMD_TYPE_DEV_MANAGE;
lrbp             2338 drivers/scsi/ufs/ufshcd.c 		lrbp->command_type = UTP_CMD_TYPE_UFS_STORAGE;
lrbp             2340 drivers/scsi/ufs/ufshcd.c 	ufshcd_prepare_req_desc_hdr(lrbp, &upiu_flags, DMA_NONE);
lrbp             2342 drivers/scsi/ufs/ufshcd.c 		ufshcd_prepare_utp_query_req_upiu(hba, lrbp, upiu_flags);
lrbp             2344 drivers/scsi/ufs/ufshcd.c 		ufshcd_prepare_utp_nop_upiu(lrbp);
lrbp             2357 drivers/scsi/ufs/ufshcd.c static int ufshcd_comp_scsi_upiu(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)
lrbp             2364 drivers/scsi/ufs/ufshcd.c 		lrbp->command_type = UTP_CMD_TYPE_SCSI;
lrbp             2366 drivers/scsi/ufs/ufshcd.c 		lrbp->command_type = UTP_CMD_TYPE_UFS_STORAGE;
lrbp             2368 drivers/scsi/ufs/ufshcd.c 	if (likely(lrbp->cmd)) {
lrbp             2369 drivers/scsi/ufs/ufshcd.c 		ufshcd_prepare_req_desc_hdr(lrbp, &upiu_flags,
lrbp             2370 drivers/scsi/ufs/ufshcd.c 						lrbp->cmd->sc_data_direction);
lrbp             2371 drivers/scsi/ufs/ufshcd.c 		ufshcd_prepare_utp_scsi_cmd_upiu(lrbp, upiu_flags);
lrbp             2399 drivers/scsi/ufs/ufshcd.c 	struct ufshcd_lrb *lrbp;
lrbp             2468 drivers/scsi/ufs/ufshcd.c 	lrbp = &hba->lrb[tag];
lrbp             2470 drivers/scsi/ufs/ufshcd.c 	WARN_ON(lrbp->cmd);
lrbp             2471 drivers/scsi/ufs/ufshcd.c 	lrbp->cmd = cmd;
lrbp             2472 drivers/scsi/ufs/ufshcd.c 	lrbp->sense_bufflen = UFS_SENSE_SIZE;
lrbp             2473 drivers/scsi/ufs/ufshcd.c 	lrbp->sense_buffer = cmd->sense_buffer;
lrbp             2474 drivers/scsi/ufs/ufshcd.c 	lrbp->task_tag = tag;
lrbp             2475 drivers/scsi/ufs/ufshcd.c 	lrbp->lun = ufshcd_scsi_to_upiu_lun(cmd->device->lun);
lrbp             2476 drivers/scsi/ufs/ufshcd.c 	lrbp->intr_cmd = !ufshcd_is_intr_aggr_allowed(hba) ? true : false;
lrbp             2477 drivers/scsi/ufs/ufshcd.c 	lrbp->req_abort_skip = false;
lrbp             2479 drivers/scsi/ufs/ufshcd.c 	ufshcd_comp_scsi_upiu(hba, lrbp);
lrbp             2481 drivers/scsi/ufs/ufshcd.c 	err = ufshcd_map_sg(hba, lrbp);
lrbp             2484 drivers/scsi/ufs/ufshcd.c 		lrbp->cmd = NULL;
lrbp             2493 drivers/scsi/ufs/ufshcd.c 	ufshcd_vops_setup_xfer_req(hba, tag, (lrbp->cmd ? true : false));
lrbp             2503 drivers/scsi/ufs/ufshcd.c 		struct ufshcd_lrb *lrbp, enum dev_cmd_type cmd_type, int tag)
lrbp             2505 drivers/scsi/ufs/ufshcd.c 	lrbp->cmd = NULL;
lrbp             2506 drivers/scsi/ufs/ufshcd.c 	lrbp->sense_bufflen = 0;
lrbp             2507 drivers/scsi/ufs/ufshcd.c 	lrbp->sense_buffer = NULL;
lrbp             2508 drivers/scsi/ufs/ufshcd.c 	lrbp->task_tag = tag;
lrbp             2509 drivers/scsi/ufs/ufshcd.c 	lrbp->lun = 0; /* device management cmd is not specific to any LUN */
lrbp             2510 drivers/scsi/ufs/ufshcd.c 	lrbp->intr_cmd = true; /* No interrupt aggregation */
lrbp             2513 drivers/scsi/ufs/ufshcd.c 	return ufshcd_comp_devman_upiu(hba, lrbp);
lrbp             2540 drivers/scsi/ufs/ufshcd.c ufshcd_check_query_response(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)
lrbp             2545 drivers/scsi/ufs/ufshcd.c 	query_res->response = ufshcd_get_rsp_upiu_result(lrbp->ucd_rsp_ptr) >>
lrbp             2556 drivers/scsi/ufs/ufshcd.c ufshcd_dev_cmd_completion(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)
lrbp             2562 drivers/scsi/ufs/ufshcd.c 	resp = ufshcd_get_req_rsp(lrbp->ucd_rsp_ptr);
lrbp             2573 drivers/scsi/ufs/ufshcd.c 		err = ufshcd_check_query_response(hba, lrbp);
lrbp             2575 drivers/scsi/ufs/ufshcd.c 			err = ufshcd_copy_query_response(hba, lrbp);
lrbp             2594 drivers/scsi/ufs/ufshcd.c 		struct ufshcd_lrb *lrbp, int max_timeout)
lrbp             2608 drivers/scsi/ufs/ufshcd.c 		err = ufshcd_get_tr_ocs(lrbp);
lrbp             2610 drivers/scsi/ufs/ufshcd.c 			err = ufshcd_dev_cmd_completion(hba, lrbp);
lrbp             2617 drivers/scsi/ufs/ufshcd.c 			__func__, lrbp->task_tag);
lrbp             2618 drivers/scsi/ufs/ufshcd.c 		if (!ufshcd_clear_cmd(hba, lrbp->task_tag))
lrbp             2626 drivers/scsi/ufs/ufshcd.c 		ufshcd_outstanding_req_clear(hba, lrbp->task_tag);
lrbp             2682 drivers/scsi/ufs/ufshcd.c 	struct ufshcd_lrb *lrbp;
lrbp             2698 drivers/scsi/ufs/ufshcd.c 	lrbp = &hba->lrb[tag];
lrbp             2699 drivers/scsi/ufs/ufshcd.c 	WARN_ON(lrbp->cmd);
lrbp             2700 drivers/scsi/ufs/ufshcd.c 	err = ufshcd_compose_dev_cmd(hba, lrbp, cmd_type, tag);
lrbp             2710 drivers/scsi/ufs/ufshcd.c 	ufshcd_vops_setup_xfer_req(hba, tag, (lrbp->cmd ? true : false));
lrbp             2714 drivers/scsi/ufs/ufshcd.c 	err = ufshcd_wait_for_dev_cmd(hba, lrbp, timeout);
lrbp             4682 drivers/scsi/ufs/ufshcd.c ufshcd_scsi_cmd_status(struct ufshcd_lrb *lrbp, int scsi_status)
lrbp             4688 drivers/scsi/ufs/ufshcd.c 		ufshcd_copy_sense_data(lrbp);
lrbp             4698 drivers/scsi/ufs/ufshcd.c 		ufshcd_copy_sense_data(lrbp);
lrbp             4717 drivers/scsi/ufs/ufshcd.c ufshcd_transfer_rsp_status(struct ufs_hba *hba, struct ufshcd_lrb *lrbp)
lrbp             4724 drivers/scsi/ufs/ufshcd.c 	ocs = ufshcd_get_tr_ocs(lrbp);
lrbp             4728 drivers/scsi/ufs/ufshcd.c 		result = ufshcd_get_req_rsp(lrbp->ucd_rsp_ptr);
lrbp             4736 drivers/scsi/ufs/ufshcd.c 			result = ufshcd_get_rsp_upiu_result(lrbp->ucd_rsp_ptr);
lrbp             4743 drivers/scsi/ufs/ufshcd.c 			result = ufshcd_scsi_cmd_status(lrbp, scsi_status);
lrbp             4758 drivers/scsi/ufs/ufshcd.c 			    ufshcd_is_exception_event(lrbp->ucd_rsp_ptr))
lrbp             4791 drivers/scsi/ufs/ufshcd.c 				ocs, lrbp->task_tag);
lrbp             4798 drivers/scsi/ufs/ufshcd.c 		ufshcd_print_trs(hba, 1 << lrbp->task_tag, true);
lrbp             4829 drivers/scsi/ufs/ufshcd.c 	struct ufshcd_lrb *lrbp;
lrbp             4835 drivers/scsi/ufs/ufshcd.c 		lrbp = &hba->lrb[index];
lrbp             4836 drivers/scsi/ufs/ufshcd.c 		cmd = lrbp->cmd;
lrbp             4839 drivers/scsi/ufs/ufshcd.c 			result = ufshcd_transfer_rsp_status(hba, lrbp);
lrbp             4843 drivers/scsi/ufs/ufshcd.c 			lrbp->cmd = NULL;
lrbp             4848 drivers/scsi/ufs/ufshcd.c 		} else if (lrbp->command_type == UTP_CMD_TYPE_DEV_MANAGE ||
lrbp             4849 drivers/scsi/ufs/ufshcd.c 			lrbp->command_type == UTP_CMD_TYPE_UFS_STORAGE) {
lrbp             4859 drivers/scsi/ufs/ufshcd.c 		lrbp->compl_time_stamp = ktime_get();
lrbp             5801 drivers/scsi/ufs/ufshcd.c 	struct ufshcd_lrb *lrbp;
lrbp             5813 drivers/scsi/ufs/ufshcd.c 	lrbp = &hba->lrb[tag];
lrbp             5814 drivers/scsi/ufs/ufshcd.c 	WARN_ON(lrbp->cmd);
lrbp             5816 drivers/scsi/ufs/ufshcd.c 	lrbp->cmd = NULL;
lrbp             5817 drivers/scsi/ufs/ufshcd.c 	lrbp->sense_bufflen = 0;
lrbp             5818 drivers/scsi/ufs/ufshcd.c 	lrbp->sense_buffer = NULL;
lrbp             5819 drivers/scsi/ufs/ufshcd.c 	lrbp->task_tag = tag;
lrbp             5820 drivers/scsi/ufs/ufshcd.c 	lrbp->lun = 0;
lrbp             5821 drivers/scsi/ufs/ufshcd.c 	lrbp->intr_cmd = true;
lrbp             5827 drivers/scsi/ufs/ufshcd.c 		lrbp->command_type = UTP_CMD_TYPE_DEV_MANAGE;
lrbp             5830 drivers/scsi/ufs/ufshcd.c 		lrbp->command_type = UTP_CMD_TYPE_UFS_STORAGE;
lrbp             5837 drivers/scsi/ufs/ufshcd.c 	ufshcd_prepare_req_desc_hdr(lrbp, &upiu_flags, DMA_NONE);
lrbp             5840 drivers/scsi/ufs/ufshcd.c 	memcpy(lrbp->ucd_req_ptr, req_upiu, sizeof(*lrbp->ucd_req_ptr));
lrbp             5846 drivers/scsi/ufs/ufshcd.c 		memcpy(lrbp->ucd_req_ptr + 1, desc_buff, *buff_len);
lrbp             5850 drivers/scsi/ufs/ufshcd.c 	memset(lrbp->ucd_rsp_ptr, 0, sizeof(struct utp_upiu_rsp));
lrbp             5865 drivers/scsi/ufs/ufshcd.c 	ufshcd_wait_for_dev_cmd(hba, lrbp, QUERY_REQ_TIMEOUT);
lrbp             5868 drivers/scsi/ufs/ufshcd.c 	memcpy(rsp_upiu, lrbp->ucd_rsp_ptr, sizeof(*rsp_upiu));
lrbp             5870 drivers/scsi/ufs/ufshcd.c 		u8 *descp = (u8 *)lrbp->ucd_rsp_ptr + sizeof(*rsp_upiu);
lrbp             5871 drivers/scsi/ufs/ufshcd.c 		u16 resp_len = be32_to_cpu(lrbp->ucd_rsp_ptr->header.dword_2) &
lrbp             5976 drivers/scsi/ufs/ufshcd.c 	struct ufshcd_lrb *lrbp;
lrbp             5983 drivers/scsi/ufs/ufshcd.c 	lrbp = &hba->lrb[tag];
lrbp             5984 drivers/scsi/ufs/ufshcd.c 	err = ufshcd_issue_tm_cmd(hba, lrbp->lun, 0, UFS_LOGICAL_RESET, &resp);
lrbp             5993 drivers/scsi/ufs/ufshcd.c 		if (hba->lrb[pos].lun == lrbp->lun) {
lrbp             6017 drivers/scsi/ufs/ufshcd.c 	struct ufshcd_lrb *lrbp;
lrbp             6021 drivers/scsi/ufs/ufshcd.c 		lrbp = &hba->lrb[tag];
lrbp             6022 drivers/scsi/ufs/ufshcd.c 		lrbp->req_abort_skip = true;
lrbp             6047 drivers/scsi/ufs/ufshcd.c 	struct ufshcd_lrb *lrbp;
lrbp             6053 drivers/scsi/ufs/ufshcd.c 	lrbp = &hba->lrb[tag];
lrbp             6068 drivers/scsi/ufs/ufshcd.c 	if (lrbp->lun == UFS_UPIU_UFS_DEVICE_WLUN)
lrbp             6110 drivers/scsi/ufs/ufshcd.c 	if (lrbp->req_abort_skip) {
lrbp             6116 drivers/scsi/ufs/ufshcd.c 		err = ufshcd_issue_tm_cmd(hba, lrbp->lun, lrbp->task_tag,
lrbp             6155 drivers/scsi/ufs/ufshcd.c 	err = ufshcd_issue_tm_cmd(hba, lrbp->lun, lrbp->task_tag,