#include <linux/kernel.h>
#include <linux/mfd/syscon.h>
#include <linux/module.h>
#include <linux/libata.h>
#include <linux/irq.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/regmap.h>
#include <scsi/scsi_host.h>
#define DRV_NAME …
#define DRV_VERSION …
struct ixp4xx_pata { … };
#define IXP4XX_EXP_TIMING_STRIDE …
#define IXP4XX_EXP_T1_T5_MASK …
#define IXP4XX_EXP_PIO_0_8 …
#define IXP4XX_EXP_PIO_1_8 …
#define IXP4XX_EXP_PIO_2_8 …
#define IXP4XX_EXP_PIO_3_8 …
#define IXP4XX_EXP_PIO_4_8 …
#define IXP4XX_EXP_PIO_0_16 …
#define IXP4XX_EXP_PIO_1_16 …
#define IXP4XX_EXP_PIO_2_16 …
#define IXP4XX_EXP_PIO_3_16 …
#define IXP4XX_EXP_PIO_4_16 …
#define IXP4XX_EXP_BW_MASK …
#define IXP4XX_EXP_BYTE_RD16 …
#define IXP4XX_EXP_BYTE_EN …
static void ixp4xx_set_8bit_timing(struct ixp4xx_pata *ixpp, u8 pio_mode)
{ … }
static void ixp4xx_set_16bit_timing(struct ixp4xx_pata *ixpp, u8 pio_mode)
{ … }
static void ixp4xx_set_piomode(struct ata_port *ap, struct ata_device *adev)
{ … }
static unsigned int ixp4xx_mmio_data_xfer(struct ata_queued_cmd *qc,
unsigned char *buf, unsigned int buflen, int rw)
{ … }
static const struct scsi_host_template ixp4xx_sht = …;
static struct ata_port_operations ixp4xx_port_ops = …;
static struct ata_port_info ixp4xx_port_info = …;
static void ixp4xx_setup_port(struct ata_port *ap,
struct ixp4xx_pata *ixpp,
unsigned long raw_cmd, unsigned long raw_ctl)
{ … }
static int ixp4xx_pata_probe(struct platform_device *pdev)
{ … }
static const struct of_device_id ixp4xx_pata_of_match[] = …;
static struct platform_driver ixp4xx_pata_platform_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_VERSION(…);
MODULE_ALIAS(…) …;