#define pr_fmt(fmt) …
#include <linux/kernel.h>
#include <linux/delay.h>
#include <linux/module.h>
#include <linux/io.h>
#include <linux/dmi.h>
#include <linux/efi.h>
#include <linux/mutex.h>
#include <asm/bios_ebda.h>
#include <linux/io-64-nonatomic-lo-hi.h>
static bool force;
module_param(force, bool, 0);
MODULE_PARM_DESC(…) …;
static bool debug;
module_param(debug, bool, 0644);
MODULE_PARM_DESC(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
#define RTL_ADDR_TYPE_IO …
#define RTL_ADDR_TYPE_MMIO …
#define RTL_CMD_ENTER_PRTM …
#define RTL_CMD_EXIT_PRTM …
struct ibm_rtl_table { … } __attribute__((packed));
#define RTL_SIGNATURE …
#define RTL_MASK …
#define RTL_DEBUG(fmt, ...) …
static DEFINE_MUTEX(rtl_lock);
static struct ibm_rtl_table __iomem *rtl_table;
static void __iomem *ebda_map;
static void __iomem *rtl_cmd_addr;
static u8 rtl_cmd_type;
static u8 rtl_cmd_width;
static void __iomem *rtl_port_map(phys_addr_t addr, unsigned long len)
{ … }
static void rtl_port_unmap(void __iomem *addr)
{ … }
static int ibm_rtl_write(u8 value)
{ … }
static ssize_t rtl_show_version(struct device *dev,
struct device_attribute *attr,
char *buf)
{ … }
static ssize_t rtl_show_state(struct device *dev,
struct device_attribute *attr,
char *buf)
{ … }
static ssize_t rtl_set_state(struct device *dev,
struct device_attribute *attr,
const char *buf,
size_t count)
{ … }
static const struct bus_type rtl_subsys = …;
static DEVICE_ATTR(version, S_IRUGO, rtl_show_version, NULL);
static DEVICE_ATTR(state, 0600, rtl_show_state, rtl_set_state);
static struct device_attribute *rtl_attributes[] = …;
static int rtl_setup_sysfs(void) { … }
static void rtl_teardown_sysfs(void) { … }
static const struct dmi_system_id ibm_rtl_dmi_table[] __initconst = …;
static int __init ibm_rtl_init(void) { … }
static void __exit ibm_rtl_exit(void)
{ … }
module_init(…) …;
module_exit(ibm_rtl_exit);