Lines Matching refs:ioarcb

296 	struct pmcraid_ioarcb *ioarcb = &(cmd->ioa_cb->ioarcb);
305 ioarcb->response_handle = cpu_to_le32(index << 2);
306 ioarcb->ioarcb_bus_addr = cpu_to_le64(dma_addr);
307 ioarcb->ioasa_bus_addr = cpu_to_le64(dma_addr + ioasa_offset);
308 ioarcb->ioasa_len = cpu_to_le16(sizeof(struct pmcraid_ioasa));
313 memset(&cmd->ioa_cb->ioarcb.cdb, 0, PMCRAID_MAX_CDB_LEN);
314 ioarcb->hrrq_id = 0;
315 ioarcb->request_flags0 = 0;
316 ioarcb->request_flags1 = 0;
317 ioarcb->cmd_timeout = 0;
318 ioarcb->ioarcb_bus_addr &= cpu_to_le64(~0x1FULL);
319 ioarcb->ioadl_bus_addr = 0;
320 ioarcb->ioadl_length = 0;
321 ioarcb->data_transfer_length = 0;
322 ioarcb->add_cmd_param_length = 0;
323 ioarcb->add_cmd_param_offset = 0;
694 cmd->ioa_cb->ioarcb.cdb[0]);
762 cmd->ioa_cb->ioarcb.cdb[0],
800 cmd->ioa_cb->ioarcb.cdb[0],
831 cmd->ioa_cb->ioarcb.cdb[0], ioasc);
874 iowrite32(le64_to_cpu(cmd->ioa_cb->ioarcb.ioarcb_bus_addr), pinstance->ioarrin);
940 cmd->ioa_cb->ioarcb.cdb[0],
947 cmd->ioa_cb->ioarcb.request_type = REQ_TYPE_IOACMD;
948 cmd->ioa_cb->ioarcb.resource_handle =
950 cmd->ioa_cb->ioarcb.cdb[0] = PMCRAID_IOA_SHUTDOWN;
951 cmd->ioa_cb->ioarcb.cdb[1] = PMCRAID_SHUTDOWN_NORMAL;
955 le32_to_cpu(cmd->ioa_cb->ioarcb.response_handle));
1005 struct pmcraid_ioarcb *ioarcb = &cmd->ioa_cb->ioarcb;
1011 ioarcb->request_type = REQ_TYPE_SCSI;
1012 ioarcb->resource_handle = cpu_to_le32(PMCRAID_IOA_RES_HANDLE);
1013 ioarcb->cdb[0] = INQUIRY;
1014 ioarcb->cdb[1] = 1;
1015 ioarcb->cdb[2] = 0xD0;
1016 ioarcb->cdb[3] = (data_size >> 8) & 0xFF;
1017 ioarcb->cdb[4] = data_size & 0xFF;
1021 ioarcb->ioadl_bus_addr = cpu_to_le64((cmd->ioa_cb_bus_addr) +
1024 ioarcb->ioadl_length = cpu_to_le32(sizeof(struct pmcraid_ioadl_desc));
1025 ioarcb->ioarcb_bus_addr &= cpu_to_le64(~(0x1FULL));
1027 ioarcb->request_flags0 |= NO_LINK_DESCS;
1028 ioarcb->data_transfer_length = cpu_to_le32(data_size);
1029 ioadl = &(ioarcb->add_data.u.ioadl[0]);
1048 struct pmcraid_ioarcb *ioarcb = &cmd->ioa_cb->ioarcb;
1064 /* Initialize ioarcb */
1065 ioarcb->request_type = REQ_TYPE_IOACMD;
1066 ioarcb->resource_handle = cpu_to_le32(PMCRAID_IOA_RES_HANDLE);
1069 ioarcb->hrrq_id = index;
1070 ioarcb->cdb[0] = PMCRAID_IDENTIFY_HRRQ;
1071 ioarcb->cdb[1] = index;
1076 pmcraid_info("HRRQ_IDENTIFY with hrrq:ioarcb:index => %llx:%llx:%x\n",
1077 hrrq_addr, ioarcb->ioarcb_bus_addr, index);
1079 memcpy(&(ioarcb->cdb[2]), &hrrq_addr, sizeof(hrrq_addr));
1080 memcpy(&(ioarcb->cdb[10]), &hrrq_size, sizeof(hrrq_size));
1104 if (cmd->ioa_cb->ioarcb.cdb[1] == PMCRAID_HCAM_CODE_CONFIG_CHANGE)
1128 struct pmcraid_ioarcb *ioarcb;
1157 ioarcb = &cmd->ioa_cb->ioarcb;
1158 ioarcb->ioadl_bus_addr = cpu_to_le64((cmd->ioa_cb_bus_addr) +
1161 ioarcb->ioadl_length = cpu_to_le32(sizeof(struct pmcraid_ioadl_desc));
1162 ioadl = ioarcb->add_data.u.ioadl;
1164 /* Initialize ioarcb */
1165 ioarcb->request_type = REQ_TYPE_HCAM;
1166 ioarcb->resource_handle = cpu_to_le32(PMCRAID_IOA_RES_HANDLE);
1167 ioarcb->cdb[0] = PMCRAID_HOST_CONTROLLED_ASYNC;
1168 ioarcb->cdb[1] = type;
1169 ioarcb->cdb[7] = (rcb_size >> 8) & 0xFF;
1170 ioarcb->cdb[8] = (rcb_size) & 0xFF;
1172 ioarcb->data_transfer_length = cpu_to_le32(rcb_size);
1210 struct pmcraid_ioarcb *ioarcb = &cmd->ioa_cb->ioarcb;
1217 ioarcb_addr = cpu_to_be64(le64_to_cpu(cmd_to_cancel->ioa_cb->ioarcb.ioarcb_bus_addr));
1222 ioarcb->resource_handle = cmd_to_cancel->ioa_cb->ioarcb.resource_handle;
1223 ioarcb->request_type = REQ_TYPE_IOACMD;
1224 memset(ioarcb->cdb, 0, PMCRAID_MAX_CDB_LEN);
1225 ioarcb->cdb[0] = PMCRAID_ABORT_CMD;
1227 memcpy(&(ioarcb->cdb[2]), &ioarcb_addr, sizeof(ioarcb_addr));
1274 cmd->ioa_cb->ioarcb.cdb[0],
1685 cmd->ioa_cb->ioarcb.cdb[0],
1686 le32_to_cpu(cmd->ioa_cb->ioarcb.resource_handle),
2016 __le32 resp = cmd->ioa_cb->ioarcb.response_handle;
2025 cmd->ioa_cb->ioarcb.cdb[0],
2423 struct pmcraid_ioarcb *ioarcb = &cmd->ioa_cb->ioarcb;
2424 struct pmcraid_ioadl_desc *ioadl = ioarcb->add_data.u.ioadl;
2439 memset(ioarcb->cdb, 0, PMCRAID_MAX_CDB_LEN);
2440 ioarcb->request_flags0 = (SYNC_COMPLETE |
2443 ioarcb->request_type = REQ_TYPE_SCSI;
2444 ioarcb->cdb[0] = REQUEST_SENSE;
2445 ioarcb->cdb[4] = SCSI_SENSE_BUFFERSIZE;
2447 ioarcb->ioadl_bus_addr = cpu_to_le64((cmd->ioa_cb_bus_addr) +
2450 ioarcb->ioadl_length = cpu_to_le32(sizeof(struct pmcraid_ioadl_desc));
2452 ioarcb->data_transfer_length = cpu_to_le32(SCSI_SENSE_BUFFERSIZE);
2478 struct pmcraid_ioarcb *ioarcb = &cmd->ioa_cb->ioarcb;
2481 memset(ioarcb->cdb, 0, PMCRAID_MAX_CDB_LEN);
2482 ioarcb->request_flags0 = SYNC_OVERRIDE;
2483 ioarcb->request_type = REQ_TYPE_IOACMD;
2484 ioarcb->cdb[0] = PMCRAID_CANCEL_ALL_REQUESTS;
2487 ioarcb->cdb[1] = PMCRAID_SYNC_COMPLETE_AFTER_CANCEL;
2489 ioarcb->ioadl_bus_addr = 0;
2490 ioarcb->ioadl_length = 0;
2491 ioarcb->data_transfer_length = 0;
2492 ioarcb->ioarcb_bus_addr &= cpu_to_le64((~0x1FULL));
2708 struct pmcraid_ioarcb *ioarcb;
2748 ioarcb = &cmd->ioa_cb->ioarcb;
2749 ioarcb->resource_handle = res->cfg_entry.resource_handle;
2750 ioarcb->request_type = REQ_TYPE_IOACMD;
2751 ioarcb->cdb[0] = PMCRAID_RESET_DEVICE;
2757 ioarcb->cdb[1] = modifier;
2763 cmd->ioa_cb->ioarcb.cdb[0],
2764 le32_to_cpu(cmd->ioa_cb->ioarcb.resource_handle),
2765 le32_to_cpu(cmd->ioa_cb->ioarcb.response_handle) >> 2);
2815 le32_to_cpu(cmd->ioa_cb->ioarcb.response_handle) >> 2,
2816 cmd->ioa_cb->ioarcb.cdb[0],
2876 cmd->ioa_cb->ioarcb.cdb[0],
2877 le32_to_cpu(cmd->ioa_cb->ioarcb.response_handle) >> 2);
2883 le32_to_cpu(cancel_cmd->ioa_cb->ioarcb.response_handle) >> 2,
2884 cancel_cmd->ioa_cb->ioarcb.cdb[0],
2885 le32_to_cpu(cancel_cmd->ioa_cb->ioarcb.resource_handle));
3098 struct pmcraid_ioarcb *ioarcb = &cmd->ioa_cb->ioarcb;
3101 if (ioarcb->add_cmd_param_length)
3102 ioadl_count = DIV_ROUND_UP(le16_to_cpu(ioarcb->add_cmd_param_length), 16);
3103 ioarcb->ioadl_length = cpu_to_le32(sizeof(struct pmcraid_ioadl_desc) * sgcount);
3105 if ((sgcount + ioadl_count) > (ARRAY_SIZE(ioarcb->add_data.u.ioadl))) {
3111 ioarcb->ioarcb_bus_addr &= cpu_to_le64(~(0x1FULL));
3112 ioarcb->ioadl_bus_addr =
3116 ioadl = &ioarcb->add_data.u.ioadl[3];
3118 ioarcb->ioadl_bus_addr =
3123 ioadl = &ioarcb->add_data.u.ioadl[ioadl_count];
3124 ioarcb->ioarcb_bus_addr |=
3137 * to firmware. This builds ioadl descriptors and sets up ioarcb fields.
3151 struct pmcraid_ioarcb *ioarcb = &(cmd->ioa_cb->ioarcb);
3173 ioarcb->request_flags0 |= TRANSFER_DIR_WRITE;
3175 ioarcb->request_flags0 |= NO_LINK_DESCS;
3176 ioarcb->data_transfer_length = cpu_to_le32(length);
3330 struct pmcraid_ioarcb *ioarcb;
3374 ioarcb = &(cmd->ioa_cb->ioarcb);
3375 memcpy(ioarcb->cdb, scsi_cmd->cmnd, scsi_cmd->cmd_len);
3376 ioarcb->resource_handle = res->cfg_entry.resource_handle;
3377 ioarcb->request_type = REQ_TYPE_SCSI;
3384 ioarcb->hrrq_id = atomic_add_return(1, &(pinstance->last_message_id)) %
3390 ioarcb->request_flags0 |= INHIBIT_UL_CHECK;
3393 ioarcb->request_flags0 |= SYNC_COMPLETE;
3397 ioarcb->request_flags0 |= NO_LINK_DESCS;
3400 ioarcb->request_flags1 |= TASK_TAG_SIMPLE;
3403 ioarcb->request_flags1 |= DELAY_AFTER_RESET;
3409 le32_to_cpu(ioarcb->response_handle) >> 2,
3489 struct pmcraid_ioarcb *ioarcb = &cmd->ioa_cb->ioarcb;
3512 ioarcb->request_flags0 |= NO_LINK_DESCS;
3576 struct pmcraid_ioarcb *ioarcb;
3632 request_size = le32_to_cpu(buffer->ioarcb.data_transfer_length);
3634 if (buffer->ioarcb.request_flags0 & TRANSFER_DIR_WRITE) {
3646 if (le16_to_cpu(buffer->ioarcb.add_cmd_param_length)
3661 ioarcb = &(cmd->ioa_cb->ioarcb);
3664 ioarcb->resource_handle = buffer->ioarcb.resource_handle;
3665 ioarcb->data_transfer_length = buffer->ioarcb.data_transfer_length;
3666 ioarcb->cmd_timeout = buffer->ioarcb.cmd_timeout;
3667 ioarcb->request_type = buffer->ioarcb.request_type;
3668 ioarcb->request_flags0 = buffer->ioarcb.request_flags0;
3669 ioarcb->request_flags1 = buffer->ioarcb.request_flags1;
3670 memcpy(ioarcb->cdb, buffer->ioarcb.cdb, PMCRAID_MAX_CDB_LEN);
3672 if (buffer->ioarcb.add_cmd_param_length) {
3673 ioarcb->add_cmd_param_length =
3674 buffer->ioarcb.add_cmd_param_length;
3675 ioarcb->add_cmd_param_offset =
3676 buffer->ioarcb.add_cmd_param_offset;
3677 memcpy(ioarcb->add_data.u.add_cmd_params,
3678 buffer->ioarcb.add_data.u.add_cmd_params,
3679 le16_to_cpu(buffer->ioarcb.add_cmd_param_length));
3687 ioarcb->hrrq_id = atomic_add_return(1, &(pinstance->last_message_id)) %
3722 le32_to_cpu(cmd->ioa_cb->ioarcb.response_handle) >> 2,
3723 cmd->ioa_cb->ioarcb.cdb[0],
3724 le32_to_cpu(cmd->ioa_cb->ioarcb.resource_handle));
3734 * ioarcb
3736 buffer->ioarcb.cmd_timeout = 0;
3742 if (buffer->ioarcb.cmd_timeout == 0) {
3746 msecs_to_jiffies(le16_to_cpu(buffer->ioarcb.cmd_timeout) * 1000))) {
3749 le32_to_cpu(cmd->ioa_cb->ioarcb.response_handle) >> 2,
3750 cmd->ioa_cb->ioarcb.cdb[0]);
5376 struct pmcraid_ioarcb *ioarcb = &cmd->ioa_cb->ioarcb;
5381 ioarcb->resource_handle = cpu_to_le32(PMCRAID_IOA_RES_HANDLE);
5382 ioarcb->request_type = REQ_TYPE_IOACMD;
5383 ioarcb->cdb[0] = PMCRAID_SET_SUPPORTED_DEVICES;
5384 ioarcb->cdb[1] = ALL_DEVICES_SUPPORTED;
5418 struct pmcraid_ioarcb *ioarcb = &cmd->ioa_cb->ioarcb;
5433 ioarcb->request_type = REQ_TYPE_SCSI;
5434 ioarcb->resource_handle = cpu_to_le32(PMCRAID_IOA_RES_HANDLE);
5435 ioarcb->cdb[0] = PMCRAID_SCSI_SET_TIMESTAMP;
5436 ioarcb->cdb[1] = PMCRAID_SCSI_SERVICE_ACTION;
5437 memcpy(&(ioarcb->cdb[6]), &time_stamp_len, sizeof(time_stamp_len));
5439 ioarcb->ioadl_bus_addr = cpu_to_le64((cmd->ioa_cb_bus_addr) +
5442 ioarcb->ioadl_length = cpu_to_le32(sizeof(struct pmcraid_ioadl_desc));
5443 ioarcb->ioarcb_bus_addr &= cpu_to_le64(~(0x1FULL));
5445 ioarcb->request_flags0 |= NO_LINK_DESCS;
5446 ioarcb->request_flags0 |= TRANSFER_DIR_WRITE;
5447 ioarcb->data_transfer_length =
5449 ioadl = &(ioarcb->add_data.u.ioadl[0]);
5592 struct pmcraid_ioarcb *ioarcb = &cmd->ioa_cb->ioarcb;
5605 ioarcb->request_type = REQ_TYPE_IOACMD;
5606 ioarcb->resource_handle = cpu_to_le32(PMCRAID_IOA_RES_HANDLE);
5608 ioarcb->cdb[0] = PMCRAID_QUERY_IOA_CONFIG;
5611 memcpy(&(ioarcb->cdb[10]), &cfg_table_size, sizeof(cfg_table_size));
5616 ioarcb->ioadl_bus_addr = cpu_to_le64((cmd->ioa_cb_bus_addr) +
5619 ioarcb->ioadl_length = cpu_to_le32(sizeof(struct pmcraid_ioadl_desc));
5620 ioarcb->ioarcb_bus_addr &= cpu_to_le64(~0x1FULL);
5622 ioarcb->request_flags0 |= NO_LINK_DESCS;
5623 ioarcb->data_transfer_length =
5626 ioadl = &(ioarcb->add_data.u.ioadl[0]);