Lines Matching refs:pc
67 struct ide_atapi_pc *pc = drive->pc; in ide_floppy_callback() local
68 struct request *rq = pc->rq; in ide_floppy_callback()
69 int uptodate = pc->error ? 0 : 1; in ide_floppy_callback()
73 if (drive->failed_pc == pc) in ide_floppy_callback()
76 if (pc->c[0] == GPCMD_READ_10 || pc->c[0] == GPCMD_WRITE_10 || in ide_floppy_callback()
79 else if (pc->c[0] == GPCMD_REQUEST_SENSE) { in ide_floppy_callback()
83 if (!pc->error) { in ide_floppy_callback()
109 struct ide_atapi_pc *pc) in ide_floppy_report_error() argument
119 floppy->drive->name, pc->c[0], floppy->sense_key, in ide_floppy_report_error()
126 struct ide_atapi_pc *pc) in ide_floppy_issue_pc() argument
131 pc->c[0] != GPCMD_REQUEST_SENSE) in ide_floppy_issue_pc()
132 drive->failed_pc = pc; in ide_floppy_issue_pc()
135 drive->pc = pc; in ide_floppy_issue_pc()
137 if (pc->retries > IDEFLOPPY_MAX_PC_RETRIES) { in ide_floppy_issue_pc()
140 if (!(pc->flags & PC_FLAG_SUPPRESS_ERROR)) in ide_floppy_issue_pc()
141 ide_floppy_report_error(floppy, pc); in ide_floppy_issue_pc()
144 pc->error = IDE_DRV_ERROR_GENERAL; in ide_floppy_issue_pc()
152 ide_debug_log(IDE_DBG_FUNC, "retry #%d", pc->retries); in ide_floppy_issue_pc()
154 pc->retries++; in ide_floppy_issue_pc()
159 void ide_floppy_create_read_capacity_cmd(struct ide_atapi_pc *pc) in ide_floppy_create_read_capacity_cmd() argument
161 ide_init_pc(pc); in ide_floppy_create_read_capacity_cmd()
162 pc->c[0] = GPCMD_READ_FORMAT_CAPACITIES; in ide_floppy_create_read_capacity_cmd()
163 pc->c[7] = 255; in ide_floppy_create_read_capacity_cmd()
164 pc->c[8] = 255; in ide_floppy_create_read_capacity_cmd()
165 pc->req_xfer = 255; in ide_floppy_create_read_capacity_cmd()
169 void ide_floppy_create_mode_sense_cmd(struct ide_atapi_pc *pc, u8 page_code) in ide_floppy_create_mode_sense_cmd() argument
173 ide_init_pc(pc); in ide_floppy_create_mode_sense_cmd()
174 pc->c[0] = GPCMD_MODE_SENSE_10; in ide_floppy_create_mode_sense_cmd()
175 pc->c[1] = 0; in ide_floppy_create_mode_sense_cmd()
176 pc->c[2] = page_code; in ide_floppy_create_mode_sense_cmd()
188 put_unaligned(cpu_to_be16(length), (u16 *) &pc->c[7]); in ide_floppy_create_mode_sense_cmd()
189 pc->req_xfer = length; in ide_floppy_create_mode_sense_cmd()
193 struct ide_atapi_pc *pc, struct request *rq, in idefloppy_create_rw_cmd() argument
203 ide_init_pc(pc); in idefloppy_create_rw_cmd()
204 pc->c[0] = cmd == READ ? GPCMD_READ_10 : GPCMD_WRITE_10; in idefloppy_create_rw_cmd()
205 put_unaligned(cpu_to_be16(blocks), (unsigned short *)&pc->c[7]); in idefloppy_create_rw_cmd()
206 put_unaligned(cpu_to_be32(block), (unsigned int *) &pc->c[2]); in idefloppy_create_rw_cmd()
208 memcpy(scsi_req(rq)->cmd, pc->c, 12); in idefloppy_create_rw_cmd()
210 pc->rq = rq; in idefloppy_create_rw_cmd()
212 pc->flags |= PC_FLAG_WRITING; in idefloppy_create_rw_cmd()
214 pc->flags |= PC_FLAG_DMA_OK; in idefloppy_create_rw_cmd()
218 struct ide_atapi_pc *pc, struct request *rq) in idefloppy_blockpc_cmd() argument
220 ide_init_pc(pc); in idefloppy_blockpc_cmd()
221 memcpy(pc->c, scsi_req(rq)->cmd, sizeof(pc->c)); in idefloppy_blockpc_cmd()
222 pc->rq = rq; in idefloppy_blockpc_cmd()
224 pc->flags |= PC_FLAG_DMA_OK; in idefloppy_blockpc_cmd()
226 pc->flags |= PC_FLAG_WRITING; in idefloppy_blockpc_cmd()
235 struct ide_atapi_pc *pc; in ide_floppy_do_request() local
267 pc = &floppy->queued_pc; in ide_floppy_do_request()
268 idefloppy_create_rw_cmd(drive, pc, rq, (unsigned long)block); in ide_floppy_do_request()
272 pc = &floppy->queued_pc; in ide_floppy_do_request()
273 idefloppy_blockpc_cmd(floppy, pc, rq); in ide_floppy_do_request()
280 pc = (struct ide_atapi_pc *)ide_req(rq)->special; in ide_floppy_do_request()
301 pc->rq = rq; in ide_floppy_do_request()
303 return ide_floppy_issue_pc(drive, &cmd, pc); in ide_floppy_do_request()
317 struct ide_atapi_pc *pc) in ide_floppy_get_flexible_disk_page() argument
326 ide_floppy_create_mode_sense_cmd(pc, IDEFLOPPY_FLEXIBLE_DISK_PAGE); in ide_floppy_get_flexible_disk_page()
328 if (ide_queue_pc_tail(drive, disk, pc, buf, pc->req_xfer)) { in ide_floppy_get_flexible_disk_page()
383 struct ide_atapi_pc pc; in ide_floppy_get_capacity() local
396 ide_floppy_create_read_capacity_cmd(&pc); in ide_floppy_get_capacity()
397 if (ide_queue_pc_tail(drive, disk, &pc, pc_buf, pc.req_xfer)) { in ide_floppy_get_capacity()
477 (void) ide_floppy_get_flexible_disk_page(drive, &pc); in ide_floppy_get_capacity()