static void __exit dell_wmi_exit(void) { if (wmi_has_guid(DELL_EVENT_GUID)) { wmi_remove_notify_handler(DELL_EVENT_GUID); input_unregister_device(dell_wmi_input_dev); } }
static void __exit gb_wmi_exit(void) { if (wmi_has_guid(GB_WMI_EVENT_GUID)) { wmi_remove_notify_handler(GB_WMI_EVENT_GUID); sparse_keymap_free(gb_wmi_input_dev); input_unregister_device(gb_wmi_input_dev); } }
static void __exit msi_wmi_exit(void) { if (event_wmi) { wmi_remove_notify_handler(event_wmi->guid); input_unregister_device(msi_wmi_input_dev); } backlight_device_unregister(backlight); }
static void __exit dell_wmi_aio_exit(void) { const char *guid; guid = dell_wmi_aio_find(); wmi_remove_notify_handler(guid); sparse_keymap_free(dell_wmi_aio_input_dev); input_unregister_device(dell_wmi_aio_input_dev); }
static void __exit msi_wmi_exit(void) { if (wmi_has_guid(MSIWMI_EVENT_GUID)) { wmi_remove_notify_handler(MSIWMI_EVENT_GUID); sparse_keymap_free(msi_wmi_input_dev); input_unregister_device(msi_wmi_input_dev); backlight_device_unregister(backlight); } }
static int __init hp_wmi_input_setup(void) { acpi_status status; int err, val; hp_wmi_input_dev = input_allocate_device(); if (!hp_wmi_input_dev) return -ENOMEM; hp_wmi_input_dev->name = "HP WMI hotkeys"; hp_wmi_input_dev->phys = "wmi/input0"; hp_wmi_input_dev->id.bustype = BUS_HOST; __set_bit(EV_SW, hp_wmi_input_dev->evbit); /* Dock */ val = hp_wmi_hw_state(HPWMI_DOCK_MASK); if (!(val < 0)) { __set_bit(SW_DOCK, hp_wmi_input_dev->swbit); input_report_switch(hp_wmi_input_dev, SW_DOCK, val); } /* Tablet mode */ val = hp_wmi_hw_state(HPWMI_TABLET_MASK); if (!(val < 0)) { __set_bit(SW_TABLET_MODE, hp_wmi_input_dev->swbit); input_report_switch(hp_wmi_input_dev, SW_TABLET_MODE, val); } err = sparse_keymap_setup(hp_wmi_input_dev, hp_wmi_keymap, NULL); if (err) goto err_free_dev; /* Set initial hardware state */ input_sync(hp_wmi_input_dev); if (!hp_wmi_bios_2009_later() && hp_wmi_bios_2008_later()) hp_wmi_enable_hotkeys(); status = wmi_install_notify_handler(HPWMI_EVENT_GUID, hp_wmi_notify, NULL); if (ACPI_FAILURE(status)) { err = -EIO; goto err_free_dev; } err = input_register_device(hp_wmi_input_dev); if (err) goto err_uninstall_notifier; return 0; err_uninstall_notifier: wmi_remove_notify_handler(HPWMI_EVENT_GUID); err_free_dev: input_free_device(hp_wmi_input_dev); return err; }
static void __exit dell_wmi_aio_exit(void) { char *guid; guid = dell_wmi_aio_find(); if (guid) { wmi_remove_notify_handler(guid); input_unregister_device(dell_wmi_aio_input_dev); } }
static int __init msi_wmi_init(void) { int err; int i; for (i = 0; i < ARRAY_SIZE(event_wmis); i++) { if (!wmi_has_guid(event_wmis[i].guid)) continue; err = msi_wmi_input_setup(); if (err) { pr_err("Unable to setup input device\n"); return err; } err = wmi_install_notify_handler(event_wmis[i].guid, msi_wmi_notify, NULL); if (ACPI_FAILURE(err)) { pr_err("Unable to setup WMI notify handler\n"); goto err_free_input; } pr_debug("Event handler installed\n"); event_wmi = &event_wmis[i]; break; } if (wmi_has_guid(MSIWMI_BIOS_GUID) && acpi_video_get_backlight_type() == acpi_backlight_vendor) { err = msi_wmi_backlight_setup(); if (err) { pr_err("Unable to setup backlight device\n"); goto err_uninstall_handler; } pr_debug("Backlight device created\n"); } if (!event_wmi && !backlight) { pr_err("This machine doesn't have neither MSI-hotkeys nor backlight through WMI\n"); return -ENODEV; } return 0; err_uninstall_handler: if (event_wmi) wmi_remove_notify_handler(event_wmi->guid); err_free_input: if (event_wmi) input_unregister_device(msi_wmi_input_dev); return err; }
static int __init msi_wmi_init(void) { int err; if (!wmi_has_guid(MSIWMI_EVENT_GUID)) { pr_err("This machine doesn't have MSI-hotkeys through WMI\n"); return -ENODEV; } err = wmi_install_notify_handler(MSIWMI_EVENT_GUID, msi_wmi_notify, NULL); if (ACPI_FAILURE(err)) return -EINVAL; err = msi_wmi_input_setup(); if (err) goto err_uninstall_notifier; if (!acpi_video_backlight_support()) { struct backlight_properties props; memset(&props, 0, sizeof(struct backlight_properties)); props.type = BACKLIGHT_PLATFORM; props.max_brightness = ARRAY_SIZE(backlight_map) - 1; backlight = backlight_device_register(DRV_NAME, NULL, NULL, &msi_backlight_ops, &props); if (IS_ERR(backlight)) { err = PTR_ERR(backlight); goto err_free_input; } err = bl_get(NULL); if (err < 0) goto err_free_backlight; backlight->props.brightness = err; } pr_debug("Event handler installed\n"); return 0; err_free_backlight: backlight_device_unregister(backlight); err_free_input: sparse_keymap_free(msi_wmi_input_dev); input_unregister_device(msi_wmi_input_dev); err_uninstall_notifier: wmi_remove_notify_handler(MSIWMI_EVENT_GUID); return err; }
static int __init msi_wmi_init(void) { int err; if (!wmi_has_guid(MSIWMI_EVENT_GUID)) { printk(KERN_ERR "This machine doesn't have MSI-hotkeys through WMI\n"); return -ENODEV; } err = wmi_install_notify_handler(MSIWMI_EVENT_GUID, msi_wmi_notify, NULL); if (err) return -EINVAL; err = msi_wmi_input_setup(); if (err) goto err_uninstall_notifier; if (!acpi_video_backlight_support()) { backlight = backlight_device_register(DRV_NAME, NULL, NULL, &msi_backlight_ops); if (IS_ERR(backlight)) goto err_free_input; backlight->props.max_brightness = ARRAY_SIZE(backlight_map) - 1; err = bl_get(NULL); if (err < 0) goto err_free_backlight; backlight->props.brightness = err; } dprintk("Event handler installed\n"); return 0; err_free_backlight: backlight_device_unregister(backlight); err_free_input: input_unregister_device(msi_wmi_input_dev); err_uninstall_notifier: wmi_remove_notify_handler(MSIWMI_EVENT_GUID); return err; }
static int __init toshiba_wmi_input_setup(void) { acpi_status status; int err; toshiba_wmi_input_dev = input_allocate_device(); if (!toshiba_wmi_input_dev) return -ENOMEM; toshiba_wmi_input_dev->name = "Toshiba WMI hotkeys"; toshiba_wmi_input_dev->phys = "wmi/input0"; toshiba_wmi_input_dev->id.bustype = BUS_HOST; err = sparse_keymap_setup(toshiba_wmi_input_dev, toshiba_wmi_keymap, NULL); if (err) goto err_free_dev; status = wmi_install_notify_handler(TOSHIBA_WMI_EVENT_GUID, toshiba_wmi_notify, NULL); if (ACPI_FAILURE(status)) { err = -EIO; goto err_free_keymap; } err = input_register_device(toshiba_wmi_input_dev); if (err) goto err_remove_notifier; return 0; err_remove_notifier: wmi_remove_notify_handler(TOSHIBA_WMI_EVENT_GUID); err_free_keymap: sparse_keymap_free(toshiba_wmi_input_dev); err_free_dev: input_free_device(toshiba_wmi_input_dev); return err; }
static void toshiba_wmi_input_destroy(void) { wmi_remove_notify_handler(TOSHIBA_WMI_EVENT_GUID); sparse_keymap_free(toshiba_wmi_input_dev); input_unregister_device(toshiba_wmi_input_dev); }
static void __exit hello_end(void) { printk(KERN_INFO "Goodbye Mr.\n"); wmi_remove_notify_handler(EEEPC_WMI_EVENT_GUID); }
static void hp_wmi_input_destroy(void) { wmi_remove_notify_handler(HPWMI_EVENT_GUID); input_unregister_device(hp_wmi_input_dev); }