diff options
Diffstat (limited to 'drivers/i2c')
-rw-r--r-- | drivers/i2c/busses/Kconfig | 1 | ||||
-rw-r--r-- | drivers/i2c/busses/i2c-i801.c | 6 | ||||
-rw-r--r-- | drivers/i2c/busses/i2c-imx.c | 1 | ||||
-rw-r--r-- | drivers/i2c/busses/i2c-xiic.c | 4 | ||||
-rw-r--r-- | drivers/i2c/i2c-core.c | 2 |
5 files changed, 12 insertions, 2 deletions
diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig index e24c2b680b47..7b0aa82ea38b 100644 --- a/drivers/i2c/busses/Kconfig +++ b/drivers/i2c/busses/Kconfig | |||
@@ -126,6 +126,7 @@ config I2C_I801 | |||
126 | Sunrise Point-LP (PCH) | 126 | Sunrise Point-LP (PCH) |
127 | DNV (SOC) | 127 | DNV (SOC) |
128 | Broxton (SOC) | 128 | Broxton (SOC) |
129 | Lewisburg (PCH) | ||
129 | 130 | ||
130 | This driver can also be built as a module. If so, the module | 131 | This driver can also be built as a module. If so, the module |
131 | will be called i2c-i801. | 132 | will be called i2c-i801. |
diff --git a/drivers/i2c/busses/i2c-i801.c b/drivers/i2c/busses/i2c-i801.c index c306751ceadb..f62d69799a9c 100644 --- a/drivers/i2c/busses/i2c-i801.c +++ b/drivers/i2c/busses/i2c-i801.c | |||
@@ -62,6 +62,8 @@ | |||
62 | * Sunrise Point-LP (PCH) 0x9d23 32 hard yes yes yes | 62 | * Sunrise Point-LP (PCH) 0x9d23 32 hard yes yes yes |
63 | * DNV (SOC) 0x19df 32 hard yes yes yes | 63 | * DNV (SOC) 0x19df 32 hard yes yes yes |
64 | * Broxton (SOC) 0x5ad4 32 hard yes yes yes | 64 | * 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 | ||
65 | * | 67 | * |
66 | * Features supported by this driver: | 68 | * Features supported by this driver: |
67 | * Software PEC no | 69 | * Software PEC no |
@@ -206,6 +208,8 @@ | |||
206 | #define PCI_DEVICE_ID_INTEL_SUNRISEPOINT_LP_SMBUS 0x9d23 | 208 | #define PCI_DEVICE_ID_INTEL_SUNRISEPOINT_LP_SMBUS 0x9d23 |
207 | #define PCI_DEVICE_ID_INTEL_DNV_SMBUS 0x19df | 209 | #define PCI_DEVICE_ID_INTEL_DNV_SMBUS 0x19df |
208 | #define PCI_DEVICE_ID_INTEL_BROXTON_SMBUS 0x5ad4 | 210 | #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 | ||
209 | 213 | ||
210 | struct i801_mux_config { | 214 | struct i801_mux_config { |
211 | char *gpio_chip; | 215 | char *gpio_chip; |
@@ -869,6 +873,8 @@ static const struct pci_device_id i801_ids[] = { | |||
869 | { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_SUNRISEPOINT_LP_SMBUS) }, | 873 | { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_SUNRISEPOINT_LP_SMBUS) }, |
870 | { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_DNV_SMBUS) }, | 874 | { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_DNV_SMBUS) }, |
871 | { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_BROXTON_SMBUS) }, | 875 | { 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) }, | ||
872 | { 0, } | 878 | { 0, } |
873 | }; | 879 | }; |
874 | 880 | ||
diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c index 1e4d99da4164..9bb0b056b25f 100644 --- a/drivers/i2c/busses/i2c-imx.c +++ b/drivers/i2c/busses/i2c-imx.c | |||
@@ -50,6 +50,7 @@ | |||
50 | #include <linux/of_device.h> | 50 | #include <linux/of_device.h> |
51 | #include <linux/of_dma.h> | 51 | #include <linux/of_dma.h> |
52 | #include <linux/of_gpio.h> | 52 | #include <linux/of_gpio.h> |
53 | #include <linux/pinctrl/consumer.h> | ||
53 | #include <linux/platform_data/i2c-imx.h> | 54 | #include <linux/platform_data/i2c-imx.h> |
54 | #include <linux/platform_device.h> | 55 | #include <linux/platform_device.h> |
55 | #include <linux/sched.h> | 56 | #include <linux/sched.h> |
diff --git a/drivers/i2c/busses/i2c-xiic.c b/drivers/i2c/busses/i2c-xiic.c index e23a7b068c60..0b20449e48cf 100644 --- a/drivers/i2c/busses/i2c-xiic.c +++ b/drivers/i2c/busses/i2c-xiic.c | |||
@@ -662,8 +662,10 @@ static void __xiic_start_xfer(struct xiic_i2c *i2c) | |||
662 | 662 | ||
663 | static void xiic_start_xfer(struct xiic_i2c *i2c) | 663 | static void xiic_start_xfer(struct xiic_i2c *i2c) |
664 | { | 664 | { |
665 | 665 | spin_lock(&i2c->lock); | |
666 | xiic_reinit(i2c); | ||
666 | __xiic_start_xfer(i2c); | 667 | __xiic_start_xfer(i2c); |
668 | spin_unlock(&i2c->lock); | ||
667 | } | 669 | } |
668 | 670 | ||
669 | static int xiic_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num) | 671 | static int xiic_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num) |
diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c index 040af5cc8143..ba8eb087f224 100644 --- a/drivers/i2c/i2c-core.c +++ b/drivers/i2c/i2c-core.c | |||
@@ -715,7 +715,7 @@ static int i2c_device_probe(struct device *dev) | |||
715 | if (wakeirq > 0 && wakeirq != client->irq) | 715 | if (wakeirq > 0 && wakeirq != client->irq) |
716 | status = dev_pm_set_dedicated_wake_irq(dev, wakeirq); | 716 | status = dev_pm_set_dedicated_wake_irq(dev, wakeirq); |
717 | else if (client->irq > 0) | 717 | else if (client->irq > 0) |
718 | status = dev_pm_set_wake_irq(dev, wakeirq); | 718 | status = dev_pm_set_wake_irq(dev, client->irq); |
719 | else | 719 | else |
720 | status = 0; | 720 | status = 0; |
721 | 721 | ||