2016-01-22 17:27:13 +03:00
/*
* Common functions for kernel modules using Dell SMBIOS
*
* Copyright ( c ) Red Hat < mjg @ redhat . com >
* Copyright ( c ) 2014 Gabriele Mazzotta < gabriele . mzt @ gmail . com >
* Copyright ( c ) 2014 Pali Rohár < pali . rohar @ gmail . com >
*
* Based on documentation in the libsmbios package :
* Copyright ( C ) 2005 - 2014 Dell Inc .
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation .
*/
# ifndef _DELL_SMBIOS_H_
# define _DELL_SMBIOS_H_
2017-11-01 22:25:31 +03:00
# include <linux/device.h>
2017-11-01 22:25:36 +03:00
# include <uapi/linux/wmi.h>
2017-11-01 22:25:31 +03:00
2017-11-01 22:25:36 +03:00
/* Classes and selects used only in kernel drivers */
2017-11-01 22:25:31 +03:00
# define CLASS_KBD_BACKLIGHT 4
# define SELECT_KBD_BACKLIGHT 11
/* Tokens used in kernel drivers, any of these
* should be filtered from userspace access
*/
# define BRIGHTNESS_TOKEN 0x007d
# define KBD_LED_AC_TOKEN 0x0451
# define KBD_LED_OFF_TOKEN 0x01E1
# define KBD_LED_ON_TOKEN 0x01E2
# define KBD_LED_AUTO_TOKEN 0x01E3
# define KBD_LED_AUTO_25_TOKEN 0x02EA
# define KBD_LED_AUTO_50_TOKEN 0x02EB
# define KBD_LED_AUTO_75_TOKEN 0x02EC
# define KBD_LED_AUTO_100_TOKEN 0x02F6
# define GLOBAL_MIC_MUTE_ENABLE 0x0364
# define GLOBAL_MIC_MUTE_DISABLE 0x0365
2017-11-01 22:25:34 +03:00
2017-03-16 13:55:32 +03:00
struct notifier_block ;
2016-01-22 17:27:13 +03:00
struct calling_interface_token {
u16 tokenID ;
u16 location ;
union {
u16 value ;
u16 stringlength ;
} ;
} ;
2017-11-01 22:25:31 +03:00
struct calling_interface_structure {
struct dmi_header header ;
u16 cmdIOAddress ;
u8 cmdIOCode ;
u32 supportedCmds ;
struct calling_interface_token tokens [ ] ;
} __packed ;
2016-03-04 16:09:06 +03:00
2017-11-01 22:25:31 +03:00
int dell_smbios_register_device ( struct device * d , void * call_fn ) ;
void dell_smbios_unregister_device ( struct device * d ) ;
int dell_smbios_error ( int value ) ;
2017-11-01 22:25:34 +03:00
int dell_smbios_call_filter ( struct device * d ,
struct calling_interface_buffer * buffer ) ;
2017-11-01 22:25:31 +03:00
int dell_smbios_call ( struct calling_interface_buffer * buffer ) ;
2016-01-22 17:27:13 +03:00
2016-01-22 17:27:22 +03:00
struct calling_interface_token * dell_smbios_find_token ( int tokenid ) ;
2017-03-16 13:55:32 +03:00
enum dell_laptop_notifier_actions {
DELL_LAPTOP_KBD_BACKLIGHT_BRIGHTNESS_CHANGED ,
} ;
int dell_laptop_register_notifier ( struct notifier_block * nb ) ;
int dell_laptop_unregister_notifier ( struct notifier_block * nb ) ;
void dell_laptop_call_notifier ( unsigned long action , void * data ) ;
2016-01-22 17:27:13 +03:00
# endif