git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394...
[pandora-kernel.git]
/
drivers
/
ata
/
pata_bf54x.c
diff --git
a/drivers/ata/pata_bf54x.c
b/drivers/ata/pata_bf54x.c
index
9ab8973
..
d393290
100644
(file)
--- a/
drivers/ata/pata_bf54x.c
+++ b/
drivers/ata/pata_bf54x.c
@@
-911,7
+911,10
@@
static void bfin_bmdma_start(struct ata_queued_cmd *qc)
/* Reset all transfer count */
ATAPI_SET_CONTROL(base, ATAPI_GET_CONTROL(base) | TFRCNT_RST);
/* Reset all transfer count */
ATAPI_SET_CONTROL(base, ATAPI_GET_CONTROL(base) | TFRCNT_RST);
- /* Set transfer length to buffer len */
+ /* Set ATAPI state machine contorl in terminate sequence */
+ ATAPI_SET_CONTROL(base, ATAPI_GET_CONTROL(base) | END_ON_TERM);
+
+ /* Set transfer length to buffer len */
for_each_sg(qc->sg, sg, qc->n_elem, si) {
ATAPI_SET_XFER_LEN(base, (sg_dma_len(sg) >> 1));
}
for_each_sg(qc->sg, sg, qc->n_elem, si) {
ATAPI_SET_XFER_LEN(base, (sg_dma_len(sg) >> 1));
}
@@
-1008,7
+1011,7
@@
static void bfin_bus_post_reset(struct ata_port *ap, unsigned int devmask)
void __iomem *base = (void __iomem *)ap->ioaddr.ctl_addr;
unsigned int dev0 = devmask & (1 << 0);
unsigned int dev1 = devmask & (1 << 1);
void __iomem *base = (void __iomem *)ap->ioaddr.ctl_addr;
unsigned int dev0 = devmask & (1 << 0);
unsigned int dev1 = devmask & (1 << 1);
- unsigned long
timeout
;
+ unsigned long
deadline
;
/* if device 0 was found in ata_devchk, wait for its
* BSY bit to clear
/* if device 0 was found in ata_devchk, wait for its
* BSY bit to clear
@@
-1019,7
+1022,7
@@
static void bfin_bus_post_reset(struct ata_port *ap, unsigned int devmask)
/* if device 1 was found in ata_devchk, wait for
* register access, then wait for BSY to clear
*/
/* if device 1 was found in ata_devchk, wait for
* register access, then wait for BSY to clear
*/
-
timeout = jiffies + ATA_TMOUT_BOOT
;
+
deadline = ata_deadline(jiffies, ATA_TMOUT_BOOT)
;
while (dev1) {
u8 nsect, lbal;
while (dev1) {
u8 nsect, lbal;
@@
-1028,7
+1031,7
@@
static void bfin_bus_post_reset(struct ata_port *ap, unsigned int devmask)
lbal = read_atapi_register(base, ATA_REG_LBAL);
if ((nsect == 1) && (lbal == 1))
break;
lbal = read_atapi_register(base, ATA_REG_LBAL);
if ((nsect == 1) && (lbal == 1))
break;
- if (time_after(jiffies,
timeout
)) {
+ if (time_after(jiffies,
deadline
)) {
dev1 = 0;
break;
}
dev1 = 0;
break;
}