#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/pci.h>
#include <linux/blkdev.h>
#include <linux/delay.h>
#include <linux/libata.h>
#include <scsi/scsi_host.h>
#include <linux/dmi.h>
#ifdef CONFIG_X86_32
#include <asm/msr.h>
static int use_msr;
module_param_named(msr, use_msr, int, 0644);
MODULE_PARM_DESC(msr, "Force using MSR to configure IDE function (Default: 0)");
#else
#undef rdmsr
#undef wrmsr
#define rdmsr(x, y, z) …
#define wrmsr(x, y, z) …
#define use_msr …
#endif
#define DRV_NAME …
#define DRV_VERSION …
enum { … };
static const struct dmi_system_id udma_quirk_dmi_table[] = …;
static int cs5536_read(struct pci_dev *pdev, int reg, u32 *val)
{ … }
static int cs5536_write(struct pci_dev *pdev, int reg, int val)
{ … }
static void cs5536_program_dtc(struct ata_device *adev, u8 tim)
{ … }
static int cs5536_cable_detect(struct ata_port *ap)
{ … }
static void cs5536_set_piomode(struct ata_port *ap, struct ata_device *adev)
{ … }
static void cs5536_set_dmamode(struct ata_port *ap, struct ata_device *adev)
{ … }
static const struct scsi_host_template cs5536_sht = …;
static struct ata_port_operations cs5536_port_ops = …;
static int cs5536_init_one(struct pci_dev *dev, const struct pci_device_id *id)
{ … }
static const struct pci_device_id cs5536[] = …;
static struct pci_driver cs5536_pci_driver = …;
module_pci_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_DEVICE_TABLE(pci, cs5536);
MODULE_VERSION(…);