mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-09 06:43:09 +00:00
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. -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEOZGx6rniZ1Gk92RdFA3kzBSgKbYFAmXsmS0ACgkQFA3kzBSg Kbb0JBAAog+Ih7J/V0CB915BLvAtO08vUnn9bzsEIunWSp/lY+FhGhrJ2fX0gW3/ 3UnFoH3zs5T6z8gxpc8QdkJ81v5pqjvkap4gKfT25suT5FUpcu9La65jMI+dITR1 vmYbVZlpNqyXuRQG/RVEPJV6vttjkbt7YPcCYx0lhlcYsENt7+NoW5fEHj4gVqST TP4q2UaTsSbItDaU36cdGDNx/makL8TZgkoAunQ+vIPNUT6ssdeCf1+DwAIrbtjo I7LwtMnraHf53rw3+HVJLabV2YhRNpt6NlPPwFS5s/pFfPdSIJSzsplviNJ4sWMU /K9XBPwBjk8GTE2loe2dDwaZsMo2U+MMA8x3t8T2WND9Q8jcz0BLj1sNRT2yB49g KhBoUI7moSViYp/6xibiO7879/w5rm3rOBfv5nJDSbp/Hm5J9wW4ioDPy1eSLmsG Tnj+wJHQ+BY/s/9jz2sSasFFJi2UTufusWbluc00C1iBkeDbY2Gas/ZTu85ql3PC hI4AWLOt9OYhQ2pqI/cF+MV+BwtXHs62AkS3o16VBZcwJuCxZarecIcMCBcuhCxh FNv/fSR39OJOlwe+wiX6M0XuR1GxfnEdgCndD2wDggRNyVBfFlhh1h/CeWsnpmsW 9lNnfVPFHZ39RTp9HazZB5QPssXkkg9cEelXKZE4z4XOwG+OolQ= =8AoZ -----END PGP SIGNATURE----- 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
This commit is contained in:
commit
005f6f34bd
@ -445,6 +445,7 @@ static u32 aspeed_i2c_master_irq(struct aspeed_i2c_bus *bus, u32 irq_status)
|
||||
irq_status);
|
||||
irq_handled |= (irq_status & ASPEED_I2CD_INTR_MASTER_ERRORS);
|
||||
if (bus->master_state != ASPEED_I2C_MASTER_INACTIVE) {
|
||||
irq_handled = irq_status;
|
||||
bus->cmd_err = ret;
|
||||
bus->master_state = ASPEED_I2C_MASTER_INACTIVE;
|
||||
goto out_complete;
|
||||
|
@ -1416,7 +1416,6 @@ static void i801_add_mux(struct i801_priv *priv)
|
||||
lookup->table[i] = GPIO_LOOKUP(mux_config->gpio_chip,
|
||||
mux_config->gpios[i], "mux", 0);
|
||||
gpiod_add_lookup_table(lookup);
|
||||
priv->lookup = lookup;
|
||||
|
||||
/*
|
||||
* Register the mux device, we use PLATFORM_DEVID_NONE here
|
||||
@ -1430,7 +1429,10 @@ static void i801_add_mux(struct i801_priv *priv)
|
||||
sizeof(struct i2c_mux_gpio_platform_data));
|
||||
if (IS_ERR(priv->mux_pdev)) {
|
||||
gpiod_remove_lookup_table(lookup);
|
||||
devm_kfree(dev, lookup);
|
||||
dev_err(dev, "Failed to register i2c-mux-gpio device\n");
|
||||
} else {
|
||||
priv->lookup = lookup;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1742,9 +1744,9 @@ static int i801_probe(struct pci_dev *dev, const struct pci_device_id *id)
|
||||
|
||||
i801_enable_host_notify(&priv->adapter);
|
||||
|
||||
i801_probe_optional_slaves(priv);
|
||||
/* We ignore errors - multiplexing is optional */
|
||||
i801_add_mux(priv);
|
||||
i801_probe_optional_slaves(priv);
|
||||
|
||||
pci_set_drvdata(dev, priv);
|
||||
|
||||
|
@ -378,11 +378,15 @@ static int wmt_i2c_probe(struct platform_device *pdev)
|
||||
|
||||
err = i2c_add_adapter(adap);
|
||||
if (err)
|
||||
return err;
|
||||
goto err_disable_clk;
|
||||
|
||||
platform_set_drvdata(pdev, i2c_dev);
|
||||
|
||||
return 0;
|
||||
|
||||
err_disable_clk:
|
||||
clk_disable_unprepare(i2c_dev->clk);
|
||||
return err;
|
||||
}
|
||||
|
||||
static void wmt_i2c_remove(struct platform_device *pdev)
|
||||
|
Loading…
Reference in New Issue
Block a user