On Fri, Jan 26, 2024 at 05:23:30PM +0100, Johan Hovold wrote: > On Fri, Jan 26, 2024 at 06:53:46AM -0800, Bjorn Andersson wrote: > > On Fri, Jan 26, 2024 at 03:31:02PM +0100, Johan Hovold wrote: > > > On Fri, Jan 26, 2024 at 01:02:32PM +0000, Daniel Thompson wrote: > > > > > In short it looks like the delays make the difference and, even a short > > > > delay, can fix the problem. > > > > > > Right, but since the suppliers are left enabled by the bootloader (and > > > never disabled by the kernel), that only begs the question of why this > > > makes a difference. > > > > You're right, the supply is kept on by other things, so this isn't the > > problem. > > > > > Without the delay, the other HID devices are probing (successfully) > > > slightly before, but essentially in parallel with the touchscreen while > > > using the same resources. Is that causing trouble somehow? > > > > The difference to those other HID devices is GPIO 99 - the reset pin, > > which is configured pull down input from boot - i.e. the chip is held in > > reset. > > > > When the HID device is being probed, pinctrl applies &ts0_default starts > > driving it high, bringing the device out of reset. But insufficient time > > is given for the chip to come up so the I2C read fails. > > Ah, that's it. > > You should drop that 'output-high' from the pin config as part of this > patch to avoid toggling the reset line twice at boot. > Sounds reasonable, let's fix that while we're at it... > Looks like we have the same problem on the CRD as well. There the > touchscreen still works, possibly because it has been enabled by the > boot firmware or simply because that touchscreen can handle a shorter > delay. > I only poke the CRD remotely, forgot that it had touchscreen. Let's bake a patch for that as well... > Where exactly did you find those delay values in the ACPI tables? I > couldn't seem to find anything in the decompiled DSDT. > The PEP sequence for the touchscreen device. Regards, Bjorn > > If you later try to probe again, 200ms has elapsed since the reset was > > deasserted (driven high). > > Right. > > Johan