Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v5.1 103 lines 2.8 kB view raw
1/* 2 * Common functions for kernel modules using Dell SMBIOS 3 * 4 * Copyright (c) Red Hat <mjg@redhat.com> 5 * Copyright (c) 2014 Gabriele Mazzotta <gabriele.mzt@gmail.com> 6 * Copyright (c) 2014 Pali Rohár <pali.rohar@gmail.com> 7 * 8 * Based on documentation in the libsmbios package: 9 * Copyright (C) 2005-2014 Dell Inc. 10 * 11 * This program is free software; you can redistribute it and/or modify 12 * it under the terms of the GNU General Public License version 2 as 13 * published by the Free Software Foundation. 14 */ 15 16#ifndef _DELL_SMBIOS_H_ 17#define _DELL_SMBIOS_H_ 18 19#include <linux/device.h> 20#include <uapi/linux/wmi.h> 21 22/* Classes and selects used only in kernel drivers */ 23#define CLASS_KBD_BACKLIGHT 4 24#define SELECT_KBD_BACKLIGHT 11 25 26/* Tokens used in kernel drivers, any of these 27 * should be filtered from userspace access 28 */ 29#define BRIGHTNESS_TOKEN 0x007d 30#define KBD_LED_AC_TOKEN 0x0451 31#define KBD_LED_OFF_TOKEN 0x01E1 32#define KBD_LED_ON_TOKEN 0x01E2 33#define KBD_LED_AUTO_TOKEN 0x01E3 34#define KBD_LED_AUTO_25_TOKEN 0x02EA 35#define KBD_LED_AUTO_50_TOKEN 0x02EB 36#define KBD_LED_AUTO_75_TOKEN 0x02EC 37#define KBD_LED_AUTO_100_TOKEN 0x02F6 38#define GLOBAL_MIC_MUTE_ENABLE 0x0364 39#define GLOBAL_MIC_MUTE_DISABLE 0x0365 40 41struct notifier_block; 42 43struct calling_interface_token { 44 u16 tokenID; 45 u16 location; 46 union { 47 u16 value; 48 u16 stringlength; 49 }; 50}; 51 52struct calling_interface_structure { 53 struct dmi_header header; 54 u16 cmdIOAddress; 55 u8 cmdIOCode; 56 u32 supportedCmds; 57 struct calling_interface_token tokens[]; 58} __packed; 59 60int dell_smbios_register_device(struct device *d, void *call_fn); 61void dell_smbios_unregister_device(struct device *d); 62 63int dell_smbios_error(int value); 64int dell_smbios_call_filter(struct device *d, 65 struct calling_interface_buffer *buffer); 66int dell_smbios_call(struct calling_interface_buffer *buffer); 67 68struct calling_interface_token *dell_smbios_find_token(int tokenid); 69 70enum dell_laptop_notifier_actions { 71 DELL_LAPTOP_KBD_BACKLIGHT_BRIGHTNESS_CHANGED, 72}; 73 74int dell_laptop_register_notifier(struct notifier_block *nb); 75int dell_laptop_unregister_notifier(struct notifier_block *nb); 76void dell_laptop_call_notifier(unsigned long action, void *data); 77 78/* for the supported backends */ 79#ifdef CONFIG_DELL_SMBIOS_WMI 80int init_dell_smbios_wmi(void); 81void exit_dell_smbios_wmi(void); 82#else /* CONFIG_DELL_SMBIOS_WMI */ 83static inline int init_dell_smbios_wmi(void) 84{ 85 return -ENODEV; 86} 87static inline void exit_dell_smbios_wmi(void) 88{} 89#endif /* CONFIG_DELL_SMBIOS_WMI */ 90 91#ifdef CONFIG_DELL_SMBIOS_SMM 92int init_dell_smbios_smm(void); 93void exit_dell_smbios_smm(void); 94#else /* CONFIG_DELL_SMBIOS_SMM */ 95static inline int init_dell_smbios_smm(void) 96{ 97 return -ENODEV; 98} 99static inline void exit_dell_smbios_smm(void) 100{} 101#endif /* CONFIG_DELL_SMBIOS_SMM */ 102 103#endif /* _DELL_SMBIOS_H_ */