mirror of
https://github.com/torvalds/linux.git
synced 2025-11-30 23:16:01 +07:00
Merge tag 'platform-drivers-x86-v6.18-5' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86
Pull platform driver fixes from Ilpo Järvinen:
- arm64/thinkpad-t14s-ec:
- Fix IRQ race condition
- Sleep after EC access
- intel/punit_ipc: Fix memory corruption
* tag 'platform-drivers-x86-v6.18-5' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86:
platform/x86: intel: punit_ipc: fix memory corruption
platform: arm64: thinkpad-t14s-ec: sleep after EC access
platform: arm64: thinkpad-t14s-ec: fix IRQ race condition
This commit is contained in:
@@ -120,6 +120,7 @@ static int t14s_ec_write(void *context, unsigned int reg,
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
fsleep(10000);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -157,6 +158,7 @@ static int t14s_ec_read(void *context, unsigned int reg,
|
||||
|
||||
out:
|
||||
i2c_unlock_bus(client->adapter, I2C_LOCK_SEGMENT);
|
||||
fsleep(10000);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -191,6 +193,8 @@ static int t14s_ec_read_evt(struct t14s_ec *ec, u8 *val)
|
||||
if (ret < 0)
|
||||
goto out;
|
||||
|
||||
fsleep(10000);
|
||||
|
||||
ret = 0;
|
||||
|
||||
out:
|
||||
@@ -557,12 +561,6 @@ static int t14s_ec_probe(struct i2c_client *client)
|
||||
return dev_err_probe(dev, PTR_ERR(ec->regmap),
|
||||
"Failed to init regmap\n");
|
||||
|
||||
ret = devm_request_threaded_irq(dev, client->irq, NULL,
|
||||
t14s_ec_irq_handler,
|
||||
IRQF_ONESHOT, dev_name(dev), ec);
|
||||
if (ret < 0)
|
||||
return dev_err_probe(dev, ret, "Failed to get IRQ\n");
|
||||
|
||||
ret = t14s_leds_probe(ec);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
@@ -579,6 +577,12 @@ static int t14s_ec_probe(struct i2c_client *client)
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ret = devm_request_threaded_irq(dev, client->irq, NULL,
|
||||
t14s_ec_irq_handler,
|
||||
IRQF_ONESHOT, dev_name(dev), ec);
|
||||
if (ret < 0)
|
||||
return dev_err_probe(dev, ret, "Failed to get IRQ\n");
|
||||
|
||||
/*
|
||||
* Disable wakeup support by default, because the driver currently does
|
||||
* not support masking any events and the laptop should not wake up when
|
||||
|
||||
@@ -250,7 +250,7 @@ static int intel_punit_ipc_probe(struct platform_device *pdev)
|
||||
} else {
|
||||
ret = devm_request_irq(&pdev->dev, irq, intel_punit_ioc,
|
||||
IRQF_NO_SUSPEND, "intel_punit_ipc",
|
||||
&punit_ipcdev);
|
||||
punit_ipcdev);
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev, "Failed to request irq: %d\n", irq);
|
||||
return ret;
|
||||
|
||||
Reference in New Issue
Block a user