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(rq->cmd, pc->c, 12); in ide_queue_pc_tail()
118 struct ide_atapi_pc pc; in ide_do_test_unit_ready() local
120 ide_init_pc(&pc); in ide_do_test_unit_ready()
121 pc.c[0] = TEST_UNIT_READY; in ide_do_test_unit_ready()
123 return ide_queue_pc_tail(drive, disk, &pc, NULL, 0); in ide_do_test_unit_ready()
129 struct ide_atapi_pc pc; in ide_do_start_stop() local
131 ide_init_pc(&pc); in ide_do_start_stop()
132 pc.c[0] = START_STOP; in ide_do_start_stop()
133 pc.c[4] = start; in ide_do_start_stop()
136 pc.flags |= PC_FLAG_WAIT_FOR_DSC; in ide_do_start_stop()
138 return ide_queue_pc_tail(drive, disk, &pc, NULL, 0); in ide_do_start_stop()
144 struct ide_atapi_pc pc; in ide_set_media_lock() local
149 ide_init_pc(&pc); in ide_set_media_lock()
150 pc.c[0] = ALLOW_MEDIUM_REMOVAL; in ide_set_media_lock()
151 pc.c[4] = on; in ide_set_media_lock()
153 return ide_queue_pc_tail(drive, disk, &pc, NULL, 0); in ide_set_media_lock()
157 void ide_create_request_sense_cmd(ide_drive_t *drive, struct ide_atapi_pc *pc) in ide_create_request_sense_cmd() argument
159 ide_init_pc(pc); in ide_create_request_sense_cmd()
160 pc->c[0] = REQUEST_SENSE; in ide_create_request_sense_cmd()
162 pc->c[4] = 255; in ide_create_request_sense_cmd()
163 pc->req_xfer = 18; in ide_create_request_sense_cmd()
165 pc->c[4] = 20; in ide_create_request_sense_cmd()
166 pc->req_xfer = 20; in ide_create_request_sense_cmd()
251 struct ide_atapi_pc *pc = &drive->request_sense_pc; in ide_retry_pc() local
256 ide_init_pc(pc); in ide_retry_pc()
257 memcpy(pc->c, sense_rq->cmd, 12); in ide_retry_pc()
269 if (ide_queue_sense_rq(drive, pc)) { in ide_retry_pc()
391 struct ide_atapi_pc *pc = drive->pc; in ide_pc_intr() local
399 u8 write = !!(pc->flags & PC_FLAG_WRITING); in ide_pc_intr()
409 if (pc->flags & PC_FLAG_DMA_IN_PROGRESS) { in ide_pc_intr()
419 drive->name, rq_data_dir(pc->rq) in ide_pc_intr()
421 pc->flags |= PC_FLAG_DMA_ERROR; in ide_pc_intr()
434 pc->flags &= ~PC_FLAG_DMA_IN_PROGRESS; in ide_pc_intr()
442 if ((stat & ATA_ERR) || (pc->flags & PC_FLAG_DMA_ERROR)) { in ide_pc_intr()
447 pc->rq->errors++; in ide_pc_intr()
463 pc->error = 0; in ide_pc_intr()
465 if ((pc->flags & PC_FLAG_WAIT_FOR_DSC) && (stat & ATA_DSC) == 0) in ide_pc_intr()
497 if (pc->flags & PC_FLAG_DMA_IN_PROGRESS) { in ide_pc_intr()
498 pc->flags &= ~PC_FLAG_DMA_IN_PROGRESS; in ide_pc_intr()
576 drive->hwif->tp_ops->output_data(drive, NULL, drive->pc->c, 12); in ide_delayed_transfer_pc()
584 struct ide_atapi_pc *uninitialized_var(pc); in ide_transfer_pc()
613 pc = drive->pc; in ide_transfer_pc()
660 if (pc->flags & PC_FLAG_DMA_OK) { in ide_transfer_pc()
661 pc->flags |= PC_FLAG_DMA_IN_PROGRESS; in ide_transfer_pc()
671 struct ide_atapi_pc *pc; in ide_issue_pc() local
689 pc = drive->pc; in ide_issue_pc()
700 if (pc->flags & PC_FLAG_DMA_ERROR) { in ide_issue_pc()
701 pc->flags &= ~PC_FLAG_DMA_ERROR; in ide_issue_pc()
705 if (pc->flags & PC_FLAG_DMA_OK) in ide_issue_pc()
709 pc->flags &= ~PC_FLAG_DMA_OK; in ide_issue_pc()