#include <linux/acpi.h>
#include <linux/cleanup.h>
#include <linux/dmi.h>
#include <linux/input.h>
#include <linux/input/sparse-keymap.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/mutex.h>
#include <linux/platform_device.h>
#include <linux/suspend.h>
#include "../dual_accel_detect.h"
#define VGBS_TABLET_MODE_FLAG_ALT …
#define VGBS_TABLET_MODE_FLAG …
#define VGBS_DOCK_MODE_FLAG …
#define VGBS_TABLET_MODE_FLAGS …
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_AUTHOR(…) …;
static const struct acpi_device_id intel_vbtn_ids[] = …;
MODULE_DEVICE_TABLE(acpi, intel_vbtn_ids);
static const struct key_entry intel_vbtn_keymap[] = …;
static const struct key_entry intel_vbtn_switchmap[] = …;
struct intel_vbtn_priv { … };
static void detect_tablet_mode(struct device *dev)
{ … }
static int intel_vbtn_input_setup(struct platform_device *device)
{ … }
static void notify_handler(acpi_handle handle, u32 event, void *context)
{ … }
static const struct dmi_system_id dmi_switches_allow_list[] = …;
static bool intel_vbtn_has_switches(acpi_handle handle, bool dual_accel)
{ … }
static int intel_vbtn_probe(struct platform_device *device)
{ … }
static void intel_vbtn_remove(struct platform_device *device)
{ … }
static int intel_vbtn_pm_prepare(struct device *dev)
{ … }
static void intel_vbtn_pm_complete(struct device *dev)
{ … }
static int intel_vbtn_pm_resume(struct device *dev)
{ … }
static const struct dev_pm_ops intel_vbtn_pm_ops = …;
static struct platform_driver intel_vbtn_pl_driver = …;
static acpi_status __init
check_acpi_dev(acpi_handle handle, u32 lvl, void *context, void **rv)
{ … }
static int __init intel_vbtn_init(void)
{ … }
module_init(…) …;
static void __exit intel_vbtn_exit(void)
{ … }
module_exit(intel_vbtn_exit);