Commit ebcd241a635c868b1f89abbfb4dd176ca5f81eba
Exists in
ti-lsk-linux-4.1.y
and in
10 other branches
Merge branch 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux
Pull i2c bugfixes from Wolfram Sang: "A few driver bugfixes for 3.18" * 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux: i2c: omap: fix i207 errata handling i2c: designware: prevent early stop on TX FIFO empty i2c: omap: fix NACK and Arbitration Lost irq handling
Showing 2 changed files Side-by-side Diff
drivers/i2c/busses/i2c-designware-core.c
... | ... | @@ -359,7 +359,7 @@ |
359 | 359 | } |
360 | 360 | |
361 | 361 | /* Configure Tx/Rx FIFO threshold levels */ |
362 | - dw_writel(dev, dev->tx_fifo_depth - 1, DW_IC_TX_TL); | |
362 | + dw_writel(dev, dev->tx_fifo_depth / 2, DW_IC_TX_TL); | |
363 | 363 | dw_writel(dev, 0, DW_IC_RX_TL); |
364 | 364 | |
365 | 365 | /* configure the i2c master */ |
drivers/i2c/busses/i2c-omap.c
... | ... | @@ -922,14 +922,12 @@ |
922 | 922 | if (stat & OMAP_I2C_STAT_NACK) { |
923 | 923 | err |= OMAP_I2C_STAT_NACK; |
924 | 924 | omap_i2c_ack_stat(dev, OMAP_I2C_STAT_NACK); |
925 | - break; | |
926 | 925 | } |
927 | 926 | |
928 | 927 | if (stat & OMAP_I2C_STAT_AL) { |
929 | 928 | dev_err(dev->dev, "Arbitration lost\n"); |
930 | 929 | err |= OMAP_I2C_STAT_AL; |
931 | 930 | omap_i2c_ack_stat(dev, OMAP_I2C_STAT_AL); |
932 | - break; | |
933 | 931 | } |
934 | 932 | |
935 | 933 | /* |
936 | 934 | |
937 | 935 | |
... | ... | @@ -954,11 +952,13 @@ |
954 | 952 | if (dev->fifo_size) |
955 | 953 | num_bytes = dev->buf_len; |
956 | 954 | |
957 | - omap_i2c_receive_data(dev, num_bytes, true); | |
958 | - | |
959 | - if (dev->errata & I2C_OMAP_ERRATA_I207) | |
955 | + if (dev->errata & I2C_OMAP_ERRATA_I207) { | |
960 | 956 | i2c_omap_errata_i207(dev, stat); |
957 | + num_bytes = (omap_i2c_read_reg(dev, | |
958 | + OMAP_I2C_BUFSTAT_REG) >> 8) & 0x3F; | |
959 | + } | |
961 | 960 | |
961 | + omap_i2c_receive_data(dev, num_bytes, true); | |
962 | 962 | omap_i2c_ack_stat(dev, OMAP_I2C_STAT_RDR); |
963 | 963 | continue; |
964 | 964 | } |