#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/delay.h>
#include <linux/pci.h>
#include <linux/ioport.h>
#include <linux/init.h>
#include <linux/i2c.h>
#include <linux/acpi.h>
#include <linux/io.h>
static int blacklist[] = …;
#define SIS5595_EXTENT …
#define SMB_STS_LO …
#define SMB_STS_HI …
#define SMB_CTL_LO …
#define SMB_CTL_HI …
#define SMB_ADDR …
#define SMB_CMD …
#define SMB_PCNT …
#define SMB_CNT …
#define SMB_BYTE …
#define SMB_DEV …
#define SMB_DB0 …
#define SMB_DB1 …
#define SMB_HAA …
#define SMB_INDEX …
#define SMB_DAT …
#define SIS5595_ENABLE_REG …
#define ACPI_BASE …
#define MAX_TIMEOUT …
#define SIS5595_QUICK …
#define SIS5595_BYTE …
#define SIS5595_BYTE_DATA …
#define SIS5595_WORD_DATA …
#define SIS5595_PROC_CALL …
#define SIS5595_BLOCK_DATA …
static u16 force_addr;
module_param_hw(force_addr, ushort, ioport, 0);
MODULE_PARM_DESC(…) …;
static struct pci_driver sis5595_driver;
static unsigned short sis5595_base;
static struct pci_dev *sis5595_pdev;
static u8 sis5595_read(u8 reg)
{ … }
static void sis5595_write(u8 reg, u8 data)
{ … }
static int sis5595_setup(struct pci_dev *SIS5595_dev)
{ … }
static int sis5595_transaction(struct i2c_adapter *adap)
{ … }
static s32 sis5595_access(struct i2c_adapter *adap, u16 addr,
unsigned short flags, char read_write,
u8 command, int size, union i2c_smbus_data *data)
{ … }
static u32 sis5595_func(struct i2c_adapter *adapter)
{ … }
static const struct i2c_algorithm smbus_algorithm = …;
static struct i2c_adapter sis5595_adapter = …;
static const struct pci_device_id sis5595_ids[] = …;
MODULE_DEVICE_TABLE (pci, sis5595_ids);
static int sis5595_probe(struct pci_dev *dev, const struct pci_device_id *id)
{ … }
static struct pci_driver sis5595_driver = …;
static int __init i2c_sis5595_init(void)
{ … }
static void __exit i2c_sis5595_exit(void)
{ … }
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
module_init(…) …;
module_exit(i2c_sis5595_exit);