Lines Matching refs:pccb
52 static void scsi_print_error(struct scsi_cmd *pccb) in scsi_print_error() argument
58 void scsi_setup_read16(struct scsi_cmd *pccb, lbaint_t start, in scsi_setup_read16() argument
61 pccb->cmd[0] = SCSI_READ16; in scsi_setup_read16()
62 pccb->cmd[1] = pccb->lun << 5; in scsi_setup_read16()
63 pccb->cmd[2] = (unsigned char)(start >> 56) & 0xff; in scsi_setup_read16()
64 pccb->cmd[3] = (unsigned char)(start >> 48) & 0xff; in scsi_setup_read16()
65 pccb->cmd[4] = (unsigned char)(start >> 40) & 0xff; in scsi_setup_read16()
66 pccb->cmd[5] = (unsigned char)(start >> 32) & 0xff; in scsi_setup_read16()
67 pccb->cmd[6] = (unsigned char)(start >> 24) & 0xff; in scsi_setup_read16()
68 pccb->cmd[7] = (unsigned char)(start >> 16) & 0xff; in scsi_setup_read16()
69 pccb->cmd[8] = (unsigned char)(start >> 8) & 0xff; in scsi_setup_read16()
70 pccb->cmd[9] = (unsigned char)start & 0xff; in scsi_setup_read16()
71 pccb->cmd[10] = 0; in scsi_setup_read16()
72 pccb->cmd[11] = (unsigned char)(blocks >> 24) & 0xff; in scsi_setup_read16()
73 pccb->cmd[12] = (unsigned char)(blocks >> 16) & 0xff; in scsi_setup_read16()
74 pccb->cmd[13] = (unsigned char)(blocks >> 8) & 0xff; in scsi_setup_read16()
75 pccb->cmd[14] = (unsigned char)blocks & 0xff; in scsi_setup_read16()
76 pccb->cmd[15] = 0; in scsi_setup_read16()
77 pccb->cmdlen = 16; in scsi_setup_read16()
78 pccb->msgout[0] = SCSI_IDENTIFY; /* NOT USED */ in scsi_setup_read16()
80 pccb->cmd[0], pccb->cmd[1], in scsi_setup_read16()
81 pccb->cmd[2], pccb->cmd[3], pccb->cmd[4], pccb->cmd[5], in scsi_setup_read16()
82 pccb->cmd[6], pccb->cmd[7], pccb->cmd[8], pccb->cmd[9], in scsi_setup_read16()
83 pccb->cmd[11], pccb->cmd[12], pccb->cmd[13], pccb->cmd[14]); in scsi_setup_read16()
87 static void scsi_setup_read_ext(struct scsi_cmd *pccb, lbaint_t start, in scsi_setup_read_ext() argument
90 pccb->cmd[0] = SCSI_READ10; in scsi_setup_read_ext()
91 pccb->cmd[1] = pccb->lun << 5; in scsi_setup_read_ext()
92 pccb->cmd[2] = (unsigned char)(start >> 24) & 0xff; in scsi_setup_read_ext()
93 pccb->cmd[3] = (unsigned char)(start >> 16) & 0xff; in scsi_setup_read_ext()
94 pccb->cmd[4] = (unsigned char)(start >> 8) & 0xff; in scsi_setup_read_ext()
95 pccb->cmd[5] = (unsigned char)start & 0xff; in scsi_setup_read_ext()
96 pccb->cmd[6] = 0; in scsi_setup_read_ext()
97 pccb->cmd[7] = (unsigned char)(blocks >> 8) & 0xff; in scsi_setup_read_ext()
98 pccb->cmd[8] = (unsigned char)blocks & 0xff; in scsi_setup_read_ext()
99 pccb->cmd[6] = 0; in scsi_setup_read_ext()
100 pccb->cmdlen = 10; in scsi_setup_read_ext()
101 pccb->msgout[0] = SCSI_IDENTIFY; /* NOT USED */ in scsi_setup_read_ext()
103 pccb->cmd[0], pccb->cmd[1], in scsi_setup_read_ext()
104 pccb->cmd[2], pccb->cmd[3], pccb->cmd[4], pccb->cmd[5], in scsi_setup_read_ext()
105 pccb->cmd[7], pccb->cmd[8]); in scsi_setup_read_ext()
108 static void scsi_setup_write_ext(struct scsi_cmd *pccb, lbaint_t start, in scsi_setup_write_ext() argument
111 pccb->cmd[0] = SCSI_WRITE10; in scsi_setup_write_ext()
112 pccb->cmd[1] = pccb->lun << 5; in scsi_setup_write_ext()
113 pccb->cmd[2] = (unsigned char)(start >> 24) & 0xff; in scsi_setup_write_ext()
114 pccb->cmd[3] = (unsigned char)(start >> 16) & 0xff; in scsi_setup_write_ext()
115 pccb->cmd[4] = (unsigned char)(start >> 8) & 0xff; in scsi_setup_write_ext()
116 pccb->cmd[5] = (unsigned char)start & 0xff; in scsi_setup_write_ext()
117 pccb->cmd[6] = 0; in scsi_setup_write_ext()
118 pccb->cmd[7] = ((unsigned char)(blocks >> 8)) & 0xff; in scsi_setup_write_ext()
119 pccb->cmd[8] = (unsigned char)blocks & 0xff; in scsi_setup_write_ext()
120 pccb->cmd[9] = 0; in scsi_setup_write_ext()
121 pccb->cmdlen = 10; in scsi_setup_write_ext()
122 pccb->msgout[0] = SCSI_IDENTIFY; /* NOT USED */ in scsi_setup_write_ext()
125 pccb->cmd[0], pccb->cmd[1], in scsi_setup_write_ext()
126 pccb->cmd[2], pccb->cmd[3], pccb->cmd[4], pccb->cmd[5], in scsi_setup_write_ext()
127 pccb->cmd[7], pccb->cmd[8]); in scsi_setup_write_ext()
130 static void scsi_setup_inquiry(struct scsi_cmd *pccb) in scsi_setup_inquiry() argument
132 pccb->cmd[0] = SCSI_INQUIRY; in scsi_setup_inquiry()
133 pccb->cmd[1] = pccb->lun << 5; in scsi_setup_inquiry()
134 pccb->cmd[2] = 0; in scsi_setup_inquiry()
135 pccb->cmd[3] = 0; in scsi_setup_inquiry()
136 if (pccb->datalen > 255) in scsi_setup_inquiry()
137 pccb->cmd[4] = 255; in scsi_setup_inquiry()
139 pccb->cmd[4] = (unsigned char)pccb->datalen; in scsi_setup_inquiry()
140 pccb->cmd[5] = 0; in scsi_setup_inquiry()
141 pccb->cmdlen = 6; in scsi_setup_inquiry()
142 pccb->msgout[0] = SCSI_IDENTIFY; /* NOT USED */ in scsi_setup_inquiry()
162 struct scsi_cmd *pccb = (struct scsi_cmd *)&tempccb; in scsi_read() local
165 pccb->target = block_dev->target; in scsi_read()
166 pccb->lun = block_dev->lun; in scsi_read()
174 pccb->pdata = (unsigned char *)buf_addr; in scsi_read()
175 pccb->dma_dir = DMA_FROM_DEVICE; in scsi_read()
180 pccb->datalen = block_dev->blksz * blocks; in scsi_read()
181 scsi_setup_read16(pccb, start, blocks); in scsi_read()
187 pccb->datalen = block_dev->blksz * in scsi_read()
190 scsi_setup_read_ext(pccb, start, smallblks); in scsi_read()
194 pccb->datalen = block_dev->blksz * blks; in scsi_read()
196 scsi_setup_read_ext(pccb, start, smallblks); in scsi_read()
203 if (scsi_exec(bdev, pccb)) { in scsi_read()
204 scsi_print_error(pccb); in scsi_read()
208 buf_addr += pccb->datalen; in scsi_read()
239 struct scsi_cmd *pccb = (struct scsi_cmd *)&tempccb; in scsi_write() local
242 pccb->target = block_dev->target; in scsi_write()
243 pccb->lun = block_dev->lun; in scsi_write()
250 pccb->pdata = (unsigned char *)buf_addr; in scsi_write()
251 pccb->dma_dir = DMA_TO_DEVICE; in scsi_write()
253 pccb->datalen = (block_dev->blksz * in scsi_write()
256 scsi_setup_write_ext(pccb, start, smallblks); in scsi_write()
260 pccb->datalen = block_dev->blksz * blks; in scsi_write()
262 scsi_setup_write_ext(pccb, start, smallblks); in scsi_write()
268 if (scsi_exec(bdev, pccb)) { in scsi_write()
269 scsi_print_error(pccb); in scsi_write()
273 buf_addr += pccb->datalen; in scsi_write()
363 static int scsi_read_capacity(struct udevice *dev, struct scsi_cmd *pccb, in scsi_read_capacity() argument
368 memset(pccb->cmd, '\0', sizeof(pccb->cmd)); in scsi_read_capacity()
369 pccb->cmd[0] = SCSI_RD_CAPAC10; in scsi_read_capacity()
370 pccb->cmd[1] = pccb->lun << 5; in scsi_read_capacity()
371 pccb->cmdlen = 10; in scsi_read_capacity()
372 pccb->msgout[0] = SCSI_IDENTIFY; /* NOT USED */ in scsi_read_capacity()
374 pccb->datalen = 8; in scsi_read_capacity()
375 if (scsi_exec(dev, pccb)) in scsi_read_capacity()
378 *capacity = ((lbaint_t)pccb->pdata[0] << 24) | in scsi_read_capacity()
379 ((lbaint_t)pccb->pdata[1] << 16) | in scsi_read_capacity()
380 ((lbaint_t)pccb->pdata[2] << 8) | in scsi_read_capacity()
381 ((lbaint_t)pccb->pdata[3]); in scsi_read_capacity()
385 *blksz = ((unsigned long)pccb->pdata[4] << 24) | in scsi_read_capacity()
386 ((unsigned long)pccb->pdata[5] << 16) | in scsi_read_capacity()
387 ((unsigned long)pccb->pdata[6] << 8) | in scsi_read_capacity()
388 ((unsigned long)pccb->pdata[7]); in scsi_read_capacity()
393 memset(pccb->cmd, '\0', sizeof(pccb->cmd)); in scsi_read_capacity()
394 pccb->cmd[0] = SCSI_RD_CAPAC16; in scsi_read_capacity()
395 pccb->cmd[1] = 0x10; in scsi_read_capacity()
396 pccb->cmdlen = 16; in scsi_read_capacity()
397 pccb->msgout[0] = SCSI_IDENTIFY; /* NOT USED */ in scsi_read_capacity()
399 pccb->datalen = 16; in scsi_read_capacity()
400 pccb->dma_dir = DMA_FROM_DEVICE; in scsi_read_capacity()
401 if (scsi_exec(dev, pccb)) in scsi_read_capacity()
404 *capacity = ((uint64_t)pccb->pdata[0] << 56) | in scsi_read_capacity()
405 ((uint64_t)pccb->pdata[1] << 48) | in scsi_read_capacity()
406 ((uint64_t)pccb->pdata[2] << 40) | in scsi_read_capacity()
407 ((uint64_t)pccb->pdata[3] << 32) | in scsi_read_capacity()
408 ((uint64_t)pccb->pdata[4] << 24) | in scsi_read_capacity()
409 ((uint64_t)pccb->pdata[5] << 16) | in scsi_read_capacity()
410 ((uint64_t)pccb->pdata[6] << 8) | in scsi_read_capacity()
411 ((uint64_t)pccb->pdata[7]); in scsi_read_capacity()
413 *blksz = ((uint64_t)pccb->pdata[8] << 56) | in scsi_read_capacity()
414 ((uint64_t)pccb->pdata[9] << 48) | in scsi_read_capacity()
415 ((uint64_t)pccb->pdata[10] << 40) | in scsi_read_capacity()
416 ((uint64_t)pccb->pdata[11] << 32) | in scsi_read_capacity()
417 ((uint64_t)pccb->pdata[12] << 24) | in scsi_read_capacity()
418 ((uint64_t)pccb->pdata[13] << 16) | in scsi_read_capacity()
419 ((uint64_t)pccb->pdata[14] << 8) | in scsi_read_capacity()
420 ((uint64_t)pccb->pdata[15]); in scsi_read_capacity()
429 static void scsi_setup_test_unit_ready(struct scsi_cmd *pccb) in scsi_setup_test_unit_ready() argument
431 pccb->cmd[0] = SCSI_TST_U_RDY; in scsi_setup_test_unit_ready()
432 pccb->cmd[1] = pccb->lun << 5; in scsi_setup_test_unit_ready()
433 pccb->cmd[2] = 0; in scsi_setup_test_unit_ready()
434 pccb->cmd[3] = 0; in scsi_setup_test_unit_ready()
435 pccb->cmd[4] = 0; in scsi_setup_test_unit_ready()
436 pccb->cmd[5] = 0; in scsi_setup_test_unit_ready()
437 pccb->cmdlen = 6; in scsi_setup_test_unit_ready()
438 pccb->msgout[0] = SCSI_IDENTIFY; /* NOT USED */ in scsi_setup_test_unit_ready()
500 struct scsi_cmd *pccb = (struct scsi_cmd *)&tempccb; in scsi_detect_dev() local
502 pccb->target = target; in scsi_detect_dev()
503 pccb->lun = lun; in scsi_detect_dev()
504 pccb->pdata = (unsigned char *)&tempbuff; in scsi_detect_dev()
505 pccb->datalen = 512; in scsi_detect_dev()
506 pccb->dma_dir = DMA_FROM_DEVICE; in scsi_detect_dev()
507 scsi_setup_inquiry(pccb); in scsi_detect_dev()
508 if (scsi_exec(dev, pccb)) { in scsi_detect_dev()
509 if (pccb->contr_stat == SCSI_SEL_TIME_OUT) { in scsi_detect_dev()
515 pccb->target); in scsi_detect_dev()
518 scsi_print_error(pccb); in scsi_detect_dev()
534 dev_desc->target = pccb->target; in scsi_detect_dev()
535 dev_desc->lun = pccb->lun; in scsi_detect_dev()
537 pccb->datalen = 0; in scsi_detect_dev()
538 scsi_setup_test_unit_ready(pccb); in scsi_detect_dev()
539 if (scsi_exec(dev, pccb)) { in scsi_detect_dev()
544 scsi_print_error(pccb); in scsi_detect_dev()
547 if (scsi_read_capacity(dev, pccb, &capacity, &blksz)) { in scsi_detect_dev()
548 scsi_print_error(pccb); in scsi_detect_dev()