]> git.sur5r.net Git - u-boot/blobdiff - drivers/block/ahci.c
OMAP3 Move cache routine to cache.S
[u-boot] / drivers / block / ahci.c
index 2445e8c62e7e5d0568575f703994a3b909447e9a..a3ca2dcaf70e7b3535816a24d2193c9ec31513d3 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) Freescale Semiconductor, Inc. 2006. All rights reserved.
+ * Copyright (C) Freescale Semiconductor, Inc. 2006.
  * Author: Jason Jin<Jason.jin@freescale.com>
  *         Zhang Wei<wei.zhang@freescale.com>
  *
@@ -251,7 +251,6 @@ static void ahci_print_info(struct ahci_probe_ent *probe_ent)
 
 static int ahci_init_one(pci_dev_t pdev)
 {
-       u32 iobase;
        u16 vendor;
        int rc;
 
@@ -261,9 +260,6 @@ static int ahci_init_one(pci_dev_t pdev)
        memset(probe_ent, 0, sizeof(struct ahci_probe_ent));
        probe_ent->dev = pdev;
 
-       pci_read_config_dword(pdev, AHCI_PCI_BAR, &iobase);
-       iobase &= ~0xf;
-
        probe_ent->host_flags = ATA_FLAG_SATA
                                | ATA_FLAG_NO_LEGACY
                                | ATA_FLAG_MMIO
@@ -272,7 +268,8 @@ static int ahci_init_one(pci_dev_t pdev)
        probe_ent->pio_mask = 0x1f;
        probe_ent->udma_mask = 0x7f;    /*Fixme,assume to support UDMA6 */
 
-       probe_ent->mmio_base = iobase;
+       probe_ent->mmio_base = (u32)pci_map_bar(pdev, AHCI_PCI_BAR,
+                                               PCI_REGION_MEM);
 
        /* Take from kernel:
         * JMicron-specific fixup:
@@ -605,7 +602,7 @@ static int ata_scsiop_read10(ccb * pccb)
  */
 static int ata_scsiop_read_capacity10(ccb *pccb)
 {
-       u8 buf[8];
+       u32 cap;
 
        if (!ataid[pccb->target]) {
                printf("scsi_ahci: SCSI READ CAPACITY10 command failure. "
@@ -614,14 +611,12 @@ static int ata_scsiop_read_capacity10(ccb *pccb)
                return -EPERM;
        }
 
-       memset(buf, 0, 8);
-
-       *(u32 *) buf = le32_to_cpu(ataid[pccb->target]->lba_capacity);
-
-       buf[6] = 512 >> 8;
-       buf[7] = 512 & 0xff;
+       cap = le32_to_cpu(ataid[pccb->target]->lba_capacity);
+       memcpy(pccb->pdata, &cap, sizeof(cap));
 
-       memcpy(pccb->pdata, buf, 8);
+       pccb->pdata[4] = pccb->pdata[5] = 0;
+       pccb->pdata[6] = 512 >> 8;
+       pccb->pdata[7] = 512 & 0xff;
 
        return 0;
 }