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_ */

Reply via email to