Module Name: src
Committed By: matt
Date: Mon Mar 24 18:49:53 UTC 2014
Modified Files:
src/sys/dev/ata [matt-nb5-mips64]: satafis_subr.c satafisreg.h
satafisvar.h
Log Message:
Merge satafis changes from HEAD for ahcisata
To generate a diff of this commit:
cvs rdiff -u -r1.5.2.2 -r1.5.2.3 src/sys/dev/ata/satafis_subr.c
cvs rdiff -u -r1.2.2.2 -r1.2.2.3 src/sys/dev/ata/satafisreg.h
cvs rdiff -u -r1.3.2.2 -r1.3.2.3 src/sys/dev/ata/satafisvar.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/satafis_subr.c
diff -u src/sys/dev/ata/satafis_subr.c:1.5.2.2 src/sys/dev/ata/satafis_subr.c:1.5.2.3
--- src/sys/dev/ata/satafis_subr.c:1.5.2.2 Wed Apr 21 00:27:34 2010
+++ src/sys/dev/ata/satafis_subr.c Mon Mar 24 18:49:53 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: satafis_subr.c,v 1.5.2.2 2010/04/21 00:27:34 matt Exp $ */
+/* $NetBSD: satafis_subr.c,v 1.5.2.3 2014/03/24 18:49:53 matt Exp $ */
/*-
* Copyright (c) 2009 Jonathan A. Kollasch.
@@ -56,7 +56,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: satafis_subr.c,v 1.5.2.2 2010/04/21 00:27:34 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: satafis_subr.c,v 1.5.2.3 2014/03/24 18:49:53 matt Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -69,8 +69,6 @@ __KERNEL_RCSID(0, "$NetBSD: satafis_subr
#include <dev/ata/satafisreg.h>
#include <dev/ata/satafisvar.h>
-#include <dev/ic/wdcreg.h> /* for WDCTL_4BIT */
-
#include "atapibus.h"
void
@@ -79,7 +77,7 @@ satafis_rhd_construct_cmd(struct ata_com
memset(fis, 0, RHD_FISLEN);
fis[fis_type] = RHD_FISTYPE;
- fis[rhd_cdpmp] = 0x80; /* xxx magic */
+ fis[rhd_c] = RHD_C;
fis[rhd_command] = ata_c->r_command;
fis[rhd_features] = ata_c->r_features;
fis[rhd_sector] = ata_c->r_sector;
@@ -87,9 +85,6 @@ satafis_rhd_construct_cmd(struct ata_com
fis[rhd_cyl_hi] = (ata_c->r_cyl >> 8) & 0xff;
fis[rhd_dh] = ata_c->r_head & 0x0f;
fis[rhd_seccnt] = ata_c->r_count;
- fis[rhd_control] = WDCTL_4BIT;
-
- return;
}
void
@@ -103,7 +98,7 @@ satafis_rhd_construct_bio(struct ata_xfe
memset(fis, 0, RHD_FISLEN);
fis[fis_type] = RHD_FISTYPE;
- fis[rhd_cdpmp] = 0x80; /* xxx magic */
+ fis[rhd_c] = RHD_C;
if (ata_bio->flags & ATA_LBA48) {
fis[rhd_command] = (ata_bio->flags & ATA_READ) ?
WDCC_READDMA_EXT : WDCC_WRITEDMA_EXT;
@@ -125,8 +120,6 @@ satafis_rhd_construct_bio(struct ata_xfe
fis[rhd_seccnt] = nblks & 0xff;
fis[rhd_seccnt_exp] = (ata_bio->flags & ATA_LBA48) ?
((nblks >> 8) & 0xff) : 0;
- fis[rhd_control] = WDCTL_4BIT;
- return;
}
#if NATAPIBUS > 0
@@ -136,26 +129,30 @@ satafis_rhd_construct_atapi(struct ata_x
memset(fis, 0, RHD_FISLEN);
fis[fis_type] = RHD_FISTYPE;
- fis[rhd_cdpmp] = 0x80; /* xxx magic */
+ fis[rhd_c] = RHD_C;
fis[rhd_command] = ATAPI_PKT_CMD;
fis[rhd_features] = (xfer->c_flags & C_DMA) ?
ATAPI_PKT_CMD_FTRE_DMA : 0;
- fis[rhd_dh] = WDSD_IBM; /* XXX or WDSD_LBA? */
- fis[rhd_control] = WDCTL_4BIT;
return;
}
#endif /* NATAPIBUS */
void
-satafis_rdh_parse(struct ata_channel *chp, uint8_t *fis)
+satafis_rdh_parse(struct ata_channel *chp, const uint8_t *fis)
{
-#if 0
- /* siisata doesn't do enough for this to work */
- KASSERT(fis[fis_type] == RDH_FISTYPE);
-#endif
chp->ch_status = fis[rdh_status];
chp->ch_error = fis[rdh_error];
+}
- return;
+void
+satafis_rdh_cmd_readreg(struct ata_command *ata_c, const uint8_t *fis)
+{
+ ata_c->r_command = fis[rdh_status];
+ ata_c->r_features = fis[rdh_error];
+ ata_c->r_error = fis[rdh_error];
+ ata_c->r_sector = fis[rdh_sector];
+ ata_c->r_cyl = fis[rdh_cyl_hi] << 8 | fis[rdh_cyl_lo];
+ ata_c->r_head = fis[rdh_dh];
+ ata_c->r_count = fis[rdh_seccnt];
}
Index: src/sys/dev/ata/satafisreg.h
diff -u src/sys/dev/ata/satafisreg.h:1.2.2.2 src/sys/dev/ata/satafisreg.h:1.2.2.3
--- src/sys/dev/ata/satafisreg.h:1.2.2.2 Wed Apr 21 00:27:34 2010
+++ src/sys/dev/ata/satafisreg.h Mon Mar 24 18:49:53 2014
@@ -1,7 +1,7 @@
-/* $NetBSD: satafisreg.h,v 1.2.2.2 2010/04/21 00:27:34 matt Exp $ */
+/* $NetBSD: satafisreg.h,v 1.2.2.3 2014/03/24 18:49:53 matt Exp $ */
-/*-
- * Copyright (c) 2009 Jonathan A. Kollasch.
+/*
+ * Copyright (c) 2009, 2010 Jonathan A. Kollasch.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -32,7 +32,8 @@
#define RHD_FISTYPE 0x27
#define RHD_FISLEN 20
-#define rhd_cdpmp 1 /* Command bit and PM port */
+#define rhd_c 1 /* Command bit and PM port */
+#define RHD_C 0x80
#define rhd_command 2 /* wd_command */
#define rhd_features 3 /* wd_precomp */
#define rhd_sector 4 /* wd_sector */
@@ -50,17 +51,18 @@
#define RDH_FISTYPE 0x34
#define RDH_FISLEN 20
#define rdh_i 1
+#define RDH_I 0x40
#define rdh_status 2
#define rdh_error 3
#define rdh_sector 4 /* wd_sector */
#define rdh_cyl_lo 5 /* wd_cyl_lo */
#define rdh_cyl_hi 6 /* wd_cyl_hi */
#define rdh_dh 7 /* wd_sdh */
-#define rhd_sector_exp 8
-#define rhd_cyl_lo_exp 9
-#define rhd_cyl_hi_exp 10
-#define rhd_seccnt 12
-#define rhd_seccnt_exp 13
+#define rdh_sector_exp 8
+#define rdh_cyl_lo_exp 9
+#define rdh_cyl_hi_exp 10
+#define rdh_seccnt 12
+#define rdh_seccnt_exp 13
#define SDB_FISTYPE 0xA1
#define SDB_FISLEN 8
Index: src/sys/dev/ata/satafisvar.h
diff -u src/sys/dev/ata/satafisvar.h:1.3.2.2 src/sys/dev/ata/satafisvar.h:1.3.2.3
--- src/sys/dev/ata/satafisvar.h:1.3.2.2 Wed Apr 21 00:27:34 2010
+++ src/sys/dev/ata/satafisvar.h Mon Mar 24 18:49:53 2014
@@ -1,7 +1,7 @@
-/* $NetBSD: satafisvar.h,v 1.3.2.2 2010/04/21 00:27:34 matt Exp $ */
+/* $NetBSD: satafisvar.h,v 1.3.2.3 2014/03/24 18:49:53 matt Exp $ */
-/*-
- * Copyright (c) 2009 Jonathan A. Kollasch.
+/*
+ * Copyright (c) 2009, 2010 Jonathan A. Kollasch.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -33,6 +33,8 @@
void satafis_rhd_construct_cmd(struct ata_command *, uint8_t *);
void satafis_rhd_construct_bio(struct ata_xfer *, uint8_t *);
void satafis_rhd_construct_atapi(struct ata_xfer *, uint8_t *);
-void satafis_rdh_parse(struct ata_channel *, uint8_t *);
+
+void satafis_rdh_parse(struct ata_channel *, const uint8_t *);
+void satafis_rdh_cmd_readreg(struct ata_command *, const uint8_t *);
#endif /* _DEV_ATA_FISVAR_H_ */