#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/parport.h>
#include "pata_parport.h"
#define DRV_NAME …
static DEFINE_IDR(parport_list);
static DEFINE_IDR(protocols);
static DEFINE_IDA(pata_parport_bus_dev_ids);
static DEFINE_MUTEX(pi_mutex);
static bool probe = …;
module_param(probe, bool, 0644);
MODULE_PARM_DESC(…) …;
static void pi_connect(struct pi_adapter *pi)
{ … }
static void pi_disconnect(struct pi_adapter *pi)
{ … }
static void pata_parport_dev_select(struct ata_port *ap, unsigned int device)
{ … }
static void pata_parport_set_devctl(struct ata_port *ap, u8 ctl)
{ … }
static bool pata_parport_devchk(struct ata_port *ap, unsigned int device)
{ … }
static int pata_parport_wait_after_reset(struct ata_link *link,
unsigned int devmask,
unsigned long deadline)
{ … }
static int pata_parport_bus_softreset(struct ata_port *ap, unsigned int devmask,
unsigned long deadline)
{ … }
static int pata_parport_softreset(struct ata_link *link, unsigned int *classes,
unsigned long deadline)
{ … }
static u8 pata_parport_check_status(struct ata_port *ap)
{ … }
static u8 pata_parport_check_altstatus(struct ata_port *ap)
{ … }
static void pata_parport_tf_load(struct ata_port *ap,
const struct ata_taskfile *tf)
{ … }
static void pata_parport_tf_read(struct ata_port *ap, struct ata_taskfile *tf)
{ … }
static void pata_parport_exec_command(struct ata_port *ap,
const struct ata_taskfile *tf)
{ … }
static unsigned int pata_parport_data_xfer(struct ata_queued_cmd *qc,
unsigned char *buf, unsigned int buflen, int rw)
{ … }
static void pata_parport_drain_fifo(struct ata_queued_cmd *qc)
{ … }
static struct ata_port_operations pata_parport_port_ops = …;
static const struct ata_port_info pata_parport_port_info = …;
static void pi_release(struct pi_adapter *pi)
{ … }
static int default_test_proto(struct pi_adapter *pi)
{ … }
static int pi_test_proto(struct pi_adapter *pi)
{ … }
static bool pi_probe_mode(struct pi_adapter *pi, int max)
{ … }
static bool pi_probe_unit(struct pi_adapter *pi, int unit)
{ … }
static void pata_parport_dev_release(struct device *dev)
{ … }
static void pata_parport_bus_release(struct device *dev)
{ … }
static const struct bus_type pata_parport_bus_type = …;
static struct device pata_parport_bus = …;
static const struct scsi_host_template pata_parport_sht = …;
struct pi_device_match { … };
static int pi_find_dev(struct device *dev, void *data)
{ … }
static struct pi_adapter *pi_init_one(struct parport *parport,
struct pi_protocol *pr, int mode, int unit, int delay)
{ … }
int pata_parport_register_driver(struct pi_protocol *pr)
{ … }
EXPORT_SYMBOL_GPL(…);
void pata_parport_unregister_driver(struct pi_protocol *pr)
{ … }
EXPORT_SYMBOL_GPL(…);
static ssize_t new_device_store(const struct bus_type *bus, const char *buf, size_t count)
{ … }
static BUS_ATTR_WO(new_device);
static void pi_remove_one(struct device *dev)
{ … }
static ssize_t delete_device_store(const struct bus_type *bus, const char *buf, size_t count)
{ … }
static BUS_ATTR_WO(delete_device);
static void pata_parport_attach(struct parport *port)
{ … }
static int pi_remove_port(struct device *dev, void *p)
{ … }
static void pata_parport_detach(struct parport *port)
{ … }
static struct parport_driver pata_parport_driver = …;
static __init int pata_parport_init(void)
{ … }
static __exit void pata_parport_exit(void)
{ … }
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_ALIAS(…) …;
module_init(…) …;
module_exit(pata_parport_exit);