#include <linux/module.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/pci.h>
#include <linux/delay.h>
#include <linux/firmware.h>
#include <linux/slab.h>
#include <scsi/sas_ata.h>
#include <scsi/scsi_host.h>
#include "aic94xx.h"
#include "aic94xx_reg.h"
#include "aic94xx_hwi.h"
#include "aic94xx_seq.h"
#include "aic94xx_sds.h"
#define ASD_DRIVER_VERSION …
#define DRV_NAME …
static int use_msi = …;
module_param_named(use_msi, use_msi, int, S_IRUGO);
MODULE_PARM_DESC(…) …;
static struct scsi_transport_template *aic94xx_transport_template;
static int asd_scan_finished(struct Scsi_Host *, unsigned long);
static void asd_scan_start(struct Scsi_Host *);
static const struct attribute_group *asd_sdev_groups[];
static const struct scsi_host_template aic94xx_sht = …;
static int asd_map_memio(struct asd_ha_struct *asd_ha)
{ … }
static void asd_unmap_memio(struct asd_ha_struct *asd_ha)
{ … }
static int asd_map_ioport(struct asd_ha_struct *asd_ha)
{ … }
static void asd_unmap_ioport(struct asd_ha_struct *asd_ha)
{ … }
static int asd_map_ha(struct asd_ha_struct *asd_ha)
{ … }
static void asd_unmap_ha(struct asd_ha_struct *asd_ha)
{ … }
static const char *asd_dev_rev[30] = …;
static int asd_common_setup(struct asd_ha_struct *asd_ha)
{ … }
static int asd_aic9410_setup(struct asd_ha_struct *asd_ha)
{ … }
static int asd_aic9405_setup(struct asd_ha_struct *asd_ha)
{ … }
static ssize_t asd_show_dev_rev(struct device *dev,
struct device_attribute *attr, char *buf)
{ … }
static DEVICE_ATTR(aic_revision, S_IRUGO, asd_show_dev_rev, NULL);
static ssize_t asd_show_dev_bios_build(struct device *dev,
struct device_attribute *attr,char *buf)
{ … }
static DEVICE_ATTR(bios_build, S_IRUGO, asd_show_dev_bios_build, NULL);
static ssize_t asd_show_dev_pcba_sn(struct device *dev,
struct device_attribute *attr, char *buf)
{ … }
static DEVICE_ATTR(pcba_sn, S_IRUGO, asd_show_dev_pcba_sn, NULL);
#define FLASH_CMD_NONE …
#define FLASH_CMD_UPDATE …
#define FLASH_CMD_VERIFY …
struct flash_command { … };
static struct flash_command flash_command_table[] = …;
struct error_bios { … };
static struct error_bios flash_error_table[] = …;
static ssize_t asd_store_update_bios(struct device *dev,
struct device_attribute *attr,
const char *buf, size_t count)
{ … }
static ssize_t asd_show_update_bios(struct device *dev,
struct device_attribute *attr, char *buf)
{ … }
static DEVICE_ATTR(update_bios, S_IRUGO|S_IWUSR,
asd_show_update_bios, asd_store_update_bios);
static int asd_create_dev_attrs(struct asd_ha_struct *asd_ha)
{ … }
static void asd_remove_dev_attrs(struct asd_ha_struct *asd_ha)
{ … }
static const struct asd_pcidev_struct { … } asd_pcidev_data[] = …;
static int asd_create_ha_caches(struct asd_ha_struct *asd_ha)
{ … }
static void asd_free_edbs(struct asd_ha_struct *asd_ha)
{ … }
static void asd_free_escbs(struct asd_ha_struct *asd_ha)
{ … }
static void asd_destroy_ha_caches(struct asd_ha_struct *asd_ha)
{ … }
struct kmem_cache *asd_dma_token_cache;
struct kmem_cache *asd_ascb_cache;
static int asd_create_global_caches(void)
{ … }
static void asd_destroy_global_caches(void)
{ … }
static int asd_register_sas_ha(struct asd_ha_struct *asd_ha)
{ … }
static int asd_unregister_sas_ha(struct asd_ha_struct *asd_ha)
{ … }
static int asd_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
{ … }
static void asd_free_queues(struct asd_ha_struct *asd_ha)
{ … }
static void asd_turn_off_leds(struct asd_ha_struct *asd_ha)
{ … }
static void asd_pci_remove(struct pci_dev *dev)
{ … }
static void asd_scan_start(struct Scsi_Host *shost)
{ … }
static int asd_scan_finished(struct Scsi_Host *shost, unsigned long time)
{ … }
static ssize_t version_show(struct device_driver *driver, char *buf)
{ … }
static DRIVER_ATTR_RO(version);
static int asd_create_driver_attrs(struct device_driver *driver)
{ … }
static void asd_remove_driver_attrs(struct device_driver *driver)
{ … }
static const struct attribute_group *asd_sdev_groups[] = …;
static struct sas_domain_function_template aic94xx_transport_functions = …;
static const struct pci_device_id aic94xx_pci_table[] = …;
MODULE_DEVICE_TABLE(pci, aic94xx_pci_table);
static struct pci_driver aic94xx_pci_driver = …;
static int __init aic94xx_init(void)
{ … }
static void __exit aic94xx_exit(void)
{ … }
module_init(…) …;
module_exit(aic94xx_exit);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…);
MODULE_LICENSE(…) …;
MODULE_VERSION(…);