applied to acpi-test (for 2.6.30) thanks, Len Brown, Intel Open Source Technology Center On Wed, 4 Mar 2009, akpm@xxxxxxxxxxxxxxxxxxxx wrote: > From: Frans Pop <elendil@xxxxxxxxx> > > It is possible that the system gets docked or undocked while it's > suspended. Generate an input event on resume to notify user space > if there was a state change. > > As it is a switch, we can generate the event unconditionally; the > input layer will only pass it on if there is an actual change. > > Signed-off-by: Frans Pop <elendil@xxxxxxxxx> > Cc: Matthew Garrett <mjg59@xxxxxxxxxxxxx> > Cc: Len Brown <lenb@xxxxxxxxxx> > Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > --- > > drivers/platform/x86/hp-wmi.c | 25 +++++++++++++++++++++++++ > 1 file changed, 25 insertions(+) > > diff -puN drivers/platform/x86/hp-wmi.c~hp-wmi-notify-of-a-potential-docking-state-change-on-resume drivers/platform/x86/hp-wmi.c > --- a/drivers/platform/x86/hp-wmi.c~hp-wmi-notify-of-a-potential-docking-state-change-on-resume > +++ a/drivers/platform/x86/hp-wmi.c > @@ -53,6 +53,7 @@ MODULE_ALIAS("wmi:5FB7F034-2C63-45e9-BE9 > > static int __init hp_wmi_bios_setup(struct platform_device *device); > static int __exit hp_wmi_bios_remove(struct platform_device *device); > +static int hp_wmi_resume_handler(struct platform_device *device); > > struct bios_args { > u32 signature; > @@ -101,6 +102,7 @@ static struct platform_driver hp_wmi_dri > }, > .probe = hp_wmi_bios_setup, > .remove = hp_wmi_bios_remove, > + .resume = hp_wmi_resume_handler, > }; > > static int hp_wmi_perform_query(int query, int write, int value) > @@ -487,6 +489,29 @@ static int __exit hp_wmi_bios_remove(str > return 0; > } > > +static int hp_wmi_resume_handler(struct platform_device *device) > +{ > + struct key_entry *key; > + > + /* > + * Docking state may have changed while suspended, so trigger > + * an input event for the current state. As this is a switch, > + * the input layer will only actually pass it on if the state > + * changed. > + */ > + for (key = hp_wmi_keymap; key->type != KE_END; key++) { > + switch (key->type) { > + case KE_SW: > + input_report_switch(hp_wmi_input_dev, key->keycode, > + hp_wmi_dock_state()); > + input_sync(hp_wmi_input_dev); > + break; > + } > + } > + > + return 0; > +} > + > static int __init hp_wmi_init(void) > { > int err; > _ > -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html