#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/pci.h>
#include <linux/blkdev.h>
#include <linux/delay.h>
#include <linux/gfp.h>
#include <scsi/scsi_host.h>
#include <linux/libata.h>
#define DRV_NAME …
#define DRV_VERSION …
struct cmd640_reg { … };
enum { … };
static void cmd640_set_piomode(struct ata_port *ap, struct ata_device *adev)
{ … }
static unsigned int cmd640_qc_issue(struct ata_queued_cmd *qc)
{ … }
static int cmd640_port_start(struct ata_port *ap)
{ … }
static bool cmd640_sff_irq_check(struct ata_port *ap)
{ … }
static const struct scsi_host_template cmd640_sht = …;
static struct ata_port_operations cmd640_port_ops = …;
static void cmd640_hardware_init(struct pci_dev *pdev)
{ … }
static int cmd640_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
{ … }
#ifdef CONFIG_PM_SLEEP
static int cmd640_reinit_one(struct pci_dev *pdev)
{ … }
#endif
static const struct pci_device_id cmd640[] = …;
static struct pci_driver cmd640_pci_driver = …;
module_pci_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_DEVICE_TABLE(pci, cmd640);
MODULE_VERSION(…);