cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

asus-wmi.h (2215B)


      1/* SPDX-License-Identifier: GPL-2.0-or-later */
      2/*
      3 * Asus PC WMI hotkey driver
      4 *
      5 * Copyright(C) 2010 Intel Corporation.
      6 * Copyright(C) 2010-2011 Corentin Chary <corentin.chary@gmail.com>
      7 *
      8 * Portions based on wistron_btns.c:
      9 * Copyright (C) 2005 Miloslav Trmac <mitr@volny.cz>
     10 * Copyright (C) 2005 Bernhard Rosenkraenzer <bero@arklinux.org>
     11 * Copyright (C) 2005 Dmitry Torokhov <dtor@mail.ru>
     12 */
     13
     14#ifndef _ASUS_WMI_H_
     15#define _ASUS_WMI_H_
     16
     17#include <linux/platform_device.h>
     18#include <linux/i8042.h>
     19
     20#define ASUS_WMI_KEY_IGNORE (-1)
     21#define ASUS_WMI_BRN_DOWN	0x20
     22#define ASUS_WMI_BRN_UP		0x2f
     23
     24struct module;
     25struct key_entry;
     26struct asus_wmi;
     27
     28struct quirk_entry {
     29	bool hotplug_wireless;
     30	bool scalar_panel_brightness;
     31	bool store_backlight_power;
     32	bool wmi_backlight_power;
     33	bool wmi_backlight_native;
     34	bool wmi_backlight_set_devstate;
     35	bool wmi_force_als_set;
     36	bool use_kbd_dock_devid;
     37	bool use_lid_flip_devid;
     38	int wapf;
     39	/*
     40	 * For machines with AMD graphic chips, it will send out WMI event
     41	 * and ACPI interrupt at the same time while hitting the hotkey.
     42	 * To simplify the problem, we just have to ignore the WMI event,
     43	 * and let the ACPI interrupt to send out the key event.
     44	 */
     45	int no_display_toggle;
     46	u32 xusb2pr;
     47
     48	bool (*i8042_filter)(unsigned char data, unsigned char str,
     49			     struct serio *serio);
     50};
     51
     52struct asus_wmi_driver {
     53	int			brightness;
     54	int			panel_power;
     55	int			wlan_ctrl_by_user;
     56
     57	const char		*name;
     58	struct module		*owner;
     59
     60	const char		*event_guid;
     61
     62	const struct key_entry	*keymap;
     63	const char		*input_name;
     64	const char		*input_phys;
     65	struct quirk_entry	*quirks;
     66	/* Returns new code, value, and autorelease values in arguments.
     67	 * Return ASUS_WMI_KEY_IGNORE in code if event should be ignored. */
     68	void (*key_filter) (struct asus_wmi_driver *driver, int *code,
     69			    unsigned int *value, bool *autorelease);
     70
     71	int (*probe) (struct platform_device *device);
     72	void (*detect_quirks) (struct asus_wmi_driver *driver);
     73
     74	struct platform_driver	platform_driver;
     75	struct platform_device *platform_device;
     76};
     77
     78int asus_wmi_register_driver(struct asus_wmi_driver *driver);
     79void asus_wmi_unregister_driver(struct asus_wmi_driver *driver);
     80
     81#endif /* !_ASUS_WMI_H_ */