mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-01 10:42:11 +00:00
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
This commit is contained in:
commit
82463436a7
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user