Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux

Pull i2c fixes from Wolfram Sang:
"Some driver updates, a MAINTAINERS fix, and additions to COMPILE_TEST
(so we won't miss build problems again)"

* 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
MAINTAINERS: remove duplicate entry for i2c-qcom-geni
i2c: brcmstb: fix support for DSL and CM variants
i2c: qup: allow COMPILE_TEST
i2c: imx: allow COMPILE_TEST
i2c: cadence: allow COMPILE_TEST
i2c: qcom-cci: don't put a device tree node before i2c_add_adapter()
i2c: qcom-cci: don't delete an unregistered adapter
i2c: bcm2835: Avoid clock stretching timeouts

+26 -17
-8
MAINTAINERS
··· 16008 16008 F: drivers/misc/fastrpc.c 16009 16009 F: include/uapi/misc/fastrpc.h 16010 16010 16011 - QUALCOMM GENERIC INTERFACE I2C DRIVER 16012 - M: Akash Asthana <akashast@codeaurora.org> 16013 - M: Mukesh Savaliya <msavaliy@codeaurora.org> 16014 - L: linux-i2c@vger.kernel.org 16015 - L: linux-arm-msm@vger.kernel.org 16016 - S: Supported 16017 - F: drivers/i2c/busses/i2c-qcom-geni.c 16018 - 16019 16011 QUALCOMM HEXAGON ARCHITECTURE 16020 16012 M: Brian Cain <bcain@codeaurora.org> 16021 16013 L: linux-hexagon@vger.kernel.org
+3 -3
drivers/i2c/busses/Kconfig
··· 488 488 489 489 config I2C_CADENCE 490 490 tristate "Cadence I2C Controller" 491 - depends on ARCH_ZYNQ || ARM64 || XTENSA 491 + depends on ARCH_ZYNQ || ARM64 || XTENSA || COMPILE_TEST 492 492 help 493 493 Say yes here to select Cadence I2C Host Controller. This controller is 494 494 e.g. used by Xilinx Zynq. ··· 680 680 681 681 config I2C_IMX 682 682 tristate "IMX I2C interface" 683 - depends on ARCH_MXC || ARCH_LAYERSCAPE || COLDFIRE 683 + depends on ARCH_MXC || ARCH_LAYERSCAPE || COLDFIRE || COMPILE_TEST 684 684 select I2C_SLAVE 685 685 help 686 686 Say Y here if you want to use the IIC bus controller on ··· 935 935 936 936 config I2C_QUP 937 937 tristate "Qualcomm QUP based I2C controller" 938 - depends on ARCH_QCOM 938 + depends on ARCH_QCOM || COMPILE_TEST 939 939 help 940 940 If you say yes to this option, support will be included for the 941 941 built-in I2C interface on the Qualcomm SoCs.
+11
drivers/i2c/busses/i2c-bcm2835.c
··· 23 23 #define BCM2835_I2C_FIFO 0x10 24 24 #define BCM2835_I2C_DIV 0x14 25 25 #define BCM2835_I2C_DEL 0x18 26 + /* 27 + * 16-bit field for the number of SCL cycles to wait after rising SCL 28 + * before deciding the slave is not responding. 0 disables the 29 + * timeout detection. 30 + */ 26 31 #define BCM2835_I2C_CLKT 0x1c 27 32 28 33 #define BCM2835_I2C_C_READ BIT(0) ··· 479 474 adap->dev.of_node = pdev->dev.of_node; 480 475 adap->quirks = of_device_get_match_data(&pdev->dev); 481 476 477 + /* 478 + * Disable the hardware clock stretching timeout. SMBUS 479 + * specifies a limit for how long the device can stretch the 480 + * clock, but core I2C doesn't. 481 + */ 482 + bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_CLKT, 0); 482 483 bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_C, 0); 483 484 484 485 ret = i2c_add_adapter(adap);
+1 -1
drivers/i2c/busses/i2c-brcmstb.c
··· 673 673 674 674 /* set the data in/out register size for compatible SoCs */ 675 675 if (of_device_is_compatible(dev->device->of_node, 676 - "brcmstb,brcmper-i2c")) 676 + "brcm,brcmper-i2c")) 677 677 dev->data_regsz = sizeof(u8); 678 678 else 679 679 dev->data_regsz = sizeof(u32);
+11 -5
drivers/i2c/busses/i2c-qcom-cci.c
··· 558 558 cci->master[idx].adap.quirks = &cci->data->quirks; 559 559 cci->master[idx].adap.algo = &cci_algo; 560 560 cci->master[idx].adap.dev.parent = dev; 561 - cci->master[idx].adap.dev.of_node = child; 561 + cci->master[idx].adap.dev.of_node = of_node_get(child); 562 562 cci->master[idx].master = idx; 563 563 cci->master[idx].cci = cci; 564 564 ··· 643 643 continue; 644 644 645 645 ret = i2c_add_adapter(&cci->master[i].adap); 646 - if (ret < 0) 646 + if (ret < 0) { 647 + of_node_put(cci->master[i].adap.dev.of_node); 647 648 goto error_i2c; 649 + } 648 650 } 649 651 650 652 pm_runtime_set_autosuspend_delay(dev, MSEC_PER_SEC); ··· 657 655 return 0; 658 656 659 657 error_i2c: 660 - for (; i >= 0; i--) { 661 - if (cci->master[i].cci) 658 + for (--i ; i >= 0; i--) { 659 + if (cci->master[i].cci) { 662 660 i2c_del_adapter(&cci->master[i].adap); 661 + of_node_put(cci->master[i].adap.dev.of_node); 662 + } 663 663 } 664 664 error: 665 665 disable_irq(cci->irq); ··· 677 673 int i; 678 674 679 675 for (i = 0; i < cci->data->num_masters; i++) { 680 - if (cci->master[i].cci) 676 + if (cci->master[i].cci) { 681 677 i2c_del_adapter(&cci->master[i].adap); 678 + of_node_put(cci->master[i].adap.dev.of_node); 679 + } 682 680 cci_halt(cci, i); 683 681 } 684 682