Pull i2c fixes from Wolfram Sang: "Some more driver fixes for i2c" * 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux: i2c: npcm7xx: Clear LAST bit after a failed transaction. i2c: cpm: Fix i2c_ram structure i2c: i801: Exclude device from suspend direct complete optimization
Unified · Split
| @@ -65,6 +65,9 @@ struct i2c_ram { · 64 unmodified lines | |||
| 65 | char res1[4]; /* Reserved */ | 65 | char res1[4]; /* Reserved */ |
| 66 | ushort rpbase; /* Relocation pointer */ | 66 | ushort rpbase; /* Relocation pointer */ |
| 67 | char res2[2]; /* Reserved */ | 67 | char res2[2]; /* Reserved */ |
| 68 | /* The following elements are only for CPM2 */ | ||
| 69 | char res3[4]; /* Reserved */ | ||
| 70 | uint sdmatmp; /* Internal */ | ||
| 68 | }; | 71 | }; |
| 69 | 72 | ||
| 70 | #define I2COM_START 0x80 | 73 | #define I2COM_START 0x80 |
| @@ -1917,6 +1917,7 @@ static int i801_probe(struct pci_dev *dev, const struct pci_device_id *id) · 1916 unmodified lines | |||
| 1917 | 1917 | ||
| 1918 | pci_set_drvdata(dev, priv); | 1918 | pci_set_drvdata(dev, priv); |
| 1919 | 1919 | ||
| 1920 | dev_pm_set_driver_flags(&dev->dev, DPM_FLAG_NO_DIRECT_COMPLETE); | ||
| 1920 | pm_runtime_set_autosuspend_delay(&dev->dev, 1000); | 1921 | pm_runtime_set_autosuspend_delay(&dev->dev, 1000); |
| 1921 | pm_runtime_use_autosuspend(&dev->dev); | 1922 | pm_runtime_use_autosuspend(&dev->dev); |
| 1922 | pm_runtime_put_autosuspend(&dev->dev); | 1923 | pm_runtime_put_autosuspend(&dev->dev); |
| @@ -2163,6 +2163,15 @@ static int npcm_i2c_master_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, · 2162 unmodified lines | |||
| 2163 | if (bus->cmd_err == -EAGAIN) | 2163 | if (bus->cmd_err == -EAGAIN) |
| 2164 | ret = i2c_recover_bus(adap); | 2164 | ret = i2c_recover_bus(adap); |
| 2165 | 2165 | ||
| 2166 | /* | ||
| 2167 | * After any type of error, check if LAST bit is still set, | ||
| 2168 | * due to a HW issue. | ||
| 2169 | * It cannot be cleared without resetting the module. | ||
| 2170 | */ | ||
| 2171 | if (bus->cmd_err && | ||
| 2172 | (NPCM_I2CRXF_CTL_LAST_PEC & ioread8(bus->reg + NPCM_I2CRXF_CTL))) | ||
| 2173 | npcm_i2c_reset(bus); | ||
| 2174 | |||
| 2166 | #if IS_ENABLED(CONFIG_I2C_SLAVE) | 2175 | #if IS_ENABLED(CONFIG_I2C_SLAVE) |
| 2167 | /* reenable slave if it was enabled */ | 2176 | /* reenable slave if it was enabled */ |
| 2168 | if (bus->slave) | 2177 | if (bus->slave) |