Module Name: src
Committed By: jakllsch
Date: Mon Jan 9 01:01:49 UTC 2012
Modified Files:
src/sys/dev/ata: ata_wdc.c
src/sys/dev/ic: mvsata.c wdc.c wdcvar.h
Log Message:
Instead of assume that 'features' is 0 in wdccommandext(),
pass it as an argument, as is done for wdccommand().
To generate a diff of this commit:
cvs rdiff -u -r1.95 -r1.96 src/sys/dev/ata/ata_wdc.c
cvs rdiff -u -r1.11 -r1.12 src/sys/dev/ic/mvsata.c
cvs rdiff -u -r1.266 -r1.267 src/sys/dev/ic/wdc.c
cvs rdiff -u -r1.91 -r1.92 src/sys/dev/ic/wdcvar.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/dev/ata/ata_wdc.c
diff -u src/sys/dev/ata/ata_wdc.c:1.95 src/sys/dev/ata/ata_wdc.c:1.96
--- src/sys/dev/ata/ata_wdc.c:1.95 Sun Aug 28 09:43:25 2011
+++ src/sys/dev/ata/ata_wdc.c Mon Jan 9 01:01:48 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: ata_wdc.c,v 1.95 2011/08/28 09:43:25 christos Exp $ */
+/* $NetBSD: ata_wdc.c,v 1.96 2012/01/09 01:01:48 jakllsch Exp $ */
/*
* Copyright (c) 1998, 2001, 2003 Manuel Bouyer.
@@ -54,7 +54,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ata_wdc.c,v 1.95 2011/08/28 09:43:25 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ata_wdc.c,v 1.96 2012/01/09 01:01:48 jakllsch Exp $");
#include "opt_ata.h"
#include "opt_wdc.h"
@@ -446,7 +446,7 @@ again:
}
if (ata_bio->flags & ATA_LBA48) {
wdccommandext(chp, xfer->c_drive, atacmd_to48(cmd),
- (u_int64_t)ata_bio->blkno, nblks);
+ (u_int64_t)ata_bio->blkno, nblks, 0);
} else {
wdccommand(chp, xfer->c_drive, cmd, cyl,
head, sect, nblks, 0);
@@ -520,7 +520,7 @@ again:
}
if (ata_bio->flags & ATA_LBA48) {
wdccommandext(chp, xfer->c_drive, atacmd_to48(cmd),
- (u_int64_t) ata_bio->blkno, nblks);
+ (u_int64_t)ata_bio->blkno, nblks, 0);
} else {
wdccommand(chp, xfer->c_drive, cmd, cyl,
head, sect, nblks,
Index: src/sys/dev/ic/mvsata.c
diff -u src/sys/dev/ic/mvsata.c:1.11 src/sys/dev/ic/mvsata.c:1.12
--- src/sys/dev/ic/mvsata.c:1.11 Thu Sep 1 14:55:58 2011
+++ src/sys/dev/ic/mvsata.c Mon Jan 9 01:01:49 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: mvsata.c,v 1.11 2011/09/01 14:55:58 jakllsch Exp $ */
+/* $NetBSD: mvsata.c,v 1.12 2012/01/09 01:01:49 jakllsch Exp $ */
/*
* Copyright (c) 2008 KIYOHARA Takashi
* All rights reserved.
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mvsata.c,v 1.11 2011/09/01 14:55:58 jakllsch Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mvsata.c,v 1.12 2012/01/09 01:01:49 jakllsch Exp $");
#include "opt_mvsata.h"
@@ -1166,7 +1166,7 @@ do_pio:
}
if (ata_bio->flags & ATA_LBA48)
wdccommandext(chp, xfer->c_drive, atacmd_to48(cmd),
- (u_int64_t)ata_bio->blkno, nblks);
+ (uint64_t)ata_bio->blkno, nblks, 0);
else
wdccommand(chp, xfer->c_drive, cmd, cyl,
head, sect, nblks,
Index: src/sys/dev/ic/wdc.c
diff -u src/sys/dev/ic/wdc.c:1.266 src/sys/dev/ic/wdc.c:1.267
--- src/sys/dev/ic/wdc.c:1.266 Sun Dec 4 19:48:36 2011
+++ src/sys/dev/ic/wdc.c Mon Jan 9 01:01:49 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: wdc.c,v 1.266 2011/12/04 19:48:36 jakllsch Exp $ */
+/* $NetBSD: wdc.c,v 1.267 2012/01/09 01:01:49 jakllsch Exp $ */
/*
* Copyright (c) 1998, 2001, 2003 Manuel Bouyer. All rights reserved.
@@ -58,7 +58,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: wdc.c,v 1.266 2011/12/04 19:48:36 jakllsch Exp $");
+__KERNEL_RCSID(0, "$NetBSD: wdc.c,v 1.267 2012/01/09 01:01:49 jakllsch Exp $");
#include "opt_ata.h"
#include "opt_wdc.h"
@@ -1714,7 +1714,7 @@ wdccommand(struct ata_channel *chp, u_in
*/
void
wdccommandext(struct ata_channel *chp, u_int8_t drive, u_int8_t command,
- u_int64_t blkno, u_int16_t count)
+ u_int64_t blkno, u_int16_t count, u_int16_t features)
{
struct wdc_softc *wdc = CHAN_TO_WDC(chp);
struct wdc_regs *wdr = &wdc->regs[chp->ch_channel];
@@ -1732,8 +1732,8 @@ wdccommandext(struct ata_channel *chp, u
(drive << 4) | WDSD_LBA);
if (wdc->cap & WDC_CAPABILITY_WIDEREGS) {
- bus_space_write_2(wdr->cmd_iot, wdr->cmd_iohs[wd_features], 0,
- 0);
+ bus_space_write_2(wdr->cmd_iot, wdr->cmd_iohs[wd_features],
+ 0, features);
bus_space_write_2(wdr->cmd_iot, wdr->cmd_iohs[wd_seccnt],
0, count);
bus_space_write_2(wdr->cmd_iot, wdr->cmd_iohs[wd_lba_lo],
@@ -1744,8 +1744,8 @@ wdccommandext(struct ata_channel *chp, u
0, (((blkno >> 32) & 0xff00) | ((blkno >> 16) & 0x00ff)));
} else {
/* previous */
- bus_space_write_1(wdr->cmd_iot, wdr->cmd_iohs[wd_features], 0,
- 0);
+ bus_space_write_1(wdr->cmd_iot, wdr->cmd_iohs[wd_features],
+ 0, features >> 8);
bus_space_write_1(wdr->cmd_iot, wdr->cmd_iohs[wd_seccnt],
0, count >> 8);
bus_space_write_1(wdr->cmd_iot, wdr->cmd_iohs[wd_lba_lo],
@@ -1756,12 +1756,12 @@ wdccommandext(struct ata_channel *chp, u
0, blkno >> 40);
/* current */
- bus_space_write_1(wdr->cmd_iot, wdr->cmd_iohs[wd_features], 0,
- 0);
- bus_space_write_1(wdr->cmd_iot, wdr->cmd_iohs[wd_seccnt], 0,
- count);
- bus_space_write_1(wdr->cmd_iot, wdr->cmd_iohs[wd_lba_lo], 0,
- blkno);
+ bus_space_write_1(wdr->cmd_iot, wdr->cmd_iohs[wd_features],
+ 0, features);
+ bus_space_write_1(wdr->cmd_iot, wdr->cmd_iohs[wd_seccnt],
+ 0, count);
+ bus_space_write_1(wdr->cmd_iot, wdr->cmd_iohs[wd_lba_lo],
+ 0, blkno);
bus_space_write_1(wdr->cmd_iot, wdr->cmd_iohs[wd_lba_mi],
0, blkno >> 8);
bus_space_write_1(wdr->cmd_iot, wdr->cmd_iohs[wd_lba_hi],
Index: src/sys/dev/ic/wdcvar.h
diff -u src/sys/dev/ic/wdcvar.h:1.91 src/sys/dev/ic/wdcvar.h:1.92
--- src/sys/dev/ic/wdcvar.h:1.91 Fri Nov 5 18:07:24 2010
+++ src/sys/dev/ic/wdcvar.h Mon Jan 9 01:01:49 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: wdcvar.h,v 1.91 2010/11/05 18:07:24 jakllsch Exp $ */
+/* $NetBSD: wdcvar.h,v 1.92 2012/01/09 01:01:49 jakllsch Exp $ */
/*-
* Copyright (c) 1998, 2003, 2004 The NetBSD Foundation, Inc.
@@ -161,7 +161,7 @@ int wdc_dmawait(struct ata_channel *, st
void wdccommand(struct ata_channel *, u_int8_t, u_int8_t, u_int16_t,
u_int8_t, u_int8_t, u_int8_t, u_int8_t);
void wdccommandext(struct ata_channel *, u_int8_t, u_int8_t, u_int64_t,
- u_int16_t);
+ u_int16_t, u_int16_t);
void wdccommandshort(struct ata_channel *, int, int);
void wdctimeout(void *arg);
void wdc_reset_drive(struct ata_drive_datas *, int);