#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
#include <linux/kernel.h>
#include <linux/stddef.h>
#include <linux/i2c.h>
#include <linux/acpi.h>
struct smbus_methods_t { … };
struct acpi_smbus_cmi { … };
static const struct smbus_methods_t smbus_methods = …;
static const struct smbus_methods_t ibm_smbus_methods = …;
static const struct acpi_device_id acpi_smbus_cmi_ids[] = …;
MODULE_DEVICE_TABLE(acpi, acpi_smbus_cmi_ids);
#define ACPI_SMBUS_STATUS_OK …
#define ACPI_SMBUS_STATUS_FAIL …
#define ACPI_SMBUS_STATUS_DNAK …
#define ACPI_SMBUS_STATUS_DERR …
#define ACPI_SMBUS_STATUS_CMD_DENY …
#define ACPI_SMBUS_STATUS_UNKNOWN …
#define ACPI_SMBUS_STATUS_ACC_DENY …
#define ACPI_SMBUS_STATUS_TIMEOUT …
#define ACPI_SMBUS_STATUS_NOTSUP …
#define ACPI_SMBUS_STATUS_BUSY …
#define ACPI_SMBUS_STATUS_PEC …
#define ACPI_SMBUS_PRTCL_WRITE …
#define ACPI_SMBUS_PRTCL_READ …
#define ACPI_SMBUS_PRTCL_QUICK …
#define ACPI_SMBUS_PRTCL_BYTE …
#define ACPI_SMBUS_PRTCL_BYTE_DATA …
#define ACPI_SMBUS_PRTCL_WORD_DATA …
#define ACPI_SMBUS_PRTCL_BLOCK_DATA …
static int
acpi_smbus_cmi_access(struct i2c_adapter *adap, u16 addr, unsigned short flags,
char read_write, u8 command, int size,
union i2c_smbus_data *data)
{ … }
static u32 acpi_smbus_cmi_func(struct i2c_adapter *adapter)
{ … }
static const struct i2c_algorithm acpi_smbus_cmi_algorithm = …;
static int acpi_smbus_cmi_add_cap(struct acpi_smbus_cmi *smbus_cmi,
const char *name)
{ … }
static acpi_status acpi_smbus_cmi_query_methods(acpi_handle handle, u32 level,
void *context, void **return_value)
{ … }
static int smbus_cmi_probe(struct platform_device *device)
{ … }
static void smbus_cmi_remove(struct platform_device *device)
{ … }
static struct platform_driver smbus_cmi_driver = …;
module_platform_driver(…) …;
MODULE_LICENSE(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;