Lines Matching refs:pccb
710 struct scsi_cmd *pccb) in ata_scsiop_inquiry() argument
725 memset(pccb->pdata, 0, pccb->datalen); in ata_scsiop_inquiry()
727 memcpy(pccb->pdata, hdr, sizeof(hdr)); in ata_scsiop_inquiry()
729 if (pccb->datalen <= 35) in ata_scsiop_inquiry()
739 port = pccb->target; in ata_scsiop_inquiry()
760 memcpy(&pccb->pdata[8], "ATA ", 8); in ata_scsiop_inquiry()
761 ata_id_strcpy((u16 *)&pccb->pdata[16], &idbuf[ATA_ID_PROD], 16); in ata_scsiop_inquiry()
762 ata_id_strcpy((u16 *)&pccb->pdata[32], &idbuf[ATA_ID_FW_REV], 4); in ata_scsiop_inquiry()
775 struct scsi_cmd *pccb, u8 is_write) in ata_scsiop_read_write() argument
780 u8 *user_buffer = pccb->pdata; in ata_scsiop_read_write()
781 u32 user_buffer_size = pccb->datalen; in ata_scsiop_read_write()
784 if (pccb->cmd[0] == SCSI_READ16) { in ata_scsiop_read_write()
785 memcpy(&lba, pccb->cmd + 2, 8); in ata_scsiop_read_write()
789 memcpy(&temp, pccb->cmd + 2, 4); in ata_scsiop_read_write()
804 if (pccb->cmd[0] == SCSI_READ16) in ata_scsiop_read_write()
805 blocks = (((u16)pccb->cmd[13]) << 8) | ((u16) pccb->cmd[14]); in ata_scsiop_read_write()
807 blocks = (((u16)pccb->cmd[7]) << 8) | ((u16) pccb->cmd[8]); in ata_scsiop_read_write()
842 if (pccb->cmd[0] == SCSI_READ16) { in ata_scsiop_read_write()
855 if (ahci_device_data_io(uc_priv, pccb->target, (u8 *)&fis, in ata_scsiop_read_write()
870 if (-EIO == ata_io_flush(uc_priv, pccb->target)) in ata_scsiop_read_write()
887 struct scsi_cmd *pccb) in ata_scsiop_read_capacity10() argument
893 if (!uc_priv->ataid[pccb->target]) { in ata_scsiop_read_capacity10()
900 cap64 = ata_id_n_sectors(uc_priv->ataid[pccb->target]); in ata_scsiop_read_capacity10()
905 memcpy(pccb->pdata, &cap, sizeof(cap)); in ata_scsiop_read_capacity10()
908 memcpy(&pccb->pdata[4], &block_size, 4); in ata_scsiop_read_capacity10()
918 struct scsi_cmd *pccb) in ata_scsiop_read_capacity16() argument
923 if (!uc_priv->ataid[pccb->target]) { in ata_scsiop_read_capacity16()
930 cap = ata_id_n_sectors(uc_priv->ataid[pccb->target]); in ata_scsiop_read_capacity16()
932 memcpy(pccb->pdata, &cap, sizeof(cap)); in ata_scsiop_read_capacity16()
935 memcpy(&pccb->pdata[8], &block_size, 8); in ata_scsiop_read_capacity16()
945 struct scsi_cmd *pccb) in ata_scsiop_test_unit_ready() argument
947 return (uc_priv->ataid[pccb->target]) ? 0 : -EPERM; in ata_scsiop_test_unit_ready()
951 static int ahci_scsi_exec(struct udevice *dev, struct scsi_cmd *pccb) in ahci_scsi_exec() argument
961 switch (pccb->cmd[0]) { in ahci_scsi_exec()
964 ret = ata_scsiop_read_write(uc_priv, pccb, 0); in ahci_scsi_exec()
967 ret = ata_scsiop_read_write(uc_priv, pccb, 1); in ahci_scsi_exec()
970 ret = ata_scsiop_read_capacity10(uc_priv, pccb); in ahci_scsi_exec()
973 ret = ata_scsiop_read_capacity16(uc_priv, pccb); in ahci_scsi_exec()
976 ret = ata_scsiop_test_unit_ready(uc_priv, pccb); in ahci_scsi_exec()
979 ret = ata_scsiop_inquiry(uc_priv, pccb); in ahci_scsi_exec()
982 printf("Unsupport SCSI command 0x%02x\n", pccb->cmd[0]); in ahci_scsi_exec()
987 debug("SCSI command 0x%02x ret errno %d\n", pccb->cmd[0], ret); in ahci_scsi_exec()
1238 int scsi_exec(struct udevice *dev, struct scsi_cmd *pccb) in scsi_exec() argument
1240 return ahci_scsi_exec(dev, pccb); in scsi_exec()