Lines Matching refs:pccb
694 struct scsi_cmd *pccb) in ata_scsiop_inquiry() argument
709 memset(pccb->pdata, 0, pccb->datalen); in ata_scsiop_inquiry()
711 memcpy(pccb->pdata, hdr, sizeof(hdr)); in ata_scsiop_inquiry()
713 if (pccb->datalen <= 35) in ata_scsiop_inquiry()
723 port = pccb->target; in ata_scsiop_inquiry()
744 memcpy(&pccb->pdata[8], "ATA ", 8); in ata_scsiop_inquiry()
745 ata_id_strcpy((u16 *)&pccb->pdata[16], &idbuf[ATA_ID_PROD], 16); in ata_scsiop_inquiry()
746 ata_id_strcpy((u16 *)&pccb->pdata[32], &idbuf[ATA_ID_FW_REV], 4); in ata_scsiop_inquiry()
759 struct scsi_cmd *pccb, u8 is_write) in ata_scsiop_read_write() argument
764 u8 *user_buffer = pccb->pdata; in ata_scsiop_read_write()
765 u32 user_buffer_size = pccb->datalen; in ata_scsiop_read_write()
768 if (pccb->cmd[0] == SCSI_READ16) { in ata_scsiop_read_write()
769 memcpy(&lba, pccb->cmd + 2, 8); in ata_scsiop_read_write()
773 memcpy(&temp, pccb->cmd + 2, 4); in ata_scsiop_read_write()
788 if (pccb->cmd[0] == SCSI_READ16) in ata_scsiop_read_write()
789 blocks = (((u16)pccb->cmd[13]) << 8) | ((u16) pccb->cmd[14]); in ata_scsiop_read_write()
791 blocks = (((u16)pccb->cmd[7]) << 8) | ((u16) pccb->cmd[8]); in ata_scsiop_read_write()
826 if (pccb->cmd[0] == SCSI_READ16) { in ata_scsiop_read_write()
839 if (ahci_device_data_io(uc_priv, pccb->target, (u8 *)&fis, in ata_scsiop_read_write()
854 if (-EIO == ata_io_flush(uc_priv, pccb->target)) in ata_scsiop_read_write()
871 struct scsi_cmd *pccb) in ata_scsiop_read_capacity10() argument
877 if (!uc_priv->ataid[pccb->target]) { in ata_scsiop_read_capacity10()
884 cap64 = ata_id_n_sectors(uc_priv->ataid[pccb->target]); in ata_scsiop_read_capacity10()
889 memcpy(pccb->pdata, &cap, sizeof(cap)); in ata_scsiop_read_capacity10()
892 memcpy(&pccb->pdata[4], &block_size, 4); in ata_scsiop_read_capacity10()
902 struct scsi_cmd *pccb) in ata_scsiop_read_capacity16() argument
907 if (!uc_priv->ataid[pccb->target]) { in ata_scsiop_read_capacity16()
914 cap = ata_id_n_sectors(uc_priv->ataid[pccb->target]); in ata_scsiop_read_capacity16()
916 memcpy(pccb->pdata, &cap, sizeof(cap)); in ata_scsiop_read_capacity16()
919 memcpy(&pccb->pdata[8], &block_size, 8); in ata_scsiop_read_capacity16()
929 struct scsi_cmd *pccb) in ata_scsiop_test_unit_ready() argument
931 return (uc_priv->ataid[pccb->target]) ? 0 : -EPERM; in ata_scsiop_test_unit_ready()
935 static int ahci_scsi_exec(struct udevice *dev, struct scsi_cmd *pccb) in ahci_scsi_exec() argument
945 switch (pccb->cmd[0]) { in ahci_scsi_exec()
948 ret = ata_scsiop_read_write(uc_priv, pccb, 0); in ahci_scsi_exec()
951 ret = ata_scsiop_read_write(uc_priv, pccb, 1); in ahci_scsi_exec()
954 ret = ata_scsiop_read_capacity10(uc_priv, pccb); in ahci_scsi_exec()
957 ret = ata_scsiop_read_capacity16(uc_priv, pccb); in ahci_scsi_exec()
960 ret = ata_scsiop_test_unit_ready(uc_priv, pccb); in ahci_scsi_exec()
963 ret = ata_scsiop_inquiry(uc_priv, pccb); in ahci_scsi_exec()
966 printf("Unsupport SCSI command 0x%02x\n", pccb->cmd[0]); in ahci_scsi_exec()
971 debug("SCSI command 0x%02x ret errno %d\n", pccb->cmd[0], ret); in ahci_scsi_exec()
1222 int scsi_exec(struct udevice *dev, struct scsi_cmd *pccb) in scsi_exec() argument
1224 return ahci_scsi_exec(dev, pccb); in scsi_exec()