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

Pull i2c fixes from Wolfram Sang:
"Two patches from Heiner for the i801 are targeting muxes discovered
while working on some other features. Essentially, there is a
reordering when adding optional slaves and proper cleanup upon
registering a mux device.

Christophe fixes the exit path in the wmt driver that was leaving the
clocks hanging, and the last fix from Tommy avoids false error reports
in IRQ"

* tag 'i2c-for-6.8-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
i2c: aspeed: Fix the dummy irq expected print
i2c: wmt: Fix an error handling path in wmt_i2c_probe()
i2c: i801: Avoid potential double call to gpiod_remove_lookup_table
i2c: i801: Fix using mux_pdev before it's set

Changed files
+10 -3
drivers
+1
drivers/i2c/busses/i2c-aspeed.c
··· 445 445 irq_status); 446 446 irq_handled |= (irq_status & ASPEED_I2CD_INTR_MASTER_ERRORS); 447 447 if (bus->master_state != ASPEED_I2C_MASTER_INACTIVE) { 448 + irq_handled = irq_status; 448 449 bus->cmd_err = ret; 449 450 bus->master_state = ASPEED_I2C_MASTER_INACTIVE; 450 451 goto out_complete;
+4 -2
drivers/i2c/busses/i2c-i801.c
··· 1416 1416 lookup->table[i] = GPIO_LOOKUP(mux_config->gpio_chip, 1417 1417 mux_config->gpios[i], "mux", 0); 1418 1418 gpiod_add_lookup_table(lookup); 1419 - priv->lookup = lookup; 1420 1419 1421 1420 /* 1422 1421 * Register the mux device, we use PLATFORM_DEVID_NONE here ··· 1429 1430 sizeof(struct i2c_mux_gpio_platform_data)); 1430 1431 if (IS_ERR(priv->mux_pdev)) { 1431 1432 gpiod_remove_lookup_table(lookup); 1433 + devm_kfree(dev, lookup); 1432 1434 dev_err(dev, "Failed to register i2c-mux-gpio device\n"); 1435 + } else { 1436 + priv->lookup = lookup; 1433 1437 } 1434 1438 } 1435 1439 ··· 1744 1742 1745 1743 i801_enable_host_notify(&priv->adapter); 1746 1744 1747 - i801_probe_optional_slaves(priv); 1748 1745 /* We ignore errors - multiplexing is optional */ 1749 1746 i801_add_mux(priv); 1747 + i801_probe_optional_slaves(priv); 1750 1748 1751 1749 pci_set_drvdata(dev, priv); 1752 1750
+5 -1
drivers/i2c/busses/i2c-wmt.c
··· 378 378 379 379 err = i2c_add_adapter(adap); 380 380 if (err) 381 - return err; 381 + goto err_disable_clk; 382 382 383 383 platform_set_drvdata(pdev, i2c_dev); 384 384 385 385 return 0; 386 + 387 + err_disable_clk: 388 + clk_disable_unprepare(i2c_dev->clk); 389 + return err; 386 390 } 387 391 388 392 static void wmt_i2c_remove(struct platform_device *pdev)