[linux-yocto] [PATCH 5/6] i2c: allow Designware I2C to be probed before SMBus for Baytrail

wan.ahmad.zainie.wan.mohamad at intel.com wan.ahmad.zainie.wan.mohamad at intel.com
Mon Nov 16 18:54:19 PST 2015

From: Maurice Petallo <mauricex.r.petallo at intel.com>

When SMBus is enabled in Baytrail, it is being probed first before
all the Designware I2C devices. This means SMBus will take the first
available bus id which is 0 and then the I2C devices will take the
next succeeding bus ids. This should be fine as long as the I2C
devices bus ids are assigned dynamically.

The problem arises when the I2C devices' bus ids are assigned
statically and the SMBus is probed first. The kernel will fail to
add the i2c adapter because something else, which in that case is
the SMBus, has taken the bus id that the i2c adapter is trying to

As mentioned in commit "i2c: designware-pci: use static bus num
allocation for baytrail", it is required for I2C devices' bus ids
to be assigned statically for LPE Audio to register the i2c properly.

To resolve this, we either force the SMBus to take the next bus id
after all the designware I2C devices or we allow all the I2C devices
to be probed first before the SMBus. This patch implements the 2nd.

Signed-off-by: Maurice Petallo <mauricex.r.petallo at intel.com>
Change-Id: I113c4c2b0d9a44aa2d28ff764c19c798df6d3c30
Reviewed-on: https://git-gar-1.devtools.intel.com/gerrit/4016
Reviewed-by: Wan Mohamad, Wan Ahmad Zainie <wan.ahmad.zainie.wan.mohamad at intel.com>
 drivers/i2c/busses/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/i2c/busses/Makefile b/drivers/i2c/busses/Makefile
index f35b079..5bbf680 100644
--- a/drivers/i2c/busses/Makefile
+++ b/drivers/i2c/busses/Makefile
@@ -12,7 +12,6 @@ obj-$(CONFIG_I2C_ALI15X3)	+= i2c-ali15x3.o
 obj-$(CONFIG_I2C_AMD756)	+= i2c-amd756.o
 obj-$(CONFIG_I2C_AMD756_S4882)	+= i2c-amd756-s4882.o
 obj-$(CONFIG_I2C_AMD8111)	+= i2c-amd8111.o
-obj-$(CONFIG_I2C_I801)		+= i2c-i801.o
 obj-$(CONFIG_I2C_ISCH)		+= i2c-isch.o
 obj-$(CONFIG_I2C_ISMT)		+= i2c-ismt.o
 obj-$(CONFIG_I2C_NFORCE2)	+= i2c-nforce2.o
@@ -41,6 +40,7 @@ obj-$(CONFIG_I2C_DESIGNWARE_PLATFORM)	+= i2c-designware-platform.o
 i2c-designware-platform-objs := i2c-designware-platdrv.o
 obj-$(CONFIG_I2C_DESIGNWARE_PCI)	+= i2c-designware-pci.o
 i2c-designware-pci-objs := i2c-designware-pcidrv.o
+obj-$(CONFIG_I2C_I801)		+= i2c-i801.o
 obj-$(CONFIG_I2C_EG20T)		+= i2c-eg20t.o
 obj-$(CONFIG_I2C_GPIO)		+= i2c-gpio.o
 obj-$(CONFIG_I2C_HIGHLANDER)	+= i2c-highlander.o

More information about the linux-yocto mailing list