* [PATCH AUTOSEL 5.8 08/20] i2c: aspeed: Mask IRQ status to relevant bits [not found] <20200921144027.2135390-1-sashal@kernel.org> @ 2020-09-21 14:40 ` Sasha Levin 2020-09-21 14:40 ` [PATCH AUTOSEL 5.8 17/20] i2c: core: Call i2c_acpi_install_space_handler() before i2c_acpi_register_devices() Sasha Levin 2020-09-21 14:40 ` [PATCH AUTOSEL 5.8 19/20] i2c: mediatek: Send i2c master code at more than 1MHz Sasha Levin 2 siblings, 0 replies; 7+ messages in thread From: Sasha Levin @ 2020-09-21 14:40 UTC (permalink / raw) To: linux-kernel, stable Cc: Eddie James, Tao Ren, Wolfram Sang, Sasha Levin, linux-i2c, openbmc, linux-arm-kernel, linux-aspeed From: Eddie James <eajames@linux.ibm.com> [ Upstream commit 1a1d6db23ddacde0b15ea589e9103373e05af8de ] Mask the IRQ status to only the bits that the driver checks. This prevents excessive driver warnings when operating in slave mode when additional bits are set that the driver doesn't handle. Signed-off-by: Eddie James <eajames@linux.ibm.com> Reviewed-by: Tao Ren <rentao.bupt@gmail.com> Signed-off-by: Wolfram Sang <wsa@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org> --- drivers/i2c/busses/i2c-aspeed.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/i2c/busses/i2c-aspeed.c b/drivers/i2c/busses/i2c-aspeed.c index f51702d86a90e..1ad74efcab372 100644 --- a/drivers/i2c/busses/i2c-aspeed.c +++ b/drivers/i2c/busses/i2c-aspeed.c @@ -69,6 +69,7 @@ * These share bit definitions, so use the same values for the enable & * status bits. */ +#define ASPEED_I2CD_INTR_RECV_MASK 0xf000ffff #define ASPEED_I2CD_INTR_SDA_DL_TIMEOUT BIT(14) #define ASPEED_I2CD_INTR_BUS_RECOVER_DONE BIT(13) #define ASPEED_I2CD_INTR_SLAVE_MATCH BIT(7) @@ -604,6 +605,7 @@ static irqreturn_t aspeed_i2c_bus_irq(int irq, void *dev_id) writel(irq_received & ~ASPEED_I2CD_INTR_RX_DONE, bus->base + ASPEED_I2C_INTR_STS_REG); readl(bus->base + ASPEED_I2C_INTR_STS_REG); + irq_received &= ASPEED_I2CD_INTR_RECV_MASK; irq_remaining = irq_received; #if IS_ENABLED(CONFIG_I2C_SLAVE) -- 2.25.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH AUTOSEL 5.8 17/20] i2c: core: Call i2c_acpi_install_space_handler() before i2c_acpi_register_devices() [not found] <20200921144027.2135390-1-sashal@kernel.org> 2020-09-21 14:40 ` [PATCH AUTOSEL 5.8 08/20] i2c: aspeed: Mask IRQ status to relevant bits Sasha Levin @ 2020-09-21 14:40 ` Sasha Levin 2020-10-14 11:09 ` Kieran Bingham 2020-09-21 14:40 ` [PATCH AUTOSEL 5.8 19/20] i2c: mediatek: Send i2c master code at more than 1MHz Sasha Levin 2 siblings, 1 reply; 7+ messages in thread From: Sasha Levin @ 2020-09-21 14:40 UTC (permalink / raw) To: linux-kernel, stable Cc: Hans de Goede, Mika Westerberg, Wolfram Sang, Sasha Levin, linux-i2c From: Hans de Goede <hdegoede@redhat.com> [ Upstream commit 21653a4181ff292480599dad996a2b759ccf050f ] Some ACPI i2c-devices _STA method (which is used to detect if the device is present) use autodetection code which probes which device is present over i2c. This requires the I2C ACPI OpRegion handler to be registered before we enumerate i2c-clients under the i2c-adapter. This fixes the i2c touchpad on the Lenovo ThinkBook 14-IIL and ThinkBook 15 IIL not getting an i2c-client instantiated and thus not working. BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1842039 Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com> Signed-off-by: Wolfram Sang <wsa@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org> --- drivers/i2c/i2c-core-base.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c index 4f09d4c318287..7031393c74806 100644 --- a/drivers/i2c/i2c-core-base.c +++ b/drivers/i2c/i2c-core-base.c @@ -1336,8 +1336,8 @@ static int i2c_register_adapter(struct i2c_adapter *adap) /* create pre-declared device nodes */ of_i2c_register_devices(adap); - i2c_acpi_register_devices(adap); i2c_acpi_install_space_handler(adap); + i2c_acpi_register_devices(adap); if (adap->nr < __i2c_first_dynamic_bus_num) i2c_scan_static_board_info(adap); -- 2.25.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH AUTOSEL 5.8 17/20] i2c: core: Call i2c_acpi_install_space_handler() before i2c_acpi_register_devices() 2020-09-21 14:40 ` [PATCH AUTOSEL 5.8 17/20] i2c: core: Call i2c_acpi_install_space_handler() before i2c_acpi_register_devices() Sasha Levin @ 2020-10-14 11:09 ` Kieran Bingham 2020-10-14 11:23 ` Hans de Goede 0 siblings, 1 reply; 7+ messages in thread From: Kieran Bingham @ 2020-10-14 11:09 UTC (permalink / raw) To: Sasha Levin, linux-kernel, stable Cc: Hans de Goede, Mika Westerberg, Wolfram Sang, linux-i2c Hi Hans, Sasha, As mentioned on https://github.com/linux-surface/kernel/issues/63, I'm afraid I've bisected a boot time issue on the Microsoft Surface Go 2 to this commit on the stable 5.8 tree. The effect as reported there is that the boot process stalls just after loading the usbhid module. Typing, or interacting with the Keyboard (Type Cover) at that point appears to cause usb bus resets, but I don't know if that's a related symptom or just an effect of some underlying root cause. I have been running a linux-media kernel on this device without issue. Is this commit in 5.9? I'll build a vanilla v5.9 kernel and see if it occurs there too. -- Regards Kieran On 21/09/2020 15:40, Sasha Levin wrote: > From: Hans de Goede <hdegoede@redhat.com> > > [ Upstream commit 21653a4181ff292480599dad996a2b759ccf050f ] > > Some ACPI i2c-devices _STA method (which is used to detect if the device > is present) use autodetection code which probes which device is present > over i2c. This requires the I2C ACPI OpRegion handler to be registered > before we enumerate i2c-clients under the i2c-adapter. > > This fixes the i2c touchpad on the Lenovo ThinkBook 14-IIL and > ThinkBook 15 IIL not getting an i2c-client instantiated and thus not > working. > > BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1842039 > Signed-off-by: Hans de Goede <hdegoede@redhat.com> > Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com> > Signed-off-by: Wolfram Sang <wsa@kernel.org> > Signed-off-by: Sasha Levin <sashal@kernel.org> > --- > drivers/i2c/i2c-core-base.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c > index 4f09d4c318287..7031393c74806 100644 > --- a/drivers/i2c/i2c-core-base.c > +++ b/drivers/i2c/i2c-core-base.c > @@ -1336,8 +1336,8 @@ static int i2c_register_adapter(struct i2c_adapter *adap) > > /* create pre-declared device nodes */ > of_i2c_register_devices(adap); > - i2c_acpi_register_devices(adap); > i2c_acpi_install_space_handler(adap); > + i2c_acpi_register_devices(adap); > > if (adap->nr < __i2c_first_dynamic_bus_num) > i2c_scan_static_board_info(adap); > -- Regards -- Kieran ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH AUTOSEL 5.8 17/20] i2c: core: Call i2c_acpi_install_space_handler() before i2c_acpi_register_devices() 2020-10-14 11:09 ` Kieran Bingham @ 2020-10-14 11:23 ` Hans de Goede 2020-10-14 11:52 ` Kieran Bingham 2020-10-14 13:46 ` Hans de Goede 0 siblings, 2 replies; 7+ messages in thread From: Hans de Goede @ 2020-10-14 11:23 UTC (permalink / raw) To: kieran.bingham, Sasha Levin, linux-kernel, stable Cc: Mika Westerberg, Wolfram Sang, linux-i2c Hi, On 10/14/20 1:09 PM, Kieran Bingham wrote: > Hi Hans, Sasha, > > As mentioned on https://github.com/linux-surface/kernel/issues/63, I'm > afraid I've bisected a boot time issue on the Microsoft Surface Go 2 to > this commit on the stable 5.8 tree. > > The effect as reported there is that the boot process stalls just after > loading the usbhid module. > > Typing, or interacting with the Keyboard (Type Cover) at that point > appears to cause usb bus resets, but I don't know if that's a related > symptom or just an effect of some underlying root cause. > > I have been running a linux-media kernel on this device without issue. > > Is this commit in 5.9? I'll build a vanilla v5.9 kernel and see if it > occurs there too. Yes the commit is in 5.9 too. Still would be interesting to see if 5.9 hits this issue too. I guess it will, but as I mentioned in: https://github.com/linux-surface/kernel/issues/63 I do not understand why this commit is causing this issue. So I just checked and the whole acpidump is not using I2C opregion stuff at all: [hans@x1 microsoft-surface-go2]$ ack GenericSerialBus *.dsl [hans@x1 microsoft-surface-go2]$ And there is only 1 _REG handler which is for the embedded-controller. So this patch should not make a difference at all on the GO2, other then maybe a subtle timing difference somewhere ... ? Regards, Hans > On 21/09/2020 15:40, Sasha Levin wrote: >> From: Hans de Goede <hdegoede@redhat.com> >> >> [ Upstream commit 21653a4181ff292480599dad996a2b759ccf050f ] >> >> Some ACPI i2c-devices _STA method (which is used to detect if the device >> is present) use autodetection code which probes which device is present >> over i2c. This requires the I2C ACPI OpRegion handler to be registered >> before we enumerate i2c-clients under the i2c-adapter. >> >> This fixes the i2c touchpad on the Lenovo ThinkBook 14-IIL and >> ThinkBook 15 IIL not getting an i2c-client instantiated and thus not >> working. >> >> BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1842039 >> Signed-off-by: Hans de Goede <hdegoede@redhat.com> >> Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com> >> Signed-off-by: Wolfram Sang <wsa@kernel.org> >> Signed-off-by: Sasha Levin <sashal@kernel.org> >> --- >> drivers/i2c/i2c-core-base.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c >> index 4f09d4c318287..7031393c74806 100644 >> --- a/drivers/i2c/i2c-core-base.c >> +++ b/drivers/i2c/i2c-core-base.c >> @@ -1336,8 +1336,8 @@ static int i2c_register_adapter(struct i2c_adapter *adap) >> >> /* create pre-declared device nodes */ >> of_i2c_register_devices(adap); >> - i2c_acpi_register_devices(adap); >> i2c_acpi_install_space_handler(adap); >> + i2c_acpi_register_devices(adap); >> >> if (adap->nr < __i2c_first_dynamic_bus_num) >> i2c_scan_static_board_info(adap); >> > > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH AUTOSEL 5.8 17/20] i2c: core: Call i2c_acpi_install_space_handler() before i2c_acpi_register_devices() 2020-10-14 11:23 ` Hans de Goede @ 2020-10-14 11:52 ` Kieran Bingham 2020-10-14 13:46 ` Hans de Goede 1 sibling, 0 replies; 7+ messages in thread From: Kieran Bingham @ 2020-10-14 11:52 UTC (permalink / raw) To: Hans de Goede, Sasha Levin, linux-kernel, stable Cc: Mika Westerberg, Wolfram Sang, linux-i2c Hi Hans, On 14/10/2020 12:23, Hans de Goede wrote: > Hi, > > On 10/14/20 1:09 PM, Kieran Bingham wrote: >> Hi Hans, Sasha, >> >> As mentioned on https://github.com/linux-surface/kernel/issues/63, I'm >> afraid I've bisected a boot time issue on the Microsoft Surface Go 2 to >> this commit on the stable 5.8 tree. >> >> The effect as reported there is that the boot process stalls just after >> loading the usbhid module. >> >> Typing, or interacting with the Keyboard (Type Cover) at that point >> appears to cause usb bus resets, but I don't know if that's a related >> symptom or just an effect of some underlying root cause. >> >> I have been running a linux-media kernel on this device without issue. >> >> Is this commit in 5.9? I'll build a vanilla v5.9 kernel and see if it >> occurs there too. > > Yes the commit is in 5.9 too. Still would be interesting to see if 5.9 hits > this issue too. I guess it will, but as I mentioned in: Indeed, I've just tested vanilla 5.9 on a Surface Go 2 and that's broken I'm afraid. Back traces on 5.9 [0] show hung tasks on both the i915_driver_probe, and the tps68470_gpio_probe. I suspect the i915 failure of course is the reason a desktop environment can't be reached, however I was able to ssh in at least ;-) [0] https://paste.debian.net/1167081/ Given that this is now a mainline bug, I'll reply to the mainline patch and suggest a revert there, rather than here on the stable patches. As for fixing it ... I don't have enough visibility of the problem for both this, and the issues that were fixed by this patch. Let me know if there's anything you'd like me to investigate further, or dig into specifically. -- Kieran > https://github.com/linux-surface/kernel/issues/63 > > I do not understand why this commit is causing this issue. > > So I just checked and the whole acpidump is not using I2C > opregion stuff at all: > > [hans@x1 microsoft-surface-go2]$ ack GenericSerialBus *.dsl > [hans@x1 microsoft-surface-go2]$ > > And there is only 1 _REG handler which is for the > embedded-controller. > > So this patch should not make a difference at all on the GO2, > other then maybe a subtle timing difference somewhere ... ? > > Regards, > > Hans > > >> On 21/09/2020 15:40, Sasha Levin wrote: >>> From: Hans de Goede <hdegoede@redhat.com> >>> >>> [ Upstream commit 21653a4181ff292480599dad996a2b759ccf050f ] >>> >>> Some ACPI i2c-devices _STA method (which is used to detect if the device >>> is present) use autodetection code which probes which device is present >>> over i2c. This requires the I2C ACPI OpRegion handler to be registered >>> before we enumerate i2c-clients under the i2c-adapter. >>> >>> This fixes the i2c touchpad on the Lenovo ThinkBook 14-IIL and >>> ThinkBook 15 IIL not getting an i2c-client instantiated and thus not >>> working. >>> >>> BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1842039 >>> Signed-off-by: Hans de Goede <hdegoede@redhat.com> >>> Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com> >>> Signed-off-by: Wolfram Sang <wsa@kernel.org> >>> Signed-off-by: Sasha Levin <sashal@kernel.org> >>> --- >>> drivers/i2c/i2c-core-base.c | 2 +- >>> 1 file changed, 1 insertion(+), 1 deletion(-) >>> >>> diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c >>> index 4f09d4c318287..7031393c74806 100644 >>> --- a/drivers/i2c/i2c-core-base.c >>> +++ b/drivers/i2c/i2c-core-base.c >>> @@ -1336,8 +1336,8 @@ static int i2c_register_adapter(struct >>> i2c_adapter *adap) >>> /* create pre-declared device nodes */ >>> of_i2c_register_devices(adap); >>> - i2c_acpi_register_devices(adap); >>> i2c_acpi_install_space_handler(adap); >>> + i2c_acpi_register_devices(adap); >>> if (adap->nr < __i2c_first_dynamic_bus_num) >>> i2c_scan_static_board_info(adap); >>> >> >> > -- Regards -- Kieran ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH AUTOSEL 5.8 17/20] i2c: core: Call i2c_acpi_install_space_handler() before i2c_acpi_register_devices() 2020-10-14 11:23 ` Hans de Goede 2020-10-14 11:52 ` Kieran Bingham @ 2020-10-14 13:46 ` Hans de Goede 1 sibling, 0 replies; 7+ messages in thread From: Hans de Goede @ 2020-10-14 13:46 UTC (permalink / raw) To: kieran.bingham, Sasha Levin, linux-kernel, stable Cc: Mika Westerberg, Wolfram Sang, linux-i2c Hi all, On 10/14/20 1:23 PM, Hans de Goede wrote: > Hi, > > On 10/14/20 1:09 PM, Kieran Bingham wrote: >> Hi Hans, Sasha, >> >> As mentioned on https://github.com/linux-surface/kernel/issues/63, I'm >> afraid I've bisected a boot time issue on the Microsoft Surface Go 2 to >> this commit on the stable 5.8 tree. >> >> The effect as reported there is that the boot process stalls just after >> loading the usbhid module. >> >> Typing, or interacting with the Keyboard (Type Cover) at that point >> appears to cause usb bus resets, but I don't know if that's a related >> symptom or just an effect of some underlying root cause. >> >> I have been running a linux-media kernel on this device without issue. >> >> Is this commit in 5.9? I'll build a vanilla v5.9 kernel and see if it >> occurs there too. > > Yes the commit is in 5.9 too. Still would be interesting to see if 5.9 hits > this issue too. I guess it will, but as I mentioned in: > > https://github.com/linux-surface/kernel/issues/63 > > I do not understand why this commit is causing this issue. > > So I just checked and the whole acpidump is not using I2C > opregion stuff at all: > > [hans@x1 microsoft-surface-go2]$ ack GenericSerialBus *.dsl > [hans@x1 microsoft-surface-go2]$ > > And there is only 1 _REG handler which is for the > embedded-controller. > > So this patch should not make a difference at all on the GO2, > other then maybe a subtle timing difference somewhere ... ? Thanks to Maximilian Luz sharp eyes this is explained now, despite the name of the i2c_acpi_install_space_handler() it also had a acpi_walk_dep_device_list() call hidden in there, so the "i2c: core: Call i2c_acpi_install_space_handler() before i2c_acpi_register_devices()" also moved that acpi_walk_dep_device_list() earlier. I've given Kieran a patch to test which in essence reverts the part where the acpi_walk_dep_device_list() call is also moved earlier and that fixes the Surface Go 2 not booting. I will submit this fix upstream right away and I'll also send a separate mail to Greg / stable@vger to see if Greg is willing to make an exception and at this to the stable series before it hits Linus' tree. Regards, Hans ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH AUTOSEL 5.8 19/20] i2c: mediatek: Send i2c master code at more than 1MHz [not found] <20200921144027.2135390-1-sashal@kernel.org> 2020-09-21 14:40 ` [PATCH AUTOSEL 5.8 08/20] i2c: aspeed: Mask IRQ status to relevant bits Sasha Levin 2020-09-21 14:40 ` [PATCH AUTOSEL 5.8 17/20] i2c: core: Call i2c_acpi_install_space_handler() before i2c_acpi_register_devices() Sasha Levin @ 2020-09-21 14:40 ` Sasha Levin 2 siblings, 0 replies; 7+ messages in thread From: Sasha Levin @ 2020-09-21 14:40 UTC (permalink / raw) To: linux-kernel, stable Cc: Qii Wang, Andy Shevchenko, Wolfram Sang, Sasha Levin, linux-i2c, linux-arm-kernel, linux-mediatek From: Qii Wang <qii.wang@mediatek.com> [ Upstream commit b44658e755b5a733e9df04449facbc738df09170 ] The master code needs to being sent when the speed is more than I2C_MAX_FAST_MODE_PLUS_FREQ, not I2C_MAX_FAST_MODE_FREQ in the latest I2C-bus specification and user manual. Signed-off-by: Qii Wang <qii.wang@mediatek.com> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com> Signed-off-by: Wolfram Sang <wsa@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org> --- drivers/i2c/busses/i2c-mt65xx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/i2c/busses/i2c-mt65xx.c b/drivers/i2c/busses/i2c-mt65xx.c index deef69e569062..440b12eba1e3c 100644 --- a/drivers/i2c/busses/i2c-mt65xx.c +++ b/drivers/i2c/busses/i2c-mt65xx.c @@ -736,7 +736,7 @@ static int mtk_i2c_set_speed(struct mtk_i2c *i2c, unsigned int parent_clk) for (clk_div = 1; clk_div <= max_clk_div; clk_div++) { clk_src = parent_clk / clk_div; - if (target_speed > I2C_MAX_FAST_MODE_FREQ) { + if (target_speed > I2C_MAX_FAST_MODE_PLUS_FREQ) { /* Set master code speed register */ ret = mtk_i2c_calculate_speed(i2c, clk_src, I2C_MAX_FAST_MODE_FREQ, -- 2.25.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
end of thread, other threads:[~2020-10-14 13:46 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <20200921144027.2135390-1-sashal@kernel.org> 2020-09-21 14:40 ` [PATCH AUTOSEL 5.8 08/20] i2c: aspeed: Mask IRQ status to relevant bits Sasha Levin 2020-09-21 14:40 ` [PATCH AUTOSEL 5.8 17/20] i2c: core: Call i2c_acpi_install_space_handler() before i2c_acpi_register_devices() Sasha Levin 2020-10-14 11:09 ` Kieran Bingham 2020-10-14 11:23 ` Hans de Goede 2020-10-14 11:52 ` Kieran Bingham 2020-10-14 13:46 ` Hans de Goede 2020-09-21 14:40 ` [PATCH AUTOSEL 5.8 19/20] i2c: mediatek: Send i2c master code at more than 1MHz Sasha Levin
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).