lkml.org 
[lkml]   [2022]   [May]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
SubjectRe: hid-sensor-hub 001F:8087:0AC2.0002: timeout waiting for response from ISHTP device
From
Date
Hi Paul,

Attached a diff. Please use git apply and build kernel. And attach
dmesg. I want to see where did it fail.

Thanks,
Srinivas

On Wed, 2022-05-18 at 06:07 +0200, Paul Menzel wrote:
> Dear Srinivas,
>
>
> Thank you for your reply.
>
> Am 13.05.22 um 01:07 schrieb srinivas pandruvada:
>
> > On Thu, 2022-05-12 at 17:01 +0200, Paul Menzel wrote:
>
> > > On the Dell XPS 13 9310, firmware 2.2.0 04/06/2021, with Debian
> > > sid/unstable, Linux 5.17.3 logs a lot of the messages below:
> > >
> > >       timeout waiting for response from ISHTP device
> > >
> > > Please find the output of `dmesg` attached.
> > >
> > It seems that sensor FW is not responding after resume.
> >
> > What is
> > # cat /sys/power/mem_sleep
>
>      $ cat /sys/power/mem_sleep
>      [s2idle]
>
>
> Kind regards,
>
> Paul
>
>
> PS: I think, Intel should have a Dell XPS 13 9310 available in some
> test
> labs. If not, Dell (Cc) should be able to provide access to one.

diff --git a/drivers/hid/intel-ish-hid/ipc/pci-ish.c b/drivers/hid/intel-ish-hid/ipc/pci-ish.c
index 8e9d9450cb83..5b811fa8f15b 100644
--- a/drivers/hid/intel-ish-hid/ipc/pci-ish.c
+++ b/drivers/hid/intel-ish-hid/ipc/pci-ish.c
@@ -263,6 +263,9 @@ static void __maybe_unused ish_resume_handler(struct work_struct *work)
struct pci_dev *pdev = to_pci_dev(ish_resume_device);
struct ishtp_device *dev = pci_get_drvdata(pdev);
uint32_t fwsts = dev->ops->get_fw_status(dev);
+ struct device *device = &pdev->dev;
+
+ dev_info(device, "%s suspend_flag:%d fw_status:%x\n", __func__, dev->suspend_flag, IPC_IS_ISH_ILUP(fwsts));

if (ish_should_leave_d0i3(pdev) && !dev->suspend_flag
&& IPC_IS_ISH_ILUP(fwsts)) {
@@ -283,8 +286,10 @@ static void __maybe_unused ish_resume_handler(struct work_struct *work)
* If the flag is not cleared, something is wrong with ISH FW.
* So on resume, need to go through init sequence again.
*/
- if (dev->resume_flag)
+ if (dev->resume_flag) {
+ dev_info(device, "%s resume_flag:%d will call ish_init\n", __func__, dev->resume_flag);
ish_init(dev);
+ }
} else {
/*
* Resume from the D3, full reboot of ISH processor will happen,
@@ -307,7 +312,9 @@ static int __maybe_unused ish_suspend(struct device *device)
struct pci_dev *pdev = to_pci_dev(device);
struct ishtp_device *dev = pci_get_drvdata(pdev);

+ dev_info(device, "%s\n", __func__);
if (ish_should_enter_d0i3(pdev)) {
+ dev_info(device, "%s suspend_flag:%d\n", __func__, dev->suspend_flag);
/*
* If previous suspend hasn't been asnwered then ISH is likely
* dead, don't attempt nested notification
@@ -326,12 +333,14 @@ static int __maybe_unused ish_suspend(struct device *device)
msecs_to_jiffies(25));

if (dev->suspend_flag) {
+ dev_info(device, "%s suspend_flag:%d FW halted\n", __func__, dev->suspend_flag);
/*
* It looks like FW halt, clear the DMA bit, and put
* ISH into D3, and FW would reset on resume.
*/
ish_disable_dma(dev);
} else {
+ dev_info(device, "%s suspend_flag:%d S0ix suspended\n", __func__, dev->suspend_flag);
/*
* Save state so PCI core will keep the device at D0,
* the ISH would enter D0i3
\
 
 \ /
  Last update: 2022-05-18 17:42    [W:0.063 / U:0.256 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site