Lines Matching refs:pccb

50 static void scsi_print_error(struct scsi_cmd *pccb)  in scsi_print_error()  argument
56 void scsi_setup_read16(struct scsi_cmd *pccb, lbaint_t start, in scsi_setup_read16() argument
59 pccb->cmd[0] = SCSI_READ16; in scsi_setup_read16()
60 pccb->cmd[1] = pccb->lun << 5; in scsi_setup_read16()
61 pccb->cmd[2] = (unsigned char)(start >> 56) & 0xff; in scsi_setup_read16()
62 pccb->cmd[3] = (unsigned char)(start >> 48) & 0xff; in scsi_setup_read16()
63 pccb->cmd[4] = (unsigned char)(start >> 40) & 0xff; in scsi_setup_read16()
64 pccb->cmd[5] = (unsigned char)(start >> 32) & 0xff; in scsi_setup_read16()
65 pccb->cmd[6] = (unsigned char)(start >> 24) & 0xff; in scsi_setup_read16()
66 pccb->cmd[7] = (unsigned char)(start >> 16) & 0xff; in scsi_setup_read16()
67 pccb->cmd[8] = (unsigned char)(start >> 8) & 0xff; in scsi_setup_read16()
68 pccb->cmd[9] = (unsigned char)start & 0xff; in scsi_setup_read16()
69 pccb->cmd[10] = 0; in scsi_setup_read16()
70 pccb->cmd[11] = (unsigned char)(blocks >> 24) & 0xff; in scsi_setup_read16()
71 pccb->cmd[12] = (unsigned char)(blocks >> 16) & 0xff; in scsi_setup_read16()
72 pccb->cmd[13] = (unsigned char)(blocks >> 8) & 0xff; in scsi_setup_read16()
73 pccb->cmd[14] = (unsigned char)blocks & 0xff; in scsi_setup_read16()
74 pccb->cmd[15] = 0; in scsi_setup_read16()
75 pccb->cmdlen = 16; in scsi_setup_read16()
76 pccb->msgout[0] = SCSI_IDENTIFY; /* NOT USED */ in scsi_setup_read16()
78 pccb->cmd[0], pccb->cmd[1], in scsi_setup_read16()
79 pccb->cmd[2], pccb->cmd[3], pccb->cmd[4], pccb->cmd[5], in scsi_setup_read16()
80 pccb->cmd[6], pccb->cmd[7], pccb->cmd[8], pccb->cmd[9], in scsi_setup_read16()
81 pccb->cmd[11], pccb->cmd[12], pccb->cmd[13], pccb->cmd[14]); in scsi_setup_read16()
85 static void scsi_setup_read_ext(struct scsi_cmd *pccb, lbaint_t start, in scsi_setup_read_ext() argument
88 pccb->cmd[0] = SCSI_READ10; in scsi_setup_read_ext()
89 pccb->cmd[1] = pccb->lun << 5; in scsi_setup_read_ext()
90 pccb->cmd[2] = (unsigned char)(start >> 24) & 0xff; in scsi_setup_read_ext()
91 pccb->cmd[3] = (unsigned char)(start >> 16) & 0xff; in scsi_setup_read_ext()
92 pccb->cmd[4] = (unsigned char)(start >> 8) & 0xff; in scsi_setup_read_ext()
93 pccb->cmd[5] = (unsigned char)start & 0xff; in scsi_setup_read_ext()
94 pccb->cmd[6] = 0; in scsi_setup_read_ext()
95 pccb->cmd[7] = (unsigned char)(blocks >> 8) & 0xff; in scsi_setup_read_ext()
96 pccb->cmd[8] = (unsigned char)blocks & 0xff; in scsi_setup_read_ext()
97 pccb->cmd[6] = 0; in scsi_setup_read_ext()
98 pccb->cmdlen = 10; in scsi_setup_read_ext()
99 pccb->msgout[0] = SCSI_IDENTIFY; /* NOT USED */ in scsi_setup_read_ext()
101 pccb->cmd[0], pccb->cmd[1], in scsi_setup_read_ext()
102 pccb->cmd[2], pccb->cmd[3], pccb->cmd[4], pccb->cmd[5], in scsi_setup_read_ext()
103 pccb->cmd[7], pccb->cmd[8]); in scsi_setup_read_ext()
106 static void scsi_setup_write_ext(struct scsi_cmd *pccb, lbaint_t start, in scsi_setup_write_ext() argument
109 pccb->cmd[0] = SCSI_WRITE10; in scsi_setup_write_ext()
110 pccb->cmd[1] = pccb->lun << 5; in scsi_setup_write_ext()
111 pccb->cmd[2] = (unsigned char)(start >> 24) & 0xff; in scsi_setup_write_ext()
112 pccb->cmd[3] = (unsigned char)(start >> 16) & 0xff; in scsi_setup_write_ext()
113 pccb->cmd[4] = (unsigned char)(start >> 8) & 0xff; in scsi_setup_write_ext()
114 pccb->cmd[5] = (unsigned char)start & 0xff; in scsi_setup_write_ext()
115 pccb->cmd[6] = 0; in scsi_setup_write_ext()
116 pccb->cmd[7] = ((unsigned char)(blocks >> 8)) & 0xff; in scsi_setup_write_ext()
117 pccb->cmd[8] = (unsigned char)blocks & 0xff; in scsi_setup_write_ext()
118 pccb->cmd[9] = 0; in scsi_setup_write_ext()
119 pccb->cmdlen = 10; in scsi_setup_write_ext()
120 pccb->msgout[0] = SCSI_IDENTIFY; /* NOT USED */ in scsi_setup_write_ext()
123 pccb->cmd[0], pccb->cmd[1], in scsi_setup_write_ext()
124 pccb->cmd[2], pccb->cmd[3], pccb->cmd[4], pccb->cmd[5], in scsi_setup_write_ext()
125 pccb->cmd[7], pccb->cmd[8]); in scsi_setup_write_ext()
128 static void scsi_setup_inquiry(struct scsi_cmd *pccb) in scsi_setup_inquiry() argument
130 pccb->cmd[0] = SCSI_INQUIRY; in scsi_setup_inquiry()
131 pccb->cmd[1] = pccb->lun << 5; in scsi_setup_inquiry()
132 pccb->cmd[2] = 0; in scsi_setup_inquiry()
133 pccb->cmd[3] = 0; in scsi_setup_inquiry()
134 if (pccb->datalen > 255) in scsi_setup_inquiry()
135 pccb->cmd[4] = 255; in scsi_setup_inquiry()
137 pccb->cmd[4] = (unsigned char)pccb->datalen; in scsi_setup_inquiry()
138 pccb->cmd[5] = 0; in scsi_setup_inquiry()
139 pccb->cmdlen = 6; in scsi_setup_inquiry()
140 pccb->msgout[0] = SCSI_IDENTIFY; /* NOT USED */ in scsi_setup_inquiry()
160 struct scsi_cmd *pccb = (struct scsi_cmd *)&tempccb; in scsi_read() local
163 pccb->target = block_dev->target; in scsi_read()
164 pccb->lun = block_dev->lun; in scsi_read()
172 pccb->pdata = (unsigned char *)buf_addr; in scsi_read()
177 pccb->datalen = block_dev->blksz * blocks; in scsi_read()
178 scsi_setup_read16(pccb, start, blocks); in scsi_read()
184 pccb->datalen = block_dev->blksz * in scsi_read()
187 scsi_setup_read_ext(pccb, start, smallblks); in scsi_read()
191 pccb->datalen = block_dev->blksz * blks; in scsi_read()
193 scsi_setup_read_ext(pccb, start, smallblks); in scsi_read()
200 if (scsi_exec(bdev, pccb)) { in scsi_read()
201 scsi_print_error(pccb); in scsi_read()
205 buf_addr += pccb->datalen; in scsi_read()
236 struct scsi_cmd *pccb = (struct scsi_cmd *)&tempccb; in scsi_write() local
239 pccb->target = block_dev->target; in scsi_write()
240 pccb->lun = block_dev->lun; in scsi_write()
247 pccb->pdata = (unsigned char *)buf_addr; in scsi_write()
249 pccb->datalen = (block_dev->blksz * in scsi_write()
252 scsi_setup_write_ext(pccb, start, smallblks); in scsi_write()
256 pccb->datalen = block_dev->blksz * blks; in scsi_write()
258 scsi_setup_write_ext(pccb, start, smallblks); in scsi_write()
264 if (scsi_exec(bdev, pccb)) { in scsi_write()
265 scsi_print_error(pccb); in scsi_write()
269 buf_addr += pccb->datalen; in scsi_write()
359 static int scsi_read_capacity(struct udevice *dev, struct scsi_cmd *pccb, in scsi_read_capacity() argument
364 memset(pccb->cmd, '\0', sizeof(pccb->cmd)); in scsi_read_capacity()
365 pccb->cmd[0] = SCSI_RD_CAPAC10; in scsi_read_capacity()
366 pccb->cmd[1] = pccb->lun << 5; in scsi_read_capacity()
367 pccb->cmdlen = 10; in scsi_read_capacity()
368 pccb->msgout[0] = SCSI_IDENTIFY; /* NOT USED */ in scsi_read_capacity()
370 pccb->datalen = 8; in scsi_read_capacity()
371 if (scsi_exec(dev, pccb)) in scsi_read_capacity()
374 *capacity = ((lbaint_t)pccb->pdata[0] << 24) | in scsi_read_capacity()
375 ((lbaint_t)pccb->pdata[1] << 16) | in scsi_read_capacity()
376 ((lbaint_t)pccb->pdata[2] << 8) | in scsi_read_capacity()
377 ((lbaint_t)pccb->pdata[3]); in scsi_read_capacity()
381 *blksz = ((unsigned long)pccb->pdata[4] << 24) | in scsi_read_capacity()
382 ((unsigned long)pccb->pdata[5] << 16) | in scsi_read_capacity()
383 ((unsigned long)pccb->pdata[6] << 8) | in scsi_read_capacity()
384 ((unsigned long)pccb->pdata[7]); in scsi_read_capacity()
389 memset(pccb->cmd, '\0', sizeof(pccb->cmd)); in scsi_read_capacity()
390 pccb->cmd[0] = SCSI_RD_CAPAC16; in scsi_read_capacity()
391 pccb->cmd[1] = 0x10; in scsi_read_capacity()
392 pccb->cmdlen = 16; in scsi_read_capacity()
393 pccb->msgout[0] = SCSI_IDENTIFY; /* NOT USED */ in scsi_read_capacity()
395 pccb->datalen = 16; in scsi_read_capacity()
396 if (scsi_exec(dev, pccb)) in scsi_read_capacity()
399 *capacity = ((uint64_t)pccb->pdata[0] << 56) | in scsi_read_capacity()
400 ((uint64_t)pccb->pdata[1] << 48) | in scsi_read_capacity()
401 ((uint64_t)pccb->pdata[2] << 40) | in scsi_read_capacity()
402 ((uint64_t)pccb->pdata[3] << 32) | in scsi_read_capacity()
403 ((uint64_t)pccb->pdata[4] << 24) | in scsi_read_capacity()
404 ((uint64_t)pccb->pdata[5] << 16) | in scsi_read_capacity()
405 ((uint64_t)pccb->pdata[6] << 8) | in scsi_read_capacity()
406 ((uint64_t)pccb->pdata[7]); in scsi_read_capacity()
408 *blksz = ((uint64_t)pccb->pdata[8] << 56) | in scsi_read_capacity()
409 ((uint64_t)pccb->pdata[9] << 48) | in scsi_read_capacity()
410 ((uint64_t)pccb->pdata[10] << 40) | in scsi_read_capacity()
411 ((uint64_t)pccb->pdata[11] << 32) | in scsi_read_capacity()
412 ((uint64_t)pccb->pdata[12] << 24) | in scsi_read_capacity()
413 ((uint64_t)pccb->pdata[13] << 16) | in scsi_read_capacity()
414 ((uint64_t)pccb->pdata[14] << 8) | in scsi_read_capacity()
415 ((uint64_t)pccb->pdata[15]); in scsi_read_capacity()
424 static void scsi_setup_test_unit_ready(struct scsi_cmd *pccb) in scsi_setup_test_unit_ready() argument
426 pccb->cmd[0] = SCSI_TST_U_RDY; in scsi_setup_test_unit_ready()
427 pccb->cmd[1] = pccb->lun << 5; in scsi_setup_test_unit_ready()
428 pccb->cmd[2] = 0; in scsi_setup_test_unit_ready()
429 pccb->cmd[3] = 0; in scsi_setup_test_unit_ready()
430 pccb->cmd[4] = 0; in scsi_setup_test_unit_ready()
431 pccb->cmd[5] = 0; in scsi_setup_test_unit_ready()
432 pccb->cmdlen = 6; in scsi_setup_test_unit_ready()
433 pccb->msgout[0] = SCSI_IDENTIFY; /* NOT USED */ in scsi_setup_test_unit_ready()
495 struct scsi_cmd *pccb = (struct scsi_cmd *)&tempccb; in scsi_detect_dev() local
497 pccb->target = target; in scsi_detect_dev()
498 pccb->lun = lun; in scsi_detect_dev()
499 pccb->pdata = (unsigned char *)&tempbuff; in scsi_detect_dev()
500 pccb->datalen = 512; in scsi_detect_dev()
501 scsi_setup_inquiry(pccb); in scsi_detect_dev()
502 if (scsi_exec(dev, pccb)) { in scsi_detect_dev()
503 if (pccb->contr_stat == SCSI_SEL_TIME_OUT) { in scsi_detect_dev()
509 pccb->target); in scsi_detect_dev()
512 scsi_print_error(pccb); in scsi_detect_dev()
528 dev_desc->target = pccb->target; in scsi_detect_dev()
529 dev_desc->lun = pccb->lun; in scsi_detect_dev()
531 pccb->datalen = 0; in scsi_detect_dev()
532 scsi_setup_test_unit_ready(pccb); in scsi_detect_dev()
533 if (scsi_exec(dev, pccb)) { in scsi_detect_dev()
538 scsi_print_error(pccb); in scsi_detect_dev()
541 if (scsi_read_capacity(dev, pccb, &capacity, &blksz)) { in scsi_detect_dev()
542 scsi_print_error(pccb); in scsi_detect_dev()