Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

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