Commit 85f2901b authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'i2c/for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux

Pull i2c fixes from Wolfram Sang:
 "This has a mixture of merge window cleanups and bugfixes"

* 'i2c/for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
  i2c: st: add include for pinctrl
  i2c: mux: use proper dev when removing "channel-X" symlinks
  i2c: digicolor: remove duplicate include
  i2c: Mark adapter devices with pm_runtime_no_callbacks
  i2c: pca-platform: fix broken email address
  i2c: mxs: fix broken email address
  i2c: rk3x: report number of messages transmitted
parents f583381f fcdd5f09
...@@ -12,11 +12,10 @@ ...@@ -12,11 +12,10 @@
#include <linux/clk.h> #include <linux/clk.h>
#include <linux/completion.h> #include <linux/completion.h>
#include <linux/delay.h>
#include <linux/i2c.h> #include <linux/i2c.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/io.h> #include <linux/io.h>
#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/of.h> #include <linux/of.h>
......
...@@ -913,7 +913,7 @@ static void __exit mxs_i2c_exit(void) ...@@ -913,7 +913,7 @@ static void __exit mxs_i2c_exit(void)
module_exit(mxs_i2c_exit); module_exit(mxs_i2c_exit);
MODULE_AUTHOR("Marek Vasut <marex@denx.de>"); MODULE_AUTHOR("Marek Vasut <marex@denx.de>");
MODULE_AUTHOR("Wolfram Sang <w.sang@pengutronix.de>"); MODULE_AUTHOR("Wolfram Sang <kernel@pengutronix.de>");
MODULE_DESCRIPTION("MXS I2C Bus Driver"); MODULE_DESCRIPTION("MXS I2C Bus Driver");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
MODULE_ALIAS("platform:" DRIVER_NAME); MODULE_ALIAS("platform:" DRIVER_NAME);
...@@ -285,6 +285,6 @@ static struct platform_driver i2c_pca_pf_driver = { ...@@ -285,6 +285,6 @@ static struct platform_driver i2c_pca_pf_driver = {
module_platform_driver(i2c_pca_pf_driver); module_platform_driver(i2c_pca_pf_driver);
MODULE_AUTHOR("Wolfram Sang <w.sang@pengutronix.de>"); MODULE_AUTHOR("Wolfram Sang <kernel@pengutronix.de>");
MODULE_DESCRIPTION("I2C-PCA9564/PCA9665 platform driver"); MODULE_DESCRIPTION("I2C-PCA9564/PCA9665 platform driver");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
...@@ -833,7 +833,7 @@ static int rk3x_i2c_xfer(struct i2c_adapter *adap, ...@@ -833,7 +833,7 @@ static int rk3x_i2c_xfer(struct i2c_adapter *adap,
clk_disable(i2c->clk); clk_disable(i2c->clk);
spin_unlock_irqrestore(&i2c->lock, flags); spin_unlock_irqrestore(&i2c->lock, flags);
return ret; return ret < 0 ? ret : num;
} }
static u32 rk3x_i2c_func(struct i2c_adapter *adap) static u32 rk3x_i2c_func(struct i2c_adapter *adap)
......
...@@ -10,17 +10,18 @@ ...@@ -10,17 +10,18 @@
* published by the Free Software Foundation. * 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/clk.h>
#include <linux/io.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/interrupt.h>
#include <linux/err.h> #include <linux/err.h>
#include <linux/of.h> #include <linux/i2c.h>
#include <linux/interrupt.h>
#include <linux/io.h>
#include <linux/module.h>
#include <linux/of_address.h> #include <linux/of_address.h>
#include <linux/of_irq.h> #include <linux/of_irq.h>
#include <linux/of.h>
#include <linux/pinctrl/consumer.h>
#include <linux/platform_device.h>
/* SSC registers */ /* SSC registers */
#define SSC_BRG 0x000 #define SSC_BRG 0x000
......
...@@ -1413,6 +1413,8 @@ static int i2c_register_adapter(struct i2c_adapter *adap) ...@@ -1413,6 +1413,8 @@ static int i2c_register_adapter(struct i2c_adapter *adap)
dev_dbg(&adap->dev, "adapter [%s] registered\n", adap->name); dev_dbg(&adap->dev, "adapter [%s] registered\n", adap->name);
pm_runtime_no_callbacks(&adap->dev);
#ifdef CONFIG_I2C_COMPAT #ifdef CONFIG_I2C_COMPAT
res = class_compat_create_link(i2c_adapter_compat_class, &adap->dev, res = class_compat_create_link(i2c_adapter_compat_class, &adap->dev,
adap->dev.parent); adap->dev.parent);
......
...@@ -32,8 +32,9 @@ struct i2c_mux_priv { ...@@ -32,8 +32,9 @@ struct i2c_mux_priv {
struct i2c_algorithm algo; struct i2c_algorithm algo;
struct i2c_adapter *parent; struct i2c_adapter *parent;
void *mux_priv; /* the mux chip/device */ struct device *mux_dev;
u32 chan_id; /* the channel id */ void *mux_priv;
u32 chan_id;
int (*select)(struct i2c_adapter *, void *mux_priv, u32 chan_id); int (*select)(struct i2c_adapter *, void *mux_priv, u32 chan_id);
int (*deselect)(struct i2c_adapter *, void *mux_priv, u32 chan_id); int (*deselect)(struct i2c_adapter *, void *mux_priv, u32 chan_id);
...@@ -119,6 +120,7 @@ struct i2c_adapter *i2c_add_mux_adapter(struct i2c_adapter *parent, ...@@ -119,6 +120,7 @@ struct i2c_adapter *i2c_add_mux_adapter(struct i2c_adapter *parent,
/* Set up private adapter data */ /* Set up private adapter data */
priv->parent = parent; priv->parent = parent;
priv->mux_dev = mux_dev;
priv->mux_priv = mux_priv; priv->mux_priv = mux_priv;
priv->chan_id = chan_id; priv->chan_id = chan_id;
priv->select = select; priv->select = select;
...@@ -203,7 +205,7 @@ void i2c_del_mux_adapter(struct i2c_adapter *adap) ...@@ -203,7 +205,7 @@ void i2c_del_mux_adapter(struct i2c_adapter *adap)
char symlink_name[20]; char symlink_name[20];
snprintf(symlink_name, sizeof(symlink_name), "channel-%u", priv->chan_id); snprintf(symlink_name, sizeof(symlink_name), "channel-%u", priv->chan_id);
sysfs_remove_link(&adap->dev.parent->kobj, symlink_name); sysfs_remove_link(&priv->mux_dev->kobj, symlink_name);
sysfs_remove_link(&priv->adap.dev.kobj, "mux_device"); sysfs_remove_link(&priv->adap.dev.kobj, "mux_device");
i2c_del_adapter(adap); i2c_del_adapter(adap);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment