Re: [PATCH v6 7/8, needs improvement] hid: add suspend/resume hooks for hid drivers

Oliver Neukum
2010-04-11T13:38:34Z

Am Sonntag, 11. April 2010 13:02:26 schrieb Bruno Prémont:
> Where do I find the bluetooth HID bits? I've been searching through kernel
> sources (under drivers/) but did not find bluetooth code trying to
> register a HID device...

net/bluetooth/hidp/core.c

> Below an updated patch which also calls the hook for auto-suspend case.
> The patch compiles but I've not runtime-tested it yet (especially for
> the auto-suspend part, as I'm not sure what should trigger it).

Looks basically good.

> As far as I understand the code, in auto-suspend case if the driver
> sends commands to the device it will have to call usbhid_wait_io().
> Please correct me if I'm wrong!

No, only if it wants to know that the command has finished.
hid_submit_out() will queue IO in the autosuspended case
and schedule a resumption.

> @@ -629,6 +632,11 @@ struct hid_driver {
> int (*input_mapped)(struct hid_device *hdev,
> struct hid_input *hidinput, struct hid_field *field,
> struct hid_usage *usage, unsigned long **bit, int *max);
> +#ifdef CONFIG_PM
> + int (*suspend)(struct hid_device *hdev, int auto_suspend);

It would be better to pass the full message.

Regards
Oliver