Skip to content

Commit 81051f9

Browse files
committed
Merge branch 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux
Pull i2c fixes from Wolfram Sang: "A few bugfixes and one PCI ID addition from I2C" * 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux: i2c: i801: add Intel Lewisburg device IDs i2c: fix wakeup irq parsing i2c: xiic: Prevent concurrent running of the IRQ handler and __xiic_start_xfer() i2c: Revert "i2c: xiic: Do not reset controller before every transfer" i2c: imx: fix a compiling error
2 parents 116dfe5 + cdc5a31 commit 81051f9

File tree

6 files changed

+13
-2
lines changed

6 files changed

+13
-2
lines changed

Documentation/i2c/busses/i2c-i801

+1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ Supported adapters:
3232
* Intel Sunrise Point-LP (PCH)
3333
* Intel DNV (SOC)
3434
* Intel Broxton (SOC)
35+
* Intel Lewisburg (PCH)
3536
Datasheets: Publicly available at the Intel website
3637

3738
On Intel Patsburg and later chipsets, both the normal host SMBus controller

drivers/i2c/busses/Kconfig

+1
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ config I2C_I801
126126
Sunrise Point-LP (PCH)
127127
DNV (SOC)
128128
Broxton (SOC)
129+
Lewisburg (PCH)
129130

130131
This driver can also be built as a module. If so, the module
131132
will be called i2c-i801.

drivers/i2c/busses/i2c-i801.c

+6
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@
6262
* Sunrise Point-LP (PCH) 0x9d23 32 hard yes yes yes
6363
* DNV (SOC) 0x19df 32 hard yes yes yes
6464
* Broxton (SOC) 0x5ad4 32 hard yes yes yes
65+
* Lewisburg (PCH) 0xa1a3 32 hard yes yes yes
66+
* Lewisburg Supersku (PCH) 0xa223 32 hard yes yes yes
6567
*
6668
* Features supported by this driver:
6769
* Software PEC no
@@ -206,6 +208,8 @@
206208
#define PCI_DEVICE_ID_INTEL_SUNRISEPOINT_LP_SMBUS 0x9d23
207209
#define PCI_DEVICE_ID_INTEL_DNV_SMBUS 0x19df
208210
#define PCI_DEVICE_ID_INTEL_BROXTON_SMBUS 0x5ad4
211+
#define PCI_DEVICE_ID_INTEL_LEWISBURG_SMBUS 0xa1a3
212+
#define PCI_DEVICE_ID_INTEL_LEWISBURG_SSKU_SMBUS 0xa223
209213

210214
struct i801_mux_config {
211215
char *gpio_chip;
@@ -869,6 +873,8 @@ static const struct pci_device_id i801_ids[] = {
869873
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_SUNRISEPOINT_LP_SMBUS) },
870874
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_DNV_SMBUS) },
871875
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_BROXTON_SMBUS) },
876+
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_LEWISBURG_SMBUS) },
877+
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_LEWISBURG_SSKU_SMBUS) },
872878
{ 0, }
873879
};
874880

drivers/i2c/busses/i2c-imx.c

+1
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
#include <linux/of_device.h>
5151
#include <linux/of_dma.h>
5252
#include <linux/of_gpio.h>
53+
#include <linux/pinctrl/consumer.h>
5354
#include <linux/platform_data/i2c-imx.h>
5455
#include <linux/platform_device.h>
5556
#include <linux/sched.h>

drivers/i2c/busses/i2c-xiic.c

+3-1
Original file line numberDiff line numberDiff line change
@@ -662,8 +662,10 @@ static void __xiic_start_xfer(struct xiic_i2c *i2c)
662662

663663
static void xiic_start_xfer(struct xiic_i2c *i2c)
664664
{
665-
665+
spin_lock(&i2c->lock);
666+
xiic_reinit(i2c);
666667
__xiic_start_xfer(i2c);
668+
spin_unlock(&i2c->lock);
667669
}
668670

669671
static int xiic_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)

drivers/i2c/i2c-core.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -715,7 +715,7 @@ static int i2c_device_probe(struct device *dev)
715715
if (wakeirq > 0 && wakeirq != client->irq)
716716
status = dev_pm_set_dedicated_wake_irq(dev, wakeirq);
717717
else if (client->irq > 0)
718-
status = dev_pm_set_wake_irq(dev, wakeirq);
718+
status = dev_pm_set_wake_irq(dev, client->irq);
719719
else
720720
status = 0;
721721

0 commit comments

Comments
 (0)