Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 82463436 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'i2c/for-current-fixed' of...

Merge branch 'i2c/for-current-fixed' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/wsa/linux

Pull i2c fixes from Wolfram Sang:
 "I2C driver bugfixes and a MAINTAINERS update for you"

* 'i2c/for-current-fixed' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
  i2c: Prevent runtime suspend of adapter when Host Notify is required
  i2c: synquacer: fix enumeration of slave devices
  MAINTAINERS: friendly takeover of i2c-gpio driver
  i2c: designware: ratelimit 'transfer when suspended' errors
  i2c: imx: correct the method of getting private data in notifier_call
parents a4ccb5f9 72bfcee1
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -6462,7 +6462,7 @@ S: Maintained
F:	drivers/media/radio/radio-gemtek*

GENERIC GPIO I2C DRIVER
M:	Haavard Skinnemoen <hskinnemoen@gmail.com>
M:	Wolfram Sang <wsa+renesas@sang-engineering.com>
S:	Supported
F:	drivers/i2c/busses/i2c-gpio.c
F:	include/linux/platform_data/i2c-gpio.h
+1 −2
Original line number Diff line number Diff line
@@ -426,8 +426,7 @@ i2c_dw_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num)

	pm_runtime_get_sync(dev->dev);

	if (dev->suspended) {
		dev_err(dev->dev, "Error %s call while suspended\n", __func__);
	if (dev_WARN_ONCE(dev->dev, dev->suspended, "Transfer while suspended\n")) {
		ret = -ESHUTDOWN;
		goto done_nolock;
	}
+2 −2
Original line number Diff line number Diff line
@@ -515,9 +515,9 @@ static int i2c_imx_clk_notifier_call(struct notifier_block *nb,
				     unsigned long action, void *data)
{
	struct clk_notifier_data *ndata = data;
	struct imx_i2c_struct *i2c_imx = container_of(&ndata->clk,
	struct imx_i2c_struct *i2c_imx = container_of(nb,
						      struct imx_i2c_struct,
						      clk);
						      clk_change_nb);

	if (action & POST_RATE_CHANGE)
		i2c_imx_set_clk(i2c_imx, ndata->new_rate);
+2 −0
Original line number Diff line number Diff line
@@ -597,6 +597,8 @@ static int synquacer_i2c_probe(struct platform_device *pdev)
	i2c->adapter = synquacer_i2c_ops;
	i2c_set_adapdata(&i2c->adapter, i2c);
	i2c->adapter.dev.parent = &pdev->dev;
	i2c->adapter.dev.of_node = pdev->dev.of_node;
	ACPI_COMPANION_SET(&i2c->adapter.dev, ACPI_COMPANION(&pdev->dev));
	i2c->adapter.nr = pdev->id;
	init_completion(&i2c->completion);

+4 −0
Original line number Diff line number Diff line
@@ -327,6 +327,8 @@ static int i2c_device_probe(struct device *dev)

		if (client->flags & I2C_CLIENT_HOST_NOTIFY) {
			dev_dbg(dev, "Using Host Notify IRQ\n");
			/* Keep adapter active when Host Notify is required */
			pm_runtime_get_sync(&client->adapter->dev);
			irq = i2c_smbus_host_notify_to_irq(client);
		} else if (dev->of_node) {
			irq = of_irq_get_byname(dev->of_node, "irq");
@@ -431,6 +433,8 @@ static int i2c_device_remove(struct device *dev)
	device_init_wakeup(&client->dev, false);

	client->irq = client->init_irq;
	if (client->flags & I2C_CLIENT_HOST_NOTIFY)
		pm_runtime_put(&client->adapter->dev);

	return status;
}