[U-Boot-Users] [PATCH] Merge code duplication in ata.h and libata.h
Tor Krill
tor at excito.com
Mon Mar 31 08:35:59 CEST 2008
ata.h and libata.h contains duplicate and conflicting definitions. This
patch tries to resolve this and make them both includeable in a sourcefile.
Also updated is the fsl_sata driver which uses libata.h
Signed-off-by: Tor Krill <tor at excito.com>
---
drivers/block/fsl_sata.c | 15 ++++++++-------
include/ata.h | 15 +++++++++++++--
include/libata.h | 45 +--------------------------------------------
3 files changed, 22 insertions(+), 53 deletions(-)
diff --git a/drivers/block/fsl_sata.c b/drivers/block/fsl_sata.c
index 7436c4d..2b63ac4 100644
--- a/drivers/block/fsl_sata.c
+++ b/drivers/block/fsl_sata.c
@@ -23,6 +23,7 @@
#include <asm/io.h>
#include <malloc.h>
#include <libata.h>
+#include <ata.h>
#include <fis.h>
#include "fsl_sata.h"
@@ -609,7 +610,7 @@ static u32 fsl_sata_rw_cmd(int dev, u32 start, u32 blkcnt, u8 *buffer, int is_wr
cfis->lba_low = block & 0xff;
cfis->sector_count = (u8)(blkcnt & 0xff);
- fsl_sata_exec_cmd(sata, cfis, CMD_ATA, 0, buffer, ATA_SECT_SIZE * blkcnt);
+ fsl_sata_exec_cmd(sata, cfis, CMD_ATA, 0, buffer, ATA_SECT_BYTESIZE * blkcnt);
return blkcnt;
}
@@ -658,7 +659,7 @@ static u32 fsl_sata_rw_cmd_ext(int dev, u32 start, u32 blkcnt, u8 *buffer, int i
cfis->sector_count_exp = (blkcnt >> 8) & 0xff;
cfis->sector_count = blkcnt & 0xff;
- fsl_sata_exec_cmd(sata, cfis, CMD_ATA, 0, buffer, ATA_SECT_SIZE * blkcnt);
+ fsl_sata_exec_cmd(sata, cfis, CMD_ATA, 0, buffer, ATA_SECT_BYTESIZE * blkcnt);
return blkcnt;
}
@@ -703,7 +704,7 @@ u32 fsl_sata_rw_ncq_cmd(int dev, u32 start, u32 blkcnt, u8 *buffer, int is_write
ncq_channel = sata->queue_depth - 1;
/* Use the latest queue */
- fsl_sata_exec_cmd(sata, cfis, CMD_NCQ, ncq_channel, buffer, ATA_SECT_SIZE * blkcnt);
+ fsl_sata_exec_cmd(sata, cfis, CMD_NCQ, ncq_channel, buffer, ATA_SECT_BYTESIZE * blkcnt);
return blkcnt;
}
@@ -779,7 +780,7 @@ u32 ata_low_level_rw_lba48(int dev, u32 blknr, u32 blkcnt, void *buffer, int is_
fsl_sata_rw_ncq_cmd(dev, start, max_blks, addr, is_write);
start += max_blks;
blks -= max_blks;
- addr += ATA_SECT_SIZE * max_blks;
+ addr += ATA_SECT_BYTESIZE * max_blks;
} else {
if (fsl_sata_info[dev].flags != FLAGS_FPDMA)
fsl_sata_rw_cmd_ext(dev, start, blks, addr, is_write);
@@ -787,7 +788,7 @@ u32 ata_low_level_rw_lba48(int dev, u32 blknr, u32 blkcnt, void *buffer, int is_
fsl_sata_rw_ncq_cmd(dev, start, blks, addr, is_write);
start += blks;
blks = 0;
- addr += ATA_SECT_SIZE * blks;
+ addr += ATA_SECT_BYTESIZE * blks;
}
} while (blks != 0);
@@ -810,12 +811,12 @@ u32 ata_low_level_rw_lba28(int dev, u32 blknr, u32 blkcnt, void *buffer, int is_
fsl_sata_rw_cmd(dev, start, max_blks, addr, is_write);
start += max_blks;
blks -= max_blks;
- addr += ATA_SECT_SIZE * max_blks;
+ addr += ATA_SECT_BYTESIZE * max_blks;
} else {
fsl_sata_rw_cmd(dev, start, blks, addr, is_write);
start += blks;
blks = 0;
- addr += ATA_SECT_SIZE * blks;
+ addr += ATA_SECT_BYTESIZE * blks;
}
} while (blks != 0);
diff --git a/include/ata.h b/include/ata.h
index aa6e90d..54a1455 100644
--- a/include/ata.h
+++ b/include/ata.h
@@ -119,8 +119,10 @@ enum {
ATA_REG_BYTEH = ATA_REG_LBAH,
ATA_REG_DEVSEL = ATA_REG_DEVICE,
ATA_REG_IRQ = ATA_REG_NSECT,
+};
- /* SETFEATURES stuff */
+/* SETFEATURES stuff */
+enum ata_set_features{
SETFEATURES_XFER = 0x03,
XFER_UDMA_7 = 0x47,
XFER_UDMA_6 = 0x46,
@@ -130,9 +132,13 @@ enum {
XFER_UDMA_2 = 0x42,
XFER_UDMA_1 = 0x41,
XFER_UDMA_0 = 0x40,
+ XFER_MW_DMA_4 = 0x24, /* CFA only */
+ XFER_MW_DMA_3 = 0x23, /* CFA only */
XFER_MW_DMA_2 = 0x22,
XFER_MW_DMA_1 = 0x21,
XFER_MW_DMA_0 = 0x20,
+ XFER_PIO_6 = 0x0E, /* CFA only */
+ XFER_PIO_5 = 0x0D, /* CFA only */
XFER_PIO_4 = 0x0C,
XFER_PIO_3 = 0x0B,
XFER_PIO_2 = 0x0A,
@@ -141,7 +147,12 @@ enum {
XFER_SW_DMA_2 = 0x12,
XFER_SW_DMA_1 = 0x11,
XFER_SW_DMA_0 = 0x10,
- XFER_PIO_SLOW = 0x00
+ XFER_PIO_SLOW = 0x00,
+
+ SETFEATURES_WC_ON = 0x02, /* Enable write cache */
+ SETFEATURES_WC_OFF = 0x82, /* Disable write cache */
+
+ SETFEATURES_SPINUP = 0x07, /* Spin-up drive */
};
/*
* ATA Commands (only mandatory commands listed here)
diff --git a/include/libata.h b/include/libata.h
index aedba74..246dcd3 100644
--- a/include/libata.h
+++ b/include/libata.h
@@ -49,39 +49,6 @@ enum ata_cmd {
ATA_CMD_WRITE_FPDMA_QUEUED = 0x61,
};
-/* SETFEATURES stuff
- */
-enum ata_set_features {
- /* SETFEATURES stuff */
- SETFEATURES_XFER = 0x03,
- XFER_UDMA_7 = 0x47,
- XFER_UDMA_6 = 0x46,
- XFER_UDMA_5 = 0x45,
- XFER_UDMA_4 = 0x44,
- XFER_UDMA_3 = 0x43,
- XFER_UDMA_2 = 0x42,
- XFER_UDMA_1 = 0x41,
- XFER_UDMA_0 = 0x40,
- XFER_MW_DMA_4 = 0x24, /* CFA only */
- XFER_MW_DMA_3 = 0x23, /* CFA only */
- XFER_MW_DMA_2 = 0x22,
- XFER_MW_DMA_1 = 0x21,
- XFER_MW_DMA_0 = 0x20,
- XFER_PIO_6 = 0x0E, /* CFA only */
- XFER_PIO_5 = 0x0D, /* CFA only */
- XFER_PIO_4 = 0x0C,
- XFER_PIO_3 = 0x0B,
- XFER_PIO_2 = 0x0A,
- XFER_PIO_1 = 0x09,
- XFER_PIO_0 = 0x08,
- XFER_PIO_SLOW = 0x00,
-
- SETFEATURES_WC_ON = 0x02, /* Enable write cache */
- SETFEATURES_WC_OFF = 0x82, /* Disable write cache */
-
- SETFEATURES_SPINUP = 0x07, /* Spin-up drive */
-};
-
enum ata_protocol {
ATA_PROT_UNKNOWN, /* unknown */
ATA_PROT_NODATA, /* no data */
@@ -101,26 +68,16 @@ enum ata_dev_typed {
};
enum {
- ATA_SECT_SIZE = 512,
+ ATA_SECT_BYTESIZE = 512,
ATA_MAX_SECTORS_128 = 128,
ATA_MAX_SECTORS = 256,
ATA_MAX_SECTORS_LBA48 = 65535,
/* bits in ATA command block registers */
- ATA_HOB = (1 << 7), /* LBA48 selector */
- ATA_NIEN = (1 << 1), /* disable-irq flag */
ATA_LBA = (1 << 6), /* LBA28 selector */
- ATA_DEV1 = (1 << 4), /* Select Device 1 (slave) */
- ATA_BUSY = (1 << 7), /* BSY status bit */
- ATA_DRDY = (1 << 6), /* device ready */
- ATA_DF = (1 << 5), /* device fault */
- ATA_DRQ = (1 << 3), /* data request i/o */
- ATA_ERR = (1 << 0), /* have an error */
- ATA_SRST = (1 << 2), /* software reset */
ATA_ICRC = (1 << 7), /* interface CRC error */
ATA_UNC = (1 << 6), /* uncorrectable media error */
ATA_IDNF = (1 << 4), /* ID not found */
- ATA_ABORTED = (1 << 2), /* command aborted */
ATA_ID_WORDS = 256,
ATA_ID_SERNO = 10,
--
1.5.4.4
More information about the U-Boot
mailing list