Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 10 Oct 2015 23:12:36 +0000 (UTC)
From:      Baptiste Daroussin <bapt@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r289119 - in projects/release-pkg: . bin/ls/tests etc etc/ppp lib/libc/sys libexec/dma libexec/dma/dma libexec/dma/dmagent sbin/geom/class/nop sbin/mdconfig share/man/man4 share/mk sys/...
Message-ID:  <201510102312.t9ANCal6080241@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: bapt
Date: Sat Oct 10 23:12:36 2015
New Revision: 289119
URL: https://svnweb.freebsd.org/changeset/base/289119

Log:
  Merge from head

Added:
  projects/release-pkg/libexec/dma/dmagent/
     - copied from r289118, head/libexec/dma/dmagent/
  projects/release-pkg/usr.sbin/ppp/ppp.conf
     - copied unchanged from r289118, head/usr.sbin/ppp/ppp.conf
Deleted:
  projects/release-pkg/etc/ppp/
  projects/release-pkg/libexec/dma/dma/
Modified:
  projects/release-pkg/Makefile.inc1
  projects/release-pkg/bin/ls/tests/ls_tests.sh
  projects/release-pkg/etc/Makefile
  projects/release-pkg/lib/libc/sys/shmctl.2
  projects/release-pkg/libexec/dma/Makefile
  projects/release-pkg/sbin/geom/class/nop/gnop.8
  projects/release-pkg/sbin/mdconfig/mdconfig.8
  projects/release-pkg/sbin/mdconfig/mdconfig.c
  projects/release-pkg/share/man/man4/vtnet.4
  projects/release-pkg/share/mk/Makefile
  projects/release-pkg/share/mk/bsd.confs.mk
  projects/release-pkg/share/mk/bsd.own.mk
  projects/release-pkg/sys/arm/freescale/imx/imx_i2c.c
  projects/release-pkg/sys/arm/freescale/vybrid/vf_i2c.c
  projects/release-pkg/sys/arm/samsung/exynos/exynos5_i2c.c
  projects/release-pkg/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_attach.c
  projects/release-pkg/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c
  projects/release-pkg/sys/dev/cxgbe/iw_cxgbe/cm.c
  projects/release-pkg/sys/dev/drm2/i915/i915_gem.c
  projects/release-pkg/sys/dev/iicbus/icee.c
  projects/release-pkg/sys/dev/iicbus/iicoc.c
  projects/release-pkg/sys/dev/iicbus/iiconf.c
  projects/release-pkg/sys/dev/iicbus/iiconf.h
  projects/release-pkg/sys/dev/pcf/pcf.c
  projects/release-pkg/sys/geom/nop/g_nop.c
  projects/release-pkg/sys/geom/nop/g_nop.h
  projects/release-pkg/sys/kern/kern_module.c
  projects/release-pkg/sys/kern/sysv_shm.c
  projects/release-pkg/sys/mips/conf/AP135.hints
  projects/release-pkg/sys/mips/conf/TP-MR3020
  projects/release-pkg/sys/powerpc/mpc85xx/i2c.c
  projects/release-pkg/usr.sbin/ppp/Makefile
Directory Properties:
  projects/release-pkg/   (props changed)
  projects/release-pkg/lib/libc/   (props changed)
  projects/release-pkg/sbin/   (props changed)
  projects/release-pkg/share/   (props changed)
  projects/release-pkg/share/man/man4/   (props changed)
  projects/release-pkg/sys/   (props changed)

Modified: projects/release-pkg/Makefile.inc1
==============================================================================
--- projects/release-pkg/Makefile.inc1	Sat Oct 10 19:51:00 2015	(r289118)
+++ projects/release-pkg/Makefile.inc1	Sat Oct 10 23:12:36 2015	(r289119)
@@ -1035,7 +1035,9 @@ distrib-dirs: .MAKE
 distribution: .MAKE
 	cd ${.CURDIR}/etc; ${CROSSENV} PATH=${TMPPATH} ${MAKE} \
 	    ${IMAKE_INSTALL} ${IMAKE_MTREE} METALOG=${METALOG} ${.TARGET}
-	${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 installconfig
+	${_+_}cd ${.CURDIR}; ${CROSSENV} PATH=${TMPPATH} \
+		${MAKE} -f Makefile.inc1 ${IMAKE_INSTALL} \
+		METALOG=${METALOG} installconfig
 
 #
 # buildkernel and installkernel

Modified: projects/release-pkg/bin/ls/tests/ls_tests.sh
==============================================================================
--- projects/release-pkg/bin/ls/tests/ls_tests.sh	Sat Oct 10 19:51:00 2015	(r289118)
+++ projects/release-pkg/bin/ls/tests/ls_tests.sh	Sat Oct 10 23:12:36 2015	(r289119)
@@ -72,8 +72,6 @@ create_test_inputs()
 	atf_check -e empty -s exit:0 touch 0b00001101
 	atf_check -e empty -s exit:0 touch 0b00001110
 	atf_check -e empty -s exit:0 touch 0b00001111
-
-	atf_check -e empty -s exit:0 sync
 }
 
 KB=1024
@@ -100,8 +98,6 @@ create_test_inputs2()
 		    count=1 oseek=$(( $filesize / $MB )) conv=sparse
 		files="${files} ${filesize}.file"
 	done
-
-	atf_check -e empty -s exit:0 sync
 }
 
 atf_test_case A_flag
@@ -815,16 +811,12 @@ t_flag_body()
 	atf_check -e empty -o empty -s exit:0 touch a.file
 	atf_check -e empty -o empty -s exit:0 touch b.file
 
-	atf_check -e empty -s exit:0 sync
-
 	atf_check -e empty -o match:'a\.file' -s exit:0 sh -c 'ls -lt | tail -n 1'
 	atf_check -e empty -o match:'b\.file.*a\.file' -s exit:0 ls -Ct
 
 	atf_check -e empty -o empty -s exit:0 rm a.file
 	atf_check -e empty -o empty -s exit:0 sh -c 'echo "i am a" > a.file'
 
-	atf_check -e empty -s exit:0 sync
-
 	atf_check -e empty -o match:'b\.file' -s exit:0 sh -c 'ls -lt | tail -n 1'
 	atf_check -e empty -o match:'a\.file.*b\.file' -s exit:0 ls -Ct
 }
@@ -841,14 +833,12 @@ u_flag_body()
 
 	atf_check -e empty -o empty -s exit:0 touch a.file
 	atf_check -e empty -o empty -s exit:0 touch b.file
-	atf_check -e empty -s exit:0 sync
 
 	atf_check -e empty -o match:'b\.file' -s exit:0 sh -c 'ls -lu | tail -n 1'
 	atf_check -e empty -o match:'a\.file.*b\.file' -s exit:0 ls -Cu
 
 	atf_check -e empty -o empty -s exit:0 sh -c 'echo "i am a" > a.file'
 	atf_check -e empty -o match:'i am a' -s exit:0 cat a.file
-	atf_check -e empty -s exit:0 sync
 
 	atf_check -e empty -o match:'b\.file' -s exit:0 sh -c 'ls -lu | tail -n 1'
 	atf_check -e empty -o match:'a\.file.*b\.file' -s exit:0 ls -Cu

Modified: projects/release-pkg/etc/Makefile
==============================================================================
--- projects/release-pkg/etc/Makefile	Sat Oct 10 19:51:00 2015	(r289118)
+++ projects/release-pkg/etc/Makefile	Sat Oct 10 23:12:36 2015	(r289119)
@@ -291,10 +291,6 @@ distribution:
 .endif
 	cd ${.CURDIR}/mtree; ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 444 \
 	    ${MTREE} ${DESTDIR}/etc/mtree
-.if ${MK_PPP} != "no"
-	cd ${.CURDIR}/ppp; ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 600 \
-	    ${PPPCNF} ${DESTDIR}/etc/ppp
-.endif
 .if ${MK_MAIL} != "no"
 	cd ${.CURDIR}/mail; ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 644 \
 	    ${ETCMAIL} ${DESTDIR}/etc/mail

Modified: projects/release-pkg/lib/libc/sys/shmctl.2
==============================================================================
--- projects/release-pkg/lib/libc/sys/shmctl.2	Sat Oct 10 19:51:00 2015	(r289118)
+++ projects/release-pkg/lib/libc/sys/shmctl.2	Sat Oct 10 23:12:36 2015	(r289119)
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd July 17, 1995
+.Dd October 10, 2015
 .Dt SHMCTL 2
 .Os
 .Sh NAME
@@ -72,15 +72,18 @@ or it must have superuser privileges.
 .It Dv IPC_RMID
 Removes the segment from the system.
 The removal will not take
-effect until all processes having attached the segment have exited;
-however, once the IPC_RMID operation has taken place, no further
-processes will be allowed to attach the segment.
+effect until all processes having attached the segment have exited.
 For the operation
 to succeed, the calling process's effective uid must match
 .Fa shm_perm.uid
 or
 .Fa shm_perm.cuid ,
 or the process must have superuser privileges.
+If the
+.Va kern.ipc.shm_allow_removed
+.Xr sysctl 3
+variable is set to 0, once the IPC_RMID operation has taken place,
+no further processes will be allowed to attach the segment.
 .\" .It Dv SHM_LOCK
 .\" Locks the segment in memory.  The calling process must have
 .\" superuser privileges. Not implemented in FreeBSD.

Modified: projects/release-pkg/libexec/dma/Makefile
==============================================================================
--- projects/release-pkg/libexec/dma/Makefile	Sat Oct 10 19:51:00 2015	(r289118)
+++ projects/release-pkg/libexec/dma/Makefile	Sat Oct 10 23:12:36 2015	(r289119)
@@ -1,6 +1,6 @@
 # $FreeBSD$
 
-SUBDIR=	dma \
+SUBDIR=	dmagent \
 	dma-mbox-create
 
 .include <bsd.subdir.mk>

Modified: projects/release-pkg/sbin/geom/class/nop/gnop.8
==============================================================================
--- projects/release-pkg/sbin/geom/class/nop/gnop.8	Sat Oct 10 19:51:00 2015	(r289118)
+++ projects/release-pkg/sbin/geom/class/nop/gnop.8	Sat Oct 10 23:12:36 2015	(r289119)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd September 15, 2015
+.Dd October 10, 2015
 .Dt GNOP 8
 .Os
 .Sh NAME
@@ -72,9 +72,10 @@ The
 utility is used for setting up transparent providers on existing ones.
 Its main purpose is testing other GEOM classes, as it allows forced provider
 removal and I/O error simulation with a given probability.
-It also gathers the following statistics: number of read requests, number of
-write requests, number of bytes read and number of bytes written.
-In addition, it can be used as a good starting point for implementing new GEOM
+It also gathers statistics on the number of read, write, delete,
+getattr, flush, and other requests, and the number of bytes read and written.
+.Nm
+can also be used as a good starting point for implementing new GEOM
 classes.
 .Pp
 The first argument to

Modified: projects/release-pkg/sbin/mdconfig/mdconfig.8
==============================================================================
--- projects/release-pkg/sbin/mdconfig/mdconfig.8	Sat Oct 10 19:51:00 2015	(r289118)
+++ projects/release-pkg/sbin/mdconfig/mdconfig.8	Sat Oct 10 23:12:36 2015	(r289119)
@@ -37,7 +37,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd August 6, 2015
+.Dd October 10, 2015
 .Dt MDCONFIG 8
 .Os
 .Sh NAME
@@ -159,11 +159,11 @@ prefix.
 Size of the memory disk.
 .Ar Size
 is the number of 512 byte sectors unless suffixed with a
-.Cm b , k , m , g ,
+.Cm b , k , m , g , t ,
 or
-.Cm t
+.Cm p
 which
-denotes byte, kilobyte, megabyte, gigabyte and terabyte respectively.
+denotes byte, kilobyte, megabyte, gigabyte, terabyte and petabyte respectively.
 When used without the
 .Fl r
 option, the

Modified: projects/release-pkg/sbin/mdconfig/mdconfig.c
==============================================================================
--- projects/release-pkg/sbin/mdconfig/mdconfig.c	Sat Oct 10 19:51:00 2015	(r289118)
+++ projects/release-pkg/sbin/mdconfig/mdconfig.c	Sat Oct 10 23:12:36 2015	(r289119)
@@ -88,8 +88,8 @@ usage(void)
 	fprintf(stderr, "\t\ttype = {malloc, vnode, swap}\n");
 	fprintf(stderr, "\t\toption = {cluster, compress, reserve}\n");
 	fprintf(stderr, "\t\tsize = %%d (512 byte blocks), %%db (B),\n");
-	fprintf(stderr, "\t\t       %%dk (kB), %%dm (MB), %%dg (GB) or\n");
-	fprintf(stderr, "\t\t       %%dt (TB)\n");
+	fprintf(stderr, "\t\t       %%dk (kB), %%dm (MB), %%dg (GB), \n");
+	fprintf(stderr, "\t\t       %%dt (TB), or %%dp (PB)\n");
 	exit(1);
 }
 
@@ -217,6 +217,9 @@ main(int argc, char **argv)
 			else if (*p == 't' || *p == 'T') {
 				mdio.md_mediasize <<= 30;
 				mdio.md_mediasize <<= 10;
+			} else if (*p == 'p' || *p == 'P') {
+				mdio.md_mediasize <<= 30;
+				mdio.md_mediasize <<= 20;
 			} else
 				errx(1, "unknown suffix on -s argument");
 			break;

Modified: projects/release-pkg/share/man/man4/vtnet.4
==============================================================================
--- projects/release-pkg/share/man/man4/vtnet.4	Sat Oct 10 19:51:00 2015	(r289118)
+++ projects/release-pkg/share/man/man4/vtnet.4	Sat Oct 10 23:12:36 2015	(r289119)
@@ -52,9 +52,9 @@ device driver provides support for VirtI
 If the hypervisor advertises the appreciate features, the
 .Nm
 driver supports TCP/UDP checksum offload for both transmit and receive,
-TCP segmentation offload (TSO), TCP large receive offload (LRO), and
-hardware VLAN tag stripping/insertion features, as well as a multicast
-hash filter, as well as Jumbo Frames (up to 9216 bytes), which can be
+TCP segmentation offload (TSO), TCP large receive offload (LRO),
+hardware VLAN tag stripping/insertion features, a multicast hash filter,
+as well as Jumbo Frames (up to 9216 bytes), which can be
 configured via the interface MTU setting.
 Selecting an MTU larger than 1500 bytes with the
 .Xr ifconfig 8

Modified: projects/release-pkg/share/mk/Makefile
==============================================================================
--- projects/release-pkg/share/mk/Makefile	Sat Oct 10 19:51:00 2015	(r289118)
+++ projects/release-pkg/share/mk/Makefile	Sat Oct 10 23:12:36 2015	(r289119)
@@ -13,6 +13,7 @@ FILES=	\
 	bsd.README \
 	bsd.arch.inc.mk \
 	bsd.compiler.mk \
+	bsd.confs.mk \
 	bsd.cpu.mk \
 	bsd.crunchgen.mk \
 	bsd.dep.mk \

Modified: projects/release-pkg/share/mk/bsd.confs.mk
==============================================================================
--- projects/release-pkg/share/mk/bsd.confs.mk	Sat Oct 10 19:51:00 2015	(r289118)
+++ projects/release-pkg/share/mk/bsd.confs.mk	Sat Oct 10 23:12:36 2015	(r289119)
@@ -22,7 +22,7 @@ all: buildconfig
 ${group}OWN?=	${SHAREOWN}
 ${group}GRP?=	${SHAREGRP}
 ${group}MODE?=	${CONFMODE}
-${group}DIR?=	${ETCDIR}/
+${group}DIR?=	${CONFIGDIR}/
 STAGE_SETS+=	${group}
 STAGE_DIR.${group}= ${STAGE_OBJTOP}${${group}DIR}
 STAGE_SYMLINKS_DIR.${group}= ${STAGE_OBJTOP}

Modified: projects/release-pkg/share/mk/bsd.own.mk
==============================================================================
--- projects/release-pkg/share/mk/bsd.own.mk	Sat Oct 10 19:51:00 2015	(r289118)
+++ projects/release-pkg/share/mk/bsd.own.mk	Sat Oct 10 23:12:36 2015	(r289119)
@@ -213,7 +213,7 @@ NLSGRP?=	${SHAREGRP}
 NLSMODE?=	${NOBINMODE}
 
 INCLUDEDIR?=	/usr/include
-ETCDIR?=	/etc
+CONFIGDIR?=	/etc
 
 #
 # install(1) parameters.

Modified: projects/release-pkg/sys/arm/freescale/imx/imx_i2c.c
==============================================================================
--- projects/release-pkg/sys/arm/freescale/imx/imx_i2c.c	Sat Oct 10 19:51:00 2015	(r289118)
+++ projects/release-pkg/sys/arm/freescale/imx/imx_i2c.c	Sat Oct 10 23:12:36 2015	(r289119)
@@ -1,6 +1,7 @@
 /*-
  * Copyright (C) 2008-2009 Semihalf, Michal Hajduk
  * Copyright (c) 2012, 2013 The FreeBSD Foundation
+ * Copyright (c) 2015 Ian Lepore <ian@FreeBSD.org>
  * All rights reserved.
  *
  * Portions of this software were developed by Oleksandr Rybalko
@@ -28,6 +29,19 @@
  * SUCH DAMAGE.
  */
 
+/*
+ * I2C driver for Freescale i.MX hardware.
+ *
+ * Note that the hardware is capable of running as both a master and a slave.
+ * This driver currently implements only master-mode operations.
+ *
+ * This driver supports multi-master i2c busses, by detecting bus arbitration
+ * loss and returning IIC_EBUSBSY status.  Notably, it does not do any kind of
+ * retries if some other master jumps onto the bus and interrupts one of our
+ * transfer cycles resulting in arbitration loss in mid-transfer.  The caller
+ * must handle retries in a way that makes sense for the slave being addressed.
+ */
+
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
@@ -43,9 +57,6 @@ __FBSDID("$FreeBSD$");
 #include <machine/resource.h>
 #include <sys/rman.h>
 
-#include <sys/lock.h>
-#include <sys/mutex.h>
-
 #include <arm/freescale/imx/imx_ccmvar.h>
 
 #include <dev/iicbus/iiconf.h>
@@ -108,13 +119,6 @@ static struct clkdiv clkdiv_table[] = {
         { 2560, 0x1d }, { 3072, 0x1e }, { 3840, 0x1f }, {UINT_MAX, 0x1f} 
 };
 
-#ifdef  DEBUG
-#define debugf(fmt, args...) do { printf("%s(): ", __func__);		\
-		printf(fmt,##args); } while (0)
-#else
-#define debugf(fmt, args...)
-#endif
-
 static struct ofw_compat_data compat_data[] = {
 	{"fsl,imx6q-i2c",  1},
 	{"fsl,imx-i2c",	   1},
@@ -125,10 +129,8 @@ struct i2c_softc {
 	device_t		dev;
 	device_t		iicbus;
 	struct resource		*res;
-	struct mtx		mutex;
 	int			rid;
-	bus_space_handle_t	bsh;
-	bus_space_tag_t		bst;
+	sbintime_t		byte_time_sbt;
 };
 
 static phandle_t i2c_get_node(device_t, device_t);
@@ -158,7 +160,7 @@ static device_method_t i2c_methods[] = {
 	DEVMETHOD(iicbus_write,			i2c_write),
 	DEVMETHOD(iicbus_transfer,		iicbus_transfer_gen),
 
-	{ 0, 0 }
+	DEVMETHOD_END
 };
 
 static driver_t i2c_driver = {
@@ -184,14 +186,14 @@ static __inline void
 i2c_write_reg(struct i2c_softc *sc, bus_size_t off, uint8_t val)
 {
 
-	bus_space_write_1(sc->bst, sc->bsh, off, val);
+	bus_write_1(sc->res, off, val);
 }
 
 static __inline uint8_t
 i2c_read_reg(struct i2c_softc *sc, bus_size_t off)
 {
 
-	return (bus_space_read_1(sc->bst, sc->bsh, off));
+	return (bus_read_1(sc->res, off));
 }
 
 static __inline void
@@ -204,60 +206,77 @@ i2c_flag_set(struct i2c_softc *sc, bus_s
 	i2c_write_reg(sc, off, status);
 }
 
-/* Wait for transfer interrupt flag */
+/* Wait for bus to become busy or not-busy. */
 static int
-wait_for_iif(struct i2c_softc *sc)
+wait_for_busbusy(struct i2c_softc *sc, int wantbusy)
 {
-	int retry;
+	int retry, srb;
 
 	retry = 1000;
 	while (retry --) {
-		if (i2c_read_reg(sc, I2C_STATUS_REG) & I2CSR_MIF)
+		srb = i2c_read_reg(sc, I2C_STATUS_REG) & I2CSR_MBB;
+		if ((srb && wantbusy) || (!srb && !wantbusy))
 			return (IIC_NOERR);
-		DELAY(10);
+		DELAY(1);
 	}
-
 	return (IIC_ETIMEOUT);
 }
 
-/* Wait for free bus */
+/* Wait for transfer to complete, optionally check RXAK. */
 static int
-wait_for_nibb(struct i2c_softc *sc)
+wait_for_xfer(struct i2c_softc *sc, int checkack)
 {
-	int retry;
+	int retry, sr;
 
-	retry = 1000;
+	/*
+	 * Sleep for about the time it takes to transfer a byte (with precision
+	 * set to tolerate 5% oversleep).  We calculate the approximate byte
+	 * transfer time when we set the bus speed divisor.  Slaves are allowed
+	 * to do clock-stretching so the actual transfer time can be larger, but
+	 * this gets the bulk of the waiting out of the way without tying up the
+	 * processor the whole time.
+	 */
+	pause_sbt("imxi2c", sc->byte_time_sbt, sc->byte_time_sbt / 20, 0);
+
+	retry = 10000;
 	while (retry --) {
-		if ((i2c_read_reg(sc, I2C_STATUS_REG) & I2CSR_MBB) == 0)
-			return (IIC_NOERR);
-		DELAY(10);
+		sr = i2c_read_reg(sc, I2C_STATUS_REG);
+		if (sr & I2CSR_MIF) {
+                        if (sr & I2CSR_MAL) 
+				return (IIC_EBUSERR);
+			else if (checkack && (sr & I2CSR_RXAK))
+				return (IIC_ENOACK);
+			else
+				return (IIC_NOERR);
+		}
+		DELAY(1);
 	}
-
 	return (IIC_ETIMEOUT);
 }
 
-/* Wait for transfer complete+interrupt flag */
+/*
+ * Implement the error handling shown in the state diagram of the imx6 reference
+ * manual.  If there was an error, then:
+ *  - Clear master mode (MSTA and MTX).
+ *  - Wait for the bus to become free or for a timeout to happen.
+ *  - Disable the controller.
+ */
 static int
-wait_for_icf(struct i2c_softc *sc)
+i2c_error_handler(struct i2c_softc *sc, int error)
 {
-	int retry;
 
-	retry = 1000;
-	while (retry --) {
-
-		if ((i2c_read_reg(sc, I2C_STATUS_REG) &
-		    (I2CSR_MCF|I2CSR_MIF)) == (I2CSR_MCF|I2CSR_MIF))
-			return (IIC_NOERR);
-		DELAY(10);
+	if (error != 0) {
+		i2c_write_reg(sc, I2C_STATUS_REG, 0);
+		i2c_write_reg(sc, I2C_CONTROL_REG, I2CCR_MEN);
+		wait_for_busbusy(sc, false);
+		i2c_write_reg(sc, I2C_CONTROL_REG, 0);
 	}
-
-	return (IIC_ETIMEOUT);
+	return (error);
 }
 
 static int
 i2c_probe(device_t dev)
 {
-	struct i2c_softc *sc;
 
 	if (!ofw_bus_status_okay(dev))
 		return (ENXIO);
@@ -265,23 +284,7 @@ i2c_probe(device_t dev)
 	if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0)
 		return (ENXIO);
 
-	sc = device_get_softc(dev);
-	sc->rid = 0;
-
-	sc->res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &sc->rid,
-	    RF_ACTIVE);
-	if (sc->res == NULL) {
-		device_printf(dev, "could not allocate resources\n");
-		return (ENXIO);
-	}
-
-	sc->bst = rman_get_bustag(sc->res);
-	sc->bsh = rman_get_bushandle(sc->res);
-
-	/* Enable I2C */
-	i2c_write_reg(sc, I2C_CONTROL_REG, I2CCR_MEN);
-	bus_release_resource(dev, SYS_RES_MEMORY, sc->rid, sc->res);
-	device_set_desc(dev, "Freescale i.MX I2C bus controller");
+	device_set_desc(dev, "Freescale i.MX I2C");
 
 	return (BUS_PROBE_DEFAULT);
 }
@@ -295,28 +298,21 @@ i2c_attach(device_t dev)
 	sc->dev = dev;
 	sc->rid = 0;
 
-	mtx_init(&sc->mutex, device_get_nameunit(dev), "I2C", MTX_DEF);
-
 	sc->res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &sc->rid,
 	    RF_ACTIVE);
 	if (sc->res == NULL) {
 		device_printf(dev, "could not allocate resources");
-		mtx_destroy(&sc->mutex);
 		return (ENXIO);
 	}
 
-	sc->bst = rman_get_bustag(sc->res);
-	sc->bsh = rman_get_bushandle(sc->res);
-
 	sc->iicbus = device_add_child(dev, "iicbus", -1);
 	if (sc->iicbus == NULL) {
 		device_printf(dev, "could not add iicbus child");
-		mtx_destroy(&sc->mutex);
 		return (ENXIO);
 	}
 
 	bus_generic_attach(dev);
-	return (IIC_NOERR);
+	return (0);
 }
 
 static int
@@ -327,34 +323,20 @@ i2c_repeated_start(device_t dev, u_char 
 
 	sc = device_get_softc(dev);
 
-	mtx_lock(&sc->mutex);
-
-	i2c_write_reg(sc, I2C_ADDR_REG, slave);
 	if ((i2c_read_reg(sc, I2C_STATUS_REG) & I2CSR_MBB) == 0) {
-		mtx_unlock(&sc->mutex);
-		return (IIC_EBUSBSY);
+		return (IIC_EBUSERR);
 	}
 
-	/* Set repeated start condition */
-	DELAY(10);
+	/*
+	 * Set repeated start condition, delay (per reference manual, min 156nS)
+	 * before writing slave address, wait for ack after write.
+	 */
 	i2c_flag_set(sc, I2C_CONTROL_REG, I2CCR_RSTA);
-	DELAY(10);
-	/* Clear status */
+	DELAY(1);
 	i2c_write_reg(sc, I2C_STATUS_REG, 0x0);
-	/* Write target address - LSB is R/W bit */
 	i2c_write_reg(sc, I2C_DATA_REG, slave);
-
-	error = wait_for_iif(sc);
-
-	/* Clear status */
-	i2c_write_reg(sc, I2C_STATUS_REG, 0x0);
-
-	mtx_unlock(&sc->mutex);
-
-	if (error)
-		return (error);
-
-	return (IIC_NOERR);
+	error = wait_for_xfer(sc, true);
+	return (i2c_error_handler(sc, error));
 }
 
 static int
@@ -365,53 +347,30 @@ i2c_start(device_t dev, u_char slave, in
 
 	sc = device_get_softc(dev);
 
-	mtx_lock(&sc->mutex);
-	i2c_write_reg(sc, I2C_ADDR_REG, slave);
+	i2c_write_reg(sc, I2C_CONTROL_REG, I2CCR_MEN);
+	DELAY(10); /* Delay for controller to sample bus state. */
 	if (i2c_read_reg(sc, I2C_STATUS_REG) & I2CSR_MBB) {
-		mtx_unlock(&sc->mutex);
-		return (IIC_EBUSBSY);
+		return (i2c_error_handler(sc, IIC_EBUSERR));
 	}
-
-	/* Set start condition */
-	i2c_write_reg(sc, I2C_CONTROL_REG,
-	    I2CCR_MEN | I2CCR_MSTA | I2CCR_TXAK);
-	DELAY(100);
-	i2c_write_reg(sc, I2C_CONTROL_REG,
-	    I2CCR_MEN | I2CCR_MSTA | I2CCR_MTX | I2CCR_TXAK);
-	/* Clear status */
-	i2c_write_reg(sc, I2C_STATUS_REG, 0x0);
-	/* Write target address - LSB is R/W bit */
+	i2c_write_reg(sc, I2C_CONTROL_REG, I2CCR_MEN | I2CCR_MSTA | I2CCR_MTX);
+	if ((error = wait_for_busbusy(sc, true)) != IIC_NOERR)
+		return (i2c_error_handler(sc, error));
+	i2c_write_reg(sc, I2C_STATUS_REG, 0);
 	i2c_write_reg(sc, I2C_DATA_REG, slave);
-
-	error = wait_for_iif(sc);
-
-	mtx_unlock(&sc->mutex);
-	if (error)
-		return (error);
-
-	return (IIC_NOERR);
+	error = wait_for_xfer(sc, true);
+	return (i2c_error_handler(sc, error));
 }
 
-
 static int
 i2c_stop(device_t dev)
 {
 	struct i2c_softc *sc;
 
 	sc = device_get_softc(dev);
-	mtx_lock(&sc->mutex);
-	i2c_write_reg(sc, I2C_CONTROL_REG, I2CCR_MEN | I2CCR_TXAK);
-	DELAY(100);
-	/* Reset controller if bus still busy after STOP */
-	if (wait_for_nibb(sc) == IIC_ETIMEOUT) {
-		i2c_write_reg(sc, I2C_CONTROL_REG, 0);
-		DELAY(1000);
-		i2c_write_reg(sc, I2C_CONTROL_REG, I2CCR_MEN | I2CCR_TXAK);
-
-		i2c_write_reg(sc, I2C_STATUS_REG, 0x0);
-	}
-	mtx_unlock(&sc->mutex);
 
+	i2c_write_reg(sc, I2C_CONTROL_REG, I2CCR_MEN);
+	wait_for_busbusy(sc, false);
+	i2c_write_reg(sc, I2C_CONTROL_REG, 0);
 	return (IIC_NOERR);
 }
 
@@ -434,19 +393,23 @@ i2c_reset(device_t dev, u_char speed, u_
 		if (clkdiv_table[i].divisor >= div)
 			break;
 	}
-	div = clkdiv_table[i].regcode;
 
-	mtx_lock(&sc->mutex);
-	i2c_write_reg(sc, I2C_CONTROL_REG, 0x0);
-	i2c_write_reg(sc, I2C_STATUS_REG, 0x0);
-	DELAY(1000);
+	/*
+	 * Calculate roughly how long it will take to transfer a byte (which
+	 * requires 9 clock cycles) at the new bus speed.  This value is used to
+	 * pause() while waiting for transfer-complete.  With a 66MHz IPG clock
+	 * and the actual i2c bus speeds that leads to, for nominal 100KHz and
+	 * 400KHz bus speeds the transfer times are roughly 104uS and 22uS.
+	 */
+	busfreq = ipgfreq / clkdiv_table[i].divisor;
+	sc->byte_time_sbt = SBT_1US * (9000000 / busfreq);
 
-	i2c_write_reg(sc, I2C_FDR_REG, (uint8_t)div);
-	i2c_write_reg(sc, I2C_CONTROL_REG, I2CCR_MEN);
-	DELAY(1000);
+	/*
+	 * Disable the controller (do the reset), and set the new clock divisor.
+	 */
 	i2c_write_reg(sc, I2C_STATUS_REG, 0x0);
-	mtx_unlock(&sc->mutex);
-
+	i2c_write_reg(sc, I2C_CONTROL_REG, 0x0);
+	i2c_write_reg(sc, I2C_FDR_REG, (uint8_t)clkdiv_table[i].regcode);
 	return (IIC_NOERR);
 }
 
@@ -459,48 +422,42 @@ i2c_read(device_t dev, char *buf, int le
 	sc = device_get_softc(dev);
 	*read = 0;
 
-	mtx_lock(&sc->mutex);
-
 	if (len) {
 		if (len == 1)
 			i2c_write_reg(sc, I2C_CONTROL_REG, I2CCR_MEN |
 			    I2CCR_MSTA | I2CCR_TXAK);
-
 		else
 			i2c_write_reg(sc, I2C_CONTROL_REG, I2CCR_MEN |
 			    I2CCR_MSTA);
-
-		/* dummy read */
+                /* Dummy read to prime the receiver. */
+		i2c_write_reg(sc, I2C_STATUS_REG, 0x0);
 		i2c_read_reg(sc, I2C_DATA_REG);
-		DELAY(1000);
 	}
 
+	error = 0;
+	*read = 0;
 	while (*read < len) {
-		error = wait_for_icf(sc);
-		if (error) {
-			mtx_unlock(&sc->mutex);
-			return (error);
-		}
+		if ((error = wait_for_xfer(sc, false)) != IIC_NOERR)
+			break;
 		i2c_write_reg(sc, I2C_STATUS_REG, 0x0);
-		if ((*read == len - 2) && last) {
-			/* NO ACK on last byte */
-			i2c_write_reg(sc, I2C_CONTROL_REG, I2CCR_MEN |
-			    I2CCR_MSTA | I2CCR_TXAK);
+		if (last) {
+			if (*read == len - 2) {
+				/* NO ACK on last byte */
+				i2c_write_reg(sc, I2C_CONTROL_REG, I2CCR_MEN |
+				    I2CCR_MSTA | I2CCR_TXAK);
+			} else if (*read == len - 1) {
+				/* Transfer done, signal stop. */
+				i2c_write_reg(sc, I2C_CONTROL_REG, I2CCR_MEN |
+				    I2CCR_TXAK);
+				wait_for_busbusy(sc, false);
+			}
 		}
-
-		if ((*read == len - 1) && last) {
-			/* Transfer done, remove master bit */
-			i2c_write_reg(sc, I2C_CONTROL_REG, I2CCR_MEN |
-			    I2CCR_TXAK);
-		}
-
 		reg = i2c_read_reg(sc, I2C_DATA_REG);
 		*buf++ = reg;
 		(*read)++;
 	}
-	mtx_unlock(&sc->mutex);
 
-	return (IIC_NOERR);
+	return (i2c_error_handler(sc, error));
 }
 
 static int
@@ -510,22 +467,16 @@ i2c_write(device_t dev, const char *buf,
 	int error;
 
 	sc = device_get_softc(dev);
-	*sent = 0;
 
-	mtx_lock(&sc->mutex);
+	error = 0;
+	*sent = 0;
 	while (*sent < len) {
 		i2c_write_reg(sc, I2C_STATUS_REG, 0x0);
 		i2c_write_reg(sc, I2C_DATA_REG, *buf++);
-
-		error = wait_for_iif(sc);
-		if (error) {
-			mtx_unlock(&sc->mutex);
-			return (error);
-		}
-
+		if ((error = wait_for_xfer(sc, true)) != IIC_NOERR)
+			break;
 		(*sent)++;
 	}
-	mtx_unlock(&sc->mutex);
 
-	return (IIC_NOERR);
+	return (i2c_error_handler(sc, error));
 }

Modified: projects/release-pkg/sys/arm/freescale/vybrid/vf_i2c.c
==============================================================================
--- projects/release-pkg/sys/arm/freescale/vybrid/vf_i2c.c	Sat Oct 10 19:51:00 2015	(r289118)
+++ projects/release-pkg/sys/arm/freescale/vybrid/vf_i2c.c	Sat Oct 10 23:12:36 2015	(r289119)
@@ -232,7 +232,7 @@ i2c_repeated_start(device_t dev, u_char 
 
 	if ((READ1(sc, I2C_IBSR) & IBSR_IBB) == 0) {
 		mtx_unlock(&sc->mutex);
-		return (IIC_EBUSBSY);
+		return (IIC_EBUSERR);
 	}
 
 	/* Set repeated start condition */
@@ -275,7 +275,7 @@ i2c_start(device_t dev, u_char slave, in
 	if (READ1(sc, I2C_IBSR) & IBSR_IBB) {
 		mtx_unlock(&sc->mutex);
 		vf_i2c_dbg(sc, "cant i2c start: IIC_EBUSBSY\n");
-		return (IIC_EBUSBSY);
+		return (IIC_EBUSERR);
 	}
 
 	/* Set start condition */

Modified: projects/release-pkg/sys/arm/samsung/exynos/exynos5_i2c.c
==============================================================================
--- projects/release-pkg/sys/arm/samsung/exynos/exynos5_i2c.c	Sat Oct 10 19:51:00 2015	(r289118)
+++ projects/release-pkg/sys/arm/samsung/exynos/exynos5_i2c.c	Sat Oct 10 23:12:36 2015	(r289119)
@@ -263,8 +263,8 @@ i2c_start(device_t dev, u_char slave, in
 	error = wait_for_nibb(sc);
 	if (error) {
 		mtx_unlock(&sc->mutex);
-		DPRINTF("cant i2c start: IIC_EBUSBSY\n");
-		return (IIC_EBUSBSY);
+		DPRINTF("cant i2c start: IIC_EBUSERR\n");
+		return (IIC_EBUSERR);
 	}
 
 	reg = READ1(sc, I2CCON);

Modified: projects/release-pkg/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_attach.c
==============================================================================
--- projects/release-pkg/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_attach.c	Sat Oct 10 19:51:00 2015	(r289118)
+++ projects/release-pkg/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_attach.c	Sat Oct 10 23:12:36 2015	(r289119)
@@ -2671,7 +2671,7 @@ ar9300_fill_capability_info(struct ath_h
     p_cap->halBurstSupport = AH_TRUE;
     p_cap->halChapTuningSupport = AH_TRUE;
     p_cap->halTurboPrimeSupport = AH_TRUE;
-    p_cap->halFastFramesSupport = AH_FALSE;
+    p_cap->halFastFramesSupport = AH_TRUE;
 
     p_cap->halTurboGSupport = p_cap->halWirelessModes & HAL_MODE_108G;
 

Modified: projects/release-pkg/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c
==============================================================================
--- projects/release-pkg/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c	Sat Oct 10 19:51:00 2015	(r289118)
+++ projects/release-pkg/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c	Sat Oct 10 23:12:36 2015	(r289119)
@@ -937,13 +937,7 @@ ar5416FillCapabilityInfo(struct ath_hal 
 
 	pCap->halCompressSupport = AH_FALSE;
 	pCap->halBurstSupport = AH_TRUE;
-	/*
-	 * This is disabled for now; the net80211 layer needs to be
-	 * taught when it is and isn't appropriate to enable FF processing
-	 * with 802.11n NICs (it tries to enable both A-MPDU and
-	 * fast frames, with very tragic crash-y results.)
-	 */
-	pCap->halFastFramesSupport = AH_FALSE;
+	pCap->halFastFramesSupport = AH_TRUE;
 	pCap->halChapTuningSupport = AH_TRUE;
 	pCap->halTurboPrimeSupport = AH_TRUE;
 

Modified: projects/release-pkg/sys/dev/cxgbe/iw_cxgbe/cm.c
==============================================================================
--- projects/release-pkg/sys/dev/cxgbe/iw_cxgbe/cm.c	Sat Oct 10 19:51:00 2015	(r289118)
+++ projects/release-pkg/sys/dev/cxgbe/iw_cxgbe/cm.c	Sat Oct 10 23:12:36 2015	(r289119)
@@ -99,7 +99,7 @@ static int abort_connection(struct c4iw_
 static void peer_close_upcall(struct c4iw_ep *ep);
 static void peer_abort_upcall(struct c4iw_ep *ep);
 static void connect_reply_upcall(struct c4iw_ep *ep, int status);
-static void connect_request_upcall(struct c4iw_ep *ep);
+static int connect_request_upcall(struct c4iw_ep *ep);
 static void established_upcall(struct c4iw_ep *ep);
 static void process_mpa_reply(struct c4iw_ep *ep);
 static void process_mpa_request(struct c4iw_ep *ep);
@@ -1216,7 +1216,6 @@ static int abort_connection(struct c4iw_
 	int err;
 
 	CTR2(KTR_IW_CXGBE, "%s:abB %p", __func__, ep);
-	close_complete_upcall(ep, -ECONNRESET);
 	state_set(&ep->com, ABORTING);
 	abort_socket(ep);
 	err = close_socket(&ep->com, 0);
@@ -1319,9 +1318,10 @@ static void connect_reply_upcall(struct 
 	CTR2(KTR_IW_CXGBE, "%s:cruE %p", __func__, ep);
 }
 
-static void connect_request_upcall(struct c4iw_ep *ep)
+static int connect_request_upcall(struct c4iw_ep *ep)
 {
 	struct iw_cm_event event;
+	int ret;
 
 	CTR3(KTR_IW_CXGBE, "%s: ep %p, mpa_v1 %d", __func__, ep,
 	    ep->tried_with_mpa_v1);
@@ -1355,10 +1355,14 @@ static void connect_request_upcall(struc
 	}
 
 	c4iw_get_ep(&ep->com);
-	ep->parent_ep->com.cm_id->event_handler(ep->parent_ep->com.cm_id,
+	ret = ep->parent_ep->com.cm_id->event_handler(ep->parent_ep->com.cm_id,
 	    &event);
+	if(ret)
+		c4iw_put_ep(&ep->com);
+
 	set_bit(CONNREQ_UPCALL, &ep->com.history);
 	c4iw_put_ep(&ep->parent_ep->com);
+	return ret;
 }
 
 static void established_upcall(struct c4iw_ep *ep)
@@ -1835,9 +1839,11 @@ abort:
 
 	/* drive upcall */
 	mutex_lock(&ep->parent_ep->com.mutex);
-	if (ep->parent_ep->com.state != DEAD)
-		connect_request_upcall(ep);
-	else
+	if (ep->parent_ep->com.state != DEAD) {
+		if(connect_request_upcall(ep)) {
+			abort_connection(ep);
+		}
+	}else
 		abort_connection(ep);
 	mutex_unlock(&ep->parent_ep->com.mutex);
 }
@@ -2213,7 +2219,7 @@ int c4iw_ep_disconnect(struct c4iw_ep *e
 
 		CTR2(KTR_IW_CXGBE, "%s:ced1 %p", __func__, ep);
 		fatal = 1;
-		close_complete_upcall(ep, -EIO);
+		close_complete_upcall(ep, -ECONNRESET);
 		ep->com.state = DEAD;
 	}
 	CTR3(KTR_IW_CXGBE, "%s:ced2 %p %s", __func__, ep,

Modified: projects/release-pkg/sys/dev/drm2/i915/i915_gem.c
==============================================================================
--- projects/release-pkg/sys/dev/drm2/i915/i915_gem.c	Sat Oct 10 19:51:00 2015	(r289118)
+++ projects/release-pkg/sys/dev/drm2/i915/i915_gem.c	Sat Oct 10 23:12:36 2015	(r289119)
@@ -2527,10 +2527,8 @@ i915_gem_object_unbind(struct drm_i915_g
 	if (obj->gtt_space == NULL)
 		return 0;
 
-	if (obj->pin_count) {
-		DRM_ERROR("Attempting to unbind pinned buffer\n");
+	if (obj->pin_count)
 		return -EINVAL;
-	}
 
 	ret = i915_gem_object_finish_gpu(obj);
 	if (ret == -ERESTARTSYS || ret == -EINTR)

Modified: projects/release-pkg/sys/dev/iicbus/icee.c
==============================================================================
--- projects/release-pkg/sys/dev/iicbus/icee.c	Sat Oct 10 19:51:00 2015	(r289118)
+++ projects/release-pkg/sys/dev/iicbus/icee.c	Sat Oct 10 23:12:36 2015	(r289119)
@@ -48,7 +48,7 @@ __FBSDID("$FreeBSD$");
 
 struct icee_softc {
 	device_t	sc_dev;		/* Myself */
-	struct sx	sc_lock;	/* basically a perimeter lock */
+	device_t	sc_busdev;	/* Parent bus */
 	struct cdev	*cdev;		/* user interface */
 	int		addr;
 	int		size;		/* How big am I? */
@@ -57,12 +57,6 @@ struct icee_softc {
 	int		wr_sz;		/* What's the write page size */
 };
 
-#define ICEE_LOCK(_sc)		sx_xlock(&(_sc)->sc_lock)
-#define	ICEE_UNLOCK(_sc)	sx_xunlock(&(_sc)->sc_lock)
-#define ICEE_LOCK_INIT(_sc)	sx_init(&_sc->sc_lock, "icee")
-#define ICEE_LOCK_DESTROY(_sc)	sx_destroy(&_sc->sc_lock);
-#define ICEE_ASSERT_LOCKED(_sc)	sx_assert(&_sc->sc_lock, SA_XLOCKED);
-#define ICEE_ASSERT_UNLOCKED(_sc) sx_assert(&_sc->sc_lock, SA_UNLOCKED);
 #define CDEV2SOFTC(dev)		((dev)->si_drv1)
 
 /* cdev routines */
@@ -97,6 +91,7 @@ icee_attach(device_t dev)
 	int dunit, err;
 
 	sc->sc_dev = dev;
+	sc->sc_busdev = device_get_parent(sc->sc_dev);
 	sc->addr = iicbus_get_addr(dev);
 	err = 0;
 	dname = device_get_name(dev);
@@ -117,7 +112,6 @@ icee_attach(device_t dev)
 		goto out;
 	}
 	sc->cdev->si_drv1 = sc;
-	ICEE_LOCK_INIT(sc);
 out:
 	return (err);
 }
@@ -155,7 +149,9 @@ icee_read(struct cdev *dev, struct uio *
 		return (EIO);
 	if (sc->type != 8 && sc->type != 16)
 		return (EINVAL);
-	ICEE_LOCK(sc);
+	error = iicbus_request_bus(sc->sc_busdev, sc->sc_dev, IIC_INTRWAIT);
+	if (error!= 0)
+		return (iic2errno(error));
 	slave = error = 0;
 	while (uio->uio_resid > 0) {
 		if (uio->uio_offset >= sc->size)
@@ -180,13 +176,15 @@ icee_read(struct cdev *dev, struct uio *
 		for (i = 0; i < 2; i++)
 			msgs[i].slave = slave;
 		error = iicbus_transfer(sc->sc_dev, msgs, 2);
-		if (error)
+		if (error) {
+			error = iic2errno(error);
 			break;
+		}
 		error = uiomove(data, len, uio);
 		if (error)
 			break;
 	}
-	ICEE_UNLOCK(sc);
+	iicbus_release_bus(sc->sc_busdev, sc->sc_dev);
 	return (error);
 }
 
@@ -214,7 +212,10 @@ icee_write(struct cdev *dev, struct uio 
 		return (EIO);
 	if (sc->type != 8 && sc->type != 16)
 		return (EINVAL);
-	ICEE_LOCK(sc);
+
+	error = iicbus_request_bus(sc->sc_busdev, sc->sc_dev, IIC_INTRWAIT);
+	if (error!= 0)
+		return (iic2errno(error));
 	slave = error = 0;
 	while (uio->uio_resid > 0) {
 		if (uio->uio_offset >= sc->size)
@@ -239,18 +240,22 @@ icee_write(struct cdev *dev, struct uio 
 		if (error)
 			break;
 		error = iicbus_transfer(sc->sc_dev, wr, 1);
-		if (error)
+		if (error) {
+			error = iic2errno(error);
 			break;
+		}
 		/* Read after write to wait for write-done. */
 		waitlimit = 10000;
 		rd[0].slave = slave;
 		do {
 			error = iicbus_transfer(sc->sc_dev, rd, 1);
 		} while (waitlimit-- > 0 && error != 0);
-		if (error)
+		if (error) {
+			error = iic2errno(error);
 			break;
+		}
 	}
-	ICEE_UNLOCK(sc);
+	iicbus_release_bus(sc->sc_busdev, sc->sc_dev);
 	return error;
 }
 

Modified: projects/release-pkg/sys/dev/iicbus/iicoc.c
==============================================================================
--- projects/release-pkg/sys/dev/iicbus/iicoc.c	Sat Oct 10 19:51:00 2015	(r289118)
+++ projects/release-pkg/sys/dev/iicbus/iicoc.c	Sat Oct 10 23:12:36 2015	(r289119)
@@ -236,7 +236,7 @@ iicoc_detach(device_t dev)
 static int 
 iicoc_start(device_t dev, u_char slave, int timeout)
 {
-	int error = IIC_EBUSBSY;
+	int error = IIC_EBUSERR;
 	struct iicoc_softc *sc;
 
 	sc = device_get_softc(dev);

Modified: projects/release-pkg/sys/dev/iicbus/iiconf.c
==============================================================================
--- projects/release-pkg/sys/dev/iicbus/iiconf.c	Sat Oct 10 19:51:00 2015	(r289118)
+++ projects/release-pkg/sys/dev/iicbus/iiconf.c	Sat Oct 10 23:12:36 2015	(r289119)
@@ -40,6 +40,28 @@ __FBSDID("$FreeBSD$");
 #include "iicbus_if.h"

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201510102312.t9ANCal6080241>