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

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

+11 -7
+10 -6
drivers/platform/arm64/lenovo-thinkpad-t14s.c
··· 120 120 if (ret < 0) 121 121 return ret; 122 122 123 + fsleep(10000); 123 124 return 0; 124 125 } 125 126 ··· 158 157 159 158 out: 160 159 i2c_unlock_bus(client->adapter, I2C_LOCK_SEGMENT); 160 + fsleep(10000); 161 161 return ret; 162 162 } 163 163 ··· 192 190 ret = __i2c_transfer(client->adapter, &response, 1); 193 191 if (ret < 0) 194 192 goto out; 193 + 194 + fsleep(10000); 195 195 196 196 ret = 0; 197 197 ··· 561 557 return dev_err_probe(dev, PTR_ERR(ec->regmap), 562 558 "Failed to init regmap\n"); 563 559 564 - ret = devm_request_threaded_irq(dev, client->irq, NULL, 565 - t14s_ec_irq_handler, 566 - IRQF_ONESHOT, dev_name(dev), ec); 567 - if (ret < 0) 568 - return dev_err_probe(dev, ret, "Failed to get IRQ\n"); 569 - 570 560 ret = t14s_leds_probe(ec); 571 561 if (ret < 0) 572 562 return ret; ··· 576 578 ret = t14s_input_probe(ec); 577 579 if (ret < 0) 578 580 return ret; 581 + 582 + ret = devm_request_threaded_irq(dev, client->irq, NULL, 583 + t14s_ec_irq_handler, 584 + IRQF_ONESHOT, dev_name(dev), ec); 585 + if (ret < 0) 586 + return dev_err_probe(dev, ret, "Failed to get IRQ\n"); 579 587 580 588 /* 581 589 * Disable wakeup support by default, because the driver currently does
+1 -1
drivers/platform/x86/intel/punit_ipc.c
··· 250 250 } else { 251 251 ret = devm_request_irq(&pdev->dev, irq, intel_punit_ioc, 252 252 IRQF_NO_SUSPEND, "intel_punit_ipc", 253 - &punit_ipcdev); 253 + punit_ipcdev); 254 254 if (ret) { 255 255 dev_err(&pdev->dev, "Failed to request irq: %d\n", irq); 256 256 return ret;