Feng Kan | 24 Apr 19:11 2015

[PATCH V4 0/4] i2c: busses: xgene: I2C proxy driver for X-Gene

This is a proxy I2C driver for APM X-Gene SoC. It uses the mailbox driver
to tunnel i2c transactions via the SLIMpro processor.

V4 Change:
	- Remove PRP0001 and use a real ACPI id
V3 Change:
	- Add ACPI support
	- Fix previous comments.

Feng Kan (4):
  i2c: busses: add SLIMpro I2C device driver on APM X-Gene platform
  i2c: busses: xgene: add acpi support for i2c xgene SLIMpro driver
  Documentation: i2c: Add APM X-Gene platform SLIMpro I2C driver
  arm64: dts: add proxy I2C device driver on APM X-Gene platform

 .../devicetree/bindings/i2c/i2c-xgene-slimpro.txt  |  15 +
 arch/arm64/boot/dts/apm/apm-storm.dtsi             |   5 +
 drivers/i2c/busses/Kconfig                         |   9 +
 drivers/i2c/busses/Makefile                        |   1 +
 drivers/i2c/busses/i2c-xgene-slimpro.c             | 469 +++++++++++++++++++++
 5 files changed, 499 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/i2c/i2c-xgene-slimpro.txt
 create mode 100644 drivers/i2c/busses/i2c-xgene-slimpro.c



wilson danis | 24 Apr 15:05 2015

Hello dear

Kindly understand.

My name is Mr Danis Wilson, a Togolese and a personal lawyer to my
client who is a nationality of your country and has worked for Oil
Company here in my country before his death, as a personal lawyer to
him in my country here, his bank has given me notice to present the
next of kin of his fund or the money will be confiscated if i fail. I
want to present you to the bank to stand as his family members or
close relatives to my late client Since you bear same surname to my
late client, so that the bank will transfer this fund into your bank
account. Please do reply back immediately for more details information
about this prominent offer and for more understanding.

Yours faithfully
Danis Wilson. (ESQ)
Ellen Wang | 23 Apr 23:49 2015

[PATCH v1] HID: support multiple and large i2c transfers in hid-cp2112

cp2112_i2c_xfer() only supports a single i2c_msg and only
reads up to 61 bytes.  More than one message at a time
and longers reads just return errors.

This is a serious limitation.  For example, the at24 eeprom driver
generates paired write and read messages (for eeprom address and data).
And the reads can be quite large.  The fix consists of a loop
to go through all the messages, and a loop around cp2112_read()
to pick up all the returned data.  For extra credit, it now also
supports write-read pairs and implements them as

Signed-off-by: Ellen Wang <ellen@...>
 drivers/hid/hid-cp2112.c |  136 +++++++++++++++++++++++++++++-----------------
 1 file changed, 87 insertions(+), 49 deletions(-)

diff --git a/drivers/hid/hid-cp2112.c b/drivers/hid/hid-cp2112.c
index 3318de6..e7e72a4 100644
--- a/drivers/hid/hid-cp2112.c
+++ b/drivers/hid/hid-cp2112.c
 <at>  <at>  -444,11 +444,30  <at>  <at>  static int cp2112_i2c_write_req(void *buf, u8 slave_address, u8 *data,
 	return data_length + 3;

+static int cp2112_i2c_write_read_req(void *buf, u8 slave_address,
+				     u8 *addr, int addr_length,
+				     int read_length)
+	struct cp2112_write_read_req_report *report = buf;
(Continue reading)

Svenning Sørensen | 23 Apr 22:27 2015

[PATCH] i2c: scx200_acb: avoid I2C bus overclocking.

According to I2C spec, max SCL rate is 100 kHz, but SCx200/CS5536
controller is currently driving it at 214 kHz according to my math.

SCL is derived from an input clock of 48 MHz, which must be divided
by 480 (240 cycles for each SCL high/low state) to be within spec.

Signed-off-by: Svenning Soerensen <sss@...>
 drivers/i2c/busses/scx200_acb.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/drivers/i2c/busses/scx200_acb.c b/drivers/i2c/busses/scx200_acb.c
index 0a7e410..4def02d 100644
--- a/drivers/i2c/busses/scx200_acb.c
+++ b/drivers/i2c/busses/scx200_acb.c
 <at>  <at>  -46,6 +46,7  <at>  <at>  module_param_array(base, int, NULL, 0);
 MODULE_PARM_DESC(base, "Base addresses for the ACCESS.bus controllers");

 #define POLL_TIMEOUT	(HZ/5)
+#define ACBCLK		240	/* 48 MHz / 100 kHz / 2 */

 enum scx200_acb_state {
 <at>  <at>  -255,14 +256,14  <at>  <at>  static void scx200_acb_poll(struct scx200_acb_iface *iface)
 static void scx200_acb_reset(struct scx200_acb_iface *iface)
 	/* Disable the ACCESS.bus device and Configure the SCL
-	   frequency: 16 clock cycles */
-	outb(0x70, ACBCTL2);
+	   frequency: 240 clock cycles => 100 kHz */
(Continue reading)

Wolfram Sang | 23 Apr 13:42 2015

[PATCH] i2c: st: add include for pinctrl

The driver uses pinctrl directly and thus should include the appropriate
header. Sort the headers while we are here to have a better view what is
included and what is not.

Reported-by: Pascal Huerst <pascal.huerst@...>
Signed-off-by: Wolfram Sang <wsa@...>
 drivers/i2c/busses/i2c-st.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/drivers/i2c/busses/i2c-st.c b/drivers/i2c/busses/i2c-st.c
index 88057fad9dfef4..d525769db5c3d5 100644
--- a/drivers/i2c/busses/i2c-st.c
+++ b/drivers/i2c/busses/i2c-st.c
 <at>  <at>  -10,17 +10,18  <at>  <at> 
  * published by the Free Software Foundation.

-#include <linux/module.h>
-#include <linux/platform_device.h>
-#include <linux/i2c.h>
 #include <linux/clk.h>
-#include <linux/io.h>
 #include <linux/delay.h>
-#include <linux/interrupt.h>
 #include <linux/err.h>
-#include <linux/of.h>
+#include <linux/i2c.h>
+#include <linux/interrupt.h>
+#include <linux/io.h>
(Continue reading)

Matthew Karas | 22 Apr 14:16 2015

Fwd: Initializing drivers for i2c devices that use reserved i2c addresses ( as1115 default i2c address of 0x00)

I am writing a device driver for the as1115.  It is the only device on
the bus I am using. The part powers up with a default address of 0x00.
I've added the as1115 into the device tree.

Due to i2c_check_addr_validity checking and seeing that the as1115's
boot address is invalid when it's running the probe.  The
i2c_check_addr_validity function states that parts that use reserved
addresses shouldn't be probed.

I was wondering how I would be able to initialize the device without
using the probe function which provides the i2c_client pointer that
that I need and actually write to the device, and also I can use to
setup the irq.

Link to part info:

Many thanks
pascal.huerst | 22 Apr 11:07 2015

[PATCH v2] omap: i2c: Add calls for pinctrl state select

From: Pascal Huerst <pascal.huerst@...>

This adds calls to pinctrl subsystem in order to switch pin states
on suspend/resume if you provide a "sleep" state in DT.

Signed-off-by: Pascal Huerst <pascal.huerst@...>
 drivers/i2c/busses/i2c-omap.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
index 0e89419..8261941 100644
--- a/drivers/i2c/busses/i2c-omap.c
+++ b/drivers/i2c/busses/i2c-omap.c
 <at>  <at>  -38,6 +38,7  <at>  <at> 
 #include <linux/slab.h>
 #include <linux/i2c-omap.h>
 #include <linux/pm_runtime.h>
+#include <linux/pinctrl/consumer.h>

 /* I2C controller revisions */
 #define OMAP_I2C_OMAP1_REV_2		0x20
 <at>  <at>  -1423,6 +1424,8  <at>  <at>  static int omap_i2c_runtime_suspend(struct device *dev)
 		omap_i2c_read_reg(_dev, OMAP_I2C_STAT_REG);

+	pinctrl_pm_select_sleep_state(dev);
 	return 0;
(Continue reading)

Wolfram Sang | 22 Apr 10:20 2015

[PATCH] i2c: digicolor: remove duplicate include

And sort them to prevent this from happening again.

Reported-by: Wei Yongjun <yongjun_wei@...>
Signed-off-by: Wolfram Sang <wsa@...>
 drivers/i2c/busses/i2c-digicolor.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/i2c/busses/i2c-digicolor.c b/drivers/i2c/busses/i2c-digicolor.c
index 03f1e5549896dc..9604024e0eb095 100644
--- a/drivers/i2c/busses/i2c-digicolor.c
+++ b/drivers/i2c/busses/i2c-digicolor.c
 <at>  <at>  -12,11 +12,10  <at>  <at> 

 #include <linux/clk.h>
 #include <linux/completion.h>
+#include <linux/delay.h>
 #include <linux/i2c.h>
 #include <linux/interrupt.h>
 #include <linux/io.h>
-#include <linux/clk.h>
-#include <linux/delay.h>
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/of.h>


Dmitry Torokhov | 21 Apr 00:14 2015

[PATCH] i2c: rk3x: report number of messages transmitted

master_xfer() method should return number of i2c messages transferred,
but on Rockchip we were usually returning just 1, which caused trouble
with users that actually check number of transferred messages vs.
checking for negative error codes.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@...>
 drivers/i2c/busses/i2c-rk3x.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/i2c/busses/i2c-rk3x.c b/drivers/i2c/busses/i2c-rk3x.c
index 5f96b1b..019d542 100644
--- a/drivers/i2c/busses/i2c-rk3x.c
+++ b/drivers/i2c/busses/i2c-rk3x.c
 <at>  <at>  -833,7 +833,7  <at>  <at>  static int rk3x_i2c_xfer(struct i2c_adapter *adap,
 	spin_unlock_irqrestore(&i2c->lock, flags);

-	return ret;
+	return ret < 0 ? ret : num;

 static u32 rk3x_i2c_func(struct i2c_adapter *adap)


Irina Tirdea | 17 Apr 21:17 2015

[PATCH v2 0/2] Add support for best effort block read emulation

This is the second version for adding i2c_smbus_read_i2c_block_data_or_emulated
to i2c-core. It contains mostly fixes suggested by Wolfram.

Changes since v1:
 - dropped the RFC tag
 - changed at24 to use i2c_smbus_read_i2c_block_data_or_emulated
 - when reading an odd number of bytes using word emulation, read an even
number of bytes and drop the last one
 - add a comment that this might not be suitable for all I2C slaves 

Irina Tirdea (2):
  i2c: core: Add support for best effort block read emulation
  eeprom: at24: use i2c_smbus_read_i2c_block_data_or_emulated

 drivers/i2c/i2c-core.c     | 60 ++++++++++++++++++++++++++++++++++++++++++++++
 drivers/misc/eeprom/at24.c | 40 +++++++------------------------
 include/linux/i2c.h        |  3 +++
 3 files changed, 72 insertions(+), 31 deletions(-)



pascal.huerst | 17 Apr 17:07 2015

[PATCH] omap: i2c: Add calls for pinctrl state select

From: Pascal Huerst <pascal.huerst@...>

This adds calls to pinctrl subsystem in order to switch pin states
on suspend/resume if you provide a "sleep" state in DT.

Signed-off-by: Pascal Huerst <pascal.huerst@...>
 drivers/i2c/busses/i2c-omap.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
index 0e89419..6b5d4bd 100644
--- a/drivers/i2c/busses/i2c-omap.c
+++ b/drivers/i2c/busses/i2c-omap.c
 <at>  <at>  -1423,6 +1423,8  <at>  <at>  static int omap_i2c_runtime_suspend(struct device *dev)
 		omap_i2c_read_reg(_dev, OMAP_I2C_STAT_REG);

+	pinctrl_pm_select_sleep_state(dev);
 	return 0;

 <at>  <at>  -1431,6 +1433,8  <at>  <at>  static int omap_i2c_runtime_resume(struct device *dev)
 	struct platform_device *pdev = to_platform_device(dev);
 	struct omap_i2c_dev *_dev = platform_get_drvdata(pdev);

+	pinctrl_pm_select_default_state(dev);
 	if (!_dev->regs)
(Continue reading)