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 struct notifier_block; 20 21 /* This structure will be modified by the firmware when we enter 22 * system management mode, hence the volatiles */ 23 24 struct calling_interface_buffer { 25 u16 class; 26 u16 select; 27 volatile u32 input[4]; 28 volatile u32 output[4]; 29 } __packed; 30 31 struct calling_interface_token { 32 u16 tokenID; 33 u16 location; 34 union { 35 u16 value; 36 u16 stringlength; 37 }; 38 }; 39 40 int dell_smbios_error(int value); 41 42 struct calling_interface_buffer *dell_smbios_get_buffer(void); 43 void dell_smbios_clear_buffer(void); 44 void dell_smbios_release_buffer(void); 45 void dell_smbios_send_request(int class, int select); 46 47 struct calling_interface_token *dell_smbios_find_token(int tokenid); 48 49 enum dell_laptop_notifier_actions { 50 DELL_LAPTOP_KBD_BACKLIGHT_BRIGHTNESS_CHANGED, 51 }; 52 53 int dell_laptop_register_notifier(struct notifier_block *nb); 54 int dell_laptop_unregister_notifier(struct notifier_block *nb); 55 void dell_laptop_call_notifier(unsigned long action, void *data); 56 57 #endif 58