Lines Matching refs:pccb
54 static void scsi_print_error(struct scsi_cmd *pccb) in scsi_print_error() argument
60 void scsi_setup_read16(struct scsi_cmd *pccb, lbaint_t start, in scsi_setup_read16() argument
63 pccb->cmd[0] = SCSI_READ16; in scsi_setup_read16()
64 pccb->cmd[1] = pccb->lun << 5; in scsi_setup_read16()
65 pccb->cmd[2] = (unsigned char)(start >> 56) & 0xff; in scsi_setup_read16()
66 pccb->cmd[3] = (unsigned char)(start >> 48) & 0xff; in scsi_setup_read16()
67 pccb->cmd[4] = (unsigned char)(start >> 40) & 0xff; in scsi_setup_read16()
68 pccb->cmd[5] = (unsigned char)(start >> 32) & 0xff; in scsi_setup_read16()
69 pccb->cmd[6] = (unsigned char)(start >> 24) & 0xff; in scsi_setup_read16()
70 pccb->cmd[7] = (unsigned char)(start >> 16) & 0xff; in scsi_setup_read16()
71 pccb->cmd[8] = (unsigned char)(start >> 8) & 0xff; in scsi_setup_read16()
72 pccb->cmd[9] = (unsigned char)start & 0xff; in scsi_setup_read16()
73 pccb->cmd[10] = 0; in scsi_setup_read16()
74 pccb->cmd[11] = (unsigned char)(blocks >> 24) & 0xff; in scsi_setup_read16()
75 pccb->cmd[12] = (unsigned char)(blocks >> 16) & 0xff; in scsi_setup_read16()
76 pccb->cmd[13] = (unsigned char)(blocks >> 8) & 0xff; in scsi_setup_read16()
77 pccb->cmd[14] = (unsigned char)blocks & 0xff; in scsi_setup_read16()
78 pccb->cmd[15] = 0; in scsi_setup_read16()
79 pccb->cmdlen = 16; in scsi_setup_read16()
80 pccb->msgout[0] = SCSI_IDENTIFY; /* NOT USED */ in scsi_setup_read16()
82 pccb->cmd[0], pccb->cmd[1], in scsi_setup_read16()
83 pccb->cmd[2], pccb->cmd[3], pccb->cmd[4], pccb->cmd[5], in scsi_setup_read16()
84 pccb->cmd[6], pccb->cmd[7], pccb->cmd[8], pccb->cmd[9], in scsi_setup_read16()
85 pccb->cmd[11], pccb->cmd[12], pccb->cmd[13], pccb->cmd[14]); in scsi_setup_read16()
89 static void scsi_setup_read_ext(struct scsi_cmd *pccb, lbaint_t start, in scsi_setup_read_ext() argument
92 pccb->cmd[0] = SCSI_READ10; in scsi_setup_read_ext()
93 pccb->cmd[1] = pccb->lun << 5; in scsi_setup_read_ext()
94 pccb->cmd[2] = (unsigned char)(start >> 24) & 0xff; in scsi_setup_read_ext()
95 pccb->cmd[3] = (unsigned char)(start >> 16) & 0xff; in scsi_setup_read_ext()
96 pccb->cmd[4] = (unsigned char)(start >> 8) & 0xff; in scsi_setup_read_ext()
97 pccb->cmd[5] = (unsigned char)start & 0xff; in scsi_setup_read_ext()
98 pccb->cmd[6] = 0; in scsi_setup_read_ext()
99 pccb->cmd[7] = (unsigned char)(blocks >> 8) & 0xff; in scsi_setup_read_ext()
100 pccb->cmd[8] = (unsigned char)blocks & 0xff; in scsi_setup_read_ext()
101 pccb->cmd[6] = 0; in scsi_setup_read_ext()
102 pccb->cmdlen = 10; in scsi_setup_read_ext()
103 pccb->msgout[0] = SCSI_IDENTIFY; /* NOT USED */ in scsi_setup_read_ext()
105 pccb->cmd[0], pccb->cmd[1], in scsi_setup_read_ext()
106 pccb->cmd[2], pccb->cmd[3], pccb->cmd[4], pccb->cmd[5], in scsi_setup_read_ext()
107 pccb->cmd[7], pccb->cmd[8]); in scsi_setup_read_ext()
110 static void scsi_setup_write_ext(struct scsi_cmd *pccb, lbaint_t start, in scsi_setup_write_ext() argument
113 pccb->cmd[0] = SCSI_WRITE10; in scsi_setup_write_ext()
114 pccb->cmd[1] = pccb->lun << 5 | 0x8; in scsi_setup_write_ext()
115 pccb->cmd[2] = (unsigned char)(start >> 24) & 0xff; in scsi_setup_write_ext()
116 pccb->cmd[3] = (unsigned char)(start >> 16) & 0xff; in scsi_setup_write_ext()
117 pccb->cmd[4] = (unsigned char)(start >> 8) & 0xff; in scsi_setup_write_ext()
118 pccb->cmd[5] = (unsigned char)start & 0xff; in scsi_setup_write_ext()
119 pccb->cmd[6] = 0; in scsi_setup_write_ext()
120 pccb->cmd[7] = ((unsigned char)(blocks >> 8)) & 0xff; in scsi_setup_write_ext()
121 pccb->cmd[8] = (unsigned char)blocks & 0xff; in scsi_setup_write_ext()
122 pccb->cmd[9] = 0; in scsi_setup_write_ext()
123 pccb->cmdlen = 10; in scsi_setup_write_ext()
124 pccb->msgout[0] = SCSI_IDENTIFY; /* NOT USED */ in scsi_setup_write_ext()
127 pccb->cmd[0], pccb->cmd[1], in scsi_setup_write_ext()
128 pccb->cmd[2], pccb->cmd[3], pccb->cmd[4], pccb->cmd[5], in scsi_setup_write_ext()
129 pccb->cmd[7], pccb->cmd[8]); in scsi_setup_write_ext()
132 static void scsi_setup_inquiry(struct scsi_cmd *pccb) in scsi_setup_inquiry() argument
134 pccb->cmd[0] = SCSI_INQUIRY; in scsi_setup_inquiry()
135 pccb->cmd[1] = pccb->lun << 5; in scsi_setup_inquiry()
136 pccb->cmd[2] = 0; in scsi_setup_inquiry()
137 pccb->cmd[3] = 0; in scsi_setup_inquiry()
138 if (pccb->datalen > SCSI_MAX_INQUIRY_BYTES) in scsi_setup_inquiry()
139 pccb->cmd[4] = SCSI_MAX_INQUIRY_BYTES; in scsi_setup_inquiry()
141 pccb->cmd[4] = (unsigned char)pccb->datalen; in scsi_setup_inquiry()
142 pccb->cmd[5] = 0; in scsi_setup_inquiry()
143 pccb->cmdlen = 6; in scsi_setup_inquiry()
144 pccb->msgout[0] = SCSI_IDENTIFY; /* NOT USED */ in scsi_setup_inquiry()
150 static void scsi_setup_test_unit_ready(struct scsi_cmd *pccb) in scsi_setup_test_unit_ready() argument
152 pccb->cmd[0] = SCSI_TST_U_RDY; in scsi_setup_test_unit_ready()
153 pccb->cmd[1] = pccb->lun << 5; in scsi_setup_test_unit_ready()
154 pccb->cmd[2] = 0; in scsi_setup_test_unit_ready()
155 pccb->cmd[3] = 0; in scsi_setup_test_unit_ready()
156 pccb->cmd[4] = 0; in scsi_setup_test_unit_ready()
157 pccb->cmd[5] = 0; in scsi_setup_test_unit_ready()
158 pccb->cmdlen = 6; in scsi_setup_test_unit_ready()
159 pccb->msgout[0] = SCSI_IDENTIFY; /* NOT USED */ in scsi_setup_test_unit_ready()
179 struct scsi_cmd *pccb = (struct scsi_cmd *)&tempccb; in _scsi_read() local
186 pccb->target = block_dev->target; in _scsi_read()
187 pccb->lun = block_dev->lun; in _scsi_read()
195 pccb->pdata = (unsigned char *)buf_addr; in _scsi_read()
196 pccb->dma_dir = DMA_FROM_DEVICE; in _scsi_read()
201 pccb->datalen = block_dev->rawblksz * blocks; in _scsi_read()
202 scsi_setup_read16(pccb, start, blocks); in _scsi_read()
208 pccb->datalen = block_dev->rawblksz * max_read_blks; in _scsi_read()
210 scsi_setup_read_ext(pccb, start, smallblks); in _scsi_read()
214 pccb->datalen = block_dev->rawblksz * blks; in _scsi_read()
216 scsi_setup_read_ext(pccb, start, smallblks); in _scsi_read()
223 if (scsi_exec(bdev, pccb)) { in _scsi_read()
224 scsi_print_error(pccb); in _scsi_read()
228 buf_addr += pccb->datalen; in _scsi_read()
312 struct scsi_cmd *pccb = (struct scsi_cmd *)&tempccb; in _scsi_write() local
320 pccb->target = block_dev->target; in _scsi_write()
321 pccb->lun = block_dev->lun; in _scsi_write()
328 pccb->pdata = (unsigned char *)buf_addr; in _scsi_write()
329 pccb->dma_dir = DMA_TO_DEVICE; in _scsi_write()
331 pccb->datalen = (block_dev->rawblksz * max_write_blks); in _scsi_write()
333 scsi_setup_write_ext(pccb, start, smallblks); in _scsi_write()
337 pccb->datalen = block_dev->rawblksz * blks; in _scsi_write()
339 scsi_setup_write_ext(pccb, start, smallblks); in _scsi_write()
345 if (scsi_exec(bdev, pccb)) { in _scsi_write()
346 scsi_print_error(pccb); in _scsi_write()
350 buf_addr += pccb->datalen; in _scsi_write()
417 struct scsi_cmd *pccb = (struct scsi_cmd *)&tempccb; in scsi_erase() local
423 pccb->target = block_dev->target; in scsi_erase()
424 pccb->lun = block_dev->lun; in scsi_erase()
425 pccb->datalen = 0; in scsi_erase()
426 scsi_setup_test_unit_ready(pccb); in scsi_erase()
427 if (scsi_exec(bdev, pccb)) { in scsi_erase()
443 pccb->pdata = (void *)um_list; in scsi_erase()
444 pccb->datalen = 24; in scsi_erase()
445 pccb->dma_dir = DMA_TO_DEVICE; in scsi_erase()
446 memset(pccb->cmd, 0, 10); in scsi_erase()
447 pccb->cmd[0] = SCSI_UNMAP; in scsi_erase()
448 pccb->cmd[8] = 24; in scsi_erase()
449 pccb->cmdlen = 10; in scsi_erase()
451 if (scsi_exec(bdev, pccb)) { in scsi_erase()
543 static int scsi_read_capacity(struct udevice *dev, struct scsi_cmd *pccb, in scsi_read_capacity() argument
548 memset(pccb->cmd, '\0', sizeof(pccb->cmd)); in scsi_read_capacity()
549 pccb->cmd[0] = SCSI_RD_CAPAC10; in scsi_read_capacity()
550 pccb->cmd[1] = pccb->lun << 5; in scsi_read_capacity()
551 pccb->cmdlen = 10; in scsi_read_capacity()
552 pccb->msgout[0] = SCSI_IDENTIFY; /* NOT USED */ in scsi_read_capacity()
554 pccb->datalen = 8; in scsi_read_capacity()
555 if (scsi_exec(dev, pccb)) in scsi_read_capacity()
558 *capacity = ((lbaint_t)pccb->pdata[0] << 24) | in scsi_read_capacity()
559 ((lbaint_t)pccb->pdata[1] << 16) | in scsi_read_capacity()
560 ((lbaint_t)pccb->pdata[2] << 8) | in scsi_read_capacity()
561 ((lbaint_t)pccb->pdata[3]); in scsi_read_capacity()
565 *blksz = ((unsigned long)pccb->pdata[4] << 24) | in scsi_read_capacity()
566 ((unsigned long)pccb->pdata[5] << 16) | in scsi_read_capacity()
567 ((unsigned long)pccb->pdata[6] << 8) | in scsi_read_capacity()
568 ((unsigned long)pccb->pdata[7]); in scsi_read_capacity()
573 memset(pccb->cmd, '\0', sizeof(pccb->cmd)); in scsi_read_capacity()
574 pccb->cmd[0] = SCSI_RD_CAPAC16; in scsi_read_capacity()
575 pccb->cmd[1] = 0x10; in scsi_read_capacity()
576 pccb->cmdlen = 16; in scsi_read_capacity()
577 pccb->msgout[0] = SCSI_IDENTIFY; /* NOT USED */ in scsi_read_capacity()
579 pccb->datalen = 16; in scsi_read_capacity()
580 pccb->dma_dir = DMA_FROM_DEVICE; in scsi_read_capacity()
581 if (scsi_exec(dev, pccb)) in scsi_read_capacity()
584 *capacity = ((uint64_t)pccb->pdata[0] << 56) | in scsi_read_capacity()
585 ((uint64_t)pccb->pdata[1] << 48) | in scsi_read_capacity()
586 ((uint64_t)pccb->pdata[2] << 40) | in scsi_read_capacity()
587 ((uint64_t)pccb->pdata[3] << 32) | in scsi_read_capacity()
588 ((uint64_t)pccb->pdata[4] << 24) | in scsi_read_capacity()
589 ((uint64_t)pccb->pdata[5] << 16) | in scsi_read_capacity()
590 ((uint64_t)pccb->pdata[6] << 8) | in scsi_read_capacity()
591 ((uint64_t)pccb->pdata[7]); in scsi_read_capacity()
593 *blksz = ((uint64_t)pccb->pdata[8] << 56) | in scsi_read_capacity()
594 ((uint64_t)pccb->pdata[9] << 48) | in scsi_read_capacity()
595 ((uint64_t)pccb->pdata[10] << 40) | in scsi_read_capacity()
596 ((uint64_t)pccb->pdata[11] << 32) | in scsi_read_capacity()
597 ((uint64_t)pccb->pdata[12] << 24) | in scsi_read_capacity()
598 ((uint64_t)pccb->pdata[13] << 16) | in scsi_read_capacity()
599 ((uint64_t)pccb->pdata[14] << 8) | in scsi_read_capacity()
600 ((uint64_t)pccb->pdata[15]); in scsi_read_capacity()
664 struct scsi_cmd *pccb = (struct scsi_cmd *)&tempccb; in scsi_detect_dev() local
666 pccb->target = target; in scsi_detect_dev()
667 pccb->lun = lun; in scsi_detect_dev()
668 pccb->pdata = (unsigned char *)&tempbuff; in scsi_detect_dev()
669 pccb->datalen = SCSI_STD_INQUIRY_BYTES; in scsi_detect_dev()
670 pccb->dma_dir = DMA_FROM_DEVICE; in scsi_detect_dev()
671 scsi_setup_inquiry(pccb); in scsi_detect_dev()
672 if (scsi_exec(dev, pccb)) { in scsi_detect_dev()
673 if (pccb->contr_stat == SCSI_SEL_TIME_OUT) { in scsi_detect_dev()
679 pccb->target); in scsi_detect_dev()
682 scsi_print_error(pccb); in scsi_detect_dev()
698 dev_desc->target = pccb->target; in scsi_detect_dev()
699 dev_desc->lun = pccb->lun; in scsi_detect_dev()
701 pccb->datalen = 0; in scsi_detect_dev()
702 scsi_setup_test_unit_ready(pccb); in scsi_detect_dev()
703 if (scsi_exec(dev, pccb)) { in scsi_detect_dev()
708 scsi_print_error(pccb); in scsi_detect_dev()
711 if (scsi_read_capacity(dev, pccb, &capacity, &blksz)) { in scsi_detect_dev()
712 scsi_print_error(pccb); in scsi_detect_dev()