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

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

Pull i2c updates from Wolfram Sang:
"I2C has:

- using defines for bus speeds to avoid mistakes in hardcoded values;
lots of small driver updates because of that. Thanks, Andy!

- API change: i2c_setup_smbus_alert() was renamed to
i2c_new_smbus_alert_device() and returns ERRPTR now. All in-tree
users have been converted

- in the core, a rare race condition when deleting the cdev has been
fixed. Thanks, Kevin!

- lots of driver updates. Thanks, everyone!

I also want to mention: The amount of review and testing tags given
was quite high this time. Thank you to these people, too. I hope we
can keep it like this!"

* 'i2c/for-5.7' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux: (34 commits)
i2c: rcar: clean up after refactoring i2c_timings
macintosh: convert to i2c_new_scanned_device
i2c: drivers: Use generic definitions for bus frequencies
i2c: algo: Use generic definitions for bus frequencies
i2c: stm32f7: switch to I²C generic property parsing
i2c: rcar: Consolidate timings calls in rcar_i2c_clock_calculate()
i2c: core: Allow override timing properties with 0
i2c: core: Provide generic definitions for bus frequencies
i2c: mxs: Use dma_request_chan() instead dma_request_slave_channel()
i2c: imx: remove duplicate print after platform_get_irq()
i2c: designware: Fix spelling typos in the comments
i2c: designware: Discard i2c_dw_read_comp_param() function
i2c: designware: Detect the FIFO size in the common code
i2c: dev: Fix the race between the release of i2c_dev and cdev
i2c: qcom-geni: Drop of_platform.h include
i2c: qcom-geni: Grow a dev pointer to simplify code
i2c: qcom-geni: Let firmware specify irq trigger flags
i2c: stm32f7: do not backup read-only PECR register
i2c: smbus: remove outdated references to irq level triggers
i2c: convert SMBus alert setup function to return an ERRPTR
...

+854 -519
+97
Documentation/devicetree/bindings/i2c/brcm,brcmstb-i2c.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/i2c/brcm,brcmstb-i2c.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Broadcom STB BSC IIC Master Controller 8 + 9 + maintainers: 10 + - Kamal Dasu <kdasu.kdev@gmail.com> 11 + 12 + allOf: 13 + - $ref: /schemas/i2c/i2c-controller.yaml# 14 + 15 + properties: 16 + compatible: 17 + enum: 18 + - brcm,bcm2711-hdmi-i2c 19 + - brcm,brcmstb-i2c 20 + - brcm,brcmper-i2c 21 + 22 + reg: 23 + minItems: 1 24 + maxItems: 2 25 + items: 26 + - description: BSC register range 27 + - description: Auto-I2C register range 28 + 29 + reg-names: 30 + items: 31 + - const: bsc 32 + - const: auto-i2c 33 + 34 + interrupts: 35 + maxItems: 1 36 + 37 + interrupt-names: 38 + maxItems: 1 39 + 40 + clock-frequency: 41 + enum: 42 + - 46875 43 + - 50000 44 + - 93750 45 + - 97500 46 + - 187500 47 + - 200000 48 + - 375000 49 + - 390000 50 + 51 + required: 52 + - compatible 53 + - reg 54 + - clock-frequency 55 + 56 + unevaluatedProperties: false 57 + 58 + if: 59 + properties: 60 + compatible: 61 + contains: 62 + enum: 63 + - brcm,bcm2711-hdmi-i2c 64 + 65 + then: 66 + properties: 67 + reg: 68 + minItems: 2 69 + 70 + required: 71 + - reg-names 72 + 73 + else: 74 + properties: 75 + reg: 76 + maxItems: 1 77 + 78 + examples: 79 + - | 80 + bsca: i2c@f0406200 { 81 + clock-frequency = <390000>; 82 + compatible = "brcm,brcmstb-i2c"; 83 + interrupt-parent = <&irq0_intc>; 84 + reg = <0xf0406200 0x58>; 85 + interrupts = <0x18>; 86 + interrupt-names = "upg_bsca"; 87 + }; 88 + 89 + - | 90 + ddc0: i2c@7ef04500 { 91 + compatible = "brcm,bcm2711-hdmi-i2c"; 92 + reg = <0x7ef04500 0x100>, <0x7ef00b00 0x300>; 93 + reg-names = "bsc", "auto-i2c"; 94 + clock-frequency = <390000>; 95 + }; 96 + 97 + ...
+10
Documentation/devicetree/bindings/i2c/i2c-at91.txt
··· 28 28 "atmel,sama5d4-i2c", 29 29 "atmel,sama5d2-i2c", 30 30 "microchip,sam9x60-i2c". 31 + - scl-gpios: specify the gpio related to SCL pin 32 + - sda-gpios: specify the gpio related to SDA pin 33 + - pinctrl: add extra pinctrl to configure i2c pins to gpio function for i2c 34 + bus recovery, call it "gpio" state 31 35 - Child nodes conforming to i2c bus binding 36 + 32 37 33 38 Examples : 34 39 ··· 69 64 clocks = <&flx0>; 70 65 atmel,fifo-size = <16>; 71 66 i2c-sda-hold-time-ns = <336>; 67 + pinctrl-names = "default", "gpio"; 68 + pinctrl-0 = <&pinctrl_i2c0>; 69 + pinctrl-1 = <&pinctrl_i2c0_gpio>; 70 + sda-gpios = <&pioA 30 GPIO_ACTIVE_HIGH>; 71 + scl-gpios = <&pioA 31 GPIO_ACTIVE_HIGH>; 72 72 73 73 wm8731: wm8731@1a { 74 74 compatible = "wm8731";
-26
Documentation/devicetree/bindings/i2c/i2c-brcmstb.txt
··· 1 - Broadcom stb bsc iic master controller 2 - 3 - Required properties: 4 - 5 - - compatible: should be "brcm,brcmstb-i2c" or "brcm,brcmper-i2c" 6 - - clock-frequency: 32-bit decimal value of iic master clock freqency in Hz 7 - valid values are 375000, 390000, 187500, 200000 8 - 93750, 97500, 46875 and 50000 9 - - reg: specifies the base physical address and size of the registers 10 - 11 - Optional properties : 12 - 13 - - interrupts: specifies the interrupt number, the irq line to be used 14 - - interrupt-names: Interrupt name string 15 - 16 - Example: 17 - 18 - bsca: i2c@f0406200 { 19 - clock-frequency = <390000>; 20 - compatible = "brcm,brcmstb-i2c"; 21 - interrupt-parent = <&irq0_intc>; 22 - reg = <0xf0406200 0x58>; 23 - interrupts = <0x18>; 24 - interrupt-names = "upg_bsca"; 25 - }; 26 -
+1 -1
Documentation/i2c/smbus-protocol.rst
··· 274 274 This is implemented the following way in the Linux kernel: 275 275 276 276 * I2C bus drivers which support SMBus alert should call 277 - i2c_setup_smbus_alert() to setup SMBus alert support. 277 + i2c_new_smbus_alert_device() to install SMBus alert support. 278 278 * I2C drivers for devices which can trigger SMBus alerts should implement 279 279 the optional alert() callback. 280 280
+1 -1
MAINTAINERS
··· 3470 3470 L: bcm-kernel-feedback-list@broadcom.com 3471 3471 S: Supported 3472 3472 F: drivers/i2c/busses/i2c-brcmstb.c 3473 - F: Documentation/devicetree/bindings/i2c/i2c-brcmstb.txt 3473 + F: Documentation/devicetree/bindings/i2c/brcm,brcmstb-i2c.yaml 3474 3474 3475 3475 BROADCOM BRCMSTB USB2 and USB3 PHY DRIVER 3476 3476 M: Al Cooper <alcooperx@gmail.com>
+3 -3
drivers/i2c/algos/i2c-algo-pca.c
··· 459 459 /* To avoid integer overflow, use clock/100 for calculations */ 460 460 clock = pca_clock(pca_data) / 100; 461 461 462 - if (pca_data->i2c_clock > 1000000) { 462 + if (pca_data->i2c_clock > I2C_MAX_FAST_MODE_PLUS_FREQ) { 463 463 mode = I2C_PCA_MODE_TURBO; 464 464 min_tlow = 14; 465 465 min_thi = 5; 466 466 raise_fall_time = 22; /* Raise 11e-8s, Fall 11e-8s */ 467 - } else if (pca_data->i2c_clock > 400000) { 467 + } else if (pca_data->i2c_clock > I2C_MAX_FAST_MODE_FREQ) { 468 468 mode = I2C_PCA_MODE_FASTP; 469 469 min_tlow = 17; 470 470 min_thi = 9; 471 471 raise_fall_time = 22; /* Raise 11e-8s, Fall 11e-8s */ 472 - } else if (pca_data->i2c_clock > 100000) { 472 + } else if (pca_data->i2c_clock > I2C_MAX_STANDARD_MODE_FREQ) { 473 473 mode = I2C_PCA_MODE_FAST; 474 474 min_tlow = 44; 475 475 min_thi = 20;
+3 -3
drivers/i2c/busses/i2c-altera.c
··· 147 147 (ALTR_I2C_THRESHOLD << ALTR_I2C_CTRL_TCT_SHFT); 148 148 u32 t_high, t_low; 149 149 150 - if (idev->bus_clk_rate <= 100000) { 150 + if (idev->bus_clk_rate <= I2C_MAX_STANDARD_MODE_FREQ) { 151 151 tmp &= ~ALTR_I2C_CTRL_BSPEED; 152 152 /* Standard mode SCL 50/50 */ 153 153 t_high = divisor * 1 / 2; ··· 423 423 &idev->bus_clk_rate); 424 424 if (val) { 425 425 dev_err(&pdev->dev, "Default to 100kHz\n"); 426 - idev->bus_clk_rate = 100000; /* default clock rate */ 426 + idev->bus_clk_rate = I2C_MAX_STANDARD_MODE_FREQ; /* default clock rate */ 427 427 } 428 428 429 - if (idev->bus_clk_rate > 400000) { 429 + if (idev->bus_clk_rate > I2C_MAX_FAST_MODE_FREQ) { 430 430 dev_err(&pdev->dev, "invalid clock-frequency %d\n", 431 431 idev->bus_clk_rate); 432 432 return -EINVAL;
+16 -11
drivers/i2c/busses/i2c-amd-mp2-plat.c
··· 201 201 } 202 202 #endif 203 203 204 + static const u32 supported_speeds[] = { 205 + I2C_MAX_HIGH_SPEED_MODE_FREQ, 206 + I2C_MAX_TURBO_MODE_FREQ, 207 + I2C_MAX_FAST_MODE_PLUS_FREQ, 208 + I2C_MAX_FAST_MODE_FREQ, 209 + I2C_MAX_STANDARD_MODE_FREQ, 210 + }; 211 + 204 212 static enum speed_enum i2c_amd_get_bus_speed(struct platform_device *pdev) 205 213 { 206 214 u32 acpi_speed; 207 215 int i; 208 - static const u32 supported_speeds[] = { 209 - 0, 100000, 400000, 1000000, 1400000, 3400000 210 - }; 211 216 212 217 acpi_speed = i2c_acpi_find_bus_speed(&pdev->dev); 213 218 /* round down to the lowest standard speed */ 214 - for (i = 1; i < ARRAY_SIZE(supported_speeds); i++) { 215 - if (acpi_speed < supported_speeds[i]) 219 + for (i = 0; i < ARRAY_SIZE(supported_speeds); i++) { 220 + if (acpi_speed >= supported_speeds[i]) 216 221 break; 217 222 } 218 - acpi_speed = supported_speeds[i - 1]; 223 + acpi_speed = i < ARRAY_SIZE(supported_speeds) ? supported_speeds[i] : 0; 219 224 220 225 switch (acpi_speed) { 221 - case 100000: 226 + case I2C_MAX_STANDARD_MODE_FREQ: 222 227 return speed100k; 223 - case 400000: 228 + case I2C_MAX_FAST_MODE_FREQ: 224 229 return speed400k; 225 - case 1000000: 230 + case I2C_MAX_FAST_MODE_PLUS_FREQ: 226 231 return speed1000k; 227 - case 1400000: 232 + case I2C_MAX_TURBO_MODE_FREQ: 228 233 return speed1400k; 229 - case 3400000: 234 + case I2C_MAX_HIGH_SPEED_MODE_FREQ: 230 235 return speed3400k; 231 236 default: 232 237 return speed400k;
+1 -1
drivers/i2c/busses/i2c-aspeed.c
··· 997 997 if (ret < 0) { 998 998 dev_err(&pdev->dev, 999 999 "Could not read bus-frequency property\n"); 1000 - bus->bus_frequency = 100000; 1000 + bus->bus_frequency = I2C_MAX_STANDARD_MODE_FREQ; 1001 1001 } 1002 1002 1003 1003 match = of_match_node(aspeed_i2c_bus_of_table, pdev->dev.of_node);
+78
drivers/i2c/busses/i2c-at91-master.c
··· 18 18 #include <linux/dma-mapping.h> 19 19 #include <linux/dmaengine.h> 20 20 #include <linux/err.h> 21 + #include <linux/gpio/consumer.h> 21 22 #include <linux/i2c.h> 22 23 #include <linux/interrupt.h> 23 24 #include <linux/io.h> 24 25 #include <linux/of.h> 25 26 #include <linux/of_device.h> 27 + #include <linux/pinctrl/consumer.h> 26 28 #include <linux/platform_device.h> 27 29 #include <linux/platform_data/dma-atmel.h> 28 30 #include <linux/pm_runtime.h> ··· 480 478 unsigned long time_left; 481 479 bool has_unre_flag = dev->pdata->has_unre_flag; 482 480 bool has_alt_cmd = dev->pdata->has_alt_cmd; 481 + struct i2c_bus_recovery_info *rinfo = &dev->rinfo; 483 482 484 483 /* 485 484 * WARNING: the TXCOMP bit in the Status Register is NOT a clear on ··· 640 637 at91_twi_write(dev, AT91_TWI_CR, 641 638 AT91_TWI_THRCLR | AT91_TWI_LOCKCLR); 642 639 } 640 + 641 + if (rinfo->get_sda && !(rinfo->get_sda(&dev->adapter))) { 642 + dev_dbg(dev->dev, 643 + "SDA is down; clear bus using gpio\n"); 644 + i2c_recover_bus(&dev->adapter); 645 + } 646 + 643 647 return ret; 644 648 } 645 649 ··· 816 806 return ret; 817 807 } 818 808 809 + static void at91_prepare_twi_recovery(struct i2c_adapter *adap) 810 + { 811 + struct at91_twi_dev *dev = i2c_get_adapdata(adap); 812 + 813 + pinctrl_select_state(dev->pinctrl, dev->pinctrl_pins_gpio); 814 + } 815 + 816 + static void at91_unprepare_twi_recovery(struct i2c_adapter *adap) 817 + { 818 + struct at91_twi_dev *dev = i2c_get_adapdata(adap); 819 + 820 + pinctrl_select_state(dev->pinctrl, dev->pinctrl_pins_default); 821 + } 822 + 823 + static int at91_init_twi_recovery_info(struct platform_device *pdev, 824 + struct at91_twi_dev *dev) 825 + { 826 + struct i2c_bus_recovery_info *rinfo = &dev->rinfo; 827 + 828 + dev->pinctrl = devm_pinctrl_get(&pdev->dev); 829 + if (!dev->pinctrl || IS_ERR(dev->pinctrl)) { 830 + dev_info(dev->dev, "can't get pinctrl, bus recovery not supported\n"); 831 + return PTR_ERR(dev->pinctrl); 832 + } 833 + 834 + dev->pinctrl_pins_default = pinctrl_lookup_state(dev->pinctrl, 835 + PINCTRL_STATE_DEFAULT); 836 + dev->pinctrl_pins_gpio = pinctrl_lookup_state(dev->pinctrl, 837 + "gpio"); 838 + rinfo->sda_gpiod = devm_gpiod_get(&pdev->dev, "sda", GPIOD_IN); 839 + if (PTR_ERR(rinfo->sda_gpiod) == -EPROBE_DEFER) 840 + return -EPROBE_DEFER; 841 + 842 + rinfo->scl_gpiod = devm_gpiod_get(&pdev->dev, "scl", 843 + GPIOD_OUT_HIGH_OPEN_DRAIN); 844 + if (PTR_ERR(rinfo->scl_gpiod) == -EPROBE_DEFER) 845 + return -EPROBE_DEFER; 846 + 847 + if (IS_ERR(rinfo->sda_gpiod) || 848 + IS_ERR(rinfo->scl_gpiod) || 849 + IS_ERR(dev->pinctrl_pins_default) || 850 + IS_ERR(dev->pinctrl_pins_gpio)) { 851 + dev_info(&pdev->dev, "recovery information incomplete\n"); 852 + if (!IS_ERR(rinfo->sda_gpiod)) { 853 + gpiod_put(rinfo->sda_gpiod); 854 + rinfo->sda_gpiod = NULL; 855 + } 856 + if (!IS_ERR(rinfo->scl_gpiod)) { 857 + gpiod_put(rinfo->scl_gpiod); 858 + rinfo->scl_gpiod = NULL; 859 + } 860 + return -EINVAL; 861 + } 862 + 863 + dev_info(&pdev->dev, "using scl, sda for recovery\n"); 864 + 865 + rinfo->prepare_recovery = at91_prepare_twi_recovery; 866 + rinfo->unprepare_recovery = at91_unprepare_twi_recovery; 867 + rinfo->recover_bus = i2c_generic_scl_recovery; 868 + dev->adapter.bus_recovery_info = rinfo; 869 + 870 + return 0; 871 + } 872 + 819 873 int at91_twi_probe_master(struct platform_device *pdev, 820 874 u32 phy_addr, struct at91_twi_dev *dev) 821 875 { ··· 911 837 dev->enable_ana_filt = of_property_read_bool(pdev->dev.of_node, 912 838 "i2c-analog-filter"); 913 839 at91_calc_twi_clock(dev); 840 + 841 + rc = at91_init_twi_recovery_info(pdev, dev); 842 + if (rc == -EPROBE_DEFER) 843 + return rc; 914 844 915 845 dev->adapter.algo = &at91_twi_algorithm; 916 846 dev->adapter.quirks = &at91_twi_quirks;
+4
drivers/i2c/busses/i2c-at91.h
··· 151 151 u32 fifo_size; 152 152 struct at91_twi_dma dma; 153 153 bool slave_detected; 154 + struct i2c_bus_recovery_info rinfo; 155 + struct pinctrl *pinctrl; 156 + struct pinctrl_state *pinctrl_pins_default; 157 + struct pinctrl_state *pinctrl_pins_gpio; 154 158 #ifdef CONFIG_I2C_AT91_SLAVE_EXPERIMENTAL 155 159 unsigned smr; 156 160 struct i2c_client *slave;
+2 -2
drivers/i2c/busses/i2c-axxia.c
··· 199 199 /* Enable Master Mode */ 200 200 writel(0x1, idev->base + GLOBAL_CONTROL); 201 201 202 - if (idev->bus_clk_rate <= 100000) { 202 + if (idev->bus_clk_rate <= I2C_MAX_STANDARD_MODE_FREQ) { 203 203 /* Standard mode SCL 50/50, tSU:DAT = 250 ns */ 204 204 t_high = divisor * 1 / 2; 205 205 t_low = divisor * 1 / 2; ··· 765 765 766 766 of_property_read_u32(np, "clock-frequency", &idev->bus_clk_rate); 767 767 if (idev->bus_clk_rate == 0) 768 - idev->bus_clk_rate = 100000; /* default clock rate */ 768 + idev->bus_clk_rate = I2C_MAX_STANDARD_MODE_FREQ; /* default clock rate */ 769 769 770 770 ret = clk_prepare_enable(idev->i2c_clk); 771 771 if (ret) {
+7 -7
drivers/i2c/busses/i2c-bcm-iproc.c
··· 858 858 if (ret < 0) { 859 859 dev_info(iproc_i2c->device, 860 860 "unable to interpret clock-frequency DT property\n"); 861 - bus_speed = 100000; 861 + bus_speed = I2C_MAX_STANDARD_MODE_FREQ; 862 862 } 863 863 864 - if (bus_speed < 100000) { 864 + if (bus_speed < I2C_MAX_STANDARD_MODE_FREQ) { 865 865 dev_err(iproc_i2c->device, "%d Hz bus speed not supported\n", 866 866 bus_speed); 867 867 dev_err(iproc_i2c->device, 868 868 "valid speeds are 100khz and 400khz\n"); 869 869 return -EINVAL; 870 - } else if (bus_speed < 400000) { 871 - bus_speed = 100000; 870 + } else if (bus_speed < I2C_MAX_FAST_MODE_FREQ) { 871 + bus_speed = I2C_MAX_STANDARD_MODE_FREQ; 872 872 } else { 873 - bus_speed = 400000; 873 + bus_speed = I2C_MAX_FAST_MODE_FREQ; 874 874 } 875 875 876 876 iproc_i2c->bus_speed = bus_speed; 877 877 val = iproc_i2c_rd_reg(iproc_i2c, TIM_CFG_OFFSET); 878 878 val &= ~BIT(TIM_CFG_MODE_400_SHIFT); 879 - val |= (bus_speed == 400000) << TIM_CFG_MODE_400_SHIFT; 879 + val |= (bus_speed == I2C_MAX_FAST_MODE_FREQ) << TIM_CFG_MODE_400_SHIFT; 880 880 iproc_i2c_wr_reg(iproc_i2c, TIM_CFG_OFFSET, val); 881 881 882 882 dev_info(iproc_i2c->device, "bus set to %u Hz\n", bus_speed); ··· 1029 1029 /* configure to the desired bus speed */ 1030 1030 val = iproc_i2c_rd_reg(iproc_i2c, TIM_CFG_OFFSET); 1031 1031 val &= ~BIT(TIM_CFG_MODE_400_SHIFT); 1032 - val |= (iproc_i2c->bus_speed == 400000) << TIM_CFG_MODE_400_SHIFT; 1032 + val |= (iproc_i2c->bus_speed == I2C_MAX_FAST_MODE_FREQ) << TIM_CFG_MODE_400_SHIFT; 1033 1033 iproc_i2c_wr_reg(iproc_i2c, TIM_CFG_OFFSET, val); 1034 1034 1035 1035 bcm_iproc_i2c_enable_disable(iproc_i2c, true);
+4 -4
drivers/i2c/busses/i2c-bcm-kona.c
··· 722 722 } 723 723 724 724 switch (bus_speed) { 725 - case 100000: 725 + case I2C_MAX_STANDARD_MODE_FREQ: 726 726 dev->std_cfg = &std_cfg_table[BCM_SPD_100K]; 727 727 break; 728 - case 400000: 728 + case I2C_MAX_FAST_MODE_FREQ: 729 729 dev->std_cfg = &std_cfg_table[BCM_SPD_400K]; 730 730 break; 731 - case 1000000: 731 + case I2C_MAX_FAST_MODE_PLUS_FREQ: 732 732 dev->std_cfg = &std_cfg_table[BCM_SPD_1MHZ]; 733 733 break; 734 - case 3400000: 734 + case I2C_MAX_HIGH_SPEED_MODE_FREQ: 735 735 /* Send mastercode at 100k */ 736 736 dev->std_cfg = &std_cfg_table[BCM_SPD_100K]; 737 737 dev->hs_cfg = &hs_cfg_table[BCM_SPD_3P4MHZ];
+1 -1
drivers/i2c/busses/i2c-bcm2835.c
··· 439 439 if (ret < 0) { 440 440 dev_warn(&pdev->dev, 441 441 "Could not read clock-frequency property\n"); 442 - bus_clk_rate = 100000; 442 + bus_clk_rate = I2C_MAX_STANDARD_MODE_FREQ; 443 443 } 444 444 445 445 ret = clk_set_rate_exclusive(i2c_dev->bus_clk, bus_clk_rate);
+33
drivers/i2c/busses/i2c-brcmstb.c
··· 580 580 brcmstb_i2c_set_bus_speed(dev); 581 581 } 582 582 583 + #define AUTOI2C_CTRL0 0x26c 584 + #define AUTOI2C_CTRL0_RELEASE_BSC BIT(1) 585 + 586 + static int bcm2711_release_bsc(struct brcmstb_i2c_dev *dev) 587 + { 588 + struct platform_device *pdev = to_platform_device(dev->device); 589 + struct resource *iomem; 590 + void __iomem *autoi2c; 591 + 592 + /* Map hardware registers */ 593 + iomem = platform_get_resource_byname(pdev, IORESOURCE_MEM, "auto-i2c"); 594 + autoi2c = devm_ioremap_resource(&pdev->dev, iomem); 595 + if (IS_ERR(autoi2c)) 596 + return PTR_ERR(autoi2c); 597 + 598 + writel(AUTOI2C_CTRL0_RELEASE_BSC, autoi2c + AUTOI2C_CTRL0); 599 + devm_iounmap(&pdev->dev, autoi2c); 600 + 601 + /* We need to reset the controller after the release */ 602 + dev->bsc_regmap->iic_enable = 0; 603 + bsc_writel(dev, dev->bsc_regmap->iic_enable, iic_enable); 604 + 605 + return 0; 606 + } 607 + 583 608 static int brcmstb_i2c_probe(struct platform_device *pdev) 584 609 { 585 610 int rc = 0; ··· 632 607 if (IS_ERR(dev->base)) { 633 608 rc = -ENOMEM; 634 609 goto probe_errorout; 610 + } 611 + 612 + if (of_device_is_compatible(dev->device->of_node, 613 + "brcm,bcm2711-hdmi-i2c")) { 614 + rc = bcm2711_release_bsc(dev); 615 + if (rc) 616 + goto probe_errorout; 635 617 } 636 618 637 619 rc = of_property_read_string(dev->device->of_node, "interrupt-names", ··· 737 705 static const struct of_device_id brcmstb_i2c_of_match[] = { 738 706 {.compatible = "brcm,brcmstb-i2c"}, 739 707 {.compatible = "brcm,brcmper-i2c"}, 708 + {.compatible = "brcm,bcm2711-hdmi-i2c"}, 740 709 {}, 741 710 }; 742 711 MODULE_DEVICE_TABLE(of, brcmstb_i2c_of_match);
+2 -5
drivers/i2c/busses/i2c-cadence.c
··· 104 104 105 105 #define DRIVER_NAME "cdns-i2c" 106 106 107 - #define CDNS_I2C_SPEED_MAX 400000 108 - #define CDNS_I2C_SPEED_DEFAULT 100000 109 - 110 107 #define CDNS_I2C_DIVA_MAX 4 111 108 #define CDNS_I2C_DIVB_MAX 64 112 109 ··· 946 949 947 950 ret = of_property_read_u32(pdev->dev.of_node, "clock-frequency", 948 951 &id->i2c_clk); 949 - if (ret || (id->i2c_clk > CDNS_I2C_SPEED_MAX)) 950 - id->i2c_clk = CDNS_I2C_SPEED_DEFAULT; 952 + if (ret || (id->i2c_clk > I2C_MAX_FAST_MODE_FREQ)) 953 + id->i2c_clk = I2C_MAX_STANDARD_MODE_FREQ; 951 954 952 955 cdns_i2c_writereg(CDNS_I2C_CR_ACK_EN | CDNS_I2C_CR_NEA | CDNS_I2C_CR_MS, 953 956 CDNS_I2C_CR_OFFSET);
+1 -1
drivers/i2c/busses/i2c-designware-baytrail.c
··· 1 1 // SPDX-License-Identifier: GPL-2.0 2 2 /* 3 - * Intel BayTrail PMIC I2C bus semaphore implementaion 3 + * Intel BayTrail PMIC I2C bus semaphore implementation 4 4 * Copyright (c) 2014, Intel Corporation. 5 5 */ 6 6 #include <linux/device.h>
+26 -10
drivers/i2c/busses/i2c-designware-common.c
··· 102 102 i2c_dw_release_lock(dev); 103 103 104 104 if (reg == swab32(DW_IC_COMP_TYPE_VALUE)) { 105 - /* Configure register endianess access */ 105 + /* Configure register endianness access */ 106 106 dev->flags |= ACCESS_SWAP; 107 107 } else if (reg == (DW_IC_COMP_TYPE_VALUE & 0x0000ffff)) { 108 108 /* Configure register access mode 16bit */ ··· 190 190 191 191 /* 192 192 * Workaround for avoiding TX arbitration lost in case I2C 193 - * slave pulls SDA down "too quickly" after falling egde of 193 + * slave pulls SDA down "too quickly" after falling edge of 194 194 * SCL by enabling non-zero SDA RX hold. Specification says it 195 195 * extends incoming SDA low to high transition while SCL is 196 - * high but it apprears to help also above issue. 196 + * high but it appears to help also above issue. 197 197 */ 198 198 if (!(dev->sda_hold_time & DW_IC_SDA_HOLD_RX_MASK)) 199 199 dev->sda_hold_time |= 1 << DW_IC_SDA_HOLD_RX_SHIFT; ··· 344 344 return -EIO; 345 345 } 346 346 347 + void i2c_dw_set_fifo_size(struct dw_i2c_dev *dev) 348 + { 349 + u32 param, tx_fifo_depth, rx_fifo_depth; 350 + 351 + /* 352 + * Try to detect the FIFO depth if not set by interface driver, 353 + * the depth could be from 2 to 256 from HW spec. 354 + */ 355 + param = dw_readl(dev, DW_IC_COMP_PARAM_1); 356 + tx_fifo_depth = ((param >> 16) & 0xff) + 1; 357 + rx_fifo_depth = ((param >> 8) & 0xff) + 1; 358 + if (!dev->tx_fifo_depth) { 359 + dev->tx_fifo_depth = tx_fifo_depth; 360 + dev->rx_fifo_depth = rx_fifo_depth; 361 + } else if (tx_fifo_depth >= 2) { 362 + dev->tx_fifo_depth = min_t(u32, dev->tx_fifo_depth, 363 + tx_fifo_depth); 364 + dev->rx_fifo_depth = min_t(u32, dev->rx_fifo_depth, 365 + rx_fifo_depth); 366 + } 367 + } 368 + 347 369 u32 i2c_dw_func(struct i2c_adapter *adap) 348 370 { 349 371 struct dw_i2c_dev *dev = i2c_get_adapdata(adap); ··· 378 356 /* Disable controller */ 379 357 __i2c_dw_disable(dev); 380 358 381 - /* Disable all interupts */ 359 + /* Disable all interrupts */ 382 360 dw_writel(dev, 0, DW_IC_INTR_MASK); 383 361 dw_readl(dev, DW_IC_CLR_INTR); 384 362 } ··· 387 365 { 388 366 dw_writel(dev, 0, DW_IC_INTR_MASK); 389 367 } 390 - 391 - u32 i2c_dw_read_comp_param(struct dw_i2c_dev *dev) 392 - { 393 - return dw_readl(dev, DW_IC_COMP_PARAM_1); 394 - } 395 - EXPORT_SYMBOL_GPL(i2c_dw_read_comp_param); 396 368 397 369 MODULE_DESCRIPTION("Synopsys DesignWare I2C bus adapter core"); 398 370 MODULE_LICENSE("GPL");
+1 -1
drivers/i2c/busses/i2c-designware-core.h
··· 297 297 void i2c_dw_release_lock(struct dw_i2c_dev *dev); 298 298 int i2c_dw_wait_bus_not_busy(struct dw_i2c_dev *dev); 299 299 int i2c_dw_handle_tx_abort(struct dw_i2c_dev *dev); 300 + void i2c_dw_set_fifo_size(struct dw_i2c_dev *dev); 300 301 u32 i2c_dw_func(struct i2c_adapter *adap); 301 302 void i2c_dw_disable(struct dw_i2c_dev *dev); 302 303 void i2c_dw_disable_int(struct dw_i2c_dev *dev); ··· 314 313 315 314 void __i2c_dw_disable(struct dw_i2c_dev *dev); 316 315 317 - extern u32 i2c_dw_read_comp_param(struct dw_i2c_dev *dev); 318 316 extern int i2c_dw_probe(struct dw_i2c_dev *dev); 319 317 #if IS_ENABLED(CONFIG_I2C_DESIGNWARE_SLAVE) 320 318 extern int i2c_dw_probe_slave(struct dw_i2c_dev *dev);
+3 -1
drivers/i2c/busses/i2c-designware-master.c
··· 521 521 522 522 /* 523 523 * The IC_INTR_STAT register just indicates "enabled" interrupts. 524 - * Ths unmasked raw version of interrupt status bits are available 524 + * The unmasked raw version of interrupt status bits is available 525 525 * in the IC_RAW_INTR_STAT register. 526 526 * 527 527 * That is, ··· 697 697 ret = i2c_dw_set_timings_master(dev); 698 698 if (ret) 699 699 return ret; 700 + 701 + i2c_dw_set_fifo_size(dev); 700 702 701 703 ret = dev->init(dev); 702 704 if (ret)
+1 -1
drivers/i2c/busses/i2c-designware-pcidrv.c
··· 109 109 static int mrfld_setup(struct pci_dev *pdev, struct dw_pci_controller *c) 110 110 { 111 111 /* 112 - * On Intel Merrifield the user visible i2c busses are enumerated 112 + * On Intel Merrifield the user visible i2c buses are enumerated 113 113 * [1..7]. So, we add 1 to shift the default range. Besides that the 114 114 * first PCI slot provides 4 functions, that's why we have to add 0 to 115 115 * the first slot and 4 to the next one.
+22 -39
drivers/i2c/busses/i2c-designware-platdrv.c
··· 99 99 dw_i2c_acpi_params(pdev, "FMCN", &dev->fs_hcnt, &dev->fs_lcnt, &fs_ht); 100 100 101 101 switch (t->bus_freq_hz) { 102 - case 100000: 102 + case I2C_MAX_STANDARD_MODE_FREQ: 103 103 dev->sda_hold_time = ss_ht; 104 104 break; 105 - case 1000000: 105 + case I2C_MAX_FAST_MODE_PLUS_FREQ: 106 106 dev->sda_hold_time = fp_ht; 107 107 break; 108 - case 3400000: 108 + case I2C_MAX_HIGH_SPEED_MODE_FREQ: 109 109 dev->sda_hold_time = hs_ht; 110 110 break; 111 - case 400000: 111 + case I2C_MAX_FAST_MODE_FREQ: 112 112 default: 113 113 dev->sda_hold_time = fs_ht; 114 114 break; ··· 198 198 dev->mode = DW_IC_MASTER; 199 199 200 200 switch (t->bus_freq_hz) { 201 - case 100000: 201 + case I2C_MAX_STANDARD_MODE_FREQ: 202 202 dev->master_cfg |= DW_IC_CON_SPEED_STD; 203 203 break; 204 - case 3400000: 204 + case I2C_MAX_HIGH_SPEED_MODE_FREQ: 205 205 dev->master_cfg |= DW_IC_CON_SPEED_HIGH; 206 206 break; 207 207 default: ··· 219 219 dev->mode = DW_IC_SLAVE; 220 220 } 221 221 222 - static void dw_i2c_set_fifo_size(struct dw_i2c_dev *dev) 223 - { 224 - u32 param, tx_fifo_depth, rx_fifo_depth; 225 - 226 - /* 227 - * Try to detect the FIFO depth if not set by interface driver, 228 - * the depth could be from 2 to 256 from HW spec. 229 - */ 230 - param = i2c_dw_read_comp_param(dev); 231 - tx_fifo_depth = ((param >> 16) & 0xff) + 1; 232 - rx_fifo_depth = ((param >> 8) & 0xff) + 1; 233 - if (!dev->tx_fifo_depth) { 234 - dev->tx_fifo_depth = tx_fifo_depth; 235 - dev->rx_fifo_depth = rx_fifo_depth; 236 - } else if (tx_fifo_depth >= 2) { 237 - dev->tx_fifo_depth = min_t(u32, dev->tx_fifo_depth, 238 - tx_fifo_depth); 239 - dev->rx_fifo_depth = min_t(u32, dev->rx_fifo_depth, 240 - rx_fifo_depth); 241 - } 242 - } 243 - 244 222 static void dw_i2c_plat_pm_cleanup(struct dw_i2c_dev *dev) 245 223 { 246 224 pm_runtime_disable(dev->dev); ··· 226 248 if (dev->shared_with_punit) 227 249 pm_runtime_put_noidle(dev->dev); 228 250 } 251 + 252 + static const u32 supported_speeds[] = { 253 + I2C_MAX_HIGH_SPEED_MODE_FREQ, 254 + I2C_MAX_FAST_MODE_PLUS_FREQ, 255 + I2C_MAX_FAST_MODE_FREQ, 256 + I2C_MAX_STANDARD_MODE_FREQ, 257 + }; 229 258 230 259 static int dw_i2c_plat_probe(struct platform_device *pdev) 231 260 { ··· 243 258 u32 acpi_speed; 244 259 struct resource *mem; 245 260 int i, irq, ret; 246 - static const int supported_speeds[] = { 247 - 0, 100000, 400000, 1000000, 3400000 248 - }; 249 261 250 262 irq = platform_get_irq(pdev, 0); 251 263 if (irq < 0) ··· 278 296 * Some DSTDs use a non standard speed, round down to the lowest 279 297 * standard speed. 280 298 */ 281 - for (i = 1; i < ARRAY_SIZE(supported_speeds); i++) { 282 - if (acpi_speed < supported_speeds[i]) 299 + for (i = 0; i < ARRAY_SIZE(supported_speeds); i++) { 300 + if (acpi_speed >= supported_speeds[i]) 283 301 break; 284 302 } 285 - acpi_speed = supported_speeds[i - 1]; 303 + acpi_speed = i < ARRAY_SIZE(supported_speeds) ? supported_speeds[i] : 0; 286 304 287 305 /* 288 306 * Find bus speed from the "clock-frequency" device property, ACPI ··· 293 311 else if (acpi_speed || t->bus_freq_hz) 294 312 t->bus_freq_hz = max(t->bus_freq_hz, acpi_speed); 295 313 else 296 - t->bus_freq_hz = 400000; 314 + t->bus_freq_hz = I2C_MAX_FAST_MODE_FREQ; 297 315 298 316 dev->flags |= (uintptr_t)device_get_match_data(&pdev->dev); 299 317 ··· 307 325 * Only standard mode at 100kHz, fast mode at 400kHz, 308 326 * fast mode plus at 1MHz and high speed mode at 3.4MHz are supported. 309 327 */ 310 - if (t->bus_freq_hz != 100000 && t->bus_freq_hz != 400000 && 311 - t->bus_freq_hz != 1000000 && t->bus_freq_hz != 3400000) { 328 + for (i = 0; i < ARRAY_SIZE(supported_speeds); i++) { 329 + if (t->bus_freq_hz == supported_speeds[i]) 330 + break; 331 + } 332 + if (i == ARRAY_SIZE(supported_speeds)) { 312 333 dev_err(&pdev->dev, 313 334 "%d Hz is unsupported, only 100kHz, 400kHz, 1MHz and 3.4MHz are supported\n", 314 335 t->bus_freq_hz); ··· 346 361 dev->sda_hold_time = 347 362 div_u64(clk_khz * t->sda_hold_ns + 500000, 1000000); 348 363 } 349 - 350 - dw_i2c_set_fifo_size(dev); 351 364 352 365 adap = &dev->adapter; 353 366 adap->owner = THIS_MODULE;
+3 -1
drivers/i2c/busses/i2c-designware-slave.c
··· 107 107 108 108 /* 109 109 * The IC_INTR_STAT register just indicates "enabled" interrupts. 110 - * Ths unmasked raw version of interrupt status bits are available 110 + * The unmasked raw version of interrupt status bits is available 111 111 * in the IC_RAW_INTR_STAT register. 112 112 * 113 113 * That is, ··· 259 259 ret = i2c_dw_set_sda_hold(dev); 260 260 if (ret) 261 261 return ret; 262 + 263 + i2c_dw_set_fifo_size(dev); 262 264 263 265 ret = dev->init(dev); 264 266 if (ret)
+1 -2
drivers/i2c/busses/i2c-digicolor.c
··· 18 18 #include <linux/of.h> 19 19 #include <linux/platform_device.h> 20 20 21 - #define DEFAULT_FREQ 100000 22 21 #define TIMEOUT_MS 100 23 22 24 23 #define II_CONTROL 0x0 ··· 299 300 300 301 if (of_property_read_u32(pdev->dev.of_node, "clock-frequency", 301 302 &i2c->frequency)) 302 - i2c->frequency = DEFAULT_FREQ; 303 + i2c->frequency = I2C_MAX_STANDARD_MODE_FREQ; 303 304 304 305 i2c->dev = &pdev->dev; 305 306 platform_set_drvdata(pdev, i2c);
+5 -7
drivers/i2c/busses/i2c-diolan-u2c.c
··· 64 64 #define U2C_I2C_SPEED_2KHZ 242 /* 2 kHz, minimum speed */ 65 65 #define U2C_I2C_SPEED(f) ((DIV_ROUND_UP(1000000, (f)) - 10) / 2 + 1) 66 66 67 - #define U2C_I2C_FREQ_FAST 400000 68 - #define U2C_I2C_FREQ_STD 100000 69 67 #define U2C_I2C_FREQ(s) (1000000 / (2 * (s - 1) + 10)) 70 68 71 69 #define DIOLAN_USB_TIMEOUT 100 /* in ms */ ··· 85 87 int ocount; /* Number of enqueued messages */ 86 88 }; 87 89 88 - static uint frequency = U2C_I2C_FREQ_STD; /* I2C clock frequency in Hz */ 90 + static uint frequency = I2C_MAX_STANDARD_MODE_FREQ; /* I2C clock frequency in Hz */ 89 91 90 92 module_param(frequency, uint, S_IRUGO | S_IWUSR); 91 93 MODULE_PARM_DESC(frequency, "I2C clock frequency in hertz"); ··· 297 299 { 298 300 int speed, ret; 299 301 300 - if (frequency >= 200000) { 302 + if (frequency >= 2 * I2C_MAX_STANDARD_MODE_FREQ) { 301 303 speed = U2C_I2C_SPEED_FAST; 302 - frequency = U2C_I2C_FREQ_FAST; 303 - } else if (frequency >= 100000 || frequency == 0) { 304 + frequency = I2C_MAX_FAST_MODE_FREQ; 305 + } else if (frequency >= I2C_MAX_STANDARD_MODE_FREQ || frequency == 0) { 304 306 speed = U2C_I2C_SPEED_STD; 305 - frequency = U2C_I2C_FREQ_STD; 307 + frequency = I2C_MAX_STANDARD_MODE_FREQ; 306 308 } else { 307 309 speed = U2C_I2C_SPEED(frequency); 308 310 if (speed > U2C_I2C_SPEED_2KHZ)
+1 -1
drivers/i2c/busses/i2c-efm32.c
··· 388 388 if (!ret) { 389 389 dev_dbg(&pdev->dev, "using frequency %u\n", frequency); 390 390 } else { 391 - frequency = 100000; 391 + frequency = I2C_MAX_STANDARD_MODE_FREQ; 392 392 dev_info(&pdev->dev, "defaulting to 100 kHz\n"); 393 393 } 394 394 ddata->frequency = frequency;
+7 -11
drivers/i2c/busses/i2c-exynos5.c
··· 164 164 #define HSI2C_MASTER_ID(x) ((x & 0xff) << 24) 165 165 #define MASTER_ID(x) ((x & 0x7) + 0x08) 166 166 167 - /* 168 - * Controller operating frequency, timing values for operation 169 - * are calculated against this frequency 170 - */ 171 - #define HSI2C_HS_TX_CLOCK 1000000 172 - #define HSI2C_FS_TX_CLOCK 100000 173 - 174 167 #define EXYNOS5_I2C_TIMEOUT (msecs_to_jiffies(100)) 175 168 176 169 enum i2c_type_exynos { ··· 257 264 * exynos5_i2c_set_timing: updates the registers with appropriate 258 265 * timing values calculated 259 266 * 267 + * Timing values for operation are calculated against either 100kHz 268 + * or 1MHz controller operating frequency. 269 + * 260 270 * Returns 0 on success, -EINVAL if the cycle length cannot 261 271 * be calculated. 262 272 */ ··· 277 281 unsigned int t_ftl_cycle; 278 282 unsigned int clkin = clk_get_rate(i2c->clk); 279 283 unsigned int op_clk = hs_timings ? i2c->op_clock : 280 - (i2c->op_clock >= HSI2C_HS_TX_CLOCK) ? HSI2C_FS_TX_CLOCK : 284 + (i2c->op_clock >= I2C_MAX_FAST_MODE_PLUS_FREQ) ? I2C_MAX_STANDARD_MODE_FREQ : 281 285 i2c->op_clock; 282 286 int div, clk_cycle, temp; 283 287 ··· 349 353 /* always set Fast Speed timings */ 350 354 int ret = exynos5_i2c_set_timing(i2c, false); 351 355 352 - if (ret < 0 || i2c->op_clock < HSI2C_HS_TX_CLOCK) 356 + if (ret < 0 || i2c->op_clock < I2C_MAX_FAST_MODE_PLUS_FREQ) 353 357 return ret; 354 358 355 359 return exynos5_i2c_set_timing(i2c, true); ··· 372 376 i2c->regs + HSI2C_CTL); 373 377 writel(HSI2C_TRAILING_COUNT, i2c->regs + HSI2C_TRAILIG_CTL); 374 378 375 - if (i2c->op_clock >= HSI2C_HS_TX_CLOCK) { 379 + if (i2c->op_clock >= I2C_MAX_FAST_MODE_PLUS_FREQ) { 376 380 writel(HSI2C_MASTER_ID(MASTER_ID(i2c->adap.nr)), 377 381 i2c->regs + HSI2C_ADDR); 378 382 i2c_conf |= HSI2C_HS_MODE; ··· 744 748 return -ENOMEM; 745 749 746 750 if (of_property_read_u32(np, "clock-frequency", &i2c->op_clock)) 747 - i2c->op_clock = HSI2C_FS_TX_CLOCK; 751 + i2c->op_clock = I2C_MAX_STANDARD_MODE_FREQ; 748 752 749 753 strlcpy(i2c->adap.name, "exynos5-i2c", sizeof(i2c->adap.name)); 750 754 i2c->adap.owner = THIS_MODULE;
+4 -6
drivers/i2c/busses/i2c-hix5hd2.c
··· 68 68 #define I2C_ARBITRATE_INTR BIT(1) 69 69 #define I2C_OVER_INTR BIT(0) 70 70 71 - #define HIX5I2C_MAX_FREQ 400000 /* 400k */ 72 - 73 71 enum hix5hd2_i2c_state { 74 72 HIX5I2C_STAT_RW_ERR = -1, 75 73 HIX5I2C_STAT_INIT, ··· 398 400 399 401 if (of_property_read_u32(np, "clock-frequency", &freq)) { 400 402 /* use 100k as default value */ 401 - priv->freq = 100000; 403 + priv->freq = I2C_MAX_STANDARD_MODE_FREQ; 402 404 } else { 403 - if (freq > HIX5I2C_MAX_FREQ) { 404 - priv->freq = HIX5I2C_MAX_FREQ; 405 + if (freq > I2C_MAX_FAST_MODE_FREQ) { 406 + priv->freq = I2C_MAX_FAST_MODE_FREQ; 405 407 dev_warn(priv->dev, "use max freq %d instead\n", 406 - HIX5I2C_MAX_FREQ); 408 + I2C_MAX_FAST_MODE_FREQ); 407 409 } else { 408 410 priv->freq = freq; 409 411 }
+2 -2
drivers/i2c/busses/i2c-img-scb.c
··· 304 304 /* Standard mode */ 305 305 { 306 306 .name = "standard", 307 - .max_bitrate = 100000, 307 + .max_bitrate = I2C_MAX_STANDARD_MODE_FREQ, 308 308 .tckh = 4000, 309 309 .tckl = 4700, 310 310 .tsdh = 4700, ··· 316 316 /* Fast mode */ 317 317 { 318 318 .name = "fast", 319 - .max_bitrate = 400000, 319 + .max_bitrate = I2C_MAX_FAST_MODE_FREQ, 320 320 .tckh = 600, 321 321 .tckl = 1300, 322 322 .tsdh = 600,
+5 -11
drivers/i2c/busses/i2c-imx-lpi2c.c
··· 75 75 #define I2C_CLK_RATIO 2 76 76 #define CHUNK_DATA 256 77 77 78 - #define LPI2C_DEFAULT_RATE 100000 79 - #define STARDARD_MAX_BITRATE 400000 80 - #define FAST_MAX_BITRATE 1000000 81 - #define FAST_PLUS_MAX_BITRATE 3400000 82 - #define HIGHSPEED_MAX_BITRATE 5000000 83 - 84 78 #define I2C_PM_TIMEOUT 10 /* ms */ 85 79 86 80 enum lpi2c_imx_mode { ··· 146 152 unsigned int bitrate = lpi2c_imx->bitrate; 147 153 enum lpi2c_imx_mode mode; 148 154 149 - if (bitrate < STARDARD_MAX_BITRATE) 155 + if (bitrate < I2C_MAX_FAST_MODE_FREQ) 150 156 mode = STANDARD; 151 - else if (bitrate < FAST_MAX_BITRATE) 157 + else if (bitrate < I2C_MAX_FAST_MODE_PLUS_FREQ) 152 158 mode = FAST; 153 - else if (bitrate < FAST_PLUS_MAX_BITRATE) 159 + else if (bitrate < I2C_MAX_HIGH_SPEED_MODE_FREQ) 154 160 mode = FAST_PLUS; 155 - else if (bitrate < HIGHSPEED_MAX_BITRATE) 161 + else if (bitrate < I2C_MAX_ULTRA_FAST_MODE_FREQ) 156 162 mode = HS; 157 163 else 158 164 mode = ULTRA_FAST; ··· 572 578 ret = of_property_read_u32(pdev->dev.of_node, 573 579 "clock-frequency", &lpi2c_imx->bitrate); 574 580 if (ret) 575 - lpi2c_imx->bitrate = LPI2C_DEFAULT_RATE; 581 + lpi2c_imx->bitrate = I2C_MAX_STANDARD_MODE_FREQ; 576 582 577 583 ret = devm_request_irq(&pdev->dev, irq, lpi2c_imx_isr, 0, 578 584 pdev->name, lpi2c_imx);
+107 -48
drivers/i2c/busses/i2c-imx.c
··· 34 34 #include <linux/init.h> 35 35 #include <linux/interrupt.h> 36 36 #include <linux/io.h> 37 + #include <linux/iopoll.h> 37 38 #include <linux/kernel.h> 38 39 #include <linux/module.h> 39 40 #include <linux/of.h> ··· 49 48 50 49 /* This will be the driver name the kernel reports */ 51 50 #define DRIVER_NAME "imx-i2c" 52 - 53 - /* Default value */ 54 - #define IMX_I2C_BIT_RATE 100000 /* 100kHz */ 55 51 56 52 /* 57 53 * Enable DMA if transfer byte size is bigger than this threshold. ··· 412 414 dma->chan_using = NULL; 413 415 } 414 416 415 - static int i2c_imx_bus_busy(struct imx_i2c_struct *i2c_imx, int for_busy) 417 + static int i2c_imx_bus_busy(struct imx_i2c_struct *i2c_imx, int for_busy, bool atomic) 416 418 { 417 419 unsigned long orig_jiffies = jiffies; 418 420 unsigned int temp; ··· 442 444 "<%s> I2C bus is busy\n", __func__); 443 445 return -ETIMEDOUT; 444 446 } 445 - schedule(); 447 + if (atomic) 448 + udelay(100); 449 + else 450 + schedule(); 446 451 } 447 452 448 453 return 0; 449 454 } 450 455 451 - static int i2c_imx_trx_complete(struct imx_i2c_struct *i2c_imx) 456 + static int i2c_imx_trx_complete(struct imx_i2c_struct *i2c_imx, bool atomic) 452 457 { 453 - wait_event_timeout(i2c_imx->queue, i2c_imx->i2csr & I2SR_IIF, HZ / 10); 458 + if (atomic) { 459 + void __iomem *addr = i2c_imx->base + (IMX_I2C_I2SR << i2c_imx->hwdata->regshift); 460 + unsigned int regval; 461 + 462 + /* 463 + * The formula for the poll timeout is documented in the RM 464 + * Rev.5 on page 1878: 465 + * T_min = 10/F_scl 466 + * Set the value hard as it is done for the non-atomic use-case. 467 + * Use 10 kHz for the calculation since this is the minimum 468 + * allowed SMBus frequency. Also add an offset of 100us since it 469 + * turned out that the I2SR_IIF bit isn't set correctly within 470 + * the minimum timeout in polling mode. 471 + */ 472 + readb_poll_timeout_atomic(addr, regval, regval & I2SR_IIF, 5, 1000 + 100); 473 + i2c_imx->i2csr = regval; 474 + imx_i2c_write_reg(0, i2c_imx, IMX_I2C_I2SR); 475 + } else { 476 + wait_event_timeout(i2c_imx->queue, i2c_imx->i2csr & I2SR_IIF, HZ / 10); 477 + } 454 478 455 479 if (unlikely(!(i2c_imx->i2csr & I2SR_IIF))) { 456 480 dev_dbg(&i2c_imx->adapter.dev, "<%s> Timeout\n", __func__); ··· 550 530 return NOTIFY_OK; 551 531 } 552 532 553 - static int i2c_imx_start(struct imx_i2c_struct *i2c_imx) 533 + static int i2c_imx_start(struct imx_i2c_struct *i2c_imx, bool atomic) 554 534 { 555 535 unsigned int temp = 0; 556 536 int result; ··· 563 543 imx_i2c_write_reg(i2c_imx->hwdata->i2cr_ien_opcode, i2c_imx, IMX_I2C_I2CR); 564 544 565 545 /* Wait controller to be stable */ 566 - usleep_range(50, 150); 546 + if (atomic) 547 + udelay(50); 548 + else 549 + usleep_range(50, 150); 567 550 568 551 /* Start I2C transaction */ 569 552 temp = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2CR); 570 553 temp |= I2CR_MSTA; 571 554 imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2CR); 572 - result = i2c_imx_bus_busy(i2c_imx, 1); 555 + result = i2c_imx_bus_busy(i2c_imx, 1, atomic); 573 556 if (result) 574 557 return result; 575 558 576 559 temp |= I2CR_IIEN | I2CR_MTX | I2CR_TXAK; 560 + if (atomic) 561 + temp &= ~I2CR_IIEN; /* Disable interrupt */ 562 + 577 563 temp &= ~I2CR_DMAEN; 578 564 imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2CR); 579 565 return result; 580 566 } 581 567 582 - static void i2c_imx_stop(struct imx_i2c_struct *i2c_imx) 568 + static void i2c_imx_stop(struct imx_i2c_struct *i2c_imx, bool atomic) 583 569 { 584 570 unsigned int temp = 0; 585 571 ··· 607 581 } 608 582 609 583 if (!i2c_imx->stopped) 610 - i2c_imx_bus_busy(i2c_imx, 0); 584 + i2c_imx_bus_busy(i2c_imx, 0, atomic); 611 585 612 586 /* Disable I2C controller */ 613 587 temp = i2c_imx->hwdata->i2cr_ien_opcode ^ I2CR_IEN, ··· 688 662 /* The last data byte must be transferred by the CPU. */ 689 663 imx_i2c_write_reg(msgs->buf[msgs->len-1], 690 664 i2c_imx, IMX_I2C_I2DR); 691 - result = i2c_imx_trx_complete(i2c_imx); 665 + result = i2c_imx_trx_complete(i2c_imx, false); 692 666 if (result) 693 667 return result; 694 668 ··· 747 721 748 722 msgs->buf[msgs->len-2] = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2DR); 749 723 /* read n byte data */ 750 - result = i2c_imx_trx_complete(i2c_imx); 724 + result = i2c_imx_trx_complete(i2c_imx, false); 751 725 if (result) 752 726 return result; 753 727 ··· 760 734 temp = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2CR); 761 735 temp &= ~(I2CR_MSTA | I2CR_MTX); 762 736 imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2CR); 763 - i2c_imx_bus_busy(i2c_imx, 0); 737 + i2c_imx_bus_busy(i2c_imx, 0, false); 764 738 } else { 765 739 /* 766 740 * For i2c master receiver repeat restart operation like: ··· 778 752 return 0; 779 753 } 780 754 781 - static int i2c_imx_write(struct imx_i2c_struct *i2c_imx, struct i2c_msg *msgs) 755 + static int i2c_imx_write(struct imx_i2c_struct *i2c_imx, struct i2c_msg *msgs, 756 + bool atomic) 782 757 { 783 758 int i, result; 784 759 ··· 788 761 789 762 /* write slave address */ 790 763 imx_i2c_write_reg(i2c_8bit_addr_from_msg(msgs), i2c_imx, IMX_I2C_I2DR); 791 - result = i2c_imx_trx_complete(i2c_imx); 764 + result = i2c_imx_trx_complete(i2c_imx, atomic); 792 765 if (result) 793 766 return result; 794 767 result = i2c_imx_acked(i2c_imx); ··· 802 775 "<%s> write byte: B%d=0x%X\n", 803 776 __func__, i, msgs->buf[i]); 804 777 imx_i2c_write_reg(msgs->buf[i], i2c_imx, IMX_I2C_I2DR); 805 - result = i2c_imx_trx_complete(i2c_imx); 778 + result = i2c_imx_trx_complete(i2c_imx, atomic); 806 779 if (result) 807 780 return result; 808 781 result = i2c_imx_acked(i2c_imx); ··· 812 785 return 0; 813 786 } 814 787 815 - static int i2c_imx_read(struct imx_i2c_struct *i2c_imx, struct i2c_msg *msgs, bool is_lastmsg) 788 + static int i2c_imx_read(struct imx_i2c_struct *i2c_imx, struct i2c_msg *msgs, 789 + bool is_lastmsg, bool atomic) 816 790 { 817 791 int i, result; 818 792 unsigned int temp; ··· 826 798 827 799 /* write slave address */ 828 800 imx_i2c_write_reg(i2c_8bit_addr_from_msg(msgs), i2c_imx, IMX_I2C_I2DR); 829 - result = i2c_imx_trx_complete(i2c_imx); 801 + result = i2c_imx_trx_complete(i2c_imx, atomic); 830 802 if (result) 831 803 return result; 832 804 result = i2c_imx_acked(i2c_imx); ··· 859 831 for (i = 0; i < msgs->len; i++) { 860 832 u8 len = 0; 861 833 862 - result = i2c_imx_trx_complete(i2c_imx); 834 + result = i2c_imx_trx_complete(i2c_imx, atomic); 863 835 if (result) 864 836 return result; 865 837 /* ··· 887 859 temp = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2CR); 888 860 temp &= ~(I2CR_MSTA | I2CR_MTX); 889 861 imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2CR); 890 - i2c_imx_bus_busy(i2c_imx, 0); 862 + i2c_imx_bus_busy(i2c_imx, 0, atomic); 891 863 } else { 892 864 /* 893 865 * For i2c master receiver repeat restart operation like: ··· 918 890 return 0; 919 891 } 920 892 921 - static int i2c_imx_xfer(struct i2c_adapter *adapter, 922 - struct i2c_msg *msgs, int num) 893 + static int i2c_imx_xfer_common(struct i2c_adapter *adapter, 894 + struct i2c_msg *msgs, int num, bool atomic) 923 895 { 924 896 unsigned int i, temp; 925 897 int result; ··· 928 900 929 901 dev_dbg(&i2c_imx->adapter.dev, "<%s>\n", __func__); 930 902 931 - result = pm_runtime_get_sync(i2c_imx->adapter.dev.parent); 932 - if (result < 0) 933 - goto out; 934 - 935 903 /* Start I2C transfer */ 936 - result = i2c_imx_start(i2c_imx); 904 + result = i2c_imx_start(i2c_imx, atomic); 937 905 if (result) { 938 - if (i2c_imx->adapter.bus_recovery_info) { 906 + /* 907 + * Bus recovery uses gpiod_get_value_cansleep() which is not 908 + * allowed within atomic context. 909 + */ 910 + if (!atomic && i2c_imx->adapter.bus_recovery_info) { 939 911 i2c_recover_bus(&i2c_imx->adapter); 940 - result = i2c_imx_start(i2c_imx); 912 + result = i2c_imx_start(i2c_imx, atomic); 941 913 } 942 914 } 943 915 ··· 955 927 temp = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2CR); 956 928 temp |= I2CR_RSTA; 957 929 imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2CR); 958 - result = i2c_imx_bus_busy(i2c_imx, 1); 930 + result = i2c_imx_bus_busy(i2c_imx, 1, atomic); 959 931 if (result) 960 932 goto fail0; 961 933 } ··· 979 951 (temp & I2SR_SRW ? 1 : 0), (temp & I2SR_IIF ? 1 : 0), 980 952 (temp & I2SR_RXAK ? 1 : 0)); 981 953 #endif 982 - if (msgs[i].flags & I2C_M_RD) 983 - result = i2c_imx_read(i2c_imx, &msgs[i], is_lastmsg); 984 - else { 985 - if (i2c_imx->dma && msgs[i].len >= DMA_THRESHOLD) 954 + if (msgs[i].flags & I2C_M_RD) { 955 + result = i2c_imx_read(i2c_imx, &msgs[i], is_lastmsg, atomic); 956 + } else { 957 + if (!atomic && 958 + i2c_imx->dma && msgs[i].len >= DMA_THRESHOLD) 986 959 result = i2c_imx_dma_write(i2c_imx, &msgs[i]); 987 960 else 988 - result = i2c_imx_write(i2c_imx, &msgs[i]); 961 + result = i2c_imx_write(i2c_imx, &msgs[i], atomic); 989 962 } 990 963 if (result) 991 964 goto fail0; ··· 994 965 995 966 fail0: 996 967 /* Stop I2C transfer */ 997 - i2c_imx_stop(i2c_imx); 968 + i2c_imx_stop(i2c_imx, atomic); 998 969 999 - pm_runtime_mark_last_busy(i2c_imx->adapter.dev.parent); 1000 - pm_runtime_put_autosuspend(i2c_imx->adapter.dev.parent); 1001 - 1002 - out: 1003 970 dev_dbg(&i2c_imx->adapter.dev, "<%s> exit with: %s: %d\n", __func__, 1004 971 (result < 0) ? "error" : "success msg", 1005 972 (result < 0) ? result : num); 1006 973 return (result < 0) ? result : num; 974 + } 975 + 976 + static int i2c_imx_xfer(struct i2c_adapter *adapter, 977 + struct i2c_msg *msgs, int num) 978 + { 979 + struct imx_i2c_struct *i2c_imx = i2c_get_adapdata(adapter); 980 + int result; 981 + 982 + result = pm_runtime_get_sync(i2c_imx->adapter.dev.parent); 983 + if (result < 0) 984 + return result; 985 + 986 + result = i2c_imx_xfer_common(adapter, msgs, num, false); 987 + 988 + pm_runtime_mark_last_busy(i2c_imx->adapter.dev.parent); 989 + pm_runtime_put_autosuspend(i2c_imx->adapter.dev.parent); 990 + 991 + return result; 992 + } 993 + 994 + static int i2c_imx_xfer_atomic(struct i2c_adapter *adapter, 995 + struct i2c_msg *msgs, int num) 996 + { 997 + struct imx_i2c_struct *i2c_imx = i2c_get_adapdata(adapter); 998 + int result; 999 + 1000 + result = clk_enable(i2c_imx->clk); 1001 + if (result) 1002 + return result; 1003 + 1004 + result = i2c_imx_xfer_common(adapter, msgs, num, true); 1005 + 1006 + clk_disable(i2c_imx->clk); 1007 + 1008 + return result; 1007 1009 } 1008 1010 1009 1011 static void i2c_imx_prepare_recovery(struct i2c_adapter *adap) ··· 1109 1049 } 1110 1050 1111 1051 static const struct i2c_algorithm i2c_imx_algo = { 1112 - .master_xfer = i2c_imx_xfer, 1113 - .functionality = i2c_imx_func, 1052 + .master_xfer = i2c_imx_xfer, 1053 + .master_xfer_atomic = i2c_imx_xfer_atomic, 1054 + .functionality = i2c_imx_func, 1114 1055 }; 1115 1056 1116 1057 static int i2c_imx_probe(struct platform_device *pdev) ··· 1127 1066 dev_dbg(&pdev->dev, "<%s>\n", __func__); 1128 1067 1129 1068 irq = platform_get_irq(pdev, 0); 1130 - if (irq < 0) { 1131 - dev_err(&pdev->dev, "can't get irq number\n"); 1069 + if (irq < 0) 1132 1070 return irq; 1133 - } 1134 1071 1135 1072 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 1136 1073 base = devm_ioremap_resource(&pdev->dev, res); ··· 1198 1139 goto rpm_disable; 1199 1140 1200 1141 /* Set up clock divider */ 1201 - i2c_imx->bitrate = IMX_I2C_BIT_RATE; 1142 + i2c_imx->bitrate = I2C_MAX_STANDARD_MODE_FREQ; 1202 1143 ret = of_property_read_u32(pdev->dev.of_node, 1203 1144 "clock-frequency", &i2c_imx->bitrate); 1204 1145 if (ret < 0 && pdata && pdata->bitrate)
+3 -3
drivers/i2c/busses/i2c-lpc2k.c
··· 396 396 ret = of_property_read_u32(pdev->dev.of_node, "clock-frequency", 397 397 &bus_clk_rate); 398 398 if (ret) 399 - bus_clk_rate = 100000; /* 100 kHz default clock rate */ 399 + bus_clk_rate = I2C_MAX_STANDARD_MODE_FREQ; 400 400 401 401 clkrate = clk_get_rate(i2c->clk); 402 402 if (clkrate == 0) { ··· 407 407 408 408 /* Setup I2C dividers to generate clock with proper duty cycle */ 409 409 clkrate = clkrate / bus_clk_rate; 410 - if (bus_clk_rate <= 100000) 410 + if (bus_clk_rate <= I2C_MAX_STANDARD_MODE_FREQ) 411 411 scl_high = (clkrate * I2C_STD_MODE_DUTY) / 100; 412 - else if (bus_clk_rate <= 400000) 412 + else if (bus_clk_rate <= I2C_MAX_FAST_MODE_FREQ) 413 413 scl_high = (clkrate * I2C_FAST_MODE_DUTY) / 100; 414 414 else 415 415 scl_high = (clkrate * I2C_FAST_MODE_PLUS_DUTY) / 100;
+9 -12
drivers/i2c/busses/i2c-mt65xx.c
··· 56 56 #define I2C_DMA_4G_MODE 0x0001 57 57 58 58 #define I2C_DEFAULT_CLK_DIV 5 59 - #define I2C_DEFAULT_SPEED 100000 /* hz */ 60 - #define MAX_FS_MODE_SPEED 400000 61 - #define MAX_HS_MODE_SPEED 3400000 62 59 #define MAX_SAMPLE_CNT_DIV 8 63 60 #define MAX_STEP_CNT_DIV 64 64 61 #define MAX_HS_STEP_CNT_DIV 8 ··· 447 450 unsigned int best_mul; 448 451 unsigned int cnt_mul; 449 452 450 - if (target_speed > MAX_HS_MODE_SPEED) 451 - target_speed = MAX_HS_MODE_SPEED; 453 + if (target_speed > I2C_MAX_FAST_MODE_PLUS_FREQ) 454 + target_speed = I2C_MAX_FAST_MODE_PLUS_FREQ; 452 455 453 - if (target_speed > MAX_FS_MODE_SPEED) 456 + if (target_speed > I2C_MAX_FAST_MODE_FREQ) 454 457 max_step_cnt = MAX_HS_STEP_CNT_DIV; 455 458 else 456 459 max_step_cnt = MAX_STEP_CNT_DIV; ··· 511 514 clk_src = parent_clk / i2c->clk_src_div; 512 515 target_speed = i2c->speed_hz; 513 516 514 - if (target_speed > MAX_FS_MODE_SPEED) { 517 + if (target_speed > I2C_MAX_FAST_MODE_FREQ) { 515 518 /* Set master code speed register */ 516 - ret = mtk_i2c_calculate_speed(i2c, clk_src, MAX_FS_MODE_SPEED, 519 + ret = mtk_i2c_calculate_speed(i2c, clk_src, I2C_MAX_FAST_MODE_FREQ, 517 520 &l_step_cnt, &l_sample_cnt); 518 521 if (ret < 0) 519 522 return ret; ··· 578 581 579 582 control_reg = mtk_i2c_readw(i2c, OFFSET_CONTROL) & 580 583 ~(I2C_CONTROL_DIR_CHANGE | I2C_CONTROL_RS); 581 - if ((i2c->speed_hz > MAX_FS_MODE_SPEED) || (left_num >= 1)) 584 + if ((i2c->speed_hz > I2C_MAX_FAST_MODE_FREQ) || (left_num >= 1)) 582 585 control_reg |= I2C_CONTROL_RS; 583 586 584 587 if (i2c->op == I2C_MASTER_WRRD) ··· 587 590 mtk_i2c_writew(i2c, control_reg, OFFSET_CONTROL); 588 591 589 592 /* set start condition */ 590 - if (i2c->speed_hz <= I2C_DEFAULT_SPEED) 593 + if (i2c->speed_hz <= I2C_MAX_STANDARD_MODE_FREQ) 591 594 mtk_i2c_writew(i2c, I2C_ST_START_CON, OFFSET_EXT_CONF); 592 595 else 593 596 mtk_i2c_writew(i2c, I2C_FS_START_CON, OFFSET_EXT_CONF); ··· 795 798 } 796 799 } 797 800 798 - if (i2c->auto_restart && num >= 2 && i2c->speed_hz > MAX_FS_MODE_SPEED) 801 + if (i2c->auto_restart && num >= 2 && i2c->speed_hz > I2C_MAX_FAST_MODE_FREQ) 799 802 /* ignore the first restart irq after the master code, 800 803 * otherwise the first transfer will be discarded. 801 804 */ ··· 890 893 891 894 ret = of_property_read_u32(np, "clock-frequency", &i2c->speed_hz); 892 895 if (ret < 0) 893 - i2c->speed_hz = I2C_DEFAULT_SPEED; 896 + i2c->speed_hz = I2C_MAX_STANDARD_MODE_FREQ; 894 897 895 898 ret = of_property_read_u32(np, "clock-div", &i2c->clk_src_div); 896 899 if (ret < 0)
+1 -1
drivers/i2c/busses/i2c-mt7621.c
··· 300 300 301 301 if (of_property_read_u32(pdev->dev.of_node, "clock-frequency", 302 302 &i2c->bus_freq)) 303 - i2c->bus_freq = 100000; 303 + i2c->bus_freq = I2C_MAX_STANDARD_MODE_FREQ; 304 304 305 305 if (i2c->bus_freq == 0) { 306 306 dev_warn(i2c->dev, "clock-frequency 0 not supported\n");
+3 -3
drivers/i2c/busses/i2c-mv64xxx.c
··· 810 810 tclk = clk_get_rate(drv_data->clk); 811 811 812 812 if (of_property_read_u32(np, "clock-frequency", &bus_freq)) 813 - bus_freq = 100000; /* 100kHz by default */ 813 + bus_freq = I2C_MAX_STANDARD_MODE_FREQ; /* 100kHz by default */ 814 814 815 815 if (of_device_is_compatible(np, "allwinner,sun4i-a10-i2c") || 816 816 of_device_is_compatible(np, "allwinner,sun6i-a31-i2c")) ··· 846 846 if (of_device_is_compatible(np, "marvell,mv78230-i2c")) { 847 847 drv_data->offload_enabled = true; 848 848 /* The delay is only needed in standard mode (100kHz) */ 849 - if (bus_freq <= 100000) 849 + if (bus_freq <= I2C_MAX_STANDARD_MODE_FREQ) 850 850 drv_data->errata_delay = true; 851 851 } 852 852 853 853 if (of_device_is_compatible(np, "marvell,mv78230-a0-i2c")) { 854 854 drv_data->offload_enabled = false; 855 855 /* The delay is only needed in standard mode (100kHz) */ 856 - if (bus_freq <= 100000) 856 + if (bus_freq <= I2C_MAX_STANDARD_MODE_FREQ) 857 857 drv_data->errata_delay = true; 858 858 } 859 859
+5 -5
drivers/i2c/busses/i2c-mxs.c
··· 731 731 * This is compensated for by subtracting the respective constants 732 732 * from the values written to the timing registers. 733 733 */ 734 - if (speed > 100000) { 734 + if (speed > I2C_MAX_STANDARD_MODE_FREQ) { 735 735 /* fast mode */ 736 736 low_count = DIV_ROUND_CLOSEST(divider * 13, (13 + 6)); 737 737 high_count = DIV_ROUND_CLOSEST(divider * 6, (13 + 6)); ··· 769 769 ret = of_property_read_u32(node, "clock-frequency", &speed); 770 770 if (ret) { 771 771 dev_warn(dev, "No I2C speed selected, using 100kHz\n"); 772 - speed = 100000; 772 + speed = I2C_MAX_STANDARD_MODE_FREQ; 773 773 } 774 774 775 775 mxs_i2c_derive_timing(i2c, speed); ··· 836 836 } 837 837 838 838 /* Setup the DMA */ 839 - i2c->dmach = dma_request_slave_channel(dev, "rx-tx"); 840 - if (!i2c->dmach) { 839 + i2c->dmach = dma_request_chan(dev, "rx-tx"); 840 + if (IS_ERR(i2c->dmach)) { 841 841 dev_err(dev, "Failed to request dma\n"); 842 - return -ENODEV; 842 + return PTR_ERR(i2c->dmach); 843 843 } 844 844 845 845 platform_set_drvdata(pdev, i2c);
+4 -4
drivers/i2c/busses/i2c-nomadik.c
··· 396 396 * 2 whereas it is 3 for fast and fastplus mode of 397 397 * operation. TODO - high speed support. 398 398 */ 399 - div = (dev->clk_freq > 100000) ? 3 : 2; 399 + div = (dev->clk_freq > I2C_MAX_STANDARD_MODE_FREQ) ? 3 : 2; 400 400 401 401 /* 402 402 * generate the mask for baud rate counters. The controller ··· 420 420 if (dev->sm > I2C_FREQ_MODE_FAST) { 421 421 dev_err(&dev->adev->dev, 422 422 "do not support this mode defaulting to std. mode\n"); 423 - brcr2 = i2c_clk/(100000 * 2) & 0xffff; 423 + brcr2 = i2c_clk / (I2C_MAX_STANDARD_MODE_FREQ * 2) & 0xffff; 424 424 writel((brcr1 | brcr2), dev->virtbase + I2C_BRCR); 425 425 writel(I2C_FREQ_MODE_STANDARD << 4, 426 426 dev->virtbase + I2C_CR); ··· 949 949 { 950 950 /* Default to 100 kHz if no frequency is given in the node */ 951 951 if (of_property_read_u32(np, "clock-frequency", &nmk->clk_freq)) 952 - nmk->clk_freq = 100000; 952 + nmk->clk_freq = I2C_MAX_STANDARD_MODE_FREQ; 953 953 954 954 /* This driver only supports 'standard' and 'fast' modes of operation. */ 955 - if (nmk->clk_freq <= 100000) 955 + if (nmk->clk_freq <= I2C_MAX_STANDARD_MODE_FREQ) 956 956 nmk->sm = I2C_FREQ_MODE_STANDARD; 957 957 else 958 958 nmk->sm = I2C_FREQ_MODE_FAST;
+2 -4
drivers/i2c/busses/i2c-omap.c
··· 1355 1355 { 1356 1356 struct omap_i2c_dev *omap; 1357 1357 struct i2c_adapter *adap; 1358 - struct resource *mem; 1359 1358 const struct omap_i2c_bus_platform_data *pdata = 1360 1359 dev_get_platdata(&pdev->dev); 1361 1360 struct device_node *node = pdev->dev.of_node; ··· 1374 1375 if (!omap) 1375 1376 return -ENOMEM; 1376 1377 1377 - mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); 1378 - omap->base = devm_ioremap_resource(&pdev->dev, mem); 1378 + omap->base = devm_platform_ioremap_resource(pdev, 0); 1379 1379 if (IS_ERR(omap->base)) 1380 1380 return PTR_ERR(omap->base); 1381 1381 1382 1382 match = of_match_device(of_match_ptr(omap_i2c_of_match), &pdev->dev); 1383 1383 if (match) { 1384 - u32 freq = 100000; /* default to 100000 Hz */ 1384 + u32 freq = I2C_MAX_STANDARD_MODE_FREQ; 1385 1385 1386 1386 pdata = match->data; 1387 1387 omap->flags = pdata->flags;
+3 -6
drivers/i2c/busses/i2c-owl.c
··· 87 87 88 88 #define OWL_I2C_MAX_RETRIES 50 89 89 90 - #define OWL_I2C_DEF_SPEED_HZ 100000 91 - #define OWL_I2C_MAX_SPEED_HZ 400000 92 - 93 90 struct owl_i2c_dev { 94 91 struct i2c_adapter adap; 95 92 struct i2c_msg *msg; ··· 416 419 417 420 if (of_property_read_u32(dev->of_node, "clock-frequency", 418 421 &i2c_dev->bus_freq)) 419 - i2c_dev->bus_freq = OWL_I2C_DEF_SPEED_HZ; 422 + i2c_dev->bus_freq = I2C_MAX_STANDARD_MODE_FREQ; 420 423 421 424 /* We support only frequencies of 100k and 400k for now */ 422 - if (i2c_dev->bus_freq != OWL_I2C_DEF_SPEED_HZ && 423 - i2c_dev->bus_freq != OWL_I2C_MAX_SPEED_HZ) { 425 + if (i2c_dev->bus_freq != I2C_MAX_STANDARD_MODE_FREQ && 426 + i2c_dev->bus_freq != I2C_MAX_FAST_MODE_FREQ) { 424 427 dev_err(dev, "invalid clock-frequency %d\n", i2c_dev->bus_freq); 425 428 return -EINVAL; 426 429 }
+8 -4
drivers/i2c/busses/i2c-parport.c
··· 333 333 334 334 /* Setup SMBus alert if supported */ 335 335 if (adapter_parm[type].smbus_alert) { 336 - adapter->ara = i2c_setup_smbus_alert(&adapter->adapter, 337 - &adapter->alert_data); 338 - if (adapter->ara) 336 + struct i2c_client *ara; 337 + 338 + ara = i2c_new_smbus_alert_device(&adapter->adapter, 339 + &adapter->alert_data); 340 + if (!IS_ERR(ara)) { 341 + adapter->ara = ara; 339 342 parport_enable_irq(port); 340 - else 343 + } else { 341 344 dev_warn(&adapter->pdev->dev, 342 345 "Failed to register ARA client\n"); 346 + } 343 347 } 344 348 345 349 /* Add the new adapter to the list */
+7 -8
drivers/i2c/busses/i2c-powermac.c
··· 279 279 { 280 280 char tmp[16]; 281 281 282 - /* Note: we to _NOT_ want the standard 283 - * i2c drivers to match with any of our powermac stuff 284 - * unless they have been specifically modified to handle 285 - * it on a case by case basis. For example, for thermal 286 - * control, things like lm75 etc... shall match with their 287 - * corresponding windfarm drivers, _NOT_ the generic ones, 288 - * so we force a prefix of AAPL, onto the modalias to 289 - * make that happen 282 + /* 283 + * Note: we do _NOT_ want the standard i2c drivers to match with any of 284 + * our powermac stuff unless they have been specifically modified to 285 + * handle it on a case by case basis. For example, for thermal control, 286 + * things like lm75 etc... shall match with their corresponding 287 + * windfarm drivers, _NOT_ the generic ones, so we force a prefix of 288 + * 'MAC', onto the modalias to make that happen 290 289 */ 291 290 292 291 /* First try proper modalias */
+26 -32
drivers/i2c/busses/i2c-qcom-geni.c
··· 10 10 #include <linux/io.h> 11 11 #include <linux/module.h> 12 12 #include <linux/of.h> 13 - #include <linux/of_platform.h> 14 13 #include <linux/platform_device.h> 15 14 #include <linux/pm_runtime.h> 16 15 #include <linux/qcom-geni-se.h> ··· 501 502 struct resource *res; 502 503 u32 proto, tx_depth; 503 504 int ret; 505 + struct device *dev = &pdev->dev; 504 506 505 - gi2c = devm_kzalloc(&pdev->dev, sizeof(*gi2c), GFP_KERNEL); 507 + gi2c = devm_kzalloc(dev, sizeof(*gi2c), GFP_KERNEL); 506 508 if (!gi2c) 507 509 return -ENOMEM; 508 510 509 - gi2c->se.dev = &pdev->dev; 510 - gi2c->se.wrapper = dev_get_drvdata(pdev->dev.parent); 511 + gi2c->se.dev = dev; 512 + gi2c->se.wrapper = dev_get_drvdata(dev->parent); 511 513 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 512 - gi2c->se.base = devm_ioremap_resource(&pdev->dev, res); 514 + gi2c->se.base = devm_ioremap_resource(dev, res); 513 515 if (IS_ERR(gi2c->se.base)) 514 516 return PTR_ERR(gi2c->se.base); 515 517 516 - gi2c->se.clk = devm_clk_get(&pdev->dev, "se"); 517 - if (IS_ERR(gi2c->se.clk) && !has_acpi_companion(&pdev->dev)) { 518 - ret = PTR_ERR(gi2c->se.clk); 519 - dev_err(&pdev->dev, "Err getting SE Core clk %d\n", ret); 520 - return ret; 521 - } 518 + gi2c->se.clk = devm_clk_get(dev, "se"); 519 + if (IS_ERR(gi2c->se.clk) && !has_acpi_companion(dev)) 520 + return PTR_ERR(gi2c->se.clk); 522 521 523 - ret = device_property_read_u32(&pdev->dev, "clock-frequency", 524 - &gi2c->clk_freq_out); 522 + ret = device_property_read_u32(dev, "clock-frequency", 523 + &gi2c->clk_freq_out); 525 524 if (ret) { 526 - dev_info(&pdev->dev, 527 - "Bus frequency not specified, default to 100kHz.\n"); 525 + dev_info(dev, "Bus frequency not specified, default to 100kHz.\n"); 528 526 gi2c->clk_freq_out = KHZ(100); 529 527 } 530 528 531 - if (has_acpi_companion(&pdev->dev)) 532 - ACPI_COMPANION_SET(&gi2c->adap.dev, ACPI_COMPANION(&pdev->dev)); 529 + if (has_acpi_companion(dev)) 530 + ACPI_COMPANION_SET(&gi2c->adap.dev, ACPI_COMPANION(dev)); 533 531 534 532 gi2c->irq = platform_get_irq(pdev, 0); 535 - if (gi2c->irq < 0) { 536 - dev_err(&pdev->dev, "IRQ error for i2c-geni\n"); 533 + if (gi2c->irq < 0) 537 534 return gi2c->irq; 538 - } 539 535 540 536 ret = geni_i2c_clk_map_idx(gi2c); 541 537 if (ret) { 542 - dev_err(&pdev->dev, "Invalid clk frequency %d Hz: %d\n", 538 + dev_err(dev, "Invalid clk frequency %d Hz: %d\n", 543 539 gi2c->clk_freq_out, ret); 544 540 return ret; 545 541 } ··· 543 549 init_completion(&gi2c->done); 544 550 spin_lock_init(&gi2c->lock); 545 551 platform_set_drvdata(pdev, gi2c); 546 - ret = devm_request_irq(&pdev->dev, gi2c->irq, geni_i2c_irq, 547 - IRQF_TRIGGER_HIGH, "i2c_geni", gi2c); 552 + ret = devm_request_irq(dev, gi2c->irq, geni_i2c_irq, 0, 553 + dev_name(dev), gi2c); 548 554 if (ret) { 549 - dev_err(&pdev->dev, "Request_irq failed:%d: err:%d\n", 555 + dev_err(dev, "Request_irq failed:%d: err:%d\n", 550 556 gi2c->irq, ret); 551 557 return ret; 552 558 } 553 559 /* Disable the interrupt so that the system can enter low-power mode */ 554 560 disable_irq(gi2c->irq); 555 561 i2c_set_adapdata(&gi2c->adap, gi2c); 556 - gi2c->adap.dev.parent = &pdev->dev; 557 - gi2c->adap.dev.of_node = pdev->dev.of_node; 562 + gi2c->adap.dev.parent = dev; 563 + gi2c->adap.dev.of_node = dev->of_node; 558 564 strlcpy(gi2c->adap.name, "Geni-I2C", sizeof(gi2c->adap.name)); 559 565 560 566 ret = geni_se_resources_on(&gi2c->se); 561 567 if (ret) { 562 - dev_err(&pdev->dev, "Error turning on resources %d\n", ret); 568 + dev_err(dev, "Error turning on resources %d\n", ret); 563 569 return ret; 564 570 } 565 571 proto = geni_se_read_proto(&gi2c->se); 566 572 tx_depth = geni_se_get_tx_fifo_depth(&gi2c->se); 567 573 if (proto != GENI_SE_I2C) { 568 - dev_err(&pdev->dev, "Invalid proto %d\n", proto); 574 + dev_err(dev, "Invalid proto %d\n", proto); 569 575 geni_se_resources_off(&gi2c->se); 570 576 return -ENXIO; 571 577 } ··· 575 581 true, true, true); 576 582 ret = geni_se_resources_off(&gi2c->se); 577 583 if (ret) { 578 - dev_err(&pdev->dev, "Error turning off resources %d\n", ret); 584 + dev_err(dev, "Error turning off resources %d\n", ret); 579 585 return ret; 580 586 } 581 587 582 - dev_dbg(&pdev->dev, "i2c fifo/se-dma mode. fifo depth:%d\n", tx_depth); 588 + dev_dbg(dev, "i2c fifo/se-dma mode. fifo depth:%d\n", tx_depth); 583 589 584 590 gi2c->suspended = 1; 585 591 pm_runtime_set_suspended(gi2c->se.dev); ··· 589 595 590 596 ret = i2c_add_adapter(&gi2c->adap); 591 597 if (ret) { 592 - dev_err(&pdev->dev, "Error adding i2c adapter %d\n", ret); 598 + dev_err(dev, "Error adding i2c adapter %d\n", ret); 593 599 pm_runtime_disable(gi2c->se.dev); 594 600 return ret; 595 601 } 596 602 597 - dev_dbg(&pdev->dev, "Geni-I2C adaptor successfully added\n"); 603 + dev_dbg(dev, "Geni-I2C adaptor successfully added\n"); 598 604 599 605 return 0; 600 606 }
+3 -8
drivers/i2c/busses/i2c-qup.c
··· 136 136 */ 137 137 #define TOUT_MIN 2 138 138 139 - /* I2C Frequency Modes */ 140 - #define I2C_STANDARD_FREQ 100000 141 - #define I2C_FAST_MODE_FREQ 400000 142 - #define I2C_FAST_MODE_PLUS_FREQ 1000000 143 - 144 139 /* Default values. Use these if FW query fails */ 145 - #define DEFAULT_CLK_FREQ I2C_STANDARD_FREQ 140 + #define DEFAULT_CLK_FREQ I2C_MAX_STANDARD_MODE_FREQ 146 141 #define DEFAULT_SRC_CLK 20000000 147 142 148 143 /* ··· 1751 1756 1752 1757 nodma: 1753 1758 /* We support frequencies up to FAST Mode Plus (1MHz) */ 1754 - if (!clk_freq || clk_freq > I2C_FAST_MODE_PLUS_FREQ) { 1759 + if (!clk_freq || clk_freq > I2C_MAX_FAST_MODE_PLUS_FREQ) { 1755 1760 dev_err(qup->dev, "clock frequency not supported %d\n", 1756 1761 clk_freq); 1757 1762 return -EINVAL; ··· 1856 1861 qup->in_fifo_sz = qup->in_blk_sz * (2 << size); 1857 1862 1858 1863 hs_div = 3; 1859 - if (clk_freq <= I2C_STANDARD_FREQ) { 1864 + if (clk_freq <= I2C_MAX_STANDARD_MODE_FREQ) { 1860 1865 fs_div = ((src_clk_freq / clk_freq) / 2) - 3; 1861 1866 qup->clk_ctl = (hs_div << 8) | (fs_div & 0xff); 1862 1867 } else {
+12 -12
drivers/i2c/busses/i2c-rcar.c
··· 235 235 return i2c_recover_bus(&priv->adap); 236 236 } 237 237 238 - static int rcar_i2c_clock_calculate(struct rcar_i2c_priv *priv, struct i2c_timings *t) 238 + static int rcar_i2c_clock_calculate(struct rcar_i2c_priv *priv) 239 239 { 240 240 u32 scgd, cdf, round, ick, sum, scl, cdf_width; 241 241 unsigned long rate; 242 242 struct device *dev = rcar_i2c_priv_to_dev(priv); 243 + struct i2c_timings t = { 244 + .bus_freq_hz = I2C_MAX_STANDARD_MODE_FREQ, 245 + .scl_fall_ns = 35, 246 + .scl_rise_ns = 200, 247 + .scl_int_delay_ns = 50, 248 + }; 243 249 244 250 /* Fall back to previously used values if not supplied */ 245 - t->bus_freq_hz = t->bus_freq_hz ?: 100000; 246 - t->scl_fall_ns = t->scl_fall_ns ?: 35; 247 - t->scl_rise_ns = t->scl_rise_ns ?: 200; 248 - t->scl_int_delay_ns = t->scl_int_delay_ns ?: 50; 251 + i2c_parse_fw_timings(dev, &t, false); 249 252 250 253 switch (priv->devtype) { 251 254 case I2C_RCAR_GEN1: ··· 294 291 * = F[sum * ick / 1000000000] 295 292 * = F[(ick / 1000000) * sum / 1000] 296 293 */ 297 - sum = t->scl_fall_ns + t->scl_rise_ns + t->scl_int_delay_ns; 294 + sum = t.scl_fall_ns + t.scl_rise_ns + t.scl_int_delay_ns; 298 295 round = (ick + 500000) / 1000000 * sum; 299 296 round = (round + 500) / 1000; 300 297 ··· 312 309 */ 313 310 for (scgd = 0; scgd < 0x40; scgd++) { 314 311 scl = ick / (20 + (scgd * 8) + round); 315 - if (scl <= t->bus_freq_hz) 312 + if (scl <= t.bus_freq_hz) 316 313 goto scgd_find; 317 314 } 318 315 dev_err(dev, "it is impossible to calculate best SCL\n"); ··· 320 317 321 318 scgd_find: 322 319 dev_dbg(dev, "clk %d/%d(%lu), round %u, CDF:0x%x, SCGD: 0x%x\n", 323 - scl, t->bus_freq_hz, rate, round, cdf, scgd); 320 + scl, t.bus_freq_hz, rate, round, cdf, scgd); 324 321 325 322 /* keep icccr value */ 326 323 priv->icccr = scgd << cdf_width | cdf; ··· 923 920 struct rcar_i2c_priv *priv; 924 921 struct i2c_adapter *adap; 925 922 struct device *dev = &pdev->dev; 926 - struct i2c_timings i2c_t; 927 923 int ret; 928 924 929 925 /* Otherwise logic will break because some bytes must always use PIO */ ··· 959 957 i2c_set_adapdata(adap, priv); 960 958 strlcpy(adap->name, pdev->name, sizeof(adap->name)); 961 959 962 - i2c_parse_fw_timings(dev, &i2c_t, false); 963 - 964 960 /* Init DMA */ 965 961 sg_init_table(&priv->sg, 1); 966 962 priv->dma_direction = DMA_NONE; ··· 967 967 /* Activate device for clock calculation */ 968 968 pm_runtime_enable(dev); 969 969 pm_runtime_get_sync(dev); 970 - ret = rcar_i2c_clock_calculate(priv, &i2c_t); 970 + ret = rcar_i2c_clock_calculate(priv); 971 971 if (ret < 0) 972 972 goto out_pm_put; 973 973
+3 -3
drivers/i2c/busses/i2c-riic.c
··· 287 287 288 288 pm_runtime_get_sync(riic->adapter.dev.parent); 289 289 290 - if (t->bus_freq_hz > 400000) { 290 + if (t->bus_freq_hz > I2C_MAX_FAST_MODE_FREQ) { 291 291 dev_err(&riic->adapter.dev, 292 - "unsupported bus speed (%dHz). 400000 max\n", 293 - t->bus_freq_hz); 292 + "unsupported bus speed (%dHz). %d max\n", 293 + t->bus_freq_hz, I2C_MAX_FAST_MODE_FREQ); 294 294 ret = -EINVAL; 295 295 goto out; 296 296 }
+6 -6
drivers/i2c/busses/i2c-rk3x.c
··· 539 539 */ 540 540 static const struct i2c_spec_values *rk3x_i2c_get_spec(unsigned int speed) 541 541 { 542 - if (speed <= 100000) 542 + if (speed <= I2C_MAX_STANDARD_MODE_FREQ) 543 543 return &standard_mode_spec; 544 - else if (speed <= 400000) 544 + else if (speed <= I2C_MAX_FAST_MODE_FREQ) 545 545 return &fast_mode_spec; 546 546 else 547 547 return &fast_mode_plus_spec; ··· 578 578 int ret = 0; 579 579 580 580 /* Only support standard-mode and fast-mode */ 581 - if (WARN_ON(t->bus_freq_hz > 400000)) 582 - t->bus_freq_hz = 400000; 581 + if (WARN_ON(t->bus_freq_hz > I2C_MAX_FAST_MODE_FREQ)) 582 + t->bus_freq_hz = I2C_MAX_FAST_MODE_FREQ; 583 583 584 584 /* prevent scl_rate_khz from becoming 0 */ 585 585 if (WARN_ON(t->bus_freq_hz < 1000)) ··· 758 758 int ret = 0; 759 759 760 760 /* Support standard-mode, fast-mode and fast-mode plus */ 761 - if (WARN_ON(t->bus_freq_hz > 1000000)) 762 - t->bus_freq_hz = 1000000; 761 + if (WARN_ON(t->bus_freq_hz > I2C_MAX_FAST_MODE_PLUS_FREQ)) 762 + t->bus_freq_hz = I2C_MAX_FAST_MODE_PLUS_FREQ; 763 763 764 764 /* prevent scl_rate_khz from becoming 0 */ 765 765 if (WARN_ON(t->bus_freq_hz < 1000))
+2 -2
drivers/i2c/busses/i2c-s3c2410.c
··· 835 835 int freq; 836 836 837 837 i2c->clkrate = clkin; 838 - clkin /= 1000; /* clkin now in KHz */ 838 + clkin /= 1000; /* clkin now in KHz */ 839 839 840 840 dev_dbg(i2c->dev, "pdata desired frequency %lu\n", pdata->frequency); 841 841 842 - target_frequency = pdata->frequency ? pdata->frequency : 100000; 842 + target_frequency = pdata->frequency ?: I2C_MAX_STANDARD_MODE_FREQ; 843 843 844 844 target_frequency /= 1000; /* Target frequency now in KHz */ 845 845
+3 -6
drivers/i2c/busses/i2c-sh_mobile.c
··· 145 145 146 146 #define IIC_FLAG_HAS_ICIC67 (1 << 0) 147 147 148 - #define STANDARD_MODE 100000 149 - #define FAST_MODE 400000 150 - 151 148 /* Register offsets */ 152 149 #define ICDR 0x00 153 150 #define ICCR 0x04 ··· 267 270 268 271 i2c_clk_khz = clk_get_rate(pd->clk) / 1000 / pd->clks_per_count; 269 272 270 - if (pd->bus_speed == STANDARD_MODE) { 273 + if (pd->bus_speed == I2C_MAX_STANDARD_MODE_FREQ) { 271 274 tLOW = 47; /* tLOW = 4.7 us */ 272 275 tHIGH = 40; /* tHD;STA = tHIGH = 4.0 us */ 273 276 tf = 3; /* tf = 0.3 us */ 274 - } else if (pd->bus_speed == FAST_MODE) { 277 + } else if (pd->bus_speed == I2C_MAX_FAST_MODE_FREQ) { 275 278 tLOW = 13; /* tLOW = 1.3 us */ 276 279 tHIGH = 6; /* tHD;STA = tHIGH = 0.6 us */ 277 280 tf = 3; /* tf = 0.3 us */ ··· 848 851 return PTR_ERR(pd->reg); 849 852 850 853 ret = of_property_read_u32(dev->dev.of_node, "clock-frequency", &bus_speed); 851 - pd->bus_speed = (ret || !bus_speed) ? STANDARD_MODE : bus_speed; 854 + pd->bus_speed = (ret || !bus_speed) ? I2C_MAX_STANDARD_MODE_FREQ : bus_speed; 852 855 pd->clks_per_count = 1; 853 856 854 857 /* Newer variants come with two new bits in ICIC */
+1 -2
drivers/i2c/busses/i2c-sirf.c
··· 62 62 #define SIRFSOC_I2C_STOP BIT(6) 63 63 #define SIRFSOC_I2C_START BIT(7) 64 64 65 - #define SIRFSOC_I2C_DEFAULT_SPEED 100000 66 65 #define SIRFSOC_I2C_ERR_NOACK 1 67 66 #define SIRFSOC_I2C_ERR_TIMEOUT 2 68 67 ··· 352 353 err = of_property_read_u32(pdev->dev.of_node, 353 354 "clock-frequency", &bitrate); 354 355 if (err < 0) 355 - bitrate = SIRFSOC_I2C_DEFAULT_SPEED; 356 + bitrate = I2C_MAX_STANDARD_MODE_FREQ; 356 357 357 358 /* 358 359 * Due to some hardware design issues, we need to tune the formula.
+5 -4
drivers/i2c/busses/i2c-sprd.c
··· 337 337 writel(div1, i2c_dev->base + ADDR_DVD1); 338 338 339 339 /* Start hold timing = hold time(us) * source clock */ 340 - if (freq == 400000) 340 + if (freq == I2C_MAX_FAST_MODE_FREQ) 341 341 writel((6 * apb_clk) / 10000000, i2c_dev->base + ADDR_STA0_DVD); 342 - else if (freq == 100000) 342 + else if (freq == I2C_MAX_STANDARD_MODE_FREQ) 343 343 writel((4 * apb_clk) / 1000000, i2c_dev->base + ADDR_STA0_DVD); 344 344 } 345 345 ··· 502 502 snprintf(i2c_dev->adap.name, sizeof(i2c_dev->adap.name), 503 503 "%s", "sprd-i2c"); 504 504 505 - i2c_dev->bus_freq = 100000; 505 + i2c_dev->bus_freq = I2C_MAX_STANDARD_MODE_FREQ; 506 506 i2c_dev->adap.owner = THIS_MODULE; 507 507 i2c_dev->dev = dev; 508 508 i2c_dev->adap.retries = 3; ··· 516 516 i2c_dev->bus_freq = prop; 517 517 518 518 /* We only support 100k and 400k now, otherwise will return error. */ 519 - if (i2c_dev->bus_freq != 100000 && i2c_dev->bus_freq != 400000) 519 + if (i2c_dev->bus_freq != I2C_MAX_STANDARD_MODE_FREQ && 520 + i2c_dev->bus_freq != I2C_MAX_FAST_MODE_FREQ) 520 521 return -EINVAL; 521 522 522 523 ret = sprd_i2c_clk_init(i2c_dev);
+3 -3
drivers/i2c/busses/i2c-st.c
··· 213 213 */ 214 214 static struct st_i2c_timings i2c_timings[] = { 215 215 [I2C_MODE_STANDARD] = { 216 - .rate = 100000, 216 + .rate = I2C_MAX_STANDARD_MODE_FREQ, 217 217 .rep_start_hold = 4400, 218 218 .rep_start_setup = 5170, 219 219 .start_hold = 4400, ··· 222 222 .bus_free_time = 5170, 223 223 }, 224 224 [I2C_MODE_FAST] = { 225 - .rate = 400000, 225 + .rate = I2C_MAX_FAST_MODE_FREQ, 226 226 .rep_start_hold = 660, 227 227 .rep_start_setup = 660, 228 228 .start_hold = 660, ··· 836 836 837 837 i2c_dev->mode = I2C_MODE_STANDARD; 838 838 ret = of_property_read_u32(np, "clock-frequency", &clk_rate); 839 - if ((!ret) && (clk_rate == 400000)) 839 + if (!ret && (clk_rate == I2C_MAX_FAST_MODE_FREQ)) 840 840 i2c_dev->mode = I2C_MODE_FAST; 841 841 842 842 i2c_dev->dev = &pdev->dev;
+5 -5
drivers/i2c/busses/i2c-stm32f4.c
··· 232 232 * In standard mode: 233 233 * t_scl_high = t_scl_low = CCR * I2C parent clk period 234 234 * So to reach 100 kHz, we have: 235 - * CCR = I2C parent rate / 100 kHz >> 1 235 + * CCR = I2C parent rate / (100 kHz * 2) 236 236 * 237 237 * For example with parent rate = 2 MHz: 238 - * CCR = 2000000 / (100000 << 1) = 10 238 + * CCR = 2000000 / (100000 * 2) = 10 239 239 * t_scl_high = t_scl_low = 10 * (1 / 2000000) = 5000 ns 240 240 * t_scl_high + t_scl_low = 10000 ns so 100 kHz is reached 241 241 * ··· 243 243 * parent rate is not higher than 46 MHz . As a result val 244 244 * is at most 8 bits wide and so fits into the CCR bits [11:0]. 245 245 */ 246 - val = i2c_dev->parent_rate / (100000 << 1); 246 + val = i2c_dev->parent_rate / (I2C_MAX_STANDARD_MODE_FREQ * 2); 247 247 } else { 248 248 /* 249 249 * In fast mode, we compute CCR with duty = 0 as with low ··· 263 263 * parent rate is not higher than 46 MHz . As a result val 264 264 * is at most 6 bits wide and so fits into the CCR bits [11:0]. 265 265 */ 266 - val = DIV_ROUND_UP(i2c_dev->parent_rate, 400000 * 3); 266 + val = DIV_ROUND_UP(i2c_dev->parent_rate, I2C_MAX_FAST_MODE_FREQ * 3); 267 267 268 268 /* Select Fast mode */ 269 269 ccr |= STM32F4_I2C_CCR_FS; ··· 807 807 808 808 i2c_dev->speed = STM32_I2C_SPEED_STANDARD; 809 809 ret = of_property_read_u32(np, "clock-frequency", &clk_rate); 810 - if (!ret && clk_rate >= 400000) 810 + if (!ret && clk_rate >= I2C_MAX_FAST_MODE_FREQ) 811 811 i2c_dev->speed = STM32_I2C_SPEED_FAST; 812 812 813 813 i2c_dev->dev = &pdev->dev;
+177 -68
drivers/i2c/busses/i2c-stm32f7.c
··· 29 29 #include <linux/platform_device.h> 30 30 #include <linux/pinctrl/consumer.h> 31 31 #include <linux/pm_runtime.h> 32 + #include <linux/pm_wakeirq.h> 32 33 #include <linux/regmap.h> 33 34 #include <linux/reset.h> 34 35 #include <linux/slab.h> ··· 50 49 51 50 /* STM32F7 I2C control 1 */ 52 51 #define STM32F7_I2C_CR1_PECEN BIT(23) 52 + #define STM32F7_I2C_CR1_WUPEN BIT(18) 53 53 #define STM32F7_I2C_CR1_SBC BIT(16) 54 54 #define STM32F7_I2C_CR1_RXDMAEN BIT(15) 55 55 #define STM32F7_I2C_CR1_TXDMAEN BIT(14) ··· 176 174 * @cr2: Control register 2 177 175 * @oar1: Own address 1 register 178 176 * @oar2: Own address 2 register 179 - * @pecr: PEC register 180 177 * @tmgr: Timing register 181 178 */ 182 179 struct stm32f7_i2c_regs { ··· 183 182 u32 cr2; 184 183 u32 oar1; 185 184 u32 oar2; 186 - u32 pecr; 187 185 u32 tmgr; 188 186 }; 189 187 ··· 221 221 * @fall_time: Fall time (ns) 222 222 * @dnf: Digital filter coefficient (0-16) 223 223 * @analog_filter: Analog filter delay (On/Off) 224 + * @fmp_clr_offset: Fast Mode Plus clear register offset from set register 224 225 */ 225 226 struct stm32f7_i2c_setup { 226 227 enum stm32_i2c_speed speed; ··· 231 230 u32 fall_time; 232 231 u8 dnf; 233 232 bool analog_filter; 233 + u32 fmp_clr_offset; 234 234 }; 235 235 236 236 /** ··· 303 301 * @dma: dma data 304 302 * @use_dma: boolean to know if dma is used in the current transfer 305 303 * @regmap: holds SYSCFG phandle for Fast Mode Plus bits 304 + * @fmp_sreg: register address for setting Fast Mode Plus bits 305 + * @fmp_creg: register address for clearing Fast Mode Plus bits 306 + * @fmp_mask: mask for Fast Mode Plus bits in set register 307 + * @wakeup_src: boolean to know if the device is a wakeup source 306 308 */ 307 309 struct stm32f7_i2c_dev { 308 310 struct i2c_adapter adap; ··· 329 323 struct stm32_i2c_dma *dma; 330 324 bool use_dma; 331 325 struct regmap *regmap; 326 + u32 fmp_sreg; 327 + u32 fmp_creg; 328 + u32 fmp_mask; 329 + bool wakeup_src; 332 330 }; 333 331 334 332 /* ··· 344 334 */ 345 335 static struct stm32f7_i2c_spec i2c_specs[] = { 346 336 [STM32_I2C_SPEED_STANDARD] = { 347 - .rate = 100000, 348 - .rate_min = 80000, 349 - .rate_max = 100000, 337 + .rate = I2C_MAX_STANDARD_MODE_FREQ, 338 + .rate_min = I2C_MAX_STANDARD_MODE_FREQ * 8 / 10, /* 80% */ 339 + .rate_max = I2C_MAX_STANDARD_MODE_FREQ, 350 340 .fall_max = 300, 351 341 .rise_max = 1000, 352 342 .hddat_min = 0, ··· 356 346 .h_min = 4000, 357 347 }, 358 348 [STM32_I2C_SPEED_FAST] = { 359 - .rate = 400000, 360 - .rate_min = 320000, 361 - .rate_max = 400000, 349 + .rate = I2C_MAX_FAST_MODE_FREQ, 350 + .rate_min = I2C_MAX_FAST_MODE_FREQ * 8 / 10, /* 80% */ 351 + .rate_max = I2C_MAX_FAST_MODE_FREQ, 362 352 .fall_max = 300, 363 353 .rise_max = 300, 364 354 .hddat_min = 0, ··· 368 358 .h_min = 600, 369 359 }, 370 360 [STM32_I2C_SPEED_FAST_PLUS] = { 371 - .rate = 1000000, 372 - .rate_min = 800000, 373 - .rate_max = 1000000, 361 + .rate = I2C_MAX_FAST_MODE_PLUS_FREQ, 362 + .rate_min = I2C_MAX_FAST_MODE_PLUS_FREQ * 8 / 10, /* 80% */ 363 + .rate_max = I2C_MAX_FAST_MODE_PLUS_FREQ, 374 364 .fall_max = 100, 375 365 .rise_max = 120, 376 366 .hddat_min = 0, ··· 386 376 .fall_time = STM32F7_I2C_FALL_TIME_DEFAULT, 387 377 .dnf = STM32F7_I2C_DNF_DEFAULT, 388 378 .analog_filter = STM32F7_I2C_ANALOG_FILTER_ENABLE, 379 + }; 380 + 381 + static const struct stm32f7_i2c_setup stm32mp15_setup = { 382 + .rise_time = STM32F7_I2C_RISE_TIME_DEFAULT, 383 + .fall_time = STM32F7_I2C_FALL_TIME_DEFAULT, 384 + .dnf = STM32F7_I2C_DNF_DEFAULT, 385 + .analog_filter = STM32F7_I2C_ANALOG_FILTER_ENABLE, 386 + .fmp_clr_offset = 0x40, 389 387 }; 390 388 391 389 static inline void stm32f7_i2c_set_bits(void __iomem *reg, u32 mask) ··· 610 592 static int stm32f7_i2c_setup_timing(struct stm32f7_i2c_dev *i2c_dev, 611 593 struct stm32f7_i2c_setup *setup) 612 594 { 595 + struct i2c_timings timings, *t = &timings; 613 596 int ret = 0; 597 + 598 + t->bus_freq_hz = I2C_MAX_STANDARD_MODE_FREQ; 599 + t->scl_rise_ns = i2c_dev->setup.rise_time; 600 + t->scl_fall_ns = i2c_dev->setup.fall_time; 601 + 602 + i2c_parse_fw_timings(i2c_dev->dev, t, false); 603 + 604 + if (t->bus_freq_hz >= I2C_MAX_FAST_MODE_PLUS_FREQ) 605 + i2c_dev->speed = STM32_I2C_SPEED_FAST_PLUS; 606 + else if (t->bus_freq_hz >= I2C_MAX_FAST_MODE_FREQ) 607 + i2c_dev->speed = STM32_I2C_SPEED_FAST; 608 + else 609 + i2c_dev->speed = STM32_I2C_SPEED_STANDARD; 610 + 611 + i2c_dev->setup.rise_time = t->scl_rise_ns; 612 + i2c_dev->setup.fall_time = t->scl_fall_ns; 614 613 615 614 setup->speed = i2c_dev->speed; 616 615 setup->speed_freq = i2c_specs[setup->speed].rate; ··· 1726 1691 return ret; 1727 1692 } 1728 1693 1694 + static void stm32f7_i2c_enable_wakeup(struct stm32f7_i2c_dev *i2c_dev, 1695 + bool enable) 1696 + { 1697 + void __iomem *base = i2c_dev->base; 1698 + u32 mask = STM32F7_I2C_CR1_WUPEN; 1699 + 1700 + if (!i2c_dev->wakeup_src) 1701 + return; 1702 + 1703 + if (enable) { 1704 + device_set_wakeup_enable(i2c_dev->dev, true); 1705 + stm32f7_i2c_set_bits(base + STM32F7_I2C_CR1, mask); 1706 + } else { 1707 + device_set_wakeup_enable(i2c_dev->dev, false); 1708 + stm32f7_i2c_clr_bits(base + STM32F7_I2C_CR1, mask); 1709 + } 1710 + } 1711 + 1729 1712 static int stm32f7_i2c_reg_slave(struct i2c_client *slave) 1730 1713 { 1731 1714 struct stm32f7_i2c_dev *i2c_dev = i2c_get_adapdata(slave->adapter); ··· 1769 1716 ret = pm_runtime_get_sync(dev); 1770 1717 if (ret < 0) 1771 1718 return ret; 1719 + 1720 + if (!stm32f7_i2c_is_slave_registered(i2c_dev)) 1721 + stm32f7_i2c_enable_wakeup(i2c_dev, true); 1772 1722 1773 1723 if (id == 0) { 1774 1724 /* Configure Own Address 1 */ ··· 1814 1758 1815 1759 ret = 0; 1816 1760 pm_free: 1761 + if (!stm32f7_i2c_is_slave_registered(i2c_dev)) 1762 + stm32f7_i2c_enable_wakeup(i2c_dev, false); 1763 + 1817 1764 pm_runtime_mark_last_busy(dev); 1818 1765 pm_runtime_put_autosuspend(dev); 1819 1766 ··· 1850 1791 1851 1792 i2c_dev->slave[id] = NULL; 1852 1793 1853 - if (!(stm32f7_i2c_is_slave_registered(i2c_dev))) 1794 + if (!stm32f7_i2c_is_slave_registered(i2c_dev)) { 1854 1795 stm32f7_i2c_disable_irq(i2c_dev, STM32F7_I2C_ALL_IRQ_MASK); 1796 + stm32f7_i2c_enable_wakeup(i2c_dev, false); 1797 + } 1855 1798 1856 1799 pm_runtime_mark_last_busy(i2c_dev->dev); 1857 1800 pm_runtime_put_autosuspend(i2c_dev->dev); ··· 1861 1800 return 0; 1862 1801 } 1863 1802 1803 + static int stm32f7_i2c_write_fm_plus_bits(struct stm32f7_i2c_dev *i2c_dev, 1804 + bool enable) 1805 + { 1806 + int ret; 1807 + 1808 + if (i2c_dev->speed != STM32_I2C_SPEED_FAST_PLUS || 1809 + IS_ERR_OR_NULL(i2c_dev->regmap)) 1810 + /* Optional */ 1811 + return 0; 1812 + 1813 + if (i2c_dev->fmp_sreg == i2c_dev->fmp_creg) 1814 + ret = regmap_update_bits(i2c_dev->regmap, 1815 + i2c_dev->fmp_sreg, 1816 + i2c_dev->fmp_mask, 1817 + enable ? i2c_dev->fmp_mask : 0); 1818 + else 1819 + ret = regmap_write(i2c_dev->regmap, 1820 + enable ? i2c_dev->fmp_sreg : 1821 + i2c_dev->fmp_creg, 1822 + i2c_dev->fmp_mask); 1823 + 1824 + return ret; 1825 + } 1826 + 1864 1827 static int stm32f7_i2c_setup_fm_plus_bits(struct platform_device *pdev, 1865 1828 struct stm32f7_i2c_dev *i2c_dev) 1866 1829 { 1867 1830 struct device_node *np = pdev->dev.of_node; 1868 1831 int ret; 1869 - u32 reg, mask; 1870 1832 1871 1833 i2c_dev->regmap = syscon_regmap_lookup_by_phandle(np, "st,syscfg-fmp"); 1872 - if (IS_ERR(i2c_dev->regmap)) { 1834 + if (IS_ERR(i2c_dev->regmap)) 1873 1835 /* Optional */ 1874 1836 return 0; 1875 - } 1876 1837 1877 - ret = of_property_read_u32_index(np, "st,syscfg-fmp", 1, &reg); 1838 + ret = of_property_read_u32_index(np, "st,syscfg-fmp", 1, 1839 + &i2c_dev->fmp_sreg); 1878 1840 if (ret) 1879 1841 return ret; 1880 1842 1881 - ret = of_property_read_u32_index(np, "st,syscfg-fmp", 2, &mask); 1882 - if (ret) 1883 - return ret; 1843 + i2c_dev->fmp_creg = i2c_dev->fmp_sreg + 1844 + i2c_dev->setup.fmp_clr_offset; 1884 1845 1885 - return regmap_update_bits(i2c_dev->regmap, reg, mask, mask); 1846 + return of_property_read_u32_index(np, "st,syscfg-fmp", 2, 1847 + &i2c_dev->fmp_mask); 1886 1848 } 1887 1849 1888 1850 static u32 stm32f7_i2c_func(struct i2c_adapter *adap) ··· 1931 1847 struct stm32f7_i2c_dev *i2c_dev; 1932 1848 const struct stm32f7_i2c_setup *setup; 1933 1849 struct resource *res; 1934 - u32 clk_rate, rise_time, fall_time; 1935 1850 struct i2c_adapter *adap; 1936 1851 struct reset_control *rst; 1937 1852 dma_addr_t phy_addr; ··· 1962 1879 return irq_error ? : -ENOENT; 1963 1880 } 1964 1881 1882 + i2c_dev->wakeup_src = of_property_read_bool(pdev->dev.of_node, 1883 + "wakeup-source"); 1884 + 1965 1885 i2c_dev->clk = devm_clk_get(&pdev->dev, NULL); 1966 1886 if (IS_ERR(i2c_dev->clk)) { 1967 1887 dev_err(&pdev->dev, "Error: Missing controller clock\n"); ··· 1975 1889 if (ret) { 1976 1890 dev_err(&pdev->dev, "Failed to prepare_enable clock\n"); 1977 1891 return ret; 1978 - } 1979 - 1980 - i2c_dev->speed = STM32_I2C_SPEED_STANDARD; 1981 - ret = device_property_read_u32(&pdev->dev, "clock-frequency", 1982 - &clk_rate); 1983 - if (!ret && clk_rate >= 1000000) { 1984 - i2c_dev->speed = STM32_I2C_SPEED_FAST_PLUS; 1985 - ret = stm32f7_i2c_setup_fm_plus_bits(pdev, i2c_dev); 1986 - if (ret) 1987 - goto clk_free; 1988 - } else if (!ret && clk_rate >= 400000) { 1989 - i2c_dev->speed = STM32_I2C_SPEED_FAST; 1990 - } else if (!ret && clk_rate >= 100000) { 1991 - i2c_dev->speed = STM32_I2C_SPEED_STANDARD; 1992 1892 } 1993 1893 1994 1894 rst = devm_reset_control_get(&pdev->dev, NULL); ··· 2016 1944 } 2017 1945 i2c_dev->setup = *setup; 2018 1946 2019 - ret = device_property_read_u32(i2c_dev->dev, "i2c-scl-rising-time-ns", 2020 - &rise_time); 2021 - if (!ret) 2022 - i2c_dev->setup.rise_time = rise_time; 2023 - 2024 - ret = device_property_read_u32(i2c_dev->dev, "i2c-scl-falling-time-ns", 2025 - &fall_time); 2026 - if (!ret) 2027 - i2c_dev->setup.fall_time = fall_time; 2028 - 2029 1947 ret = stm32f7_i2c_setup_timing(i2c_dev, &i2c_dev->setup); 2030 1948 if (ret) 2031 1949 goto clk_free; 1950 + 1951 + if (i2c_dev->speed == STM32_I2C_SPEED_FAST_PLUS) { 1952 + ret = stm32f7_i2c_setup_fm_plus_bits(pdev, i2c_dev); 1953 + if (ret) 1954 + goto clk_free; 1955 + ret = stm32f7_i2c_write_fm_plus_bits(i2c_dev, true); 1956 + if (ret) 1957 + goto clk_free; 1958 + } 2032 1959 2033 1960 adap = &i2c_dev->adap; 2034 1961 i2c_set_adapdata(adap, i2c_dev); ··· 2053 1982 if (ret != -EPROBE_DEFER) 2054 1983 dev_err(&pdev->dev, 2055 1984 "Failed to request dma error %i\n", ret); 2056 - goto clk_free; 1985 + goto fmp_clear; 1986 + } 1987 + 1988 + if (i2c_dev->wakeup_src) { 1989 + device_set_wakeup_capable(i2c_dev->dev, true); 1990 + 1991 + ret = dev_pm_set_wake_irq(i2c_dev->dev, irq_event); 1992 + if (ret) { 1993 + dev_err(i2c_dev->dev, "Failed to set wake up irq\n"); 1994 + goto clr_wakeup_capable; 1995 + } 2057 1996 } 2058 1997 2059 1998 platform_set_drvdata(pdev, i2c_dev); ··· 2095 2014 pm_runtime_set_suspended(i2c_dev->dev); 2096 2015 pm_runtime_dont_use_autosuspend(i2c_dev->dev); 2097 2016 2017 + if (i2c_dev->wakeup_src) 2018 + dev_pm_clear_wake_irq(i2c_dev->dev); 2019 + 2020 + clr_wakeup_capable: 2021 + if (i2c_dev->wakeup_src) 2022 + device_set_wakeup_capable(i2c_dev->dev, false); 2023 + 2098 2024 if (i2c_dev->dma) { 2099 2025 stm32_i2c_dma_free(i2c_dev->dma); 2100 2026 i2c_dev->dma = NULL; 2101 2027 } 2028 + 2029 + fmp_clear: 2030 + stm32f7_i2c_write_fm_plus_bits(i2c_dev, false); 2102 2031 2103 2032 clk_free: 2104 2033 clk_disable_unprepare(i2c_dev->clk); ··· 2123 2032 i2c_del_adapter(&i2c_dev->adap); 2124 2033 pm_runtime_get_sync(i2c_dev->dev); 2125 2034 2035 + if (i2c_dev->wakeup_src) { 2036 + dev_pm_clear_wake_irq(i2c_dev->dev); 2037 + /* 2038 + * enforce that wakeup is disabled and that the device 2039 + * is marked as non wakeup capable 2040 + */ 2041 + device_init_wakeup(i2c_dev->dev, false); 2042 + } 2043 + 2126 2044 pm_runtime_put_noidle(i2c_dev->dev); 2127 2045 pm_runtime_disable(i2c_dev->dev); 2128 2046 pm_runtime_set_suspended(i2c_dev->dev); ··· 2141 2041 stm32_i2c_dma_free(i2c_dev->dma); 2142 2042 i2c_dev->dma = NULL; 2143 2043 } 2044 + 2045 + stm32f7_i2c_write_fm_plus_bits(i2c_dev, false); 2144 2046 2145 2047 clk_disable_unprepare(i2c_dev->clk); 2146 2048 ··· 2175 2073 return 0; 2176 2074 } 2177 2075 2178 - static int __maybe_unused 2179 - stm32f7_i2c_regs_backup(struct stm32f7_i2c_dev *i2c_dev) 2076 + #ifdef CONFIG_PM_SLEEP 2077 + static int stm32f7_i2c_regs_backup(struct stm32f7_i2c_dev *i2c_dev) 2180 2078 { 2181 2079 int ret; 2182 2080 struct stm32f7_i2c_regs *backup_regs = &i2c_dev->backup_regs; ··· 2189 2087 backup_regs->cr2 = readl_relaxed(i2c_dev->base + STM32F7_I2C_CR2); 2190 2088 backup_regs->oar1 = readl_relaxed(i2c_dev->base + STM32F7_I2C_OAR1); 2191 2089 backup_regs->oar2 = readl_relaxed(i2c_dev->base + STM32F7_I2C_OAR2); 2192 - backup_regs->pecr = readl_relaxed(i2c_dev->base + STM32F7_I2C_PECR); 2193 2090 backup_regs->tmgr = readl_relaxed(i2c_dev->base + STM32F7_I2C_TIMINGR); 2091 + stm32f7_i2c_write_fm_plus_bits(i2c_dev, false); 2194 2092 2195 2093 pm_runtime_put_sync(i2c_dev->dev); 2196 2094 2197 2095 return ret; 2198 2096 } 2199 2097 2200 - static int __maybe_unused 2201 - stm32f7_i2c_regs_restore(struct stm32f7_i2c_dev *i2c_dev) 2098 + static int stm32f7_i2c_regs_restore(struct stm32f7_i2c_dev *i2c_dev) 2202 2099 { 2203 2100 u32 cr1; 2204 2101 int ret; ··· 2221 2120 writel_relaxed(backup_regs->cr2, i2c_dev->base + STM32F7_I2C_CR2); 2222 2121 writel_relaxed(backup_regs->oar1, i2c_dev->base + STM32F7_I2C_OAR1); 2223 2122 writel_relaxed(backup_regs->oar2, i2c_dev->base + STM32F7_I2C_OAR2); 2224 - writel_relaxed(backup_regs->pecr, i2c_dev->base + STM32F7_I2C_PECR); 2123 + stm32f7_i2c_write_fm_plus_bits(i2c_dev, true); 2225 2124 2226 2125 pm_runtime_put_sync(i2c_dev->dev); 2227 2126 2228 2127 return ret; 2229 2128 } 2230 2129 2231 - static int __maybe_unused stm32f7_i2c_suspend(struct device *dev) 2130 + static int stm32f7_i2c_suspend(struct device *dev) 2232 2131 { 2233 2132 struct stm32f7_i2c_dev *i2c_dev = dev_get_drvdata(dev); 2234 2133 int ret; 2235 2134 2236 2135 i2c_mark_adapter_suspended(&i2c_dev->adap); 2237 - ret = stm32f7_i2c_regs_backup(i2c_dev); 2238 - if (ret < 0) { 2239 - i2c_mark_adapter_resumed(&i2c_dev->adap); 2240 - return ret; 2241 - } 2242 2136 2243 - pinctrl_pm_select_sleep_state(dev); 2244 - pm_runtime_force_suspend(dev); 2137 + if (!device_may_wakeup(dev) && !dev->power.wakeup_path) { 2138 + ret = stm32f7_i2c_regs_backup(i2c_dev); 2139 + if (ret < 0) { 2140 + i2c_mark_adapter_resumed(&i2c_dev->adap); 2141 + return ret; 2142 + } 2143 + 2144 + pinctrl_pm_select_sleep_state(dev); 2145 + pm_runtime_force_suspend(dev); 2146 + } 2245 2147 2246 2148 return 0; 2247 2149 } 2248 2150 2249 - static int __maybe_unused stm32f7_i2c_resume(struct device *dev) 2151 + static int stm32f7_i2c_resume(struct device *dev) 2250 2152 { 2251 2153 struct stm32f7_i2c_dev *i2c_dev = dev_get_drvdata(dev); 2252 2154 int ret; 2253 2155 2254 - ret = pm_runtime_force_resume(dev); 2255 - if (ret < 0) 2256 - return ret; 2257 - pinctrl_pm_select_default_state(dev); 2156 + if (!device_may_wakeup(dev) && !dev->power.wakeup_path) { 2157 + ret = pm_runtime_force_resume(dev); 2158 + if (ret < 0) 2159 + return ret; 2160 + pinctrl_pm_select_default_state(dev); 2258 2161 2259 - ret = stm32f7_i2c_regs_restore(i2c_dev); 2260 - if (ret < 0) 2261 - return ret; 2162 + ret = stm32f7_i2c_regs_restore(i2c_dev); 2163 + if (ret < 0) 2164 + return ret; 2165 + } 2166 + 2262 2167 i2c_mark_adapter_resumed(&i2c_dev->adap); 2263 2168 2264 2169 return 0; 2265 2170 } 2171 + #endif 2266 2172 2267 2173 static const struct dev_pm_ops stm32f7_i2c_pm_ops = { 2268 2174 SET_RUNTIME_PM_OPS(stm32f7_i2c_runtime_suspend, ··· 2279 2171 2280 2172 static const struct of_device_id stm32f7_i2c_match[] = { 2281 2173 { .compatible = "st,stm32f7-i2c", .data = &stm32f7_setup}, 2174 + { .compatible = "st,stm32mp15-i2c", .data = &stm32mp15_setup}, 2282 2175 {}, 2283 2176 }; 2284 2177 MODULE_DEVICE_TABLE(of, stm32f7_i2c_match);
+3 -3
drivers/i2c/busses/i2c-stu300.c
··· 132 132 #define NUM_ADDR_RESEND_ATTEMPTS 12 133 133 134 134 /* I2C clock speed, in Hz 0-400kHz*/ 135 - static unsigned int scl_frequency = 100000; 135 + static unsigned int scl_frequency = I2C_MAX_STANDARD_MODE_FREQ; 136 136 module_param(scl_frequency, uint, 0644); 137 137 138 138 /** ··· 497 497 dev_dbg(&dev->pdev->dev, "Clock rate %lu Hz, I2C bus speed %d Hz " 498 498 "virtbase %p\n", clkrate, dev->speed, dev->virtbase); 499 499 500 - if (dev->speed > 100000) 500 + if (dev->speed > I2C_MAX_STANDARD_MODE_FREQ) 501 501 /* Fast Mode I2C */ 502 502 val = ((clkrate/dev->speed) - 9)/3 + 1; 503 503 else ··· 518 518 return -EINVAL; 519 519 } 520 520 521 - if (dev->speed > 100000) { 521 + if (dev->speed > I2C_MAX_STANDARD_MODE_FREQ) { 522 522 /* CC6..CC0 */ 523 523 stu300_wr8((val & I2C_CCR_CC_MASK) | I2C_CCR_FMSM, 524 524 dev->virtbase + I2C_CCR);
+1 -1
drivers/i2c/busses/i2c-sun6i-p2wi.c
··· 186 186 struct device_node *np = dev->of_node; 187 187 struct device_node *childnp; 188 188 unsigned long parent_clk_freq; 189 - u32 clk_freq = 100000; 189 + u32 clk_freq = I2C_MAX_STANDARD_MODE_FREQ; 190 190 struct resource *r; 191 191 struct p2wi *p2wi; 192 192 u32 slave_addr;
+3 -3
drivers/i2c/busses/i2c-synquacer.c
··· 67 67 68 68 /* STANDARD MODE frequency */ 69 69 #define SYNQUACER_I2C_CLK_MASTER_STD(rate) \ 70 - DIV_ROUND_UP(DIV_ROUND_UP((rate), 100000) - 2, 2) 70 + DIV_ROUND_UP(DIV_ROUND_UP((rate), I2C_MAX_STANDARD_MODE_FREQ) - 2, 2) 71 71 /* FAST MODE frequency */ 72 72 #define SYNQUACER_I2C_CLK_MASTER_FAST(rate) \ 73 - DIV_ROUND_UP((DIV_ROUND_UP((rate), 400000) - 2) * 2, 3) 73 + DIV_ROUND_UP((DIV_ROUND_UP((rate), I2C_MAX_FAST_MODE_FREQ) - 2) * 2, 3) 74 74 75 75 /* (clkrate <= 18000000) */ 76 76 /* calculate the value of CS bits in CCR register on standard mode */ ··· 602 602 i2c->adapter.nr = pdev->id; 603 603 init_completion(&i2c->completion); 604 604 605 - if (bus_speed < 400000) 605 + if (bus_speed < I2C_MAX_FAST_MODE_FREQ) 606 606 i2c->speed_khz = SYNQUACER_I2C_SPEED_SM; 607 607 else 608 608 i2c->speed_khz = SYNQUACER_I2C_SPEED_FM;
+7 -11
drivers/i2c/busses/i2c-tegra.c
··· 123 123 #define I2C_THIGH_SHIFT 8 124 124 #define I2C_INTERFACE_TIMING_1 0x98 125 125 126 - #define I2C_STANDARD_MODE 100000 127 - #define I2C_FAST_MODE 400000 128 - #define I2C_FAST_PLUS_MODE 1000000 129 - 130 126 /* Packet header size in bytes */ 131 127 #define I2C_PACKET_HEADER_SIZE 12 132 128 ··· 733 737 I2C_CLK_DIVISOR_STD_FAST_MODE_SHIFT; 734 738 i2c_writel(i2c_dev, clk_divisor, I2C_CLK_DIVISOR); 735 739 736 - if (i2c_dev->bus_clk_rate > I2C_STANDARD_MODE && 737 - i2c_dev->bus_clk_rate <= I2C_FAST_PLUS_MODE) { 740 + if (i2c_dev->bus_clk_rate > I2C_MAX_STANDARD_MODE_FREQ && 741 + i2c_dev->bus_clk_rate <= I2C_MAX_FAST_MODE_PLUS_FREQ) { 738 742 tlow = i2c_dev->hw->tlow_fast_fastplus_mode; 739 743 thigh = i2c_dev->hw->thigh_fast_fastplus_mode; 740 744 tsu_thd = i2c_dev->hw->setup_hold_time_fast_fast_plus_mode; ··· 1337 1341 ret = of_property_read_u32(np, "clock-frequency", 1338 1342 &i2c_dev->bus_clk_rate); 1339 1343 if (ret) 1340 - i2c_dev->bus_clk_rate = 100000; /* default clock rate */ 1344 + i2c_dev->bus_clk_rate = I2C_MAX_STANDARD_MODE_FREQ; /* default clock rate */ 1341 1345 1342 1346 multi_mode = of_property_read_bool(np, "multi-master"); 1343 1347 i2c_dev->is_multimaster_mode = multi_mode; ··· 1636 1640 } 1637 1641 } 1638 1642 1639 - if (i2c_dev->bus_clk_rate > I2C_FAST_MODE && 1640 - i2c_dev->bus_clk_rate <= I2C_FAST_PLUS_MODE) 1643 + if (i2c_dev->bus_clk_rate > I2C_MAX_FAST_MODE_FREQ && 1644 + i2c_dev->bus_clk_rate <= I2C_MAX_FAST_MODE_PLUS_FREQ) 1641 1645 i2c_dev->clk_divisor_non_hs_mode = 1642 1646 i2c_dev->hw->clk_divisor_fast_plus_mode; 1643 - else if (i2c_dev->bus_clk_rate > I2C_STANDARD_MODE && 1644 - i2c_dev->bus_clk_rate <= I2C_FAST_MODE) 1647 + else if (i2c_dev->bus_clk_rate > I2C_MAX_STANDARD_MODE_FREQ && 1648 + i2c_dev->bus_clk_rate <= I2C_MAX_FAST_MODE_FREQ) 1645 1649 i2c_dev->clk_divisor_non_hs_mode = 1646 1650 i2c_dev->hw->clk_divisor_fast_mode; 1647 1651 else
+9 -4
drivers/i2c/busses/i2c-thunderx-pcidrv.c
··· 118 118 static int thunder_i2c_smbus_setup_of(struct octeon_i2c *i2c, 119 119 struct device_node *node) 120 120 { 121 + struct i2c_client *ara; 122 + 121 123 if (!node) 122 124 return -EINVAL; 123 125 ··· 127 125 if (!i2c->alert_data.irq) 128 126 return -EINVAL; 129 127 130 - i2c->ara = i2c_setup_smbus_alert(&i2c->adap, &i2c->alert_data); 131 - if (!i2c->ara) 132 - return -ENODEV; 128 + ara = i2c_new_smbus_alert_device(&i2c->adap, &i2c->alert_data); 129 + if (IS_ERR(ara)) 130 + return PTR_ERR(ara); 131 + 132 + i2c->ara = ara; 133 + 133 134 return 0; 134 135 } 135 136 ··· 183 178 thunder_i2c_clock_enable(dev, i2c); 184 179 ret = device_property_read_u32(dev, "clock-frequency", &i2c->twsi_freq); 185 180 if (ret) 186 - i2c->twsi_freq = 100000; 181 + i2c->twsi_freq = I2C_MAX_STANDARD_MODE_FREQ; 187 182 188 183 init_waitqueue_head(&i2c->queue); 189 184
+2 -4
drivers/i2c/busses/i2c-uniphier-f.c
··· 73 73 #define UNIPHIER_FI2C_BYTE_WISE BIT(3) 74 74 #define UNIPHIER_FI2C_DEFER_STOP_COMP BIT(4) 75 75 76 - #define UNIPHIER_FI2C_DEFAULT_SPEED 100000 77 - #define UNIPHIER_FI2C_MAX_SPEED 400000 78 76 #define UNIPHIER_FI2C_FIFO_SIZE 8 79 77 80 78 struct uniphier_fi2c_priv { ··· 535 537 } 536 538 537 539 if (of_property_read_u32(dev->of_node, "clock-frequency", &bus_speed)) 538 - bus_speed = UNIPHIER_FI2C_DEFAULT_SPEED; 540 + bus_speed = I2C_MAX_STANDARD_MODE_FREQ; 539 541 540 - if (!bus_speed || bus_speed > UNIPHIER_FI2C_MAX_SPEED) { 542 + if (!bus_speed || bus_speed > I2C_MAX_FAST_MODE_FREQ) { 541 543 dev_err(dev, "invalid clock-frequency %d\n", bus_speed); 542 544 return -EINVAL; 543 545 }
+2 -5
drivers/i2c/busses/i2c-uniphier.c
··· 35 35 #define UNIPHIER_I2C_NOISE 0x1c /* noise filter control */ 36 36 #define UNIPHIER_I2C_SETUP 0x20 /* setup time control */ 37 37 38 - #define UNIPHIER_I2C_DEFAULT_SPEED 100000 39 - #define UNIPHIER_I2C_MAX_SPEED 400000 40 - 41 38 struct uniphier_i2c_priv { 42 39 struct completion comp; 43 40 struct i2c_adapter adap; ··· 330 333 } 331 334 332 335 if (of_property_read_u32(dev->of_node, "clock-frequency", &bus_speed)) 333 - bus_speed = UNIPHIER_I2C_DEFAULT_SPEED; 336 + bus_speed = I2C_MAX_STANDARD_MODE_FREQ; 334 337 335 - if (!bus_speed || bus_speed > UNIPHIER_I2C_MAX_SPEED) { 338 + if (!bus_speed || bus_speed > I2C_MAX_FAST_MODE_FREQ) { 336 339 dev_err(dev, "invalid clock-frequency %d\n", bus_speed); 337 340 return -EINVAL; 338 341 }
+1 -1
drivers/i2c/busses/i2c-wmt.c
··· 399 399 400 400 i2c_dev->mode = I2C_MODE_STANDARD; 401 401 err = of_property_read_u32(np, "clock-frequency", &clk_rate); 402 - if ((!err) && (clk_rate == 400000)) 402 + if (!err && (clk_rate == I2C_MAX_FAST_MODE_FREQ)) 403 403 i2c_dev->mode = I2C_MODE_FAST; 404 404 405 405 i2c_dev->dev = &pdev->dev;
+10 -8
drivers/i2c/busses/i2c-xlp9xx.c
··· 71 71 #define XLP9XX_I2C_SLAVEADDR_ADDR_SHIFT 1 72 72 73 73 #define XLP9XX_I2C_IP_CLK_FREQ 133000000UL 74 - #define XLP9XX_I2C_DEFAULT_FREQ 100000 75 - #define XLP9XX_I2C_HIGH_FREQ 400000 76 74 #define XLP9XX_I2C_FIFO_SIZE 0x80U 77 75 #define XLP9XX_I2C_TIMEOUT_MS 1000 78 76 #define XLP9XX_I2C_BUSY_TIMEOUT 50 ··· 474 476 475 477 err = device_property_read_u32(&pdev->dev, "clock-frequency", &freq); 476 478 if (err) { 477 - freq = XLP9XX_I2C_DEFAULT_FREQ; 479 + freq = I2C_MAX_STANDARD_MODE_FREQ; 478 480 dev_dbg(&pdev->dev, "using default frequency %u\n", freq); 479 - } else if (freq == 0 || freq > XLP9XX_I2C_HIGH_FREQ) { 481 + } else if (freq == 0 || freq > I2C_MAX_FAST_MODE_FREQ) { 480 482 dev_warn(&pdev->dev, "invalid frequency %u, using default\n", 481 483 freq); 482 - freq = XLP9XX_I2C_DEFAULT_FREQ; 484 + freq = I2C_MAX_STANDARD_MODE_FREQ; 483 485 } 484 486 priv->clk_hz = freq; 485 487 ··· 489 491 static int xlp9xx_i2c_smbus_setup(struct xlp9xx_i2c_dev *priv, 490 492 struct platform_device *pdev) 491 493 { 494 + struct i2c_client *ara; 495 + 492 496 if (!priv->alert_data.irq) 493 497 return -EINVAL; 494 498 495 - priv->ara = i2c_setup_smbus_alert(&priv->adapter, &priv->alert_data); 496 - if (!priv->ara) 497 - return -ENODEV; 499 + ara = i2c_new_smbus_alert_device(&priv->adapter, &priv->alert_data); 500 + if (IS_ERR(ara)) 501 + return PTR_ERR(ara); 502 + 503 + priv->ara = ara; 498 504 499 505 return 0; 500 506 }
+1 -1
drivers/i2c/busses/i2c-xlr.c
··· 404 404 405 405 if (of_property_read_u32(pdev->dev.of_node, "clock-frequency", 406 406 &busfreq)) 407 - busfreq = 100000; 407 + busfreq = I2C_MAX_STANDARD_MODE_FREQ; 408 408 409 409 clk = devm_clk_get(&pdev->dev, NULL); 410 410 if (!IS_ERR(clk)) {
+1 -1
drivers/i2c/i2c-core-acpi.c
··· 318 318 lookup->min_speed = lookup->speed; 319 319 320 320 if (acpi_match_device_ids(adev, i2c_acpi_force_400khz_device_ids) == 0) 321 - lookup->force_speed = 400000; 321 + lookup->force_speed = I2C_MAX_FAST_MODE_FREQ; 322 322 323 323 return AE_OK; 324 324 }
+21 -17
drivers/i2c/i2c-core-base.c
··· 1593 1593 * @dev: The device to scan for I2C timing properties 1594 1594 * @t: the i2c_timings struct to be filled with values 1595 1595 * @use_defaults: bool to use sane defaults derived from the I2C specification 1596 - * when properties are not found, otherwise use 0 1596 + * when properties are not found, otherwise don't update 1597 1597 * 1598 1598 * Scan the device for the generic I2C properties describing timing parameters 1599 1599 * for the signal and fill the given struct with the results. If a property was 1600 1600 * not found and use_defaults was true, then maximum timings are assumed which 1601 1601 * are derived from the I2C specification. If use_defaults is not used, the 1602 - * results will be 0, so drivers can apply their own defaults later. The latter 1603 - * is mainly intended for avoiding regressions of existing drivers which want 1604 - * to switch to this function. New drivers almost always should use the defaults. 1602 + * results will be as before, so drivers can apply their own defaults before 1603 + * calling this helper. The latter is mainly intended for avoiding regressions 1604 + * of existing drivers which want to switch to this function. New drivers 1605 + * almost always should use the defaults. 1605 1606 */ 1606 - 1607 1607 void i2c_parse_fw_timings(struct device *dev, struct i2c_timings *t, bool use_defaults) 1608 1608 { 1609 1609 int ret; 1610 1610 1611 - memset(t, 0, sizeof(*t)); 1612 - 1613 1611 ret = device_property_read_u32(dev, "clock-frequency", &t->bus_freq_hz); 1614 1612 if (ret && use_defaults) 1615 - t->bus_freq_hz = 100000; 1613 + t->bus_freq_hz = I2C_MAX_STANDARD_MODE_FREQ; 1616 1614 1617 1615 ret = device_property_read_u32(dev, "i2c-scl-rising-time-ns", &t->scl_rise_ns); 1618 1616 if (ret && use_defaults) { 1619 - if (t->bus_freq_hz <= 100000) 1617 + if (t->bus_freq_hz <= I2C_MAX_STANDARD_MODE_FREQ) 1620 1618 t->scl_rise_ns = 1000; 1621 - else if (t->bus_freq_hz <= 400000) 1619 + else if (t->bus_freq_hz <= I2C_MAX_FAST_MODE_FREQ) 1622 1620 t->scl_rise_ns = 300; 1623 1621 else 1624 1622 t->scl_rise_ns = 120; ··· 1624 1626 1625 1627 ret = device_property_read_u32(dev, "i2c-scl-falling-time-ns", &t->scl_fall_ns); 1626 1628 if (ret && use_defaults) { 1627 - if (t->bus_freq_hz <= 400000) 1629 + if (t->bus_freq_hz <= I2C_MAX_FAST_MODE_FREQ) 1628 1630 t->scl_fall_ns = 300; 1629 1631 else 1630 1632 t->scl_fall_ns = 120; 1631 1633 } 1632 1634 1633 - device_property_read_u32(dev, "i2c-scl-internal-delay-ns", &t->scl_int_delay_ns); 1635 + ret = device_property_read_u32(dev, "i2c-scl-internal-delay-ns", &t->scl_int_delay_ns); 1636 + if (ret && use_defaults) 1637 + t->scl_int_delay_ns = 0; 1634 1638 1635 1639 ret = device_property_read_u32(dev, "i2c-sda-falling-time-ns", &t->sda_fall_ns); 1636 1640 if (ret && use_defaults) 1637 1641 t->sda_fall_ns = t->scl_fall_ns; 1638 1642 1639 - device_property_read_u32(dev, "i2c-sda-hold-time-ns", &t->sda_hold_ns); 1643 + ret = device_property_read_u32(dev, "i2c-sda-hold-time-ns", &t->sda_hold_ns); 1644 + if (ret && use_defaults) 1645 + t->sda_hold_ns = 0; 1640 1646 1641 - device_property_read_u32(dev, "i2c-digital-filter-width-ns", 1642 - &t->digital_filter_width_ns); 1647 + ret = device_property_read_u32(dev, "i2c-digital-filter-width-ns", &t->digital_filter_width_ns); 1648 + if (ret && use_defaults) 1649 + t->digital_filter_width_ns = 0; 1643 1650 1644 - device_property_read_u32(dev, "i2c-analog-filter-cutoff-frequency", 1645 - &t->analog_filter_cutoff_freq_hz); 1651 + ret = device_property_read_u32(dev, "i2c-analog-filter-cutoff-frequency", &t->analog_filter_cutoff_freq_hz); 1652 + if (ret && use_defaults) 1653 + t->analog_filter_cutoff_freq_hz = 0; 1646 1654 } 1647 1655 EXPORT_SYMBOL_GPL(i2c_parse_fw_timings); 1648 1656
+8 -18
drivers/i2c/i2c-core-smbus.c
··· 666 666 EXPORT_SYMBOL(i2c_smbus_read_i2c_block_data_or_emulated); 667 667 668 668 /** 669 - * i2c_setup_smbus_alert - Setup SMBus alert support 669 + * i2c_new_smbus_alert_device - get ara client for SMBus alert support 670 670 * @adapter: the target adapter 671 671 * @setup: setup data for the SMBus alert handler 672 672 * Context: can sleep ··· 676 676 * Handling can be done either through our IRQ handler, or by the 677 677 * adapter (from its handler, periodic polling, or whatever). 678 678 * 679 - * NOTE that if we manage the IRQ, we *MUST* know if it's level or 680 - * edge triggered in order to hand it to the workqueue correctly. 681 - * If triggering the alert seems to wedge the system, you probably 682 - * should have said it's level triggered. 683 - * 684 679 * This returns the ara client, which should be saved for later use with 685 - * i2c_handle_smbus_alert() and ultimately i2c_unregister_device(); or NULL 686 - * to indicate an error. 680 + * i2c_handle_smbus_alert() and ultimately i2c_unregister_device(); or an 681 + * ERRPTR to indicate an error. 687 682 */ 688 - struct i2c_client *i2c_setup_smbus_alert(struct i2c_adapter *adapter, 689 - struct i2c_smbus_alert_setup *setup) 683 + struct i2c_client *i2c_new_smbus_alert_device(struct i2c_adapter *adapter, 684 + struct i2c_smbus_alert_setup *setup) 690 685 { 691 686 struct i2c_board_info ara_board_info = { 692 687 I2C_BOARD_INFO("smbus_alert", 0x0c), 693 688 .platform_data = setup, 694 689 }; 695 690 696 - return i2c_new_device(adapter, &ara_board_info); 691 + return i2c_new_client_device(adapter, &ara_board_info); 697 692 } 698 - EXPORT_SYMBOL_GPL(i2c_setup_smbus_alert); 693 + EXPORT_SYMBOL_GPL(i2c_new_smbus_alert_device); 699 694 700 695 #if IS_ENABLED(CONFIG_I2C_SMBUS) && IS_ENABLED(CONFIG_OF) 701 696 int of_i2c_setup_smbus_alert(struct i2c_adapter *adapter) 702 697 { 703 - struct i2c_client *client; 704 698 int irq; 705 699 706 700 irq = of_property_match_string(adapter->dev.of_node, "interrupt-names", ··· 704 710 else if (irq < 0) 705 711 return irq; 706 712 707 - client = i2c_setup_smbus_alert(adapter, NULL); 708 - if (!client) 709 - return -ENODEV; 710 - 711 - return 0; 713 + return PTR_ERR_OR_ZERO(i2c_new_smbus_alert_device(adapter, NULL)); 712 714 } 713 715 EXPORT_SYMBOL_GPL(of_i2c_setup_smbus_alert); 714 716 #endif
+26 -22
drivers/i2c/i2c-dev.c
··· 15 15 /* The I2C_RDWR ioctl code is written by Kolja Waschk <waschk@telos.de> */ 16 16 17 17 #include <linux/cdev.h> 18 + #include <linux/compat.h> 18 19 #include <linux/device.h> 19 20 #include <linux/fs.h> 20 21 #include <linux/i2c-dev.h> ··· 28 27 #include <linux/notifier.h> 29 28 #include <linux/slab.h> 30 29 #include <linux/uaccess.h> 31 - #include <linux/compat.h> 32 30 33 31 /* 34 32 * An i2c_dev represents an i2c_adapter ... an I2C or SMBus master, not a ··· 40 40 struct i2c_dev { 41 41 struct list_head list; 42 42 struct i2c_adapter *adap; 43 - struct device *dev; 43 + struct device dev; 44 44 struct cdev cdev; 45 45 }; 46 46 ··· 84 84 return i2c_dev; 85 85 } 86 86 87 - static void put_i2c_dev(struct i2c_dev *i2c_dev) 87 + static void put_i2c_dev(struct i2c_dev *i2c_dev, bool del_cdev) 88 88 { 89 89 spin_lock(&i2c_dev_list_lock); 90 90 list_del(&i2c_dev->list); 91 91 spin_unlock(&i2c_dev_list_lock); 92 - kfree(i2c_dev); 92 + if (del_cdev) 93 + cdev_device_del(&i2c_dev->cdev, &i2c_dev->dev); 94 + put_device(&i2c_dev->dev); 93 95 } 94 96 95 97 static ssize_t name_show(struct device *dev, ··· 630 628 631 629 static struct class *i2c_dev_class; 632 630 631 + static void i2cdev_dev_release(struct device *dev) 632 + { 633 + struct i2c_dev *i2c_dev; 634 + 635 + i2c_dev = container_of(dev, struct i2c_dev, dev); 636 + kfree(i2c_dev); 637 + } 638 + 633 639 static int i2cdev_attach_adapter(struct device *dev, void *dummy) 634 640 { 635 641 struct i2c_adapter *adap; ··· 654 644 655 645 cdev_init(&i2c_dev->cdev, &i2cdev_fops); 656 646 i2c_dev->cdev.owner = THIS_MODULE; 657 - res = cdev_add(&i2c_dev->cdev, MKDEV(I2C_MAJOR, adap->nr), 1); 658 - if (res) 659 - goto error_cdev; 660 647 661 - /* register this i2c device with the driver core */ 662 - i2c_dev->dev = device_create(i2c_dev_class, &adap->dev, 663 - MKDEV(I2C_MAJOR, adap->nr), NULL, 664 - "i2c-%d", adap->nr); 665 - if (IS_ERR(i2c_dev->dev)) { 666 - res = PTR_ERR(i2c_dev->dev); 667 - goto error; 648 + device_initialize(&i2c_dev->dev); 649 + i2c_dev->dev.devt = MKDEV(I2C_MAJOR, adap->nr); 650 + i2c_dev->dev.class = i2c_dev_class; 651 + i2c_dev->dev.parent = &adap->dev; 652 + i2c_dev->dev.release = i2cdev_dev_release; 653 + dev_set_name(&i2c_dev->dev, "i2c-%d", adap->nr); 654 + 655 + res = cdev_device_add(&i2c_dev->cdev, &i2c_dev->dev); 656 + if (res) { 657 + put_i2c_dev(i2c_dev, false); 658 + return res; 668 659 } 669 660 670 661 pr_debug("i2c-dev: adapter [%s] registered as minor %d\n", 671 662 adap->name, adap->nr); 672 663 return 0; 673 - error: 674 - cdev_del(&i2c_dev->cdev); 675 - error_cdev: 676 - put_i2c_dev(i2c_dev); 677 - return res; 678 664 } 679 665 680 666 static int i2cdev_detach_adapter(struct device *dev, void *dummy) ··· 686 680 if (!i2c_dev) /* attach_adapter must have failed */ 687 681 return 0; 688 682 689 - cdev_del(&i2c_dev->cdev); 690 - put_i2c_dev(i2c_dev); 691 - device_destroy(i2c_dev_class, MKDEV(I2C_MAJOR, adap->nr)); 683 + put_i2c_dev(i2c_dev, true); 692 684 693 685 pr_debug("i2c-dev: adapter [%s] unregistered\n", adap->name); 694 686 return 0;
+2 -2
drivers/i2c/i2c-slave-eeprom.c
··· 96 96 struct eeprom_data *eeprom; 97 97 unsigned long flags; 98 98 99 - eeprom = dev_get_drvdata(container_of(kobj, struct device, kobj)); 99 + eeprom = dev_get_drvdata(kobj_to_dev(kobj)); 100 100 101 101 spin_lock_irqsave(&eeprom->buffer_lock, flags); 102 102 memcpy(buf, &eeprom->buffer[off], count); ··· 111 111 struct eeprom_data *eeprom; 112 112 unsigned long flags; 113 113 114 - eeprom = dev_get_drvdata(container_of(kobj, struct device, kobj)); 114 + eeprom = dev_get_drvdata(kobj_to_dev(kobj)); 115 115 116 116 spin_lock_irqsave(&eeprom->buffer_lock, flags); 117 117 memcpy(&eeprom->buffer[off], buf, count);
+1 -1
drivers/i2c/i2c-smbus.c
··· 184 184 * corresponding I2C device driver's alert function. 185 185 * 186 186 * It is assumed that ara is a valid i2c client previously returned by 187 - * i2c_setup_smbus_alert(). 187 + * i2c_new_smbus_alert_device(). 188 188 */ 189 189 int i2c_handle_smbus_alert(struct i2c_client *ara) 190 190 {
+2 -2
drivers/macintosh/therm_windtunnel.c
··· 323 323 of_node_put(np); 324 324 } else { 325 325 strlcpy(info.type, "MAC,ds1775", I2C_NAME_SIZE); 326 - i2c_new_probed_device(adapter, &info, scan_ds1775, NULL); 326 + i2c_new_scanned_device(adapter, &info, scan_ds1775, NULL); 327 327 } 328 328 329 329 np = of_find_compatible_node(adapter->dev.of_node, NULL, "MAC,adm1030"); ··· 331 331 of_node_put(np); 332 332 } else { 333 333 strlcpy(info.type, "MAC,adm1030", I2C_NAME_SIZE); 334 - i2c_new_probed_device(adapter, &info, scan_adm1030, NULL); 334 + i2c_new_scanned_device(adapter, &info, scan_adm1030, NULL); 335 335 } 336 336 } 337 337
+1
drivers/misc/eeprom/at24.c
··· 227 227 228 228 static const struct acpi_device_id at24_acpi_ids[] = { 229 229 { "INT3499", (kernel_ulong_t)&at24_data_INT3499 }, 230 + { "TPF0001", (kernel_ulong_t)&at24_data_24c1024 }, 230 231 { /* END OF LIST */ } 231 232 }; 232 233 MODULE_DEVICE_TABLE(acpi, at24_acpi_ids);
+2 -7
include/linux/i2c-smbus.h
··· 15 15 16 16 /** 17 17 * i2c_smbus_alert_setup - platform data for the smbus_alert i2c client 18 - * @alert_edge_triggered: whether the alert interrupt is edge (1) or level (0) 19 - * triggered 20 18 * @irq: IRQ number, if the smbus_alert driver should take care of interrupt 21 19 * handling 22 20 * 23 21 * If irq is not specified, the smbus_alert driver doesn't take care of 24 22 * interrupt handling. In that case it is up to the I2C bus driver to either 25 23 * handle the interrupts or to poll for alerts. 26 - * 27 - * If irq is specified then it it crucial that alert_edge_triggered is 28 - * properly set. 29 24 */ 30 25 struct i2c_smbus_alert_setup { 31 26 int irq; 32 27 }; 33 28 34 - struct i2c_client *i2c_setup_smbus_alert(struct i2c_adapter *adapter, 35 - struct i2c_smbus_alert_setup *setup); 29 + struct i2c_client *i2c_new_smbus_alert_device(struct i2c_adapter *adapter, 30 + struct i2c_smbus_alert_setup *setup); 36 31 int i2c_handle_smbus_alert(struct i2c_client *ara); 37 32 38 33 #if IS_ENABLED(CONFIG_I2C_SMBUS) && IS_ENABLED(CONFIG_OF)
+8
include/linux/i2c.h
··· 39 39 typedef int (*i2c_slave_cb_t)(struct i2c_client *client, 40 40 enum i2c_slave_event event, u8 *val); 41 41 42 + /* I2C Frequency Modes */ 43 + #define I2C_MAX_STANDARD_MODE_FREQ 100000 44 + #define I2C_MAX_FAST_MODE_FREQ 400000 45 + #define I2C_MAX_FAST_MODE_PLUS_FREQ 1000000 46 + #define I2C_MAX_TURBO_MODE_FREQ 1400000 47 + #define I2C_MAX_HIGH_SPEED_MODE_FREQ 3400000 48 + #define I2C_MAX_ULTRA_FAST_MODE_FREQ 5000000 49 + 42 50 struct module; 43 51 struct property_entry; 44 52