From 2f9f26bd8614740b3c3b950394d945a99492a28e Mon Sep 17 00:00:00 2001 From: Michał Kępień Date: Fri, 22 Jan 2016 15:27:13 +0100 Subject: dell-laptop: extract SMBIOS-related code to a separate module MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Extract SMBIOS-related code from dell-laptop to a new kernel module, dell-smbios. The static specifier is removed from exported symbols, otherwise code is just moved around. Signed-off-by: Michał Kępień Reviewed-by: Pali Rohár [dvhart: Include linux/io.h in dell-smbios.c as caught by lkp] Signed-off-by: Darren Hart --- drivers/platform/x86/dell-smbios.h | 50 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 drivers/platform/x86/dell-smbios.h (limited to 'drivers/platform/x86/dell-smbios.h') diff --git a/drivers/platform/x86/dell-smbios.h b/drivers/platform/x86/dell-smbios.h new file mode 100644 index 000000000000..3bc9080e4c5d --- /dev/null +++ b/drivers/platform/x86/dell-smbios.h @@ -0,0 +1,50 @@ +/* + * Common functions for kernel modules using Dell SMBIOS + * + * Copyright (c) Red Hat + * Copyright (c) 2014 Gabriele Mazzotta + * Copyright (c) 2014 Pali Rohár + * + * 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_ + +/* This structure will be modified by the firmware when we enter + * system management mode, hence the volatiles */ + +struct calling_interface_buffer { + u16 class; + u16 select; + volatile u32 input[4]; + volatile u32 output[4]; +} __packed; + +struct calling_interface_token { + u16 tokenID; + u16 location; + union { + u16 value; + u16 stringlength; + }; +}; + +extern struct calling_interface_buffer *buffer; +extern struct calling_interface_token *da_tokens; + +void get_buffer(void); +void clear_buffer(void); +void release_buffer(void); +struct calling_interface_buffer * +dell_send_request(struct calling_interface_buffer *buffer, + int class, int select); + +int find_token_id(int tokenid); +int find_token_location(int tokenid); +#endif -- cgit v1.2.3