Lines Matching refs:pccb
692 struct scsi_cmd *pccb) in ata_scsiop_inquiry() argument
707 memset(pccb->pdata, 0, pccb->datalen); in ata_scsiop_inquiry()
709 memcpy(pccb->pdata, hdr, sizeof(hdr)); in ata_scsiop_inquiry()
711 if (pccb->datalen <= 35) in ata_scsiop_inquiry()
721 port = pccb->target; in ata_scsiop_inquiry()
742 memcpy(&pccb->pdata[8], "ATA ", 8); in ata_scsiop_inquiry()
743 ata_id_strcpy((u16 *)&pccb->pdata[16], &idbuf[ATA_ID_PROD], 16); in ata_scsiop_inquiry()
744 ata_id_strcpy((u16 *)&pccb->pdata[32], &idbuf[ATA_ID_FW_REV], 4); in ata_scsiop_inquiry()
757 struct scsi_cmd *pccb, u8 is_write) in ata_scsiop_read_write() argument
762 u8 *user_buffer = pccb->pdata; in ata_scsiop_read_write()
763 u32 user_buffer_size = pccb->datalen; in ata_scsiop_read_write()
766 if (pccb->cmd[0] == SCSI_READ16) { in ata_scsiop_read_write()
767 memcpy(&lba, pccb->cmd + 2, 8); in ata_scsiop_read_write()
771 memcpy(&temp, pccb->cmd + 2, 4); in ata_scsiop_read_write()
786 if (pccb->cmd[0] == SCSI_READ16) in ata_scsiop_read_write()
787 blocks = (((u16)pccb->cmd[13]) << 8) | ((u16) pccb->cmd[14]); in ata_scsiop_read_write()
789 blocks = (((u16)pccb->cmd[7]) << 8) | ((u16) pccb->cmd[8]); in ata_scsiop_read_write()
824 if (pccb->cmd[0] == SCSI_READ16) { in ata_scsiop_read_write()
837 if (ahci_device_data_io(uc_priv, pccb->target, (u8 *)&fis, in ata_scsiop_read_write()
852 if (-EIO == ata_io_flush(uc_priv, pccb->target)) in ata_scsiop_read_write()
869 struct scsi_cmd *pccb) in ata_scsiop_read_capacity10() argument
875 if (!uc_priv->ataid[pccb->target]) { in ata_scsiop_read_capacity10()
882 cap64 = ata_id_n_sectors(uc_priv->ataid[pccb->target]); in ata_scsiop_read_capacity10()
887 memcpy(pccb->pdata, &cap, sizeof(cap)); in ata_scsiop_read_capacity10()
890 memcpy(&pccb->pdata[4], &block_size, 4); in ata_scsiop_read_capacity10()
900 struct scsi_cmd *pccb) in ata_scsiop_read_capacity16() argument
905 if (!uc_priv->ataid[pccb->target]) { in ata_scsiop_read_capacity16()
912 cap = ata_id_n_sectors(uc_priv->ataid[pccb->target]); in ata_scsiop_read_capacity16()
914 memcpy(pccb->pdata, &cap, sizeof(cap)); in ata_scsiop_read_capacity16()
917 memcpy(&pccb->pdata[8], &block_size, 8); in ata_scsiop_read_capacity16()
927 struct scsi_cmd *pccb) in ata_scsiop_test_unit_ready() argument
929 return (uc_priv->ataid[pccb->target]) ? 0 : -EPERM; in ata_scsiop_test_unit_ready()
933 static int ahci_scsi_exec(struct udevice *dev, struct scsi_cmd *pccb) in ahci_scsi_exec() argument
943 switch (pccb->cmd[0]) { in ahci_scsi_exec()
946 ret = ata_scsiop_read_write(uc_priv, pccb, 0); in ahci_scsi_exec()
949 ret = ata_scsiop_read_write(uc_priv, pccb, 1); in ahci_scsi_exec()
952 ret = ata_scsiop_read_capacity10(uc_priv, pccb); in ahci_scsi_exec()
955 ret = ata_scsiop_read_capacity16(uc_priv, pccb); in ahci_scsi_exec()
958 ret = ata_scsiop_test_unit_ready(uc_priv, pccb); in ahci_scsi_exec()
961 ret = ata_scsiop_inquiry(uc_priv, pccb); in ahci_scsi_exec()
964 printf("Unsupport SCSI command 0x%02x\n", pccb->cmd[0]); in ahci_scsi_exec()
969 debug("SCSI command 0x%02x ret errno %d\n", pccb->cmd[0], ret); in ahci_scsi_exec()
1209 int scsi_exec(struct udevice *dev, struct scsi_cmd *pccb) in scsi_exec() argument
1211 return ahci_scsi_exec(dev, pccb); in scsi_exec()