Module Name: src
Committed By: kiyohara
Date: Sat Aug 3 07:39:31 UTC 2013
Modified Files:
src/sys/dev/marvell: gttwsi.c gttwsireg.h
Log Message:
Issue the STOP-bit if needed.
And remove #ifdef ARMADAXP.
To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/sys/dev/marvell/gttwsi.c
cvs rdiff -u -r1.3 -r1.4 src/sys/dev/marvell/gttwsireg.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/marvell/gttwsi.c
diff -u src/sys/dev/marvell/gttwsi.c:1.8 src/sys/dev/marvell/gttwsi.c:1.9
--- src/sys/dev/marvell/gttwsi.c:1.8 Mon May 13 15:47:18 2013
+++ src/sys/dev/marvell/gttwsi.c Sat Aug 3 07:39:31 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: gttwsi.c,v 1.8 2013/05/13 15:47:18 christos Exp $ */
+/* $NetBSD: gttwsi.c,v 1.9 2013/08/03 07:39:31 kiyohara Exp $ */
/*
* Copyright (c) 2008 Eiji Kawauchi.
* All rights reserved.
@@ -66,7 +66,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: gttwsi.c,v 1.8 2013/05/13 15:47:18 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: gttwsi.c,v 1.9 2013/08/03 07:39:31 kiyohara Exp $");
#include "locators.h"
#include <sys/param.h>
@@ -341,13 +341,8 @@ gttwsi_read_byte(void *v, uint8_t *valp,
error = gttwsi_wait(sc, CONTROL_ACK, STAT_MRRD_AT, flags);
if (!error)
*valp = RREG(sc, TWSI_DATA);
- if (flags & I2C_F_LAST) {
-#if defined(ARMADAXP)
+ if ((flags & (I2C_F_LAST | I2C_F_STOP)) == (I2C_F_LAST | I2C_F_STOP))
error = gttwsi_send_stop(sc, flags);
-#else
- WREG(sc, TWSI_CONTROL, 0);
-#endif
- }
return error;
}
@@ -355,13 +350,13 @@ static int
gttwsi_write_byte(void *v, uint8_t val, int flags)
{
struct gttwsi_softc *sc = v;
+ int error;
WREG(sc, TWSI_DATA, val);
-#if defined(ARMADAXP)
- if (flags & I2C_F_LAST)
+ error = gttwsi_wait(sc, 0, STAT_MTDB_AR, flags);
+ if (flags & I2C_F_STOP)
gttwsi_send_stop(sc, flags);
-#endif
- return gttwsi_wait(sc, 0, STAT_MTDB_AR, flags);
+ return error;
}
static int
@@ -399,19 +394,5 @@ gttwsi_wait(struct gttwsi_softc *sc, uin
"unexpected status 0x%x: expect 0x%x\n", status, expect);
return EIO;
}
-
-#ifndef ARMADAXP
- if (flags & I2C_F_STOP)
- switch (expect) {
- case STAT_SCT:
- case STAT_RSCT:
- case STAT_MRRD_AT:
- case STAT_ARBT_AR:
- break;
- default:
- error = gttwsi_send_stop(sc, flags);
- }
-#endif
-
return error;
}
Index: src/sys/dev/marvell/gttwsireg.h
diff -u src/sys/dev/marvell/gttwsireg.h:1.3 src/sys/dev/marvell/gttwsireg.h:1.4
--- src/sys/dev/marvell/gttwsireg.h:1.3 Wed May 1 12:25:31 2013
+++ src/sys/dev/marvell/gttwsireg.h Sat Aug 3 07:39:31 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: gttwsireg.h,v 1.3 2013/05/01 12:25:31 rkujawa Exp $ */
+/* $NetBSD: gttwsireg.h,v 1.4 2013/08/03 07:39:31 kiyohara Exp $ */
/*
* Copyright (c) 2008 Eiji Kawauchi.
@@ -74,12 +74,7 @@
#define TWSI_RETRY_COUNT 1000 /* retry loop count */
#define TWSI_RETRY_DELAY 1 /* retry delay */
#define TWSI_STAT_DELAY 1 /* poll status delay */
-#ifdef ARMADAXP
-#define TWSI_READ_DELAY 15 /* read delay */
-#define TWSI_WRITE_DELAY 15 /* write delay */
-#else
#define TWSI_READ_DELAY 2 /* read delay */
#define TWSI_WRITE_DELAY 2 /* write delay */
-#endif /* ARMADAXP */
#endif /* _GTTWSIREG_H_ */