Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 4 Nov 2015 22:46:30 +0000 (UTC)
From:      Andreas Tobler <andreast@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r290373 - head/sys/dev/ofw
Message-ID:  <201511042246.tA4MkUYU010551@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: andreast
Date: Wed Nov  4 22:46:30 2015
New Revision: 290373
URL: https://svnweb.freebsd.org/changeset/base/290373

Log:
  Add a compile time switch to distinguish between 7-bit and 8-bit I2C address
  usage. The comment in the code should explain the situation.
  
  Discussed with:	 ian@

Modified:
  head/sys/dev/ofw/ofw_iicbus.c

Modified: head/sys/dev/ofw/ofw_iicbus.c
==============================================================================
--- head/sys/dev/ofw/ofw_iicbus.c	Wed Nov  4 19:09:42 2015	(r290372)
+++ head/sys/dev/ofw/ofw_iicbus.c	Wed Nov  4 22:46:30 2015	(r290373)
@@ -148,10 +148,16 @@ ofw_iicbus_attach(device_t dev)
 		if (dinfo == NULL)
 			continue;
 		/*
-		 * OFW uses 7-bit I2C address format (see ePAPR),
-		 * but system expect 8-bit.
+		 * FreeBSD drivers expect I2C addresses to be expressed as
+		 * 8-bit values.  Apple OFW data contains 8-bit values, but
+		 * Linux FDT data contains 7-bit values, so shift them up to
+		 * 8-bit format.
 		 */
+#ifdef AIM
+		dinfo->opd_dinfo.addr = paddr;
+#else
 		dinfo->opd_dinfo.addr = paddr << 1;
+#endif
 		if (ofw_bus_gen_setup_devinfo(&dinfo->opd_obdinfo, child) !=
 		    0) {
 			free(dinfo, M_DEVBUF);



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