#define pr_fmt(fmt) …
#include <linux/device.h>
#include <linux/dmi.h>
#include <linux/fs.h>
#include <linux/list.h>
#include <linux/miscdevice.h>
#include <linux/module.h>
#include <linux/mutex.h>
#include <linux/uaccess.h>
#include <linux/wmi.h>
#include <uapi/linux/wmi.h>
#include "dell-smbios.h"
#include "dell-wmi-descriptor.h"
static DEFINE_MUTEX(call_mutex);
static DEFINE_MUTEX(list_mutex);
static int wmi_supported;
struct misc_bios_flags_structure { … } __packed;
#define FLAG_HAS_ACPI_WMI …
#define DELL_WMI_SMBIOS_GUID …
struct wmi_smbios_priv { … };
static LIST_HEAD(wmi_list);
static inline struct wmi_smbios_priv *get_first_smbios_priv(void)
{ … }
static int run_smbios_call(struct wmi_device *wdev)
{ … }
static int dell_smbios_wmi_call(struct calling_interface_buffer *buffer)
{ … }
static int dell_smbios_wmi_open(struct inode *inode, struct file *filp)
{ … }
static ssize_t dell_smbios_wmi_read(struct file *filp, char __user *buffer, size_t length,
loff_t *offset)
{ … }
static long dell_smbios_wmi_do_ioctl(struct wmi_smbios_priv *priv,
struct dell_wmi_smbios_buffer __user *arg)
{ … }
static long dell_smbios_wmi_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
{ … }
static const struct file_operations dell_smbios_wmi_fops = …;
static void dell_smbios_wmi_unregister_chardev(void *data)
{ … }
static int dell_smbios_wmi_register_chardev(struct wmi_smbios_priv *priv)
{ … }
static int dell_smbios_wmi_probe(struct wmi_device *wdev, const void *context)
{ … }
static void dell_smbios_wmi_remove(struct wmi_device *wdev)
{ … }
static const struct wmi_device_id dell_smbios_wmi_id_table[] = …;
static void parse_b1_table(const struct dmi_header *dm)
{ … }
static void find_b1(const struct dmi_header *dm, void *dummy)
{ … }
static struct wmi_driver dell_smbios_wmi_driver = …;
int init_dell_smbios_wmi(void)
{ … }
void exit_dell_smbios_wmi(void)
{ … }
MODULE_DEVICE_TABLE(wmi, dell_smbios_wmi_id_table);