FILE
alienware-wmi.h
File preview with syntax highlighting.
linux-6.19.14/drivers/platform/x86/dell/alienware-wmi.h
1/* SPDX-License-Identifier: GPL-2.0-or-later */ 2/* 3 * Alienware WMI special features driver 4 * 5 * Copyright (C) 2014 Dell Inc <Dell.Client.Kernel@dell.com> 6 * Copyright (C) 2024 Kurt Borja <kuurtb@gmail.com> 7 */ 8 9#ifndef _ALIENWARE_WMI_H_ 10#define _ALIENWARE_WMI_H_ 11 12#include <linux/leds.h> 13#include <linux/platform_device.h> 14#include <linux/wmi.h> 15 16#define LEGACY_CONTROL_GUID "A90597CE-A997-11DA-B012-B622A1EF5492" 17#define LEGACY_POWER_CONTROL_GUID "A80593CE-A997-11DA-B012-B622A1EF5492" 18#define WMAX_CONTROL_GUID "A70591CE-A997-11DA-B012-B622A1EF5492" 19 20enum INTERFACE_FLAGS { 21 LEGACY, 22 WMAX, 23}; 24 25enum LEGACY_CONTROL_STATES { 26 LEGACY_RUNNING = 1, 27 LEGACY_BOOTING = 0, 28 LEGACY_SUSPEND = 3, 29}; 30 31enum WMAX_CONTROL_STATES { 32 WMAX_RUNNING = 0xFF, 33 WMAX_BOOTING = 0, 34 WMAX_SUSPEND = 3, 35}; 36 37struct alienfx_quirks { 38 u8 num_zones; 39 bool hdmi_mux; 40 bool amplifier; 41 bool deepslp; 42}; 43 44struct color_platform { 45 u8 blue; 46 u8 green; 47 u8 red; 48} __packed; 49 50struct alienfx_priv { 51 struct platform_device *pdev; 52 struct led_classdev global_led; 53 struct color_platform colors[4]; 54 u8 global_brightness; 55 u8 lighting_control_state; 56}; 57 58struct alienfx_ops { 59 int (*upd_led)(struct alienfx_priv *priv, struct wmi_device *wdev, 60 u8 location); 61 int (*upd_brightness)(struct alienfx_priv *priv, struct wmi_device *wdev, 62 u8 brightness); 63}; 64 65struct alienfx_platdata { 66 struct wmi_device *wdev; 67 struct alienfx_ops ops; 68}; 69 70extern u8 alienware_interface; 71extern struct alienfx_quirks *alienfx; 72 73int alienware_wmi_command(struct wmi_device *wdev, u32 method_id, 74 void *in_args, size_t in_size, u32 *out_data); 75 76int alienware_alienfx_setup(struct alienfx_platdata *pdata); 77 78#if IS_ENABLED(CONFIG_ALIENWARE_WMI_LEGACY) 79int __init alienware_legacy_wmi_init(void); 80void __exit alienware_legacy_wmi_exit(void); 81#else 82static inline int alienware_legacy_wmi_init(void) 83{ 84 return -ENODEV; 85} 86 87static inline void alienware_legacy_wmi_exit(void) 88{ 89} 90#endif 91 92#if IS_ENABLED(CONFIG_ALIENWARE_WMI_WMAX) 93extern const struct attribute_group wmax_hdmi_attribute_group; 94extern const struct attribute_group wmax_amplifier_attribute_group; 95extern const struct attribute_group wmax_deepsleep_attribute_group; 96 97#define WMAX_DEV_GROUPS &wmax_hdmi_attribute_group, \ 98 &wmax_amplifier_attribute_group, \ 99 &wmax_deepsleep_attribute_group, 100 101int __init alienware_wmax_wmi_init(void); 102void __exit alienware_wmax_wmi_exit(void); 103#else 104#define WMAX_DEV_GROUPS 105 106static inline int alienware_wmax_wmi_init(void) 107{ 108 return -ENODEV; 109} 110 111 112static inline void alienware_wmax_wmi_exit(void) 113{ 114} 115#endif 116 117#endif
~/
Read-only file preview.