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

Merge tag 'i2c-for-6.8-rc1-rebased' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux

Pull i2c updates from Wolfram Sang:
"This removes the currently unused CLASS_DDC support (controllers set
the flag, but there is no client to use it).

Also, CLASS_SPD support gets simplified to prepare removal in the
future. Class based instantiation is not recommended these days
anyhow.

Furthermore, I2C core now creates a debugfs directory per I2C adapter.
Current bus driver users were converted to use it.

Finally, quite some driver updates. Standing out are patches for the
wmt-driver which is refactored to support more variants.

This is the rebased pull request where a large series for the
designware driver was dropped"

* tag 'i2c-for-6.8-rc1-rebased' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux: (38 commits)
MAINTAINERS: use proper email for my I2C work
i2c: stm32f7: add support for stm32mp25 soc
i2c: stm32f7: perform I2C_ISR read once at beginning of event isr
dt-bindings: i2c: document st,stm32mp25-i2c compatible
i2c: stm32f7: simplify status messages in case of errors
i2c: stm32f7: perform most of irq job in threaded handler
i2c: stm32f7: use dev_err_probe upon calls of devm_request_irq
i2c: i801: Add lis3lv02d for Dell XPS 15 7590
i2c: i801: Add lis3lv02d for Dell Precision 3540
i2c: wmt: Reduce redundant: REG_CR setting
i2c: wmt: Reduce redundant: function parameter
i2c: wmt: Reduce redundant: clock mode setting
i2c: wmt: Reduce redundant: wait event complete
i2c: wmt: Reduce redundant: bus busy check
i2c: mux: reg: Remove class-based device auto-detection support
i2c: make i2c_bus_type const
dt-bindings: at24: add ROHM BR24G04
eeprom: at24: use of_match_ptr()
i2c: cpm: Remove linux,i2c-index conversion from be32
i2c: imx: Make SDA actually optional for bus recovering
...

+405 -454
+1
Documentation/devicetree/bindings/eeprom/at24.yaml
··· 123 123 - enum: 124 124 - onnn,cat24c04 125 125 - onnn,cat24c05 126 + - rohm,br24g04 126 127 - const: atmel,24c04 127 128 - items: 128 129 - const: renesas,r1ex24016
+28
Documentation/devicetree/bindings/i2c/st,stm32-i2c.yaml
··· 19 19 - st,stm32f7-i2c 20 20 - st,stm32mp13-i2c 21 21 - st,stm32mp15-i2c 22 + - st,stm32mp25-i2c 22 23 then: 23 24 properties: 24 25 i2c-scl-rising-time-ns: ··· 42 41 clock-frequency: 43 42 enum: [100000, 400000] 44 43 44 + - if: 45 + properties: 46 + compatible: 47 + contains: 48 + enum: 49 + - st,stm32f4-i2c 50 + - st,stm32f7-i2c 51 + - st,stm32mp13-i2c 52 + - st,stm32mp15-i2c 53 + then: 54 + properties: 55 + interrupts: 56 + minItems: 2 57 + 58 + interrupt-names: 59 + minItems: 2 60 + else: 61 + properties: 62 + interrupts: 63 + maxItems: 1 64 + 65 + interrupt-names: 66 + maxItems: 1 67 + 45 68 properties: 46 69 compatible: 47 70 enum: ··· 73 48 - st,stm32f7-i2c 74 49 - st,stm32mp13-i2c 75 50 - st,stm32mp15-i2c 51 + - st,stm32mp25-i2c 76 52 77 53 reg: 78 54 maxItems: 1 ··· 82 56 items: 83 57 - description: interrupt ID for I2C event 84 58 - description: interrupt ID for I2C error 59 + minItems: 1 85 60 86 61 interrupt-names: 87 62 items: 88 63 - const: event 89 64 - const: error 65 + minItems: 1 90 66 91 67 resets: 92 68 maxItems: 1
+1 -1
MAINTAINERS
··· 10061 10061 F: drivers/i2c/busses/i2c-parport.c 10062 10062 10063 10063 I2C SUBSYSTEM 10064 - M: Wolfram Sang <wsa@kernel.org> 10064 + M: Wolfram Sang <wsa+renesas@sang-engineering.com> 10065 10065 L: linux-i2c@vger.kernel.org 10066 10066 S: Maintained 10067 10067 W: https://i2c.wiki.kernel.org/
-1
drivers/gpu/drm/amd/amdgpu/amdgpu_i2c.c
··· 175 175 176 176 i2c->rec = *rec; 177 177 i2c->adapter.owner = THIS_MODULE; 178 - i2c->adapter.class = I2C_CLASS_DDC; 179 178 i2c->adapter.dev.parent = dev->dev; 180 179 i2c->dev = dev; 181 180 i2c_set_adapdata(&i2c->adapter, i2c);
-1
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
··· 7615 7615 if (!i2c) 7616 7616 return NULL; 7617 7617 i2c->base.owner = THIS_MODULE; 7618 - i2c->base.class = I2C_CLASS_DDC; 7619 7618 i2c->base.dev.parent = &adev->pdev->dev; 7620 7619 i2c->base.algo = &amdgpu_dm_i2c_algo; 7621 7620 snprintf(i2c->base.name, sizeof(i2c->base.name), "AMDGPU DM i2c hw bus %d", link_index);
-1
drivers/gpu/drm/amd/pm/swsmu/smu13/aldebaran_ppt.c
··· 1530 1530 smu_i2c->port = 0; 1531 1531 mutex_init(&smu_i2c->mutex); 1532 1532 control->owner = THIS_MODULE; 1533 - control->class = I2C_CLASS_SPD; 1534 1533 control->dev.parent = &adev->pdev->dev; 1535 1534 control->algo = &aldebaran_i2c_algo; 1536 1535 snprintf(control->name, sizeof(control->name), "AMDGPU SMU 0");
-1
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c
··· 2696 2696 smu_i2c->port = i; 2697 2697 mutex_init(&smu_i2c->mutex); 2698 2698 control->owner = THIS_MODULE; 2699 - control->class = I2C_CLASS_SPD; 2700 2699 control->dev.parent = &adev->pdev->dev; 2701 2700 control->algo = &smu_v13_0_0_i2c_algo; 2702 2701 snprintf(control->name, sizeof(control->name), "AMDGPU SMU %d", i);
-1
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_6_ppt.c
··· 1936 1936 smu_i2c->port = i; 1937 1937 mutex_init(&smu_i2c->mutex); 1938 1938 control->owner = THIS_MODULE; 1939 - control->class = I2C_CLASS_SPD; 1940 1939 control->dev.parent = &adev->pdev->dev; 1941 1940 control->algo = &smu_v13_0_6_i2c_algo; 1942 1941 snprintf(control->name, sizeof(control->name), "AMDGPU SMU %d", i);
-1
drivers/gpu/drm/ast/ast_i2c.c
··· 120 120 return NULL; 121 121 122 122 i2c->adapter.owner = THIS_MODULE; 123 - i2c->adapter.class = I2C_CLASS_DDC; 124 123 i2c->adapter.dev.parent = dev->dev; 125 124 i2c->dev = dev; 126 125 i2c_set_adapdata(&i2c->adapter, i2c);
-1
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
··· 515 515 init_completion(&i2c->cmp); 516 516 517 517 adap = &i2c->adap; 518 - adap->class = I2C_CLASS_DDC; 519 518 adap->owner = THIS_MODULE; 520 519 adap->dev.parent = hdmi->dev; 521 520 adap->algo = &dw_hdmi_algorithm;
-1
drivers/gpu/drm/display/drm_dp_helper.c
··· 2102 2102 if (!aux->ddc.algo) 2103 2103 drm_dp_aux_init(aux); 2104 2104 2105 - aux->ddc.class = I2C_CLASS_DDC; 2106 2105 aux->ddc.owner = THIS_MODULE; 2107 2106 aux->ddc.dev.parent = aux->dev; 2108 2107
-1
drivers/gpu/drm/display/drm_dp_mst_topology.c
··· 5926 5926 aux->ddc.algo_data = aux; 5927 5927 aux->ddc.retries = 3; 5928 5928 5929 - aux->ddc.class = I2C_CLASS_DDC; 5930 5929 aux->ddc.owner = THIS_MODULE; 5931 5930 /* FIXME: set the kdev of the port's connector as parent */ 5932 5931 aux->ddc.dev.parent = parent_dev;
-1
drivers/gpu/drm/gma500/cdv_intel_dp.c
··· 855 855 856 856 memset(&intel_dp->adapter, '\0', sizeof (intel_dp->adapter)); 857 857 intel_dp->adapter.owner = THIS_MODULE; 858 - intel_dp->adapter.class = I2C_CLASS_DDC; 859 858 strncpy (intel_dp->adapter.name, name, sizeof(intel_dp->adapter.name) - 1); 860 859 intel_dp->adapter.name[sizeof(intel_dp->adapter.name) - 1] = '\0'; 861 860 intel_dp->adapter.algo_data = &intel_dp->algo;
-1
drivers/gpu/drm/gma500/intel_gmbus.c
··· 411 411 struct intel_gmbus *bus = &dev_priv->gmbus[i]; 412 412 413 413 bus->adapter.owner = THIS_MODULE; 414 - bus->adapter.class = I2C_CLASS_DDC; 415 414 snprintf(bus->adapter.name, 416 415 sizeof(bus->adapter.name), 417 416 "gma500 gmbus %s",
-1
drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c
··· 168 168 .name = "oaktrail_hdmi_i2c", 169 169 .nr = 3, 170 170 .owner = THIS_MODULE, 171 - .class = I2C_CLASS_DDC, 172 171 .algo = &oaktrail_hdmi_i2c_algorithm, 173 172 }; 174 173
-1
drivers/gpu/drm/gma500/psb_intel_sdvo.c
··· 2426 2426 struct drm_device *dev) 2427 2427 { 2428 2428 sdvo->ddc.owner = THIS_MODULE; 2429 - sdvo->ddc.class = I2C_CLASS_DDC; 2430 2429 snprintf(sdvo->ddc.name, I2C_NAME_SIZE, "SDVO DDC proxy"); 2431 2430 sdvo->ddc.dev.parent = dev->dev; 2432 2431 sdvo->ddc.algo_data = sdvo;
-1
drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_i2c.c
··· 81 81 struct hibmc_connector *connector) 82 82 { 83 83 connector->adapter.owner = THIS_MODULE; 84 - connector->adapter.class = I2C_CLASS_DDC; 85 84 snprintf(connector->adapter.name, I2C_NAME_SIZE, "HIS i2c bit bus"); 86 85 connector->adapter.dev.parent = drm_dev->dev; 87 86 i2c_set_adapdata(&connector->adapter, connector);
-1
drivers/gpu/drm/i915/display/intel_gmbus.c
··· 899 899 } 900 900 901 901 bus->adapter.owner = THIS_MODULE; 902 - bus->adapter.class = I2C_CLASS_DDC; 903 902 snprintf(bus->adapter.name, 904 903 sizeof(bus->adapter.name), 905 904 "i915 gmbus %s", gmbus_pin->name);
-1
drivers/gpu/drm/i915/display/intel_sdvo.c
··· 3327 3327 ddc->ddc_bus = ddc_bus; 3328 3328 3329 3329 ddc->ddc.owner = THIS_MODULE; 3330 - ddc->ddc.class = I2C_CLASS_DDC; 3331 3330 snprintf(ddc->ddc.name, I2C_NAME_SIZE, "SDVO %c DDC%d", 3332 3331 port_name(sdvo->base.port), ddc_bus); 3333 3332 ddc->ddc.dev.parent = &pdev->dev;
-1
drivers/gpu/drm/loongson/lsdc_i2c.c
··· 154 154 adapter = &li2c->adapter; 155 155 adapter->algo_data = &li2c->bit; 156 156 adapter->owner = THIS_MODULE; 157 - adapter->class = I2C_CLASS_DDC; 158 157 adapter->dev.parent = ddev->dev; 159 158 adapter->nr = -1; 160 159
-1
drivers/gpu/drm/mediatek/mtk_hdmi_ddc.c
··· 297 297 298 298 strscpy(ddc->adap.name, "mediatek-hdmi-ddc", sizeof(ddc->adap.name)); 299 299 ddc->adap.owner = THIS_MODULE; 300 - ddc->adap.class = I2C_CLASS_DDC; 301 300 ddc->adap.algo = &mtk_hdmi_ddc_algorithm; 302 301 ddc->adap.retries = 3; 303 302 ddc->adap.dev.of_node = dev->of_node;
-1
drivers/gpu/drm/mgag200/mgag200_i2c.c
··· 106 106 i2c->data = BIT(info->i2c.data_bit); 107 107 i2c->clock = BIT(info->i2c.clock_bit); 108 108 i2c->adapter.owner = THIS_MODULE; 109 - i2c->adapter.class = I2C_CLASS_DDC; 110 109 i2c->adapter.dev.parent = dev->dev; 111 110 i2c->dev = dev; 112 111 i2c_set_adapdata(&i2c->adapter, i2c);
-1
drivers/gpu/drm/msm/hdmi/hdmi_i2c.c
··· 249 249 250 250 251 251 i2c->owner = THIS_MODULE; 252 - i2c->class = I2C_CLASS_DDC; 253 252 snprintf(i2c->name, sizeof(i2c->name), "msm hdmi i2c"); 254 253 i2c->dev.parent = &hdmi->pdev->dev; 255 254 i2c->algo = &msm_hdmi_i2c_algorithm;
-1
drivers/gpu/drm/radeon/radeon_i2c.c
··· 918 918 919 919 i2c->rec = *rec; 920 920 i2c->adapter.owner = THIS_MODULE; 921 - i2c->adapter.class = I2C_CLASS_DDC; 922 921 i2c->adapter.dev.parent = dev->dev; 923 922 i2c->dev = dev; 924 923 i2c_set_adapdata(&i2c->adapter, i2c);
-1
drivers/gpu/drm/rockchip/inno_hdmi.c
··· 792 792 init_completion(&i2c->cmp); 793 793 794 794 adap = &i2c->adap; 795 - adap->class = I2C_CLASS_DDC; 796 795 adap->owner = THIS_MODULE; 797 796 adap->dev.parent = hdmi->dev; 798 797 adap->dev.of_node = hdmi->dev->of_node;
-1
drivers/gpu/drm/rockchip/rk3066_hdmi.c
··· 715 715 init_completion(&i2c->cmpltn); 716 716 717 717 adap = &i2c->adap; 718 - adap->class = I2C_CLASS_DDC; 719 718 adap->owner = THIS_MODULE; 720 719 adap->dev.parent = hdmi->dev; 721 720 adap->dev.of_node = hdmi->dev->of_node;
-1
drivers/gpu/drm/sun4i/sun4i_hdmi_i2c.c
··· 302 302 return -ENOMEM; 303 303 304 304 adap->owner = THIS_MODULE; 305 - adap->class = I2C_CLASS_DDC; 306 305 adap->algo = &sun4i_hdmi_i2c_algorithm; 307 306 strscpy(adap->name, "sun4i_hdmi_i2c adapter", sizeof(adap->name)); 308 307 i2c_set_adapdata(adap, hdmi);
+1 -1
drivers/i2c/busses/i2c-ali1535.c
··· 477 477 478 478 static struct i2c_adapter ali1535_adapter = { 479 479 .owner = THIS_MODULE, 480 - .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, 480 + .class = I2C_CLASS_HWMON, 481 481 .algo = &smbus_algorithm, 482 482 }; 483 483
+1 -1
drivers/i2c/busses/i2c-ali1563.c
··· 390 390 391 391 static struct i2c_adapter ali1563_adapter = { 392 392 .owner = THIS_MODULE, 393 - .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, 393 + .class = I2C_CLASS_HWMON, 394 394 .algo = &ali1563_algorithm, 395 395 }; 396 396
+1 -1
drivers/i2c/busses/i2c-ali15x3.c
··· 461 461 462 462 static struct i2c_adapter ali15x3_adapter = { 463 463 .owner = THIS_MODULE, 464 - .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, 464 + .class = I2C_CLASS_HWMON, 465 465 .algo = &smbus_algorithm, 466 466 }; 467 467
+1 -1
drivers/i2c/busses/i2c-amd756.c
··· 285 285 286 286 struct i2c_adapter amd756_smbus = { 287 287 .owner = THIS_MODULE, 288 - .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, 288 + .class = I2C_CLASS_HWMON, 289 289 .algo = &smbus_algorithm, 290 290 }; 291 291
+1 -1
drivers/i2c/busses/i2c-amd8111.c
··· 449 449 smbus->adapter.owner = THIS_MODULE; 450 450 snprintf(smbus->adapter.name, sizeof(smbus->adapter.name), 451 451 "SMBus2 AMD8111 adapter at %04x", smbus->base); 452 - smbus->adapter.class = I2C_CLASS_HWMON | I2C_CLASS_SPD; 452 + smbus->adapter.class = I2C_CLASS_HWMON; 453 453 smbus->adapter.algo = &smbus_algorithm; 454 454 smbus->adapter.algo_data = smbus; 455 455
+1 -1
drivers/i2c/busses/i2c-cpm.c
··· 658 658 /* register new adapter to i2c module... */ 659 659 660 660 data = of_get_property(ofdev->dev.of_node, "linux,i2c-index", &len); 661 - cpm->adap.nr = (data && len == 4) ? be32_to_cpup(data) : -1; 661 + cpm->adap.nr = (data && len == 4) ? *data : -1; 662 662 result = i2c_add_numbered_adapter(&cpm->adap); 663 663 664 664 if (result < 0)
+1 -1
drivers/i2c/busses/i2c-elektor.c
··· 188 188 189 189 static struct i2c_adapter pcf_isa_ops = { 190 190 .owner = THIS_MODULE, 191 - .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, 191 + .class = I2C_CLASS_HWMON, 192 192 .algo_data = &pcf_isa_data, 193 193 .name = "i2c-elektor", 194 194 };
+7 -29
drivers/i2c/busses/i2c-gpio.c
··· 25 25 struct i2c_algo_bit_data bit_data; 26 26 struct i2c_gpio_platform_data pdata; 27 27 #ifdef CONFIG_I2C_GPIO_FAULT_INJECTOR 28 - struct dentry *debug_dir; 29 28 /* these must be protected by bus lock */ 30 29 struct completion scl_irq_completion; 31 30 u64 scl_irq_data; ··· 71 72 } 72 73 73 74 #ifdef CONFIG_I2C_GPIO_FAULT_INJECTOR 74 - static struct dentry *i2c_gpio_debug_dir; 75 75 76 76 #define setsda(bd, val) ((bd)->setsda((bd)->data, val)) 77 77 #define setscl(bd, val) ((bd)->setscl((bd)->data, val)) ··· 256 258 { 257 259 struct i2c_gpio_private_data *priv = platform_get_drvdata(pdev); 258 260 259 - /* 260 - * If there will be a debugfs-dir per i2c adapter somewhen, put the 261 - * 'fault-injector' dir there. Until then, we have a global dir with 262 - * all adapters as subdirs. 263 - */ 264 - if (!i2c_gpio_debug_dir) 265 - i2c_gpio_debug_dir = debugfs_create_dir("i2c-fault-injector", NULL); 266 - 267 - priv->debug_dir = debugfs_create_dir(pdev->name, i2c_gpio_debug_dir); 268 - 269 261 init_completion(&priv->scl_irq_completion); 270 262 271 - debugfs_create_file_unsafe("incomplete_address_phase", 0200, priv->debug_dir, 263 + debugfs_create_file_unsafe("incomplete_address_phase", 0200, priv->adap.debugfs, 272 264 priv, &fops_incomplete_addr_phase); 273 - debugfs_create_file_unsafe("incomplete_write_byte", 0200, priv->debug_dir, 265 + debugfs_create_file_unsafe("incomplete_write_byte", 0200, priv->adap.debugfs, 274 266 priv, &fops_incomplete_write_byte); 275 267 if (priv->bit_data.getscl) { 276 - debugfs_create_file_unsafe("inject_panic", 0200, priv->debug_dir, 268 + debugfs_create_file_unsafe("inject_panic", 0200, priv->adap.debugfs, 277 269 priv, &fops_inject_panic); 278 - debugfs_create_file_unsafe("lose_arbitration", 0200, priv->debug_dir, 270 + debugfs_create_file_unsafe("lose_arbitration", 0200, priv->adap.debugfs, 279 271 priv, &fops_lose_arbitration); 280 272 } 281 - debugfs_create_file_unsafe("scl", 0600, priv->debug_dir, priv, &fops_scl); 282 - debugfs_create_file_unsafe("sda", 0600, priv->debug_dir, priv, &fops_sda); 283 - } 284 - 285 - static void i2c_gpio_fault_injector_exit(struct platform_device *pdev) 286 - { 287 - struct i2c_gpio_private_data *priv = platform_get_drvdata(pdev); 288 - 289 - debugfs_remove_recursive(priv->debug_dir); 273 + debugfs_create_file_unsafe("scl", 0600, priv->adap.debugfs, priv, &fops_scl); 274 + debugfs_create_file_unsafe("sda", 0600, priv->adap.debugfs, priv, &fops_sda); 290 275 } 291 276 #else 292 277 static inline void i2c_gpio_fault_injector_init(struct platform_device *pdev) {} 293 - static inline void i2c_gpio_fault_injector_exit(struct platform_device *pdev) {} 294 278 #endif /* CONFIG_I2C_GPIO_FAULT_INJECTOR*/ 295 279 296 280 /* Get i2c-gpio properties from DT or ACPI table */ ··· 424 444 snprintf(adap->name, sizeof(adap->name), "i2c-gpio%d", pdev->id); 425 445 426 446 adap->algo_data = bit_data; 427 - adap->class = I2C_CLASS_HWMON | I2C_CLASS_SPD; 447 + adap->class = I2C_CLASS_HWMON; 428 448 adap->dev.parent = dev; 429 449 device_set_node(&adap->dev, fwnode); 430 450 ··· 454 474 { 455 475 struct i2c_gpio_private_data *priv; 456 476 struct i2c_adapter *adap; 457 - 458 - i2c_gpio_fault_injector_exit(pdev); 459 477 460 478 priv = platform_get_drvdata(pdev); 461 479 adap = &priv->adap;
+2
drivers/i2c/busses/i2c-i801.c
··· 1230 1230 * Additional individual entries were added after verification. 1231 1231 */ 1232 1232 { "Latitude 5480", 0x29 }, 1233 + { "Precision 3540", 0x29 }, 1233 1234 { "Vostro V131", 0x1d }, 1234 1235 { "Vostro 5568", 0x29 }, 1236 + { "XPS 15 7590", 0x29 }, 1235 1237 }; 1236 1238 1237 1239 static void register_dell_lis3lv02d_i2c_device(struct i801_priv *priv)
+1 -1
drivers/i2c/busses/i2c-ibm_iic.c
··· 739 739 adap->dev.of_node = of_node_get(np); 740 740 strscpy(adap->name, "IBM IIC", sizeof(adap->name)); 741 741 i2c_set_adapdata(adap, dev); 742 - adap->class = I2C_CLASS_HWMON | I2C_CLASS_SPD; 742 + adap->class = I2C_CLASS_HWMON; 743 743 adap->algo = &iic_algo; 744 744 adap->timeout = HZ; 745 745
+1 -1
drivers/i2c/busses/i2c-imx.c
··· 1401 1401 PINCTRL_STATE_DEFAULT); 1402 1402 i2c_imx->pinctrl_pins_gpio = pinctrl_lookup_state(i2c_imx->pinctrl, 1403 1403 "gpio"); 1404 - rinfo->sda_gpiod = devm_gpiod_get(&pdev->dev, "sda", GPIOD_IN); 1404 + rinfo->sda_gpiod = devm_gpiod_get_optional(&pdev->dev, "sda", GPIOD_IN); 1405 1405 rinfo->scl_gpiod = devm_gpiod_get(&pdev->dev, "scl", GPIOD_OUT_HIGH_OPEN_DRAIN); 1406 1406 1407 1407 if (PTR_ERR(rinfo->sda_gpiod) == -EPROBE_DEFER ||
+1 -1
drivers/i2c/busses/i2c-iop3xx.c
··· 478 478 479 479 memcpy(new_adapter->name, pdev->name, strlen(pdev->name)); 480 480 new_adapter->owner = THIS_MODULE; 481 - new_adapter->class = I2C_CLASS_HWMON | I2C_CLASS_SPD; 481 + new_adapter->class = I2C_CLASS_HWMON; 482 482 new_adapter->dev.parent = &pdev->dev; 483 483 new_adapter->dev.of_node = pdev->dev.of_node; 484 484 new_adapter->nr = pdev->id;
+1 -1
drivers/i2c/busses/i2c-isch.c
··· 249 249 250 250 static struct i2c_adapter sch_adapter = { 251 251 .owner = THIS_MODULE, 252 - .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, 252 + .class = I2C_CLASS_HWMON, 253 253 .algo = &smbus_algorithm, 254 254 }; 255 255
+1 -2
drivers/i2c/busses/i2c-kempld.c
··· 283 283 static const struct i2c_adapter kempld_i2c_adapter = { 284 284 .owner = THIS_MODULE, 285 285 .name = "i2c-kempld", 286 - .class = I2C_CLASS_HWMON | I2C_CLASS_SPD | 287 - I2C_CLASS_DEPRECATED, 286 + .class = I2C_CLASS_HWMON | I2C_CLASS_DEPRECATED, 288 287 .algo = &kempld_i2c_algorithm, 289 288 }; 290 289
+1 -1
drivers/i2c/busses/i2c-mlxcpld.c
··· 477 477 static struct i2c_adapter mlxcpld_i2c_adapter = { 478 478 .owner = THIS_MODULE, 479 479 .name = "i2c-mlxcpld", 480 - .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, 480 + .class = I2C_CLASS_HWMON, 481 481 .algo = &mlxcpld_i2c_algo, 482 482 .quirks = &mlxcpld_i2c_quirks, 483 483 .retries = MLXCPLD_I2C_RETR_NUM,
+1 -1
drivers/i2c/busses/i2c-nforce2.c
··· 349 349 return -EBUSY; 350 350 } 351 351 smbus->adapter.owner = THIS_MODULE; 352 - smbus->adapter.class = I2C_CLASS_HWMON | I2C_CLASS_SPD; 352 + smbus->adapter.class = I2C_CLASS_HWMON; 353 353 smbus->adapter.algo = &smbus_algorithm; 354 354 smbus->adapter.algo_data = smbus; 355 355 smbus->adapter.dev.parent = &dev->dev;
+7 -42
drivers/i2c/busses/i2c-npcm7xx.c
··· 326 326 u8 slv_rd_buf[MAX_I2C_HW_FIFO_SIZE]; 327 327 u8 slv_wr_buf[MAX_I2C_HW_FIFO_SIZE]; 328 328 #endif 329 - struct dentry *debugfs; /* debugfs device directory */ 330 329 u64 ber_cnt; 331 330 u64 rec_succ_cnt; 332 331 u64 rec_fail_cnt; ··· 2249 2250 #endif 2250 2251 }; 2251 2252 2252 - /* i2c debugfs directory: used to keep health monitor of i2c devices */ 2253 - static struct dentry *npcm_i2c_debugfs_dir; 2254 - 2255 2253 static void npcm_i2c_init_debugfs(struct platform_device *pdev, 2256 2254 struct npcm_i2c *bus) 2257 2255 { 2258 - struct dentry *d; 2259 - 2260 - if (!npcm_i2c_debugfs_dir) 2261 - return; 2262 - d = debugfs_create_dir(dev_name(&pdev->dev), npcm_i2c_debugfs_dir); 2263 - if (IS_ERR_OR_NULL(d)) 2264 - return; 2265 - debugfs_create_u64("ber_cnt", 0444, d, &bus->ber_cnt); 2266 - debugfs_create_u64("nack_cnt", 0444, d, &bus->nack_cnt); 2267 - debugfs_create_u64("rec_succ_cnt", 0444, d, &bus->rec_succ_cnt); 2268 - debugfs_create_u64("rec_fail_cnt", 0444, d, &bus->rec_fail_cnt); 2269 - debugfs_create_u64("timeout_cnt", 0444, d, &bus->timeout_cnt); 2270 - debugfs_create_u64("tx_complete_cnt", 0444, d, &bus->tx_complete_cnt); 2271 - 2272 - bus->debugfs = d; 2256 + debugfs_create_u64("ber_cnt", 0444, bus->adap.debugfs, &bus->ber_cnt); 2257 + debugfs_create_u64("nack_cnt", 0444, bus->adap.debugfs, &bus->nack_cnt); 2258 + debugfs_create_u64("rec_succ_cnt", 0444, bus->adap.debugfs, &bus->rec_succ_cnt); 2259 + debugfs_create_u64("rec_fail_cnt", 0444, bus->adap.debugfs, &bus->rec_fail_cnt); 2260 + debugfs_create_u64("timeout_cnt", 0444, bus->adap.debugfs, &bus->timeout_cnt); 2261 + debugfs_create_u64("tx_complete_cnt", 0444, bus->adap.debugfs, &bus->tx_complete_cnt); 2273 2262 } 2274 2263 2275 2264 static int npcm_i2c_probe_bus(struct platform_device *pdev) ··· 2349 2362 unsigned long lock_flags; 2350 2363 struct npcm_i2c *bus = platform_get_drvdata(pdev); 2351 2364 2352 - debugfs_remove_recursive(bus->debugfs); 2353 2365 spin_lock_irqsave(&bus->lock, lock_flags); 2354 2366 npcm_i2c_disable(bus); 2355 2367 spin_unlock_irqrestore(&bus->lock, lock_flags); ··· 2371 2385 } 2372 2386 }; 2373 2387 2374 - static int __init npcm_i2c_init(void) 2375 - { 2376 - int ret; 2377 - 2378 - npcm_i2c_debugfs_dir = debugfs_create_dir("npcm_i2c", NULL); 2379 - 2380 - ret = platform_driver_register(&npcm_i2c_bus_driver); 2381 - if (ret) { 2382 - debugfs_remove_recursive(npcm_i2c_debugfs_dir); 2383 - return ret; 2384 - } 2385 - 2386 - return 0; 2387 - } 2388 - module_init(npcm_i2c_init); 2389 - 2390 - static void __exit npcm_i2c_exit(void) 2391 - { 2392 - platform_driver_unregister(&npcm_i2c_bus_driver); 2393 - debugfs_remove_recursive(npcm_i2c_debugfs_dir); 2394 - } 2395 - module_exit(npcm_i2c_exit); 2388 + module_platform_driver(npcm_i2c_bus_driver); 2396 2389 2397 2390 MODULE_AUTHOR("Avi Fishman <avi.fishman@gmail.com>"); 2398 2391 MODULE_AUTHOR("Tali Perry <tali.perry@nuvoton.com>");
+1 -1
drivers/i2c/busses/i2c-pasemi-pci.c
··· 56 56 if (!smbus->ioaddr) 57 57 return -EBUSY; 58 58 59 - smbus->adapter.class = I2C_CLASS_HWMON | I2C_CLASS_SPD; 59 + smbus->adapter.class = I2C_CLASS_HWMON; 60 60 error = pasemi_i2c_common_probe(smbus); 61 61 if (error) 62 62 return error;
+1 -1
drivers/i2c/busses/i2c-piix4.c
··· 943 943 } 944 944 945 945 adap->owner = THIS_MODULE; 946 - adap->class = I2C_CLASS_HWMON | I2C_CLASS_SPD; 946 + adap->class = I2C_CLASS_HWMON; 947 947 adap->algo = sb800_main ? &piix4_smbus_algorithm_sb800 948 948 : &smbus_algorithm; 949 949
+34 -17
drivers/i2c/busses/i2c-rcar.c
··· 89 89 #define TMDMAE BIT(0) /* DMA Master Transmitted Enable */ 90 90 91 91 /* ICCCR2 */ 92 + #define FMPE BIT(7) /* Fast Mode Plus Enable */ 92 93 #define CDFD BIT(2) /* CDF Disable */ 93 94 #define HLSE BIT(1) /* HIGH/LOW Separate Control Enable */ 94 95 #define SME BIT(0) /* SCL Mask Enable */ ··· 123 122 #define ID_NACK BIT(4) 124 123 #define ID_EPROTO BIT(5) 125 124 /* persistent flags */ 125 + #define ID_P_FMPLUS BIT(27) 126 126 #define ID_P_NOT_ATOMIC BIT(28) 127 127 #define ID_P_HOST_NOTIFY BIT(29) 128 128 #define ID_P_NO_RXDMA BIT(30) /* HW forbids RXDMA sometimes */ 129 129 #define ID_P_PM_BLOCKED BIT(31) 130 - #define ID_P_MASK GENMASK(31, 28) 130 + #define ID_P_MASK GENMASK(31, 27) 131 131 132 132 enum rcar_i2c_type { 133 133 I2C_RCAR_GEN1, 134 134 I2C_RCAR_GEN2, 135 135 I2C_RCAR_GEN3, 136 + I2C_RCAR_GEN4, 136 137 }; 137 138 138 139 struct rcar_i2c_priv { ··· 151 148 u32 icccr; 152 149 u16 schd; 153 150 u16 scld; 151 + u8 smd; 154 152 u8 recovery_icmcr; /* protected by adapter lock */ 155 153 enum rcar_i2c_type devtype; 156 154 struct i2c_client *slave; ··· 243 239 if (priv->devtype < I2C_RCAR_GEN3) { 244 240 rcar_i2c_write(priv, ICCCR, priv->icccr); 245 241 } else { 246 - rcar_i2c_write(priv, ICCCR2, CDFD | HLSE | SME); 242 + u32 icccr2 = CDFD | HLSE | SME; 243 + 244 + if (priv->flags & ID_P_FMPLUS) 245 + icccr2 |= FMPE; 246 + 247 + rcar_i2c_write(priv, ICCCR2, icccr2); 247 248 rcar_i2c_write(priv, ICCCR, priv->icccr); 248 - rcar_i2c_write(priv, ICMPR, RCAR_DEFAULT_SMD); 249 + rcar_i2c_write(priv, ICMPR, priv->smd); 249 250 rcar_i2c_write(priv, ICHPR, priv->schd); 250 251 rcar_i2c_write(priv, ICLPR, priv->scld); 251 252 rcar_i2c_write(priv, ICFBSCR, TCYC17); ··· 287 278 288 279 /* Fall back to previously used values if not supplied */ 289 280 i2c_parse_fw_timings(dev, &t, false); 281 + priv->smd = RCAR_DEFAULT_SMD; 290 282 291 283 /* 292 284 * calculate SCL clock ··· 312 302 cdf_width = (priv->devtype == I2C_RCAR_GEN1) ? 2 : 3; 313 303 if (cdf >= 1U << cdf_width) 314 304 goto err_no_val; 305 + 306 + if (t.bus_freq_hz > I2C_MAX_FAST_MODE_FREQ && priv->devtype >= I2C_RCAR_GEN4) 307 + priv->flags |= ID_P_FMPLUS; 308 + else 309 + priv->flags &= ~ID_P_FMPLUS; 315 310 316 311 /* On Gen3+, we use cdf only for the filters, not as a SCL divider */ 317 312 ick = rate / (priv->devtype < I2C_RCAR_GEN3 ? (cdf + 1) : 1); ··· 359 344 * x as a base value for the SCLD/SCHD ratio: 360 345 * 361 346 * SCL = clkp / (8 + 2 * SMD + SCLD + SCHD + F[(ticf + tr + intd) * clkp]) 362 - * SCL = clkp / (8 + 2 * RCAR_DEFAULT_SMD + RCAR_SCLD_RATIO * x 347 + * SCL = clkp / (8 + 2 * SMD + RCAR_SCLD_RATIO * x 363 348 * + RCAR_SCHD_RATIO * x + F[...]) 364 349 * 365 350 * with: sum_ratio = RCAR_SCLD_RATIO + RCAR_SCHD_RATIO 366 - * and: smd = RCAR_DEFAULT_SMD 367 351 * 368 352 * SCL = clkp / (8 + 2 * smd + sum_ratio * x + F[...]) 369 353 * 8 + 2 * smd + sum_ratio * x + F[...] = clkp / SCL 370 354 * x = ((clkp / SCL) - 8 - 2 * smd - F[...]) / sum_ratio 371 355 */ 372 356 x = DIV_ROUND_UP(rate, t.bus_freq_hz ?: 1); 373 - x = DIV_ROUND_UP(x - 8 - 2 * RCAR_DEFAULT_SMD - round, sum_ratio); 374 - scl = rate / (8 + 2 * RCAR_DEFAULT_SMD + sum_ratio * x + round); 357 + x = DIV_ROUND_UP(x - 8 - 2 * priv->smd - round, sum_ratio); 358 + scl = rate / (8 + 2 * priv->smd + sum_ratio * x + round); 375 359 376 - /* Bail out if values don't fit into 16 bit or SMD became too large */ 377 - if (x * RCAR_SCLD_RATIO > 0xffff || RCAR_DEFAULT_SMD > x * RCAR_SCHD_RATIO) 360 + if (x == 0 || x * RCAR_SCLD_RATIO > 0xffff) 378 361 goto err_no_val; 379 362 380 363 priv->icccr = cdf; 381 364 priv->schd = RCAR_SCHD_RATIO * x; 382 365 priv->scld = RCAR_SCLD_RATIO * x; 366 + if (priv->smd >= priv->schd) 367 + priv->smd = priv->schd - 1; 383 368 384 - dev_dbg(dev, "clk %u/%u(%lu), round %u, CDF: %u SCHD %u SCLD %u\n", 385 - scl, t.bus_freq_hz, rate, round, cdf, priv->schd, priv->scld); 369 + dev_dbg(dev, "clk %u/%u(%lu), round %u, CDF: %u SCHD %u SCLD %u SMD %u\n", 370 + scl, t.bus_freq_hz, rate, round, cdf, priv->schd, priv->scld, priv->smd); 386 371 } 387 372 388 373 return 0; ··· 446 431 dma_unmap_single(chan->device->dev, sg_dma_address(&priv->sg), 447 432 sg_dma_len(&priv->sg), priv->dma_direction); 448 433 449 - /* Gen3 can only do one RXDMA per transfer and we just completed it */ 450 - if (priv->devtype == I2C_RCAR_GEN3 && 434 + /* Gen3+ can only do one RXDMA per transfer and we just completed it */ 435 + if (priv->devtype >= I2C_RCAR_GEN3 && 451 436 priv->dma_direction == DMA_FROM_DEVICE) 452 437 priv->flags |= ID_P_NO_RXDMA; 453 438 ··· 901 886 if (ret < 0) 902 887 goto out; 903 888 904 - /* Gen3 needs a reset before allowing RXDMA once */ 905 - if (priv->devtype == I2C_RCAR_GEN3) { 889 + /* Gen3+ needs a reset. That also allows RXDMA once */ 890 + if (priv->devtype >= I2C_RCAR_GEN3) { 906 891 priv->flags &= ~ID_P_NO_RXDMA; 907 892 ret = rcar_i2c_do_reset(priv); 908 893 if (ret) ··· 1087 1072 { .compatible = "renesas,i2c-r8a7794", .data = (void *)I2C_RCAR_GEN2 }, 1088 1073 { .compatible = "renesas,i2c-r8a7795", .data = (void *)I2C_RCAR_GEN3 }, 1089 1074 { .compatible = "renesas,i2c-r8a7796", .data = (void *)I2C_RCAR_GEN3 }, 1075 + /* S4 has no FM+ bit */ 1076 + { .compatible = "renesas,i2c-r8a779f0", .data = (void *)I2C_RCAR_GEN3 }, 1090 1077 { .compatible = "renesas,rcar-gen1-i2c", .data = (void *)I2C_RCAR_GEN1 }, 1091 1078 { .compatible = "renesas,rcar-gen2-i2c", .data = (void *)I2C_RCAR_GEN2 }, 1092 1079 { .compatible = "renesas,rcar-gen3-i2c", .data = (void *)I2C_RCAR_GEN3 }, 1093 - { .compatible = "renesas,rcar-gen4-i2c", .data = (void *)I2C_RCAR_GEN3 }, 1080 + { .compatible = "renesas,rcar-gen4-i2c", .data = (void *)I2C_RCAR_GEN4 }, 1094 1081 {}, 1095 1082 }; 1096 1083 MODULE_DEVICE_TABLE(of, rcar_i2c_dt_ids); ··· 1168 1151 if (of_property_read_bool(dev->of_node, "smbus")) 1169 1152 priv->flags |= ID_P_HOST_NOTIFY; 1170 1153 1171 - if (priv->devtype == I2C_RCAR_GEN3) { 1154 + if (priv->devtype >= I2C_RCAR_GEN3) { 1172 1155 priv->rstc = devm_reset_control_get_exclusive(&pdev->dev, NULL); 1173 1156 if (IS_ERR(priv->rstc)) { 1174 1157 ret = PTR_ERR(priv->rstc);
+6 -2
drivers/i2c/busses/i2c-rk3x.c
··· 1295 1295 return -EINVAL; 1296 1296 } 1297 1297 1298 - /* 27+i: write mask, 11+i: value */ 1299 - value = BIT(27 + bus_nr) | BIT(11 + bus_nr); 1298 + /* rv1126 i2c2 uses non-sequential write mask 20, value 4 */ 1299 + if (i2c->soc_data == &rv1126_soc_data && bus_nr == 2) 1300 + value = BIT(20) | BIT(4); 1301 + else 1302 + /* 27+i: write mask, 11+i: value */ 1303 + value = BIT(27 + bus_nr) | BIT(11 + bus_nr); 1300 1304 1301 1305 ret = regmap_write(grf, i2c->soc_data->grf_offset, value); 1302 1306 if (ret != 0) {
+40 -21
drivers/i2c/busses/i2c-s3c2410.c
··· 76 76 #define QUIRK_HDMIPHY (1 << 1) 77 77 #define QUIRK_NO_GPIO (1 << 2) 78 78 #define QUIRK_POLL (1 << 3) 79 + #define QUIRK_ATOMIC (1 << 4) 79 80 80 81 /* Max time to wait for bus to become idle after a xfer (in us) */ 81 82 #define S3C2410_IDLE_TIMEOUT 5000 ··· 175 174 if (ret) 176 175 i2c->msg_idx = ret; 177 176 178 - if (!(i2c->quirks & QUIRK_POLL)) 177 + if (!(i2c->quirks & (QUIRK_POLL | QUIRK_ATOMIC))) 179 178 wake_up(&i2c->wait); 180 179 } 181 180 ··· 217 216 int tries; 218 217 219 218 for (tries = 50; tries; --tries) { 220 - if (readl(i2c->regs + S3C2410_IICCON) 221 - & S3C2410_IICCON_IRQPEND) { 219 + unsigned long tmp = readl(i2c->regs + S3C2410_IICCON); 220 + 221 + if (!(tmp & S3C2410_IICCON_ACKEN)) { 222 + /* 223 + * Wait a bit for the bus to stabilize, 224 + * delay estimated experimentally. 225 + */ 226 + usleep_range(100, 200); 227 + return true; 228 + } 229 + if (tmp & S3C2410_IICCON_IRQPEND) { 222 230 if (!(readl(i2c->regs + S3C2410_IICSTAT) 223 231 & S3C2410_IICSTAT_LASTBIT)) 224 232 return true; ··· 280 270 281 271 stat |= S3C2410_IICSTAT_START; 282 272 writel(stat, i2c->regs + S3C2410_IICSTAT); 283 - 284 - if (i2c->quirks & QUIRK_POLL) { 285 - while ((i2c->msg_num != 0) && is_ack(i2c)) { 286 - i2c_s3c_irq_nextbyte(i2c, stat); 287 - stat = readl(i2c->regs + S3C2410_IICSTAT); 288 - 289 - if (stat & S3C2410_IICSTAT_ARBITR) 290 - dev_err(i2c->dev, "deal with arbitration loss\n"); 291 - } 292 - } 293 273 } 294 274 295 275 static inline void s3c24xx_i2c_stop(struct s3c24xx_i2c *i2c, int ret) ··· 685 685 static int s3c24xx_i2c_doxfer(struct s3c24xx_i2c *i2c, 686 686 struct i2c_msg *msgs, int num) 687 687 { 688 - unsigned long timeout; 688 + unsigned long timeout = 0; 689 689 int ret; 690 690 691 691 ret = s3c24xx_i2c_set_master(i2c); ··· 704 704 s3c24xx_i2c_enable_irq(i2c); 705 705 s3c24xx_i2c_message_start(i2c, msgs); 706 706 707 - if (i2c->quirks & QUIRK_POLL) { 708 - ret = i2c->msg_idx; 707 + if (i2c->quirks & (QUIRK_POLL | QUIRK_ATOMIC)) { 708 + while ((i2c->msg_num != 0) && is_ack(i2c)) { 709 + unsigned long stat = readl(i2c->regs + S3C2410_IICSTAT); 709 710 710 - if (ret != num) 711 - dev_dbg(i2c->dev, "incomplete xfer (%d)\n", ret); 711 + i2c_s3c_irq_nextbyte(i2c, stat); 712 712 713 - goto out; 713 + stat = readl(i2c->regs + S3C2410_IICSTAT); 714 + if (stat & S3C2410_IICSTAT_ARBITR) 715 + dev_err(i2c->dev, "deal with arbitration loss\n"); 716 + } 717 + } else { 718 + timeout = wait_event_timeout(i2c->wait, i2c->msg_num == 0, HZ * 5); 714 719 } 715 - 716 - timeout = wait_event_timeout(i2c->wait, i2c->msg_num == 0, HZ * 5); 717 720 718 721 ret = i2c->msg_idx; 719 722 ··· 776 773 return -EREMOTEIO; 777 774 } 778 775 776 + static int s3c24xx_i2c_xfer_atomic(struct i2c_adapter *adap, 777 + struct i2c_msg *msgs, int num) 778 + { 779 + struct s3c24xx_i2c *i2c = (struct s3c24xx_i2c *)adap->algo_data; 780 + int ret; 781 + 782 + disable_irq(i2c->irq); 783 + i2c->quirks |= QUIRK_ATOMIC; 784 + ret = s3c24xx_i2c_xfer(adap, msgs, num); 785 + i2c->quirks &= ~QUIRK_ATOMIC; 786 + enable_irq(i2c->irq); 787 + 788 + return ret; 789 + } 790 + 779 791 /* declare our i2c functionality */ 780 792 static u32 s3c24xx_i2c_func(struct i2c_adapter *adap) 781 793 { ··· 801 783 /* i2c bus registration info */ 802 784 static const struct i2c_algorithm s3c24xx_i2c_algorithm = { 803 785 .master_xfer = s3c24xx_i2c_xfer, 786 + .master_xfer_atomic = s3c24xx_i2c_xfer_atomic, 804 787 .functionality = s3c24xx_i2c_func, 805 788 }; 806 789
+1 -1
drivers/i2c/busses/i2c-scmi.c
··· 385 385 smbus_cmi->adapter.owner = THIS_MODULE; 386 386 smbus_cmi->adapter.algo = &acpi_smbus_cmi_algorithm; 387 387 smbus_cmi->adapter.algo_data = smbus_cmi; 388 - smbus_cmi->adapter.class = I2C_CLASS_HWMON | I2C_CLASS_SPD; 388 + smbus_cmi->adapter.class = I2C_CLASS_HWMON; 389 389 smbus_cmi->adapter.dev.parent = &device->dev; 390 390 391 391 ret = i2c_add_adapter(&smbus_cmi->adapter);
+1 -1
drivers/i2c/busses/i2c-sh7760.c
··· 477 477 478 478 id->adap.nr = pdev->id; 479 479 id->adap.algo = &sh7760_i2c_algo; 480 - id->adap.class = I2C_CLASS_HWMON | I2C_CLASS_SPD; 480 + id->adap.class = I2C_CLASS_HWMON; 481 481 id->adap.retries = 3; 482 482 id->adap.algo_data = id; 483 483 id->adap.dev.parent = &pdev->dev;
+2 -2
drivers/i2c/busses/i2c-sibyte.c
··· 142 142 static struct i2c_adapter sibyte_board_adapter[2] = { 143 143 { 144 144 .owner = THIS_MODULE, 145 - .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, 145 + .class = I2C_CLASS_HWMON, 146 146 .algo = NULL, 147 147 .algo_data = &sibyte_board_data[0], 148 148 .nr = 0, ··· 150 150 }, 151 151 { 152 152 .owner = THIS_MODULE, 153 - .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, 153 + .class = I2C_CLASS_HWMON, 154 154 .algo = NULL, 155 155 .algo_data = &sibyte_board_data[1], 156 156 .nr = 1,
+1 -1
drivers/i2c/busses/i2c-sis5595.c
··· 353 353 354 354 static struct i2c_adapter sis5595_adapter = { 355 355 .owner = THIS_MODULE, 356 - .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, 356 + .class = I2C_CLASS_HWMON, 357 357 .algo = &smbus_algorithm, 358 358 }; 359 359
+1 -1
drivers/i2c/busses/i2c-sis630.c
··· 493 493 494 494 static struct i2c_adapter sis630_adapter = { 495 495 .owner = THIS_MODULE, 496 - .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, 496 + .class = I2C_CLASS_HWMON, 497 497 .algo = &smbus_algorithm, 498 498 .retries = 3 499 499 };
+1 -1
drivers/i2c/busses/i2c-sis96x.c
··· 228 228 229 229 static struct i2c_adapter sis96x_adapter = { 230 230 .owner = THIS_MODULE, 231 - .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, 231 + .class = I2C_CLASS_HWMON, 232 232 .algo = &smbus_algorithm, 233 233 }; 234 234
+187 -173
drivers/i2c/busses/i2c-stm32f7.c
··· 50 50 #define STM32F7_I2C_TXDR 0x28 51 51 52 52 /* STM32F7 I2C control 1 */ 53 + #define STM32_I2C_CR1_FMP BIT(24) 53 54 #define STM32F7_I2C_CR1_PECEN BIT(23) 54 55 #define STM32F7_I2C_CR1_ALERTEN BIT(22) 55 56 #define STM32F7_I2C_CR1_SMBHEN BIT(20) ··· 227 226 * @rise_time: Rise time (ns) 228 227 * @fall_time: Fall time (ns) 229 228 * @fmp_clr_offset: Fast Mode Plus clear register offset from set register 229 + * @single_it_line: Only a single IT line is used for both events/errors 230 + * @fmp_cr1_bit: Fast Mode Plus control is done via a bit in CR1 230 231 */ 231 232 struct stm32f7_i2c_setup { 232 233 u32 speed_freq; ··· 236 233 u32 rise_time; 237 234 u32 fall_time; 238 235 u32 fmp_clr_offset; 236 + bool single_it_line; 237 + bool fmp_cr1_bit; 239 238 }; 240 239 241 240 /** ··· 421 416 .rise_time = STM32F7_I2C_RISE_TIME_DEFAULT, 422 417 .fall_time = STM32F7_I2C_FALL_TIME_DEFAULT, 423 418 .fmp_clr_offset = 0x4, 419 + }; 420 + 421 + static const struct stm32f7_i2c_setup stm32mp25_setup = { 422 + .rise_time = STM32F7_I2C_RISE_TIME_DEFAULT, 423 + .fall_time = STM32F7_I2C_FALL_TIME_DEFAULT, 424 + .single_it_line = true, 425 + .fmp_cr1_bit = true, 424 426 }; 425 427 426 428 static inline void stm32f7_i2c_set_bits(void __iomem *reg, u32 mask) ··· 1431 1419 return i == busy; 1432 1420 } 1433 1421 1434 - static irqreturn_t stm32f7_i2c_slave_isr_event(struct stm32f7_i2c_dev *i2c_dev) 1422 + static irqreturn_t stm32f7_i2c_slave_isr_event(struct stm32f7_i2c_dev *i2c_dev, u32 status) 1435 1423 { 1436 1424 void __iomem *base = i2c_dev->base; 1437 - u32 cr2, status, mask; 1425 + u32 cr2, mask; 1438 1426 u8 val; 1439 1427 int ret; 1440 - 1441 - status = readl_relaxed(i2c_dev->base + STM32F7_I2C_ISR); 1442 1428 1443 1429 /* Slave transmitter mode */ 1444 1430 if (status & STM32F7_I2C_ISR_TXIS) { ··· 1504 1494 return IRQ_HANDLED; 1505 1495 } 1506 1496 1507 - static irqreturn_t stm32f7_i2c_isr_event(int irq, void *data) 1497 + static irqreturn_t stm32f7_i2c_handle_isr_errs(struct stm32f7_i2c_dev *i2c_dev, u32 status) 1508 1498 { 1509 - struct stm32f7_i2c_dev *i2c_dev = data; 1510 1499 struct stm32f7_i2c_msg *f7_msg = &i2c_dev->f7_msg; 1511 - struct stm32_i2c_dma *dma = i2c_dev->dma; 1512 - void __iomem *base = i2c_dev->base; 1513 - u32 status, mask; 1514 - int ret = IRQ_HANDLED; 1515 - 1516 - /* Check if the interrupt if for a slave device */ 1517 - if (!i2c_dev->master_mode) { 1518 - ret = stm32f7_i2c_slave_isr_event(i2c_dev); 1519 - return ret; 1520 - } 1521 - 1522 - status = readl_relaxed(i2c_dev->base + STM32F7_I2C_ISR); 1523 - 1524 - /* Tx empty */ 1525 - if (status & STM32F7_I2C_ISR_TXIS) 1526 - stm32f7_i2c_write_tx_data(i2c_dev); 1527 - 1528 - /* RX not empty */ 1529 - if (status & STM32F7_I2C_ISR_RXNE) 1530 - stm32f7_i2c_read_rx_data(i2c_dev); 1531 - 1532 - /* NACK received */ 1533 - if (status & STM32F7_I2C_ISR_NACKF) { 1534 - dev_dbg(i2c_dev->dev, "<%s>: Receive NACK (addr %x)\n", 1535 - __func__, f7_msg->addr); 1536 - writel_relaxed(STM32F7_I2C_ICR_NACKCF, base + STM32F7_I2C_ICR); 1537 - if (i2c_dev->use_dma) { 1538 - stm32f7_i2c_disable_dma_req(i2c_dev); 1539 - dmaengine_terminate_async(dma->chan_using); 1540 - } 1541 - f7_msg->result = -ENXIO; 1542 - } 1543 - 1544 - /* STOP detection flag */ 1545 - if (status & STM32F7_I2C_ISR_STOPF) { 1546 - /* Disable interrupts */ 1547 - if (stm32f7_i2c_is_slave_registered(i2c_dev)) 1548 - mask = STM32F7_I2C_XFER_IRQ_MASK; 1549 - else 1550 - mask = STM32F7_I2C_ALL_IRQ_MASK; 1551 - stm32f7_i2c_disable_irq(i2c_dev, mask); 1552 - 1553 - /* Clear STOP flag */ 1554 - writel_relaxed(STM32F7_I2C_ICR_STOPCF, base + STM32F7_I2C_ICR); 1555 - 1556 - if (i2c_dev->use_dma && !f7_msg->result) { 1557 - ret = IRQ_WAKE_THREAD; 1558 - } else { 1559 - i2c_dev->master_mode = false; 1560 - complete(&i2c_dev->complete); 1561 - } 1562 - } 1563 - 1564 - /* Transfer complete */ 1565 - if (status & STM32F7_I2C_ISR_TC) { 1566 - if (f7_msg->stop) { 1567 - mask = STM32F7_I2C_CR2_STOP; 1568 - stm32f7_i2c_set_bits(base + STM32F7_I2C_CR2, mask); 1569 - } else if (i2c_dev->use_dma && !f7_msg->result) { 1570 - ret = IRQ_WAKE_THREAD; 1571 - } else if (f7_msg->smbus) { 1572 - stm32f7_i2c_smbus_rep_start(i2c_dev); 1573 - } else { 1574 - i2c_dev->msg_id++; 1575 - i2c_dev->msg++; 1576 - stm32f7_i2c_xfer_msg(i2c_dev, i2c_dev->msg); 1577 - } 1578 - } 1579 - 1580 - if (status & STM32F7_I2C_ISR_TCR) { 1581 - if (f7_msg->smbus) 1582 - stm32f7_i2c_smbus_reload(i2c_dev); 1583 - else 1584 - stm32f7_i2c_reload(i2c_dev); 1585 - } 1586 - 1587 - return ret; 1588 - } 1589 - 1590 - static irqreturn_t stm32f7_i2c_isr_event_thread(int irq, void *data) 1591 - { 1592 - struct stm32f7_i2c_dev *i2c_dev = data; 1593 - struct stm32f7_i2c_msg *f7_msg = &i2c_dev->f7_msg; 1594 - struct stm32_i2c_dma *dma = i2c_dev->dma; 1595 - u32 status; 1596 - int ret; 1597 - 1598 - /* 1599 - * Wait for dma transfer completion before sending next message or 1600 - * notity the end of xfer to the client 1601 - */ 1602 - ret = wait_for_completion_timeout(&i2c_dev->dma->dma_complete, HZ); 1603 - if (!ret) { 1604 - dev_dbg(i2c_dev->dev, "<%s>: Timed out\n", __func__); 1605 - stm32f7_i2c_disable_dma_req(i2c_dev); 1606 - dmaengine_terminate_async(dma->chan_using); 1607 - f7_msg->result = -ETIMEDOUT; 1608 - } 1609 - 1610 - status = readl_relaxed(i2c_dev->base + STM32F7_I2C_ISR); 1611 - 1612 - if (status & STM32F7_I2C_ISR_TC) { 1613 - if (f7_msg->smbus) { 1614 - stm32f7_i2c_smbus_rep_start(i2c_dev); 1615 - } else { 1616 - i2c_dev->msg_id++; 1617 - i2c_dev->msg++; 1618 - stm32f7_i2c_xfer_msg(i2c_dev, i2c_dev->msg); 1619 - } 1620 - } else { 1621 - i2c_dev->master_mode = false; 1622 - complete(&i2c_dev->complete); 1623 - } 1624 - 1625 - return IRQ_HANDLED; 1626 - } 1627 - 1628 - static irqreturn_t stm32f7_i2c_isr_error(int irq, void *data) 1629 - { 1630 - struct stm32f7_i2c_dev *i2c_dev = data; 1631 - struct stm32f7_i2c_msg *f7_msg = &i2c_dev->f7_msg; 1500 + u16 addr = f7_msg->addr; 1632 1501 void __iomem *base = i2c_dev->base; 1633 1502 struct device *dev = i2c_dev->dev; 1634 1503 struct stm32_i2c_dma *dma = i2c_dev->dma; 1635 - u32 status; 1636 - 1637 - status = readl_relaxed(i2c_dev->base + STM32F7_I2C_ISR); 1638 1504 1639 1505 /* Bus error */ 1640 1506 if (status & STM32F7_I2C_ISR_BERR) { 1641 - dev_err(dev, "<%s>: Bus error accessing addr 0x%x\n", 1642 - __func__, f7_msg->addr); 1507 + dev_err(dev, "Bus error accessing addr 0x%x\n", addr); 1643 1508 writel_relaxed(STM32F7_I2C_ICR_BERRCF, base + STM32F7_I2C_ICR); 1644 1509 stm32f7_i2c_release_bus(&i2c_dev->adap); 1645 1510 f7_msg->result = -EIO; ··· 1522 1637 1523 1638 /* Arbitration loss */ 1524 1639 if (status & STM32F7_I2C_ISR_ARLO) { 1525 - dev_dbg(dev, "<%s>: Arbitration loss accessing addr 0x%x\n", 1526 - __func__, f7_msg->addr); 1640 + dev_dbg(dev, "Arbitration loss accessing addr 0x%x\n", addr); 1527 1641 writel_relaxed(STM32F7_I2C_ICR_ARLOCF, base + STM32F7_I2C_ICR); 1528 1642 f7_msg->result = -EAGAIN; 1529 1643 } 1530 1644 1531 1645 if (status & STM32F7_I2C_ISR_PECERR) { 1532 - dev_err(dev, "<%s>: PEC error in reception accessing addr 0x%x\n", 1533 - __func__, f7_msg->addr); 1646 + dev_err(dev, "PEC error in reception accessing addr 0x%x\n", addr); 1534 1647 writel_relaxed(STM32F7_I2C_ICR_PECCF, base + STM32F7_I2C_ICR); 1535 1648 f7_msg->result = -EINVAL; 1536 1649 } 1537 1650 1538 1651 if (status & STM32F7_I2C_ISR_ALERT) { 1539 - dev_dbg(dev, "<%s>: SMBus alert received\n", __func__); 1652 + dev_dbg(dev, "SMBus alert received\n"); 1540 1653 writel_relaxed(STM32F7_I2C_ICR_ALERTCF, base + STM32F7_I2C_ICR); 1541 1654 i2c_handle_smbus_alert(i2c_dev->alert->ara); 1542 1655 return IRQ_HANDLED; ··· 1560 1677 complete(&i2c_dev->complete); 1561 1678 1562 1679 return IRQ_HANDLED; 1680 + } 1681 + 1682 + #define STM32F7_ERR_EVENTS (STM32F7_I2C_ISR_BERR | STM32F7_I2C_ISR_ARLO |\ 1683 + STM32F7_I2C_ISR_PECERR | STM32F7_I2C_ISR_ALERT) 1684 + static irqreturn_t stm32f7_i2c_isr_event(int irq, void *data) 1685 + { 1686 + struct stm32f7_i2c_dev *i2c_dev = data; 1687 + u32 status; 1688 + 1689 + status = readl_relaxed(i2c_dev->base + STM32F7_I2C_ISR); 1690 + 1691 + /* 1692 + * Check if the interrupt is for a slave device or related 1693 + * to errors flags (in case of single it line mode) 1694 + */ 1695 + if (!i2c_dev->master_mode || 1696 + (i2c_dev->setup.single_it_line && (status & STM32F7_ERR_EVENTS))) 1697 + return IRQ_WAKE_THREAD; 1698 + 1699 + /* Tx empty */ 1700 + if (status & STM32F7_I2C_ISR_TXIS) 1701 + stm32f7_i2c_write_tx_data(i2c_dev); 1702 + 1703 + /* RX not empty */ 1704 + if (status & STM32F7_I2C_ISR_RXNE) 1705 + stm32f7_i2c_read_rx_data(i2c_dev); 1706 + 1707 + /* Wake up the thread if other flags are raised */ 1708 + if (status & 1709 + (STM32F7_I2C_ISR_NACKF | STM32F7_I2C_ISR_STOPF | 1710 + STM32F7_I2C_ISR_TC | STM32F7_I2C_ISR_TCR)) 1711 + return IRQ_WAKE_THREAD; 1712 + 1713 + return IRQ_HANDLED; 1714 + } 1715 + 1716 + static irqreturn_t stm32f7_i2c_isr_event_thread(int irq, void *data) 1717 + { 1718 + struct stm32f7_i2c_dev *i2c_dev = data; 1719 + struct stm32f7_i2c_msg *f7_msg = &i2c_dev->f7_msg; 1720 + struct stm32_i2c_dma *dma = i2c_dev->dma; 1721 + void __iomem *base = i2c_dev->base; 1722 + u32 status, mask; 1723 + int ret; 1724 + 1725 + status = readl_relaxed(i2c_dev->base + STM32F7_I2C_ISR); 1726 + 1727 + if (!i2c_dev->master_mode) 1728 + return stm32f7_i2c_slave_isr_event(i2c_dev, status); 1729 + 1730 + /* Handle errors in case of this handler is used for events/errors */ 1731 + if (i2c_dev->setup.single_it_line && (status & STM32F7_ERR_EVENTS)) 1732 + return stm32f7_i2c_handle_isr_errs(i2c_dev, status); 1733 + 1734 + /* NACK received */ 1735 + if (status & STM32F7_I2C_ISR_NACKF) { 1736 + dev_dbg(i2c_dev->dev, "<%s>: Receive NACK (addr %x)\n", 1737 + __func__, f7_msg->addr); 1738 + writel_relaxed(STM32F7_I2C_ICR_NACKCF, base + STM32F7_I2C_ICR); 1739 + if (i2c_dev->use_dma) { 1740 + stm32f7_i2c_disable_dma_req(i2c_dev); 1741 + dmaengine_terminate_async(dma->chan_using); 1742 + } 1743 + f7_msg->result = -ENXIO; 1744 + } 1745 + 1746 + if (status & STM32F7_I2C_ISR_TCR) { 1747 + if (f7_msg->smbus) 1748 + stm32f7_i2c_smbus_reload(i2c_dev); 1749 + else 1750 + stm32f7_i2c_reload(i2c_dev); 1751 + } 1752 + 1753 + /* Transfer complete */ 1754 + if (status & STM32F7_I2C_ISR_TC) { 1755 + /* Wait for dma transfer completion before sending next message */ 1756 + if (i2c_dev->use_dma && !f7_msg->result) { 1757 + ret = wait_for_completion_timeout(&i2c_dev->dma->dma_complete, HZ); 1758 + if (!ret) { 1759 + dev_dbg(i2c_dev->dev, "<%s>: Timed out\n", __func__); 1760 + stm32f7_i2c_disable_dma_req(i2c_dev); 1761 + dmaengine_terminate_async(dma->chan_using); 1762 + f7_msg->result = -ETIMEDOUT; 1763 + } 1764 + } 1765 + if (f7_msg->stop) { 1766 + mask = STM32F7_I2C_CR2_STOP; 1767 + stm32f7_i2c_set_bits(base + STM32F7_I2C_CR2, mask); 1768 + } else if (f7_msg->smbus) { 1769 + stm32f7_i2c_smbus_rep_start(i2c_dev); 1770 + } else { 1771 + i2c_dev->msg_id++; 1772 + i2c_dev->msg++; 1773 + stm32f7_i2c_xfer_msg(i2c_dev, i2c_dev->msg); 1774 + } 1775 + } 1776 + 1777 + /* STOP detection flag */ 1778 + if (status & STM32F7_I2C_ISR_STOPF) { 1779 + /* Disable interrupts */ 1780 + if (stm32f7_i2c_is_slave_registered(i2c_dev)) 1781 + mask = STM32F7_I2C_XFER_IRQ_MASK; 1782 + else 1783 + mask = STM32F7_I2C_ALL_IRQ_MASK; 1784 + stm32f7_i2c_disable_irq(i2c_dev, mask); 1785 + 1786 + /* Clear STOP flag */ 1787 + writel_relaxed(STM32F7_I2C_ICR_STOPCF, base + STM32F7_I2C_ICR); 1788 + 1789 + i2c_dev->master_mode = false; 1790 + complete(&i2c_dev->complete); 1791 + } 1792 + 1793 + return IRQ_HANDLED; 1794 + } 1795 + 1796 + static irqreturn_t stm32f7_i2c_isr_error_thread(int irq, void *data) 1797 + { 1798 + struct stm32f7_i2c_dev *i2c_dev = data; 1799 + u32 status; 1800 + 1801 + status = readl_relaxed(i2c_dev->base + STM32F7_I2C_ISR); 1802 + 1803 + return stm32f7_i2c_handle_isr_errs(i2c_dev, status); 1563 1804 } 1564 1805 1565 1806 static int stm32f7_i2c_wait_polling(struct stm32f7_i2c_dev *i2c_dev) ··· 2019 2012 static int stm32f7_i2c_write_fm_plus_bits(struct stm32f7_i2c_dev *i2c_dev, 2020 2013 bool enable) 2021 2014 { 2022 - int ret; 2015 + int ret = 0; 2023 2016 2024 2017 if (i2c_dev->bus_rate <= I2C_MAX_FAST_MODE_FREQ || 2025 - IS_ERR_OR_NULL(i2c_dev->regmap)) 2018 + (!i2c_dev->setup.fmp_cr1_bit && IS_ERR_OR_NULL(i2c_dev->regmap))) 2026 2019 /* Optional */ 2027 2020 return 0; 2028 2021 2029 - if (i2c_dev->fmp_sreg == i2c_dev->fmp_creg) 2030 - ret = regmap_update_bits(i2c_dev->regmap, 2031 - i2c_dev->fmp_sreg, 2032 - i2c_dev->fmp_mask, 2033 - enable ? i2c_dev->fmp_mask : 0); 2034 - else 2035 - ret = regmap_write(i2c_dev->regmap, 2036 - enable ? i2c_dev->fmp_sreg : 2037 - i2c_dev->fmp_creg, 2038 - i2c_dev->fmp_mask); 2022 + if (i2c_dev->setup.fmp_cr1_bit) { 2023 + if (enable) 2024 + stm32f7_i2c_set_bits(i2c_dev->base + STM32F7_I2C_CR1, STM32_I2C_CR1_FMP); 2025 + else 2026 + stm32f7_i2c_clr_bits(i2c_dev->base + STM32F7_I2C_CR1, STM32_I2C_CR1_FMP); 2027 + } else { 2028 + if (i2c_dev->fmp_sreg == i2c_dev->fmp_creg) 2029 + ret = regmap_update_bits(i2c_dev->regmap, i2c_dev->fmp_sreg, 2030 + i2c_dev->fmp_mask, enable ? i2c_dev->fmp_mask : 0); 2031 + else 2032 + ret = regmap_write(i2c_dev->regmap, 2033 + enable ? i2c_dev->fmp_sreg : i2c_dev->fmp_creg, 2034 + i2c_dev->fmp_mask); 2035 + } 2039 2036 2040 2037 return ret; 2041 2038 } ··· 2173 2162 if (!i2c_dev) 2174 2163 return -ENOMEM; 2175 2164 2165 + setup = of_device_get_match_data(&pdev->dev); 2166 + if (!setup) { 2167 + dev_err(&pdev->dev, "Can't get device data\n"); 2168 + return -ENODEV; 2169 + } 2170 + i2c_dev->setup = *setup; 2171 + 2176 2172 i2c_dev->base = devm_platform_get_and_ioremap_resource(pdev, 0, &res); 2177 2173 if (IS_ERR(i2c_dev->base)) 2178 2174 return PTR_ERR(i2c_dev->base); ··· 2188 2170 irq_event = platform_get_irq(pdev, 0); 2189 2171 if (irq_event < 0) 2190 2172 return irq_event; 2191 - 2192 - irq_error = platform_get_irq(pdev, 1); 2193 - if (irq_error < 0) 2194 - return irq_error; 2195 2173 2196 2174 i2c_dev->wakeup_src = of_property_read_bool(pdev->dev.of_node, 2197 2175 "wakeup-source"); ··· 2213 2199 stm32f7_i2c_isr_event_thread, 2214 2200 IRQF_ONESHOT, 2215 2201 pdev->name, i2c_dev); 2216 - if (ret) { 2217 - dev_err(&pdev->dev, "Failed to request irq event %i\n", 2218 - irq_event); 2219 - return ret; 2220 - } 2202 + if (ret) 2203 + return dev_err_probe(&pdev->dev, ret, "Failed to request irq event\n"); 2221 2204 2222 - ret = devm_request_irq(&pdev->dev, irq_error, stm32f7_i2c_isr_error, 0, 2223 - pdev->name, i2c_dev); 2224 - if (ret) { 2225 - dev_err(&pdev->dev, "Failed to request irq error %i\n", 2226 - irq_error); 2227 - return ret; 2228 - } 2205 + if (!i2c_dev->setup.single_it_line) { 2206 + irq_error = platform_get_irq(pdev, 1); 2207 + if (irq_error < 0) 2208 + return irq_error; 2229 2209 2230 - setup = of_device_get_match_data(&pdev->dev); 2231 - if (!setup) { 2232 - dev_err(&pdev->dev, "Can't get device data\n"); 2233 - return -ENODEV; 2210 + ret = devm_request_threaded_irq(&pdev->dev, irq_error, 2211 + NULL, 2212 + stm32f7_i2c_isr_error_thread, 2213 + IRQF_ONESHOT, 2214 + pdev->name, i2c_dev); 2215 + if (ret) 2216 + return dev_err_probe(&pdev->dev, ret, "Failed to request irq error\n"); 2234 2217 } 2235 - i2c_dev->setup = *setup; 2236 2218 2237 2219 ret = stm32f7_i2c_setup_timing(i2c_dev, &i2c_dev->setup); 2238 2220 if (ret) ··· 2236 2226 2237 2227 /* Setup Fast mode plus if necessary */ 2238 2228 if (i2c_dev->bus_rate > I2C_MAX_FAST_MODE_FREQ) { 2239 - ret = stm32f7_i2c_setup_fm_plus_bits(pdev, i2c_dev); 2240 - if (ret) 2241 - return ret; 2229 + if (!i2c_dev->setup.fmp_cr1_bit) { 2230 + ret = stm32f7_i2c_setup_fm_plus_bits(pdev, i2c_dev); 2231 + if (ret) 2232 + return ret; 2233 + } 2234 + 2242 2235 ret = stm32f7_i2c_write_fm_plus_bits(i2c_dev, true); 2243 2236 if (ret) 2244 2237 return ret; ··· 2520 2507 { .compatible = "st,stm32f7-i2c", .data = &stm32f7_setup}, 2521 2508 { .compatible = "st,stm32mp15-i2c", .data = &stm32mp15_setup}, 2522 2509 { .compatible = "st,stm32mp13-i2c", .data = &stm32mp13_setup}, 2510 + { .compatible = "st,stm32mp25-i2c", .data = &stm32mp25_setup}, 2523 2511 {}, 2524 2512 }; 2525 2513 MODULE_DEVICE_TABLE(of, stm32f7_i2c_match);
+1 -1
drivers/i2c/busses/i2c-via.c
··· 70 70 71 71 static struct i2c_adapter vt586b_adapter = { 72 72 .owner = THIS_MODULE, 73 - .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, 73 + .class = I2C_CLASS_HWMON, 74 74 .name = "VIA i2c", 75 75 .algo_data = &bit_data, 76 76 };
+1 -1
drivers/i2c/busses/i2c-viapro.c
··· 304 304 305 305 static struct i2c_adapter vt596_adapter = { 306 306 .owner = THIS_MODULE, 307 - .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, 307 + .class = I2C_CLASS_HWMON, 308 308 .algo = &smbus_algorithm, 309 309 }; 310 310
+34 -83
drivers/i2c/busses/i2c-wmt.c
··· 74 74 #define MCR_APB_96M 7 75 75 #define MCR_APB_166M 12 76 76 77 - #define I2C_MODE_STANDARD 0 78 - #define I2C_MODE_FAST 1 79 - 80 77 #define WMT_I2C_TIMEOUT (msecs_to_jiffies(1000)) 81 78 82 79 struct wmt_i2c_dev { ··· 82 85 struct device *dev; 83 86 void __iomem *base; 84 87 struct clk *clk; 85 - int mode; 88 + u16 tcr; 86 89 int irq; 87 90 u16 cmd_status; 88 91 }; ··· 106 109 static int wmt_check_status(struct wmt_i2c_dev *i2c_dev) 107 110 { 108 111 int ret = 0; 112 + unsigned long wait_result; 113 + 114 + wait_result = wait_for_completion_timeout(&i2c_dev->complete, 115 + msecs_to_jiffies(500)); 116 + if (!wait_result) 117 + return -ETIMEDOUT; 109 118 110 119 if (i2c_dev->cmd_status & ISR_NACK_ADDR) 111 120 ret = -EIO; ··· 122 119 return ret; 123 120 } 124 121 125 - static int wmt_i2c_write(struct i2c_adapter *adap, struct i2c_msg *pmsg, 122 + static int wmt_i2c_write(struct wmt_i2c_dev *i2c_dev, struct i2c_msg *pmsg, 126 123 int last) 127 124 { 128 - struct wmt_i2c_dev *i2c_dev = i2c_get_adapdata(adap); 129 - u16 val, tcr_val; 125 + u16 val, tcr_val = i2c_dev->tcr; 130 126 int ret; 131 - unsigned long wait_result; 132 127 int xfer_len = 0; 133 - 134 - if (!(pmsg->flags & I2C_M_NOSTART)) { 135 - ret = wmt_i2c_wait_bus_not_busy(i2c_dev); 136 - if (ret < 0) 137 - return ret; 138 - } 139 128 140 129 if (pmsg->len == 0) { 141 130 /* ··· 143 148 if (!(pmsg->flags & I2C_M_NOSTART)) { 144 149 val = readw(i2c_dev->base + REG_CR); 145 150 val &= ~CR_TX_END; 146 - writew(val, i2c_dev->base + REG_CR); 147 - 148 - val = readw(i2c_dev->base + REG_CR); 149 151 val |= CR_CPU_RDY; 150 152 writew(val, i2c_dev->base + REG_CR); 151 153 } 152 154 153 155 reinit_completion(&i2c_dev->complete); 154 - 155 - if (i2c_dev->mode == I2C_MODE_STANDARD) 156 - tcr_val = TCR_STANDARD_MODE; 157 - else 158 - tcr_val = TCR_FAST_MODE; 159 156 160 157 tcr_val |= (TCR_MASTER_WRITE | (pmsg->addr & TCR_SLAVE_ADDR_MASK)); 161 158 ··· 160 173 } 161 174 162 175 while (xfer_len < pmsg->len) { 163 - wait_result = wait_for_completion_timeout(&i2c_dev->complete, 164 - msecs_to_jiffies(500)); 165 - 166 - if (wait_result == 0) 167 - return -ETIMEDOUT; 168 - 169 176 ret = wmt_check_status(i2c_dev); 170 177 if (ret) 171 178 return ret; ··· 191 210 return 0; 192 211 } 193 212 194 - static int wmt_i2c_read(struct i2c_adapter *adap, struct i2c_msg *pmsg, 195 - int last) 213 + static int wmt_i2c_read(struct wmt_i2c_dev *i2c_dev, struct i2c_msg *pmsg) 196 214 { 197 - struct wmt_i2c_dev *i2c_dev = i2c_get_adapdata(adap); 198 - u16 val, tcr_val; 215 + u16 val, tcr_val = i2c_dev->tcr; 199 216 int ret; 200 - unsigned long wait_result; 201 217 u32 xfer_len = 0; 202 218 203 - if (!(pmsg->flags & I2C_M_NOSTART)) { 204 - ret = wmt_i2c_wait_bus_not_busy(i2c_dev); 205 - if (ret < 0) 206 - return ret; 207 - } 208 - 209 219 val = readw(i2c_dev->base + REG_CR); 210 - val &= ~CR_TX_END; 211 - writew(val, i2c_dev->base + REG_CR); 220 + val &= ~(CR_TX_END | CR_TX_NEXT_NO_ACK); 212 221 213 - val = readw(i2c_dev->base + REG_CR); 214 - val &= ~CR_TX_NEXT_NO_ACK; 215 - writew(val, i2c_dev->base + REG_CR); 216 - 217 - if (!(pmsg->flags & I2C_M_NOSTART)) { 218 - val = readw(i2c_dev->base + REG_CR); 222 + if (!(pmsg->flags & I2C_M_NOSTART)) 219 223 val |= CR_CPU_RDY; 220 - writew(val, i2c_dev->base + REG_CR); 221 - } 222 224 223 - if (pmsg->len == 1) { 224 - val = readw(i2c_dev->base + REG_CR); 225 + if (pmsg->len == 1) 225 226 val |= CR_TX_NEXT_NO_ACK; 226 - writew(val, i2c_dev->base + REG_CR); 227 - } 227 + 228 + writew(val, i2c_dev->base + REG_CR); 228 229 229 230 reinit_completion(&i2c_dev->complete); 230 - 231 - if (i2c_dev->mode == I2C_MODE_STANDARD) 232 - tcr_val = TCR_STANDARD_MODE; 233 - else 234 - tcr_val = TCR_FAST_MODE; 235 231 236 232 tcr_val |= TCR_MASTER_READ | (pmsg->addr & TCR_SLAVE_ADDR_MASK); 237 233 ··· 221 263 } 222 264 223 265 while (xfer_len < pmsg->len) { 224 - wait_result = wait_for_completion_timeout(&i2c_dev->complete, 225 - msecs_to_jiffies(500)); 226 - 227 - if (!wait_result) 228 - return -ETIMEDOUT; 229 - 230 266 ret = wmt_check_status(i2c_dev); 231 267 if (ret) 232 268 return ret; ··· 228 276 pmsg->buf[xfer_len] = readw(i2c_dev->base + REG_CDR) >> 8; 229 277 xfer_len++; 230 278 231 - if (xfer_len == pmsg->len - 1) { 232 - val = readw(i2c_dev->base + REG_CR); 233 - val |= (CR_TX_NEXT_NO_ACK | CR_CPU_RDY); 234 - writew(val, i2c_dev->base + REG_CR); 235 - } else { 236 - val = readw(i2c_dev->base + REG_CR); 237 - val |= CR_CPU_RDY; 238 - writew(val, i2c_dev->base + REG_CR); 239 - } 279 + val = readw(i2c_dev->base + REG_CR) | CR_CPU_RDY; 280 + if (xfer_len == pmsg->len - 1) 281 + val |= CR_TX_NEXT_NO_ACK; 282 + writew(val, i2c_dev->base + REG_CR); 240 283 } 241 284 242 285 return 0; ··· 242 295 int num) 243 296 { 244 297 struct i2c_msg *pmsg; 245 - int i, is_last; 298 + int i; 246 299 int ret = 0; 300 + struct wmt_i2c_dev *i2c_dev = i2c_get_adapdata(adap); 247 301 248 302 for (i = 0; ret >= 0 && i < num; i++) { 249 - is_last = ((i + 1) == num); 250 - 251 303 pmsg = &msgs[i]; 304 + if (!(pmsg->flags & I2C_M_NOSTART)) { 305 + ret = wmt_i2c_wait_bus_not_busy(i2c_dev); 306 + if (ret < 0) 307 + return ret; 308 + } 309 + 252 310 if (pmsg->flags & I2C_M_RD) 253 - ret = wmt_i2c_read(adap, pmsg, is_last); 311 + ret = wmt_i2c_read(i2c_dev, pmsg); 254 312 else 255 - ret = wmt_i2c_write(adap, pmsg, is_last); 313 + ret = wmt_i2c_write(i2c_dev, pmsg, (i + 1) == num); 256 314 } 257 315 258 316 return (ret < 0) ? ret : i; ··· 311 359 readw(i2c_dev->base + REG_CSR); /* read clear */ 312 360 writew(ISR_WRITE_ALL, i2c_dev->base + REG_ISR); 313 361 314 - if (i2c_dev->mode == I2C_MODE_STANDARD) 315 - writew(SCL_TIMEOUT(128) | TR_STD, i2c_dev->base + REG_TR); 316 - else 362 + if (i2c_dev->tcr == TCR_FAST_MODE) 317 363 writew(SCL_TIMEOUT(128) | TR_HS, i2c_dev->base + REG_TR); 364 + else 365 + writew(SCL_TIMEOUT(128) | TR_STD, i2c_dev->base + REG_TR); 318 366 319 367 return 0; 320 368 } ··· 347 395 return PTR_ERR(i2c_dev->clk); 348 396 } 349 397 350 - i2c_dev->mode = I2C_MODE_STANDARD; 351 398 err = of_property_read_u32(np, "clock-frequency", &clk_rate); 352 399 if (!err && (clk_rate == I2C_MAX_FAST_MODE_FREQ)) 353 - i2c_dev->mode = I2C_MODE_FAST; 400 + i2c_dev->tcr = TCR_FAST_MODE; 354 401 355 402 i2c_dev->dev = &pdev->dev; 356 403
+1 -1
drivers/i2c/busses/scx200_acb.c
··· 427 427 snprintf(adapter->name, sizeof(adapter->name), "%s ACB%d", text, index); 428 428 adapter->owner = THIS_MODULE; 429 429 adapter->algo = &scx200_acb_algorithm; 430 - adapter->class = I2C_CLASS_HWMON | I2C_CLASS_SPD; 430 + adapter->class = I2C_CLASS_HWMON; 431 431 adapter->dev.parent = dev; 432 432 433 433 mutex_init(&iface->mutex);
+12 -1
drivers/i2c/i2c-core-base.c
··· 16 16 #include <linux/acpi.h> 17 17 #include <linux/clk/clk-conf.h> 18 18 #include <linux/completion.h> 19 + #include <linux/debugfs.h> 19 20 #include <linux/delay.h> 20 21 #include <linux/err.h> 21 22 #include <linux/errno.h> ··· 67 66 68 67 static DEFINE_STATIC_KEY_FALSE(i2c_trace_msg_key); 69 68 static bool is_registered; 69 + 70 + static struct dentry *i2c_debugfs_root; 70 71 71 72 int i2c_transfer_trace_reg(void) 72 73 { ··· 692 689 }; 693 690 ATTRIBUTE_GROUPS(i2c_dev); 694 691 695 - struct bus_type i2c_bus_type = { 692 + const struct bus_type i2c_bus_type = { 696 693 .name = "i2c", 697 694 .match = i2c_device_match, 698 695 .probe = i2c_device_probe, ··· 1527 1524 goto out_list; 1528 1525 } 1529 1526 1527 + adap->debugfs = debugfs_create_dir(dev_name(&adap->dev), i2c_debugfs_root); 1528 + 1530 1529 res = i2c_setup_smbus_alert(adap); 1531 1530 if (res) 1532 1531 goto out_reg; ··· 1568 1563 return 0; 1569 1564 1570 1565 out_reg: 1566 + debugfs_remove_recursive(adap->debugfs); 1571 1567 init_completion(&adap->dev_released); 1572 1568 device_unregister(&adap->dev); 1573 1569 wait_for_completion(&adap->dev_released); ··· 1769 1763 pm_runtime_disable(&adap->dev); 1770 1764 1771 1765 i2c_host_notify_irq_teardown(adap); 1766 + 1767 + debugfs_remove_recursive(adap->debugfs); 1772 1768 1773 1769 /* wait until all references to the device are gone 1774 1770 * ··· 2069 2061 2070 2062 is_registered = true; 2071 2063 2064 + i2c_debugfs_root = debugfs_create_dir("i2c", NULL); 2065 + 2072 2066 #ifdef CONFIG_I2C_COMPAT 2073 2067 i2c_adapter_compat_class = class_compat_register("i2c-adapter"); 2074 2068 if (!i2c_adapter_compat_class) { ··· 2109 2099 #ifdef CONFIG_I2C_COMPAT 2110 2100 class_compat_unregister(i2c_adapter_compat_class); 2111 2101 #endif 2102 + debugfs_remove_recursive(i2c_debugfs_root); 2112 2103 bus_unregister(&i2c_bus_type); 2113 2104 tracepoint_synchronize_unregister(); 2114 2105 }
+4 -4
drivers/i2c/i2c-smbus.c
··· 308 308 * target systems are the same. 309 309 * Restrictions to automatic SPD instantiation: 310 310 * - Only works if all filled slots have the same memory type 311 - * - Only works for DDR2, DDR3 and DDR4 for now 312 - * - Only works on systems with 1 to 4 memory slots 311 + * - Only works for DDR, DDR2, DDR3 and DDR4 for now 312 + * - Only works on systems with 1 to 8 memory slots 313 313 */ 314 314 #if IS_ENABLED(CONFIG_DMI) 315 315 void i2c_register_spd(struct i2c_adapter *adap) ··· 354 354 dev_info(&adap->dev, "%d/%d memory slots populated (from DMI)\n", 355 355 dimm_count, slot_count); 356 356 357 - if (slot_count > 4) { 357 + if (slot_count > 8) { 358 358 dev_warn(&adap->dev, 359 - "Systems with more than 4 memory slots not supported yet, not instantiating SPD\n"); 359 + "Systems with more than 8 memory slots not supported yet, not instantiating SPD\n"); 360 360 return; 361 361 } 362 362
+1 -1
drivers/i2c/i2c-stub.c
··· 308 308 309 309 static struct i2c_adapter stub_adapter = { 310 310 .owner = THIS_MODULE, 311 - .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, 311 + .class = I2C_CLASS_HWMON, 312 312 .algo = &smbus_algorithm, 313 313 .name = "SMBus stub driver", 314 314 };
+1 -3
drivers/i2c/muxes/i2c-mux-reg.c
··· 159 159 struct regmux *mux; 160 160 struct i2c_adapter *parent; 161 161 struct resource *res; 162 - unsigned int class; 163 162 int i, ret, nr; 164 163 165 164 mux = devm_kzalloc(&pdev->dev, sizeof(*mux), GFP_KERNEL); ··· 212 213 213 214 for (i = 0; i < mux->data.n_values; i++) { 214 215 nr = mux->data.base_nr ? (mux->data.base_nr + i) : 0; 215 - class = mux->data.classes ? mux->data.classes[i] : 0; 216 216 217 - ret = i2c_mux_add_adapter(muxc, nr, mux->data.values[i], class); 217 + ret = i2c_mux_add_adapter(muxc, nr, mux->data.values[i], 0); 218 218 if (ret) 219 219 goto err_del_mux_adapters; 220 220 }
+1 -1
drivers/media/pci/netup_unidvb/netup_unidvb_i2c.c
··· 289 289 static const struct i2c_adapter netup_i2c_adapter = { 290 290 .owner = THIS_MODULE, 291 291 .name = NETUP_UNIDVB_NAME, 292 - .class = I2C_CLASS_HWMON | I2C_CLASS_SPD, 292 + .class = I2C_CLASS_HWMON, 293 293 .algo = &netup_i2c_algorithm, 294 294 }; 295 295
+3 -2
drivers/misc/eeprom/at24.c
··· 18 18 #include <linux/module.h> 19 19 #include <linux/mutex.h> 20 20 #include <linux/nvmem-provider.h> 21 + #include <linux/of.h> 21 22 #include <linux/of_device.h> 22 23 #include <linux/pm_runtime.h> 23 24 #include <linux/property.h> ··· 243 242 }; 244 243 MODULE_DEVICE_TABLE(i2c, at24_ids); 245 244 246 - static const struct of_device_id at24_of_match[] = { 245 + static const struct of_device_id __maybe_unused at24_of_match[] = { 247 246 { .compatible = "atmel,24c00", .data = &at24_data_24c00 }, 248 247 { .compatible = "atmel,24c01", .data = &at24_data_24c01 }, 249 248 { .compatible = "atmel,24cs01", .data = &at24_data_24cs01 }, ··· 836 835 .driver = { 837 836 .name = "at24", 838 837 .pm = &at24_pm_ops, 839 - .of_match_table = at24_of_match, 838 + .of_match_table = of_match_ptr(at24_of_match), 840 839 .acpi_match_table = ACPI_PTR(at24_acpi_ids), 841 840 }, 842 841 .probe = at24_probe,
+1 -1
drivers/staging/greybus/i2c.c
··· 264 264 /* Looks good; up our i2c adapter */ 265 265 adapter = &gb_i2c_dev->adapter; 266 266 adapter->owner = THIS_MODULE; 267 - adapter->class = I2C_CLASS_HWMON | I2C_CLASS_SPD; 267 + adapter->class = I2C_CLASS_HWMON; 268 268 adapter->algo = &gb_i2c_algorithm; 269 269 270 270 adapter->dev.parent = &gbphy_dev->dev;
-1
drivers/video/fbdev/core/fb_ddc.c
··· 116 116 algo_data->setsda(algo_data->data, 1); 117 117 algo_data->setscl(algo_data->data, 1); 118 118 119 - adapter->class |= I2C_CLASS_DDC; 120 119 return edid; 121 120 } 122 121
-1
drivers/video/fbdev/cyber2000fb.c
··· 1227 1227 strscpy(cfb->ddc_adapter.name, cfb->fb.fix.id, 1228 1228 sizeof(cfb->ddc_adapter.name)); 1229 1229 cfb->ddc_adapter.owner = THIS_MODULE; 1230 - cfb->ddc_adapter.class = I2C_CLASS_DDC; 1231 1230 cfb->ddc_adapter.algo_data = &cfb->ddc_algo; 1232 1231 cfb->ddc_adapter.dev.parent = cfb->fb.device; 1233 1232 cfb->ddc_algo.setsda = cyber2000fb_ddc_setsda;
-1
drivers/video/fbdev/i740fb.c
··· 163 163 strscpy(par->ddc_adapter.name, info->fix.id, 164 164 sizeof(par->ddc_adapter.name)); 165 165 par->ddc_adapter.owner = THIS_MODULE; 166 - par->ddc_adapter.class = I2C_CLASS_DDC; 167 166 par->ddc_adapter.algo_data = &par->ddc_algo; 168 167 par->ddc_adapter.dev.parent = info->device; 169 168 par->ddc_algo.setsda = i740fb_ddc_setsda;
+5 -10
drivers/video/fbdev/matrox/i2c-matroxfb.c
··· 100 100 }; 101 101 102 102 static int i2c_bus_reg(struct i2c_bit_adapter* b, struct matrox_fb_info* minfo, 103 - unsigned int data, unsigned int clock, const char *name, 104 - int class) 103 + unsigned int data, unsigned int clock, const char *name) 105 104 { 106 105 int err; 107 106 ··· 111 112 snprintf(b->adapter.name, sizeof(b->adapter.name), name, 112 113 minfo->fbcon.node); 113 114 i2c_set_adapdata(&b->adapter, b); 114 - b->adapter.class = class; 115 115 b->adapter.algo_data = &b->bac; 116 116 b->adapter.dev.parent = &minfo->pcidev->dev; 117 117 b->bac = matrox_i2c_algo_template; ··· 158 160 case MGA_2164: 159 161 err = i2c_bus_reg(&m2info->ddc1, minfo, 160 162 DDC1B_DATA, DDC1B_CLK, 161 - "DDC:fb%u #0", I2C_CLASS_DDC); 163 + "DDC:fb%u #0"); 162 164 break; 163 165 default: 164 166 err = i2c_bus_reg(&m2info->ddc1, minfo, 165 167 DDC1_DATA, DDC1_CLK, 166 - "DDC:fb%u #0", I2C_CLASS_DDC); 168 + "DDC:fb%u #0"); 167 169 break; 168 170 } 169 171 if (err) 170 172 goto fail_ddc1; 171 173 if (minfo->devflags.dualhead) { 172 - err = i2c_bus_reg(&m2info->ddc2, minfo, 173 - DDC2_DATA, DDC2_CLK, 174 - "DDC:fb%u #1", I2C_CLASS_DDC); 174 + err = i2c_bus_reg(&m2info->ddc2, minfo, DDC2_DATA, DDC2_CLK, "DDC:fb%u #1"); 175 175 if (err == -ENODEV) { 176 176 printk(KERN_INFO "i2c-matroxfb: VGA->TV plug detected, DDC unavailable.\n"); 177 177 } else if (err) 178 178 printk(KERN_INFO "i2c-matroxfb: Could not register secondary output i2c bus. Continuing anyway.\n"); 179 179 /* Register maven bus even on G450/G550 */ 180 - err = i2c_bus_reg(&m2info->maven, minfo, 181 - MAT_DATA, MAT_CLK, "MAVEN:fb%u", 0); 180 + err = i2c_bus_reg(&m2info->maven, minfo, MAT_DATA, MAT_CLK, "MAVEN:fb%u"); 182 181 if (err) 183 182 printk(KERN_INFO "i2c-matroxfb: Could not register Maven i2c bus. Continuing anyway.\n"); 184 183 else {
-1
drivers/video/fbdev/s3fb.c
··· 252 252 strscpy(par->ddc_adapter.name, info->fix.id, 253 253 sizeof(par->ddc_adapter.name)); 254 254 par->ddc_adapter.owner = THIS_MODULE; 255 - par->ddc_adapter.class = I2C_CLASS_DDC; 256 255 par->ddc_adapter.algo_data = &par->ddc_algo; 257 256 par->ddc_adapter.dev.parent = info->device; 258 257 par->ddc_algo.setsda = s3fb_ddc_setsda;
-1
drivers/video/fbdev/tdfxfb.c
··· 1267 1267 1268 1268 strscpy(chan->adapter.name, name, sizeof(chan->adapter.name)); 1269 1269 chan->adapter.owner = THIS_MODULE; 1270 - chan->adapter.class = I2C_CLASS_DDC; 1271 1270 chan->adapter.algo_data = &chan->algo; 1272 1271 chan->adapter.dev.parent = dev; 1273 1272 chan->algo.setsda = tdfxfb_ddc_setsda;
-1
drivers/video/fbdev/tridentfb.c
··· 274 274 strscpy(par->ddc_adapter.name, info->fix.id, 275 275 sizeof(par->ddc_adapter.name)); 276 276 par->ddc_adapter.owner = THIS_MODULE; 277 - par->ddc_adapter.class = I2C_CLASS_DDC; 278 277 par->ddc_adapter.algo_data = &par->ddc_algo; 279 278 par->ddc_adapter.dev.parent = info->device; 280 279 if (is_oldclock(par->chip_id)) { /* not sure if this check is OK */
-1
drivers/video/fbdev/via/via_i2c.c
··· 201 201 sprintf(adapter->name, "viafb i2c io_port idx 0x%02x", 202 202 adap_cfg->ioport_index); 203 203 adapter->owner = THIS_MODULE; 204 - adapter->class = I2C_CLASS_DDC; 205 204 adapter->algo_data = algo; 206 205 if (pdev) 207 206 adapter->dev.parent = &pdev->dev;
+3 -2
include/linux/i2c.h
··· 23 23 #include <linux/swab.h> /* for swab16 */ 24 24 #include <uapi/linux/i2c.h> 25 25 26 - extern struct bus_type i2c_bus_type; 26 + extern const struct bus_type i2c_bus_type; 27 27 extern struct device_type i2c_adapter_type; 28 28 extern struct device_type i2c_client_type; 29 29 ··· 746 746 747 747 struct irq_domain *host_notify_domain; 748 748 struct regulator *bus_regulator; 749 + 750 + struct dentry *debugfs; 749 751 }; 750 752 #define to_i2c_adapter(d) container_of(d, struct i2c_adapter, dev) 751 753 ··· 852 850 853 851 /* i2c adapter classes (bitmask) */ 854 852 #define I2C_CLASS_HWMON (1<<0) /* lm_sensors, ... */ 855 - #define I2C_CLASS_DDC (1<<3) /* DDC bus on graphics adapters */ 856 853 #define I2C_CLASS_SPD (1<<7) /* Memory modules */ 857 854 /* Warn users that the adapter doesn't support classes anymore */ 858 855 #define I2C_CLASS_DEPRECATED (1<<8)
-2
include/linux/platform_data/i2c-mux-reg.h
··· 17 17 * @n_values: Number of multiplexer channels 18 18 * @little_endian: Indicating if the register is in little endian 19 19 * @write_only: Reading the register is not allowed by hardware 20 - * @classes: Optional I2C auto-detection classes 21 20 * @idle: Value to write to mux when idle 22 21 * @idle_in_use: indicate if idle value is in use 23 22 * @reg: Virtual address of the register to switch channel ··· 29 30 int n_values; 30 31 bool little_endian; 31 32 bool write_only; 32 - const unsigned int *classes; 33 33 u32 idle; 34 34 bool idle_in_use; 35 35 void __iomem *reg;
+1 -1
sound/soc/rockchip/rk3399_gru_sound.c
··· 446 446 447 447 struct dailink_match_data { 448 448 const char *compatible; 449 - struct bus_type *bus_type; 449 + const struct bus_type *bus_type; 450 450 }; 451 451 452 452 static const struct dailink_match_data dailink_match[] = {