Lines Matching refs:pc
79 void ide_init_pc(struct ide_atapi_pc *pc) in ide_init_pc() argument
81 memset(pc, 0, sizeof(*pc)); in ide_init_pc()
90 struct ide_atapi_pc *pc, void *buf, unsigned int bufflen) in ide_queue_pc_tail() argument
97 rq->special = (char *)pc; in ide_queue_pc_tail()
106 memcpy(scsi_req(rq)->cmd, pc->c, 12); in ide_queue_pc_tail()
119 struct ide_atapi_pc pc; in ide_do_test_unit_ready() local
121 ide_init_pc(&pc); in ide_do_test_unit_ready()
122 pc.c[0] = TEST_UNIT_READY; in ide_do_test_unit_ready()
124 return ide_queue_pc_tail(drive, disk, &pc, NULL, 0); in ide_do_test_unit_ready()
130 struct ide_atapi_pc pc; in ide_do_start_stop() local
132 ide_init_pc(&pc); in ide_do_start_stop()
133 pc.c[0] = START_STOP; in ide_do_start_stop()
134 pc.c[4] = start; in ide_do_start_stop()
137 pc.flags |= PC_FLAG_WAIT_FOR_DSC; in ide_do_start_stop()
139 return ide_queue_pc_tail(drive, disk, &pc, NULL, 0); in ide_do_start_stop()
145 struct ide_atapi_pc pc; in ide_set_media_lock() local
150 ide_init_pc(&pc); in ide_set_media_lock()
151 pc.c[0] = ALLOW_MEDIUM_REMOVAL; in ide_set_media_lock()
152 pc.c[4] = on; in ide_set_media_lock()
154 return ide_queue_pc_tail(drive, disk, &pc, NULL, 0); in ide_set_media_lock()
158 void ide_create_request_sense_cmd(ide_drive_t *drive, struct ide_atapi_pc *pc) in ide_create_request_sense_cmd() argument
160 ide_init_pc(pc); in ide_create_request_sense_cmd()
161 pc->c[0] = REQUEST_SENSE; in ide_create_request_sense_cmd()
163 pc->c[4] = 255; in ide_create_request_sense_cmd()
164 pc->req_xfer = 18; in ide_create_request_sense_cmd()
166 pc->c[4] = 20; in ide_create_request_sense_cmd()
167 pc->req_xfer = 20; in ide_create_request_sense_cmd()
255 struct ide_atapi_pc *pc = &drive->request_sense_pc; in ide_retry_pc() local
260 ide_init_pc(pc); in ide_retry_pc()
261 memcpy(pc->c, scsi_req(sense_rq)->cmd, 12); in ide_retry_pc()
273 if (ide_queue_sense_rq(drive, pc)) { in ide_retry_pc()
401 struct ide_atapi_pc *pc = drive->pc; in ide_pc_intr() local
409 u8 write = !!(pc->flags & PC_FLAG_WRITING); in ide_pc_intr()
419 if (pc->flags & PC_FLAG_DMA_IN_PROGRESS) { in ide_pc_intr()
429 drive->name, rq_data_dir(pc->rq) in ide_pc_intr()
431 pc->flags |= PC_FLAG_DMA_ERROR; in ide_pc_intr()
445 pc->flags &= ~PC_FLAG_DMA_IN_PROGRESS; in ide_pc_intr()
453 if ((stat & ATA_ERR) || (pc->flags & PC_FLAG_DMA_ERROR)) { in ide_pc_intr()
458 scsi_req(pc->rq)->result++; in ide_pc_intr()
474 pc->error = 0; in ide_pc_intr()
476 if ((pc->flags & PC_FLAG_WAIT_FOR_DSC) && (stat & ATA_DSC) == 0) in ide_pc_intr()
508 if (pc->flags & PC_FLAG_DMA_IN_PROGRESS) { in ide_pc_intr()
509 pc->flags &= ~PC_FLAG_DMA_IN_PROGRESS; in ide_pc_intr()
587 drive->hwif->tp_ops->output_data(drive, NULL, drive->pc->c, 12); in ide_delayed_transfer_pc()
595 struct ide_atapi_pc *uninitialized_var(pc); in ide_transfer_pc()
624 pc = drive->pc; in ide_transfer_pc()
671 if (pc->flags & PC_FLAG_DMA_OK) { in ide_transfer_pc()
672 pc->flags |= PC_FLAG_DMA_IN_PROGRESS; in ide_transfer_pc()
682 struct ide_atapi_pc *pc; in ide_issue_pc() local
700 pc = drive->pc; in ide_issue_pc()
711 if (pc->flags & PC_FLAG_DMA_ERROR) { in ide_issue_pc()
712 pc->flags &= ~PC_FLAG_DMA_ERROR; in ide_issue_pc()
716 if (pc->flags & PC_FLAG_DMA_OK) in ide_issue_pc()
720 pc->flags &= ~PC_FLAG_DMA_OK; in ide_issue_pc()