public inbox for linux-i2c@vger.kernel.org
 help / color / mirror / Atom feed
From: Mika Westerberg <mika.westerberg@linux.intel.com>
To: correctmost <cmlists@sent.com>
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	dmaengine@vger.kernel.org, regressions@lists.linux.dev,
	vkoul@kernel.org, linux-i2c@vger.kernel.org
Subject: Re: [REGRESSION][BISECTED] Lenovo IdeaPad touchpad does not work when idma64 is present in initramfs
Date: Mon, 2 Feb 2026 08:51:18 +0100	[thread overview]
Message-ID: <20260202075118.GY2275908@black.igk.intel.com> (raw)
In-Reply-To: <53bd143f-525d-4748-af93-3460c9f59d1a@app.fastmail.com>

On Fri, Jan 30, 2026 at 03:18:05AM -0500, correctmost wrote:
> > Lets try this: block LPSS runtime PM. I know you did it in the past but
> > this one does it slightly differently (you commented out the ops, this one
> > prevents the LPSS from runtime suspending). Can you replace previous hack
> > patch with the below?
> 
> After applying that patch, I still see the IRQ message and the touchpad
> doesn't work (full log attached).
> 
> I'm not sure if this is helpful, but it seems like a similar IRQ issue was discussed in the past:
> - https://lore.kernel.org/all/20251102190921.30068-1-hansg@kernel.org/
> - https://github.com/alexpevzner/hotfix-kvadra-touchpad
> - https://bbs.archlinux.org/viewtopic.php?id=302348

Yeah, I think Andy has been part of many of those discussions.

I went through again the logs that you have sent and tried to figure if
there is something we are missing. I noticed couple of things actually.
First of all it seems that even if we get the interrupt storm the I2C works
fine until the touchpad has been reset. Second is that the Linux interrupt
number is different when it "works". This itself does not say much because
it is just a number (not HW number) but since they are allocated sequently
maybe something messes up with that.

The working case:

i2c_hid_acpi i2c-ELAN06FA:00: HID Descriptor: 1e 00 00 01 a3 02 02 00 03 00 1f 00 04 00 00 00 05 00 06 00 f3 04 7e 32 04 00 00 00 00 00
i2c_hid_acpi i2c-ELAN06FA:00: Requesting IRQ: 156
i2c_hid_acpi i2c-ELAN06FA:00: entering i2c_hid_parse
i2c_hid_acpi i2c-ELAN06FA:00: i2c_hid_start_hwreset
i2c_hid_acpi i2c-ELAN06FA:00: i2c_hid_set_power
i2c_hid_acpi i2c-ELAN06FA:00: i2c_hid_xfer: cmd=05 00 00 08
i2c_hid_acpi i2c-ELAN06FA:00: i2c_hid_xfer: cmd=05 00 00 01
i2c_hid_acpi i2c-ELAN06FA:00: i2c_hid_finish_hwreset: waiting...
i2c_hid_acpi i2c-ELAN06FA:00: i2c_hid_finish_hwreset: finished.
i2c_hid_acpi i2c-ELAN06FA:00: asking HID report descriptor
i2c_hid_acpi i2c-ELAN06FA:00: i2c_hid_xfer: cmd=02 00
i2c_hid_acpi i2c-ELAN06FA:00: Report Descriptor: 05 01 09 02 a1 01 85 01 09 01 a1 00 05 09 19 01 29 02 15 00 25 01 75 01 95 02 81 02 95 06 81 03 05 01 09 30 09 31 15 81 25 7f 75 08 95 02 81 06 75 08 95 05 81 03 c0 06 00 ff 09 01 85 0e 09 c5

the non-working case:

i2c_hid_acpi i2c-ELAN06FA:00: HID Descriptor: 1e 00 00 01 a3 02 02 00 03 00 1f 00 04 00 00 00 05 00 06 00 f3 04 7e 32 04 00 00 00 00 00
i2c_hid_acpi i2c-ELAN06FA:00: Requesting IRQ: 155
i2c_hid_acpi i2c-ELAN06FA:00: entering i2c_hid_parse
i2c_hid_acpi i2c-ELAN06FA:00: i2c_hid_start_hwreset
i2c_hid_acpi i2c-ELAN06FA:00: i2c_hid_set_power
i2c_hid_acpi i2c-ELAN06FA:00: i2c_hid_xfer: cmd=05 00 00 08
i2c_hid_acpi i2c-ELAN06FA:00: i2c_hid_xfer: cmd=05 00 00 01
i2c_hid_acpi i2c-ELAN06FA:00: i2c_hid_finish_hwreset: waiting...
i2c_hid_acpi i2c-ELAN06FA:00: i2c_hid_finish_hwreset: finished.
i2c_hid_acpi i2c-ELAN06FA:00: asking HID report descriptor
i2c_hid_acpi i2c-ELAN06FA:00: i2c_hid_xfer: cmd=02 00
i2c_designware i2c_designware.0: i2c_dw_xfer: msgs: 2
i2c_designware i2c_designware.0: enabled=0x1 stat=0x10
i2c_designware i2c_designware.0: enabled=0x1 stat=0x2514
i2c_designware i2c_designware.0: enabled=0x1 stat=0x2514
i2c_designware i2c_designware.0: enabled=0x1 stat=0x2514
i2c_designware i2c_designware.0: enabled=0x1 stat=0x2514
i2c_designware i2c_designware.0: enabled=0x1 stat=0x2514
i2c_designware i2c_designware.0: enabled=0x1 stat=0x2514
i2c_designware i2c_designware.0: enabled=0x1 stat=0x2514
i2c_designware i2c_designware.0: enabled=0x1 stat=0x2514
i2c_designware i2c_designware.0: controller timed out
hid (null): reading report descriptor failed
i2c_hid_acpi i2c-ELAN06FA:00: can't add hid device: -110
i2c_hid_acpi i2c-ELAN06FA:00: probe with driver i2c_hid_acpi failed with error -110

Both cases the HID descriptor read over I2C works fine. It's just after the
reset when reading the HID report descriptor things stall. I left the debug
there above it shows for I2C that MASTER_ON_HOLD is set which means the TX
fifo is empty and the controller is holding the bus which, I think should
not happen.

Notice also IRQ 155 vs 156.

Can you run one more test so that you have the latest debug patch but
comment out in the idma64.c this part:

static irqreturn_t idma64_irq(int irq, void *dev)
{
	struct idma64 *idma64 = dev;
	u32 status = dma_readl(idma64, STATUS_INT);
	u32 status_xfer;
	u32 status_err;
	unsigned short i;

#if 0
	/* Since IRQ may be shared, check if DMA controller is powered on */
	if (status == GENMASK(31, 0))
		return IRQ_NONE;
#endif

	dev_vdbg(idma64->dma.dev, "%s: status=%#x\n", __func__, status);


I would like to see what's the difference in "working" wrt. I2C-HD messages
above. If you can provide full dmesg again? Thanks!

  reply	other threads:[~2026-02-02  7:51 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-16 17:57 [REGRESSION][BISECTED] Lenovo IdeaPad touchpad does not work when idma64 is present in initramfs correctmost
2026-01-12 14:35 ` Andy Shevchenko
2026-01-12 16:52   ` Andy Shevchenko
2026-01-15 22:50   ` correctmost
2026-01-16 10:03     ` Andy Shevchenko
2026-01-16 10:35       ` Andy Shevchenko
2026-01-17  0:25         ` correctmost
2026-01-19 10:39           ` Andy Shevchenko
2026-01-19 10:49             ` Andy Shevchenko
2026-01-20  9:33               ` Andy Shevchenko
2026-01-21  4:56                 ` correctmost
2026-01-21  9:13                   ` Andy Shevchenko
2026-01-21 13:58                     ` Mika Westerberg
2026-01-21 14:54                       ` Andy Shevchenko
2026-01-21 15:02                         ` Mika Westerberg
2026-01-21 15:19                           ` Andy Shevchenko
2026-01-22 11:00                             ` Mika Westerberg
2026-01-22 22:29                               ` correctmost
2026-01-23  6:36                                 ` Mika Westerberg
2026-01-25  3:38                                   ` correctmost
2026-01-26 13:53                                     ` Mika Westerberg
2026-01-27  6:52                                       ` correctmost
2026-01-27  8:42                                         ` Mika Westerberg
2026-01-27 10:11                                           ` correctmost
2026-01-27 10:19                                             ` Mika Westerberg
2026-01-27 10:56                                               ` correctmost
2026-01-27 14:43                                                 ` Mika Westerberg
2026-01-27 15:09                                                   ` Andy Shevchenko
2026-01-28  3:06                                                   ` correctmost
2026-01-23  6:53                                 ` Andy Shevchenko
2026-01-28  9:34                   ` Andy Shevchenko
2026-01-28 10:21                     ` correctmost
2026-01-28 12:31                       ` Mika Westerberg
2026-01-29  4:54                         ` correctmost
2026-01-29  6:58                           ` Mika Westerberg
2026-01-29  7:20                             ` correctmost
2026-01-29 11:56                               ` Mika Westerberg
2026-01-29 13:06                                 ` correctmost
2026-01-30  7:26                                   ` Mika Westerberg
2026-01-30  8:18                                     ` correctmost
2026-02-02  7:51                                       ` Mika Westerberg [this message]
2026-02-02  8:38                                         ` correctmost
2026-02-02 10:22                                           ` Mika Westerberg
2026-02-02 11:16                                             ` correctmost
2026-02-03 10:04                                               ` Mika Westerberg
2026-02-03 12:39                                                 ` correctmost
2026-02-04 12:31                                                   ` Mika Westerberg
2026-02-04 13:11                                                     ` correctmost
2026-02-04 13:19                                                       ` Andy Shevchenko
2026-02-04 14:01                                                         ` correctmost
2026-02-04 15:12                                                           ` correctmost
2026-02-04 15:34                                                             ` Mika Westerberg
2026-02-04 15:53                                                               ` correctmost
2026-02-05 10:31                                                                 ` Mika Westerberg
2026-02-14 20:17                                                                   ` correctmost

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260202075118.GY2275908@black.igk.intel.com \
    --to=mika.westerberg@linux.intel.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=cmlists@sent.com \
    --cc=dmaengine@vger.kernel.org \
    --cc=linux-i2c@vger.kernel.org \
    --cc=regressions@lists.linux.dev \
    --cc=vkoul@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox