#include <linux/module.h>
#include <linux/acpi.h>
#include <linux/ipmi.h>
#include <linux/spinlock.h>
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
#define ACPI_IPMI_OK …
#define ACPI_IPMI_TIMEOUT …
#define ACPI_IPMI_UNKNOWN …
#define IPMI_TIMEOUT …
#define ACPI_IPMI_MAX_MSG_LENGTH …
#define ACPI_IPMI_SMI_SELECTION_TIMEOUT …
struct acpi_ipmi_device { … };
struct ipmi_driver_data { … };
struct acpi_ipmi_msg { … };
struct acpi_ipmi_buffer { … };
static void ipmi_register_bmc(int iface, struct device *dev);
static void ipmi_bmc_gone(int iface);
static void ipmi_msg_handler(struct ipmi_recv_msg *msg, void *user_msg_data);
static struct ipmi_driver_data driver_data = …;
static struct acpi_ipmi_device *
ipmi_dev_alloc(int iface, struct device *dev, acpi_handle handle)
{ … }
static void ipmi_dev_release(struct acpi_ipmi_device *ipmi_device)
{ … }
static void ipmi_dev_release_kref(struct kref *kref)
{ … }
static void __ipmi_dev_kill(struct acpi_ipmi_device *ipmi_device)
{ … }
static struct acpi_ipmi_device *acpi_ipmi_dev_get(void)
{ … }
static void acpi_ipmi_dev_put(struct acpi_ipmi_device *ipmi_device)
{ … }
static struct acpi_ipmi_msg *ipmi_msg_alloc(void)
{ … }
static void ipmi_msg_release(struct acpi_ipmi_msg *tx_msg)
{ … }
static void ipmi_msg_release_kref(struct kref *kref)
{ … }
static struct acpi_ipmi_msg *acpi_ipmi_msg_get(struct acpi_ipmi_msg *tx_msg)
{ … }
static void acpi_ipmi_msg_put(struct acpi_ipmi_msg *tx_msg)
{ … }
#define IPMI_OP_RGN_NETFN(offset) …
#define IPMI_OP_RGN_CMD(offset) …
static int acpi_format_ipmi_request(struct acpi_ipmi_msg *tx_msg,
acpi_physical_address address,
acpi_integer *value)
{ … }
static void acpi_format_ipmi_response(struct acpi_ipmi_msg *msg,
acpi_integer *value)
{ … }
static void ipmi_flush_tx_msg(struct acpi_ipmi_device *ipmi)
{ … }
static void ipmi_cancel_tx_msg(struct acpi_ipmi_device *ipmi,
struct acpi_ipmi_msg *msg)
{ … }
static void ipmi_msg_handler(struct ipmi_recv_msg *msg, void *user_msg_data)
{ … }
static void ipmi_register_bmc(int iface, struct device *dev)
{ … }
static void ipmi_bmc_gone(int iface)
{ … }
static acpi_status
acpi_ipmi_space_handler(u32 function, acpi_physical_address address,
u32 bits, acpi_integer *value,
void *handler_context, void *region_context)
{ … }
int acpi_wait_for_acpi_ipmi(void)
{ … }
EXPORT_SYMBOL_GPL(…);
static int __init acpi_ipmi_init(void)
{ … }
static void __exit acpi_ipmi_exit(void)
{ … }
module_init(…) …;
module_exit(acpi_ipmi_exit);