History

Merge tag 'i2c-for-6.4-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux

Pull i2c fixes from Wolfram Sang: "Biggest news is that Andi Shyti steps in for maintaining the controller drivers. Thank you very much! Other than that, one new driver maintainer and the rest is usual driver bugfixes. at24 has a Kconfig dependecy fix" * tag 'i2c-for-6.4-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux: MAINTAINERS: Add entries for Renesas RZ/V2M I2C driver eeprom: at24: also select REGMAP i2c: sprd: Delete i2c adapter in .remove's error path i2c: mv64xxx: Fix reading invalid status value in atomic mode i2c: designware: fix idx_write_cnt in read loop i2c: mchp-pci1xxxx: Avoid cast to incompatible function type i2c: img-scb: Fix spelling mistake "innacurate" -> "inaccurate" MAINTAINERS: Add myself as I2C host drivers maintainer

Linus Torvalds committed 3 years ago

Commit 022ce882 parents 6be5e47 33f36148 files · +37 −7Browse files

Unified · Split

8 files
  1. MAINTAINERS +10 −1
  2. drivers/i2c/busses/i2c-designware-core.h +1 −0
  3. drivers/i2c/busses/i2c-designware-slave.c +4 −0
  4. drivers/i2c/busses/i2c-img-scb.c +1 −1
  5. drivers/i2c/busses/i2c-mchp-pci1xxxx.c +4 −2
  6. drivers/i2c/busses/i2c-mv64xxx.c +11 −0
  7. drivers/i2c/busses/i2c-sprd.c +5 −3
  8. drivers/misc/eeprom/Kconfig +1 −0
MAINTAINERS+10−1
@@ -9696,8 +9696,9 @@ F: include/uapi/linux/i2c-*.h · 9695 unmodified lines
9696F: include/uapi/linux/i2c.h9696F: include/uapi/linux/i2c.h
9697 9697
9698I2C SUBSYSTEM HOST DRIVERS9698I2C SUBSYSTEM HOST DRIVERS
9699M: Andi Shyti <andi.shyti@kernel.org>
9699L: linux-i2c@vger.kernel.org9700L: linux-i2c@vger.kernel.org
9700S: Odd Fixes9701S: Maintained
9701W: https://i2c.wiki.kernel.org/9702W: https://i2c.wiki.kernel.org/
9702Q: https://patchwork.ozlabs.org/project/linux-i2c/list/9703Q: https://patchwork.ozlabs.org/project/linux-i2c/list/
9703T: git git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git9704T: git git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git
@@ -18047,6 +18048,14 @@ S: Maintained · 8343 unmodified lines
18047F: Documentation/devicetree/bindings/usb/renesas,rzn1-usbf.yaml18048F: Documentation/devicetree/bindings/usb/renesas,rzn1-usbf.yaml
18048F: drivers/usb/gadget/udc/renesas_usbf.c18049F: drivers/usb/gadget/udc/renesas_usbf.c
18049 18050
18051RENESAS RZ/V2M I2C DRIVER
18052M: Fabrizio Castro <fabrizio.castro.jz@renesas.com>
18053L: linux-i2c@vger.kernel.org
18054L: linux-renesas-soc@vger.kernel.org
18055S: Supported
18056F: Documentation/devicetree/bindings/i2c/renesas,rzv2m.yaml
18057F: drivers/i2c/busses/i2c-rzv2m.c
18058
18050RENESAS USB PHY DRIVER18059RENESAS USB PHY DRIVER
18051M: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>18060M: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
18052L: linux-renesas-soc@vger.kernel.org18061L: linux-renesas-soc@vger.kernel.org
drivers/i2c/busses/i2c-designware-core.h+1−0
@@ -40,6 +40,7 @@ · 39 unmodified lines
40#define DW_IC_CON_BUS_CLEAR_CTRL BIT(11)40#define DW_IC_CON_BUS_CLEAR_CTRL BIT(11)
41 41
42#define DW_IC_DATA_CMD_DAT GENMASK(7, 0)42#define DW_IC_DATA_CMD_DAT GENMASK(7, 0)
43#define DW_IC_DATA_CMD_FIRST_DATA_BYTE BIT(11)
43 44
44/*45/*
45 * Registers offset46 * Registers offset
drivers/i2c/busses/i2c-designware-slave.c+4−0
@@ -176,6 +176,10 @@ static irqreturn_t i2c_dw_isr_slave(int this_irq, void *dev_id) · 175 unmodified lines
176 176
177 do {177 do {
178 regmap_read(dev->map, DW_IC_DATA_CMD, &tmp);178 regmap_read(dev->map, DW_IC_DATA_CMD, &tmp);
179 if (tmp & DW_IC_DATA_CMD_FIRST_DATA_BYTE)
180 i2c_slave_event(dev->slave,
181 I2C_SLAVE_WRITE_REQUESTED,
182 &val);
179 val = tmp;183 val = tmp;
180 i2c_slave_event(dev->slave, I2C_SLAVE_WRITE_RECEIVED,184 i2c_slave_event(dev->slave, I2C_SLAVE_WRITE_RECEIVED,
181 &val);185 &val);
drivers/i2c/busses/i2c-img-scb.c+1−1
@@ -257,7 +257,7 @@ · 256 unmodified lines
257#define IMG_I2C_TIMEOUT (msecs_to_jiffies(1000))257#define IMG_I2C_TIMEOUT (msecs_to_jiffies(1000))
258 258
259/*259/*
260 * Worst incs are 1 (innacurate) and 16*256 (irregular).260 * Worst incs are 1 (inaccurate) and 16*256 (irregular).
261 * So a sensible inc is the logarithmic mean: 64 (2^6), which is261 * So a sensible inc is the logarithmic mean: 64 (2^6), which is
262 * in the middle of the valid range (0-127).262 * in the middle of the valid range (0-127).
263 */263 */
drivers/i2c/busses/i2c-mchp-pci1xxxx.c+4−2
@@ -1118,8 +1118,10 @@ static int pci1xxxx_i2c_resume(struct device *dev) · 1117 unmodified lines
1118static DEFINE_SIMPLE_DEV_PM_OPS(pci1xxxx_i2c_pm_ops, pci1xxxx_i2c_suspend,1118static DEFINE_SIMPLE_DEV_PM_OPS(pci1xxxx_i2c_pm_ops, pci1xxxx_i2c_suspend,
1119 pci1xxxx_i2c_resume);1119 pci1xxxx_i2c_resume);
1120 1120
1121static void pci1xxxx_i2c_shutdown(struct pci1xxxx_i2c *i2c)1121static void pci1xxxx_i2c_shutdown(void *data)
1122{1122{
1123 struct pci1xxxx_i2c *i2c = data;
1124
1123 pci1xxxx_i2c_config_padctrl(i2c, false);1125 pci1xxxx_i2c_config_padctrl(i2c, false);
1124 pci1xxxx_i2c_configure_core_reg(i2c, false);1126 pci1xxxx_i2c_configure_core_reg(i2c, false);
1125}1127}
@@ -1156,7 +1158,7 @@ static int pci1xxxx_i2c_probe_pci(struct pci_dev *pdev, · 30 unmodified lines
1156 init_completion(&i2c->i2c_xfer_done);1158 init_completion(&i2c->i2c_xfer_done);
1157 pci1xxxx_i2c_init(i2c);1159 pci1xxxx_i2c_init(i2c);
1158 1160
1159 ret = devm_add_action(dev, (void (*)(void *))pci1xxxx_i2c_shutdown, i2c);1161 ret = devm_add_action(dev, pci1xxxx_i2c_shutdown, i2c);
1160 if (ret)1162 if (ret)
1161 return ret;1163 return ret;
1162 1164
drivers/i2c/busses/i2c-mv64xxx.c+11−0
@@ -520,6 +520,17 @@ mv64xxx_i2c_intr(int irq, void *dev_id) · 519 unmodified lines
520 520
521 while (readl(drv_data->reg_base + drv_data->reg_offsets.control) &521 while (readl(drv_data->reg_base + drv_data->reg_offsets.control) &
522 MV64XXX_I2C_REG_CONTROL_IFLG) {522 MV64XXX_I2C_REG_CONTROL_IFLG) {
523 /*
524 * It seems that sometime the controller updates the status
525 * register only after it asserts IFLG in control register.
526 * This may result in weird bugs when in atomic mode. A delay
527 * of 100 ns before reading the status register solves this
528 * issue. This bug does not seem to appear when using
529 * interrupts.
530 */
531 if (drv_data->atomic)
532 ndelay(100);
533
523 status = readl(drv_data->reg_base + drv_data->reg_offsets.status);534 status = readl(drv_data->reg_base + drv_data->reg_offsets.status);
524 mv64xxx_i2c_fsm(drv_data, status);535 mv64xxx_i2c_fsm(drv_data, status);
525 mv64xxx_i2c_do_action(drv_data);536 mv64xxx_i2c_do_action(drv_data);
drivers/i2c/busses/i2c-sprd.c+5−3
@@ -576,12 +576,14 @@ static int sprd_i2c_remove(struct platform_device *pdev) · 575 unmodified lines
576 struct sprd_i2c *i2c_dev = platform_get_drvdata(pdev);576 struct sprd_i2c *i2c_dev = platform_get_drvdata(pdev);
577 int ret;577 int ret;
578 578
579 ret = pm_runtime_resume_and_get(i2c_dev->dev);579 ret = pm_runtime_get_sync(i2c_dev->dev);
580 if (ret < 0)580 if (ret < 0)
581 return ret;581 dev_err(&pdev->dev, "Failed to resume device (%pe)\n", ERR_PTR(ret));
582 582
583 i2c_del_adapter(&i2c_dev->adap);583 i2c_del_adapter(&i2c_dev->adap);
584 clk_disable_unprepare(i2c_dev->clk);584
585 if (ret >= 0)
586 clk_disable_unprepare(i2c_dev->clk);
585 587
586 pm_runtime_put_noidle(i2c_dev->dev);588 pm_runtime_put_noidle(i2c_dev->dev);
587 pm_runtime_disable(i2c_dev->dev);589 pm_runtime_disable(i2c_dev->dev);
drivers/misc/eeprom/Kconfig+1−0
@@ -6,6 +6,7 @@ config EEPROM_AT24 · 5 unmodified lines
6 depends on I2C && SYSFS6 depends on I2C && SYSFS
7 select NVMEM7 select NVMEM
8 select NVMEM_SYSFS8 select NVMEM_SYSFS
9 select REGMAP
9 select REGMAP_I2C10 select REGMAP_I2C
10 help11 help
11 Enable this driver to get read/write support to most I2C EEPROMs12 Enable this driver to get read/write support to most I2C EEPROMs

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t