Hi, Josh Triplett <j...@joshtriplett.org> writes: > On Mon, Dec 07, 2015 at 03:03:40PM -0600, Felipe Balbi wrote: >> Josh Triplett <j...@joshtriplett.org> writes: >> >> > Looking at the sysfs path for the input device as shown in dmesg, >> >> > /sys/devices/pci0000\:00/0000\:00\:14.0/usb2/2-3/2-3.1/2-3.1.2/2-3.1.2\:1.1/supports_autosuspend >> >> > did say "1". However, the device didn't actually appear to have >> >> > autosuspend *enabled*. >> >> > >> >> > I'd appreciate any suggestions for how to debug this issue. >> >> >> >> what does 'control' on the power directory show ? >> > I don't have a file "control" in the power directory when plugged in >> > through >> > the dock. The contents of all the files under power when plugged in via >> > dock: >> >> huh ??? >> >> > ==> >> > /sys/devices/pci0000:00/0000:00:14.0/usb2/2-2/2-2:1.1/0003:17EF:6009.002D/power/control >> > <== >> > auto >> >> here's one enabling autosuspend >> >> > ==> >> > /sys/devices/pci0000:00/0000:00:14.0/usb2/2-2/2-2:1.1/0003:17EF:6009.002D/power/control >> > <== >> > auto >> >> and another, also enabling runtime pm. Change both of these from 'auto' >> to 'on' and see if that helps. > > Copy/paste error; notice that both of those have the same path.
okay. > The following files appear under the power directory when plugged in via > the dock: if those are not enabled, then the device doesn't have pm_runtime callbacks, see: int dpm_sysfs_add(struct device *dev) { int rc; rc = sysfs_create_group(&dev->kobj, &pm_attr_group); if (rc) return rc; if (pm_runtime_callbacks_present(dev)) { rc = sysfs_merge_group(&dev->kobj, &pm_runtime_attr_group); if (rc) goto err_out; } if (device_can_wakeup(dev)) { rc = sysfs_merge_group(&dev->kobj, &pm_wakeup_attr_group); if (rc) goto err_runtime; } if (dev->power.set_latency_tolerance) { rc = sysfs_merge_group(&dev->kobj, &pm_qos_latency_tolerance_attr_group); if (rc) goto err_wakeup; } return 0; err_wakeup: sysfs_unmerge_group(&dev->kobj, &pm_wakeup_attr_group); err_runtime: sysfs_unmerge_group(&dev->kobj, &pm_runtime_attr_group); err_out: sysfs_remove_group(&dev->kobj, &pm_attr_group); return rc; } It seems like usbcore always calls pm_runtime_no_callbacks() (which makes pm_runtime_callbacks_present() above fail) for all interfaces, but I can't seem to find where that's undone. Alan, any hints ? > ~$ head > /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1/2-3.1.2/2-3.1.2:1.1/power/* > ==> > /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1/2-3.1.2/2-3.1.2:1.1/power/async > <== > enabled enabled > ==> > /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1/2-3.1.2/2-3.1.2:1.1/power/runtime_active_kids > <== > 0 > > ==> > /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1/2-3.1.2/2-3.1.2:1.1/power/runtime_enabled > <== > enabled > > ==> > /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1/2-3.1.2/2-3.1.2:1.1/power/runtime_status > <== > suspended > > ==> > /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1/2-3.1.2/2-3.1.2:1.1/power/runtime_usage > <== > 0 > > > Notice that no file named "control" exists. > > By contrast, the following files appear under the power directory when > plugged in directly: > > ~$ head > /sys/devices/pci0000:00/0000:00:14.0/usb2/2-2/2-2:1.1/0003:17EF:6009.0032/power/* > ==> > /sys/devices/pci0000:00/0000:00:14.0/usb2/2-2/2-2:1.1/0003:17EF:6009.0032/power/async > <== > disabled disabled :-) see if setting the other case to disabled changes anything. -- balbi
signature.asc
Description: PGP signature