Lines Matching full:sata

17 #include <sata.h>
87 fsl_sata_t *sata; in init_sata() local
90 printf("the sata index %d is out of ranges\n\r", dev); in init_sata()
96 printf("SATA%d [dev = %d] is not enabled\n", dev+1, dev); in init_sata()
100 printf("SATA%d [dev = %d] is not enabled\n", dev+1, dev); in init_sata()
105 /* Allocate SATA device driver struct */ in init_sata()
106 sata = (fsl_sata_t *)malloc(sizeof(fsl_sata_t)); in init_sata()
107 if (!sata) { in init_sata()
108 printf("alloc the sata device struct failed\n\r"); in init_sata()
112 memset((void *)sata, 0, sizeof(fsl_sata_t)); in init_sata()
115 sata_dev_desc[dev].priv = (void *)sata; in init_sata()
117 snprintf(sata->name, 12, "SATA%d", dev); in init_sata()
121 sata->reg_base = reg; in init_sata()
126 sata->cmd_hdr_tbl_offset = (void *)malloc(length + align); in init_sata()
127 if (!sata->cmd_hdr_tbl_offset) { in init_sata()
132 cmd_hdr = (cmd_hdr_tbl_t *)(((u32)sata->cmd_hdr_tbl_offset + align) in init_sata()
134 sata->cmd_hdr = cmd_hdr; in init_sata()
137 memset((void *)sata->cmd_hdr_tbl_offset, 0, length + align); in init_sata()
142 sata->cmd_desc_offset = (void *)malloc(length + align); in init_sata()
143 if (!sata->cmd_desc_offset) { in init_sata()
147 sata->cmd_desc = (cmd_desc_t *)(((u32)sata->cmd_desc_offset + align) in init_sata()
150 memset((void *)sata->cmd_desc_offset, 0, length + align); in init_sata()
154 cda = ((u32)sata->cmd_desc + SATA_HC_CMD_DESC_SIZE * i) in init_sata()
188 /* No PM attatched, the SATA device direct connect */ in init_sata()
219 /* print sata device name */ in init_sata()
221 printf("%s ", sata->name); in init_sata()
223 printf(" %s ", sata->name); in init_sata()
232 sata->link = 1; in init_sata()
234 sata->link = 0; in init_sata()
246 sata->ata_device_type = ata_dev_classify(sig); in init_sata()
294 static int fsl_ata_exec_ata_cmd(struct fsl_sata *sata, struct sata_fis_h2d *cfis, in fsl_ata_exec_ata_cmd() argument
305 fsl_sata_reg_t __iomem *reg = sata->reg_base; in fsl_ata_exec_ata_cmd()
315 cmd_desc = sata->cmd_desc + tag; in fsl_ata_exec_ata_cmd()
379 cmd_hdr = (cmd_hdr_entry_t *)&sata->cmd_hdr->cmd_slot[tag]; in fsl_ata_exec_ata_cmd()
445 static int fsl_ata_exec_reset_cmd(struct fsl_sata *sata, struct sata_fis_h2d *cfis, in fsl_ata_exec_reset_cmd() argument
451 static int fsl_sata_exec_cmd(struct fsl_sata *sata, struct sata_fis_h2d *cfis, in fsl_sata_exec_cmd() argument
463 rc = fsl_ata_exec_ata_cmd(sata, cfis, 0, tag, buffer, len); in fsl_sata_exec_cmd()
466 rc = fsl_ata_exec_reset_cmd(sata, cfis, tag, buffer, len); in fsl_sata_exec_cmd()
469 rc = fsl_ata_exec_ata_cmd(sata, cfis, 1, tag, buffer, len); in fsl_sata_exec_cmd()
485 fsl_sata_t *sata = (fsl_sata_t *)sata_dev_desc[dev].priv; in fsl_sata_identify() local
494 fsl_sata_exec_cmd(sata, cfis, CMD_ATA, 0, (u8 *)id, ATA_ID_WORDS * 2); in fsl_sata_identify()
500 fsl_sata_t *sata = (fsl_sata_t *)sata_dev_desc[dev].priv; in fsl_sata_xfer_mode() local
502 sata->pio = id[ATA_ID_PIO_MODES]; in fsl_sata_xfer_mode()
503 sata->mwdma = id[ATA_ID_MWDMA_MODES]; in fsl_sata_xfer_mode()
504 sata->udma = id[ATA_ID_UDMA_MODES]; in fsl_sata_xfer_mode()
505 debug("pio %04x, mwdma %04x, udma %04x\n\r", sata->pio, sata->mwdma, sata->udma); in fsl_sata_xfer_mode()
510 fsl_sata_t *sata = (fsl_sata_t *)sata_dev_desc[dev].priv; in fsl_sata_set_features() local
522 udma_cap = (u8)(sata->udma & 0xff); in fsl_sata_set_features()
534 fsl_sata_exec_cmd(sata, cfis, CMD_ATA, 0, NULL, 0); in fsl_sata_set_features()
539 fsl_sata_t *sata = (fsl_sata_t *)sata_dev_desc[dev].priv; in fsl_sata_rw_cmd() local
558 fsl_sata_exec_cmd(sata, cfis, CMD_ATA, 0, buffer, ATA_SECT_SIZE * blkcnt); in fsl_sata_rw_cmd()
564 fsl_sata_t *sata = (fsl_sata_t *)sata_dev_desc[dev].priv; in fsl_sata_flush_cache() local
573 fsl_sata_exec_cmd(sata, cfis, CMD_ATA, 0, NULL, 0); in fsl_sata_flush_cache()
578 fsl_sata_t *sata = (fsl_sata_t *)sata_dev_desc[dev].priv; in fsl_sata_rw_cmd_ext() local
602 fsl_sata_exec_cmd(sata, cfis, CMD_ATA, 0, buffer, ATA_SECT_SIZE * blkcnt); in fsl_sata_rw_cmd_ext()
609 fsl_sata_t *sata = (fsl_sata_t *)sata_dev_desc[dev].priv; in fsl_sata_rw_ncq_cmd() local
614 if (sata->lba48 != 1) { in fsl_sata_rw_ncq_cmd()
640 if (sata->queue_depth >= SATA_HC_MAX_CMD) in fsl_sata_rw_ncq_cmd()
643 ncq_channel = sata->queue_depth - 1; in fsl_sata_rw_ncq_cmd()
646 fsl_sata_exec_cmd(sata, cfis, CMD_NCQ, ncq_channel, buffer, ATA_SECT_SIZE * blkcnt); in fsl_sata_rw_ncq_cmd()
652 fsl_sata_t *sata = (fsl_sata_t *)sata_dev_desc[dev].priv; in fsl_sata_flush_cache_ext() local
661 fsl_sata_exec_cmd(sata, cfis, CMD_ATA, 0, NULL, 0); in fsl_sata_flush_cache_ext()
666 fsl_sata_t *sata = (fsl_sata_t *)sata_dev_desc[dev].priv; in fsl_sata_init_wcache() local
669 sata->wcache = 1; in fsl_sata_init_wcache()
671 sata->flush = 1; in fsl_sata_init_wcache()
673 sata->flush_ext = 1; in fsl_sata_init_wcache()
678 fsl_sata_t *sata = (fsl_sata_t *)sata_dev_desc[dev].priv; in fsl_sata_get_wcache() local
679 return sata->wcache; in fsl_sata_get_wcache()
684 fsl_sata_t *sata = (fsl_sata_t *)sata_dev_desc[dev].priv; in fsl_sata_get_flush() local
685 return sata->flush; in fsl_sata_get_flush()
690 fsl_sata_t *sata = (fsl_sata_t *)sata_dev_desc[dev].priv; in fsl_sata_get_flush_ext() local
691 return sata->flush_ext; in fsl_sata_get_flush_ext()
759 * SATA interface between low level driver and command layer
764 fsl_sata_t *sata = (fsl_sata_t *)sata_dev_desc[dev].priv; in sata_read() local
766 if (sata->lba48) in sata_read()
776 fsl_sata_t *sata = (fsl_sata_t *)sata_dev_desc[dev].priv; in sata_write() local
778 if (sata->lba48) { in sata_write()
792 fsl_sata_t *sata = (fsl_sata_t *)sata_dev_desc[dev].priv; in scan_sata() local
800 if (!sata->link) in scan_sata()
831 sata->lba48 = 1; in scan_sata()
838 sata->queue_depth = ata_id_queue_depth(id); in scan_sata()