Skip to content

Commit a76dce0

Browse files
committed
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
2 parents 765e56e + 9b9c0ad commit a76dce0

2 files changed

Lines changed: 11 additions & 7 deletions

File tree

drivers/platform/arm64/lenovo-thinkpad-t14s.c

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ static int t14s_ec_write(void *context, unsigned int reg,
120120
if (ret < 0)
121121
return ret;
122122

123+
fsleep(10000);
123124
return 0;
124125
}
125126

@@ -157,6 +158,7 @@ static int t14s_ec_read(void *context, unsigned int reg,
157158

158159
out:
159160
i2c_unlock_bus(client->adapter, I2C_LOCK_SEGMENT);
161+
fsleep(10000);
160162
return ret;
161163
}
162164

@@ -191,6 +193,8 @@ static int t14s_ec_read_evt(struct t14s_ec *ec, u8 *val)
191193
if (ret < 0)
192194
goto out;
193195

196+
fsleep(10000);
197+
194198
ret = 0;
195199

196200
out:
@@ -557,12 +561,6 @@ static int t14s_ec_probe(struct i2c_client *client)
557561
return dev_err_probe(dev, PTR_ERR(ec->regmap),
558562
"Failed to init regmap\n");
559563

560-
ret = devm_request_threaded_irq(dev, client->irq, NULL,
561-
t14s_ec_irq_handler,
562-
IRQF_ONESHOT, dev_name(dev), ec);
563-
if (ret < 0)
564-
return dev_err_probe(dev, ret, "Failed to get IRQ\n");
565-
566564
ret = t14s_leds_probe(ec);
567565
if (ret < 0)
568566
return ret;
@@ -579,6 +577,12 @@ static int t14s_ec_probe(struct i2c_client *client)
579577
if (ret < 0)
580578
return ret;
581579

580+
ret = devm_request_threaded_irq(dev, client->irq, NULL,
581+
t14s_ec_irq_handler,
582+
IRQF_ONESHOT, dev_name(dev), ec);
583+
if (ret < 0)
584+
return dev_err_probe(dev, ret, "Failed to get IRQ\n");
585+
582586
/*
583587
* Disable wakeup support by default, because the driver currently does
584588
* not support masking any events and the laptop should not wake up when

drivers/platform/x86/intel/punit_ipc.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ static int intel_punit_ipc_probe(struct platform_device *pdev)
250250
} else {
251251
ret = devm_request_irq(&pdev->dev, irq, intel_punit_ioc,
252252
IRQF_NO_SUSPEND, "intel_punit_ipc",
253-
&punit_ipcdev);
253+
punit_ipcdev);
254254
if (ret) {
255255
dev_err(&pdev->dev, "Failed to request irq: %d\n", irq);
256256
return ret;

0 commit comments

Comments
 (0)