Blame view
drivers/ata/pata_netcell.c
2.8 KB
669a5db41 [libata] Add a bu... |
1 2 3 |
/* * pata_netcell.c - Netcell PATA driver * |
ab7716300 ata: Switch all m... |
4 |
* (c) 2006 Red Hat |
669a5db41 [libata] Add a bu... |
5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
*/ #include <linux/kernel.h> #include <linux/module.h> #include <linux/pci.h> #include <linux/init.h> #include <linux/blkdev.h> #include <linux/delay.h> #include <linux/device.h> #include <scsi/scsi_host.h> #include <linux/libata.h> #include <linux/ata.h> #define DRV_NAME "pata_netcell" |
3b4ba5910 pata_netcell: re-... |
19 |
#define DRV_VERSION "0.1.7" |
669a5db41 [libata] Add a bu... |
20 21 |
/* No PIO or DMA methods needed for this device */ |
d3ae33efb pata_netcell: LBA... |
22 23 24 25 26 27 |
static unsigned int netcell_read_id(struct ata_device *adev, struct ata_taskfile *tf, u16 *id) { unsigned int err_mask = ata_do_dev_read_id(adev, tf, id); /* Firmware forgets to mark words 85-87 valid */ if (err_mask == 0) |
5284c6b99 pata_netcell: Fix... |
28 |
id[ATA_ID_CSF_DEFAULT] |= 0x4000; |
d3ae33efb pata_netcell: LBA... |
29 30 |
return err_mask; } |
669a5db41 [libata] Add a bu... |
31 |
static struct scsi_host_template netcell_sht = { |
68d1d07b5 libata: implement... |
32 |
ATA_BMDMA_SHT(DRV_NAME), |
669a5db41 [libata] Add a bu... |
33 |
}; |
029cfd6b7 libata: implement... |
34 35 |
static struct ata_port_operations netcell_ops = { .inherits = &ata_bmdma_port_ops, |
d3ae33efb pata_netcell: LBA... |
36 37 |
.cable_detect = ata_cable_80wire, .read_id = netcell_read_id, |
669a5db41 [libata] Add a bu... |
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
}; /** * netcell_init_one - Register Netcell ATA PCI device with kernel services * @pdev: PCI device to register * @ent: Entry in netcell_pci_tbl matching with @pdev * * Called from kernel PCI layer. * * LOCKING: * Inherited from PCI layer (may sleep). * * RETURNS: * Zero on success, or -ERRNO value. */ static int netcell_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) { |
1626aeb88 libata: clean up ... |
57 |
static const struct ata_port_info info = { |
1d2808fd3 [libata] PATA dri... |
58 |
.flags = ATA_FLAG_SLAVE_POSS, |
669a5db41 [libata] Add a bu... |
59 60 |
/* Actually we don't really care about these as the firmware deals with it */ |
14bdef982 [libata] convert ... |
61 62 |
.pio_mask = ATA_PIO4, .mwdma_mask = ATA_MWDMA2, |
bf6263a85 [libata] Use ATA_... |
63 |
.udma_mask = ATA_UDMA5, /* UDMA 133 */ |
669a5db41 [libata] Add a bu... |
64 65 |
.port_ops = &netcell_ops, }; |
1626aeb88 libata: clean up ... |
66 |
const struct ata_port_info *port_info[] = { &info, NULL }; |
f08048e94 libata: PCI devic... |
67 |
int rc; |
669a5db41 [libata] Add a bu... |
68 |
|
06296a1e6 ata: Add and use ... |
69 |
ata_print_version_once(&pdev->dev, DRV_VERSION); |
669a5db41 [libata] Add a bu... |
70 |
|
f08048e94 libata: PCI devic... |
71 72 73 |
rc = pcim_enable_device(pdev); if (rc) return rc; |
669a5db41 [libata] Add a bu... |
74 |
/* Any chip specific setup/optimisation/messages here */ |
9363c3825 libata: rename SF... |
75 |
ata_pci_bmdma_clear_simplex(pdev); |
85cd7251b [libata #pata-dri... |
76 |
|
669a5db41 [libata] Add a bu... |
77 |
/* And let the library code do the work */ |
1c5afdf7a libata-sff: separ... |
78 |
return ata_pci_bmdma_init_one(pdev, port_info, &netcell_sht, NULL, 0); |
669a5db41 [libata] Add a bu... |
79 80 81 |
} static const struct pci_device_id netcell_pci_tbl[] = { |
2d2744fc8 [libata] PCI ID t... |
82 |
{ PCI_VDEVICE(NETCELL, PCI_DEVICE_ID_REVOLUTION), }, |
669a5db41 [libata] Add a bu... |
83 84 85 86 87 88 89 90 |
{ } /* terminate list */ }; static struct pci_driver netcell_pci_driver = { .name = DRV_NAME, .id_table = netcell_pci_tbl, .probe = netcell_init_one, .remove = ata_pci_remove_one, |
438ac6d5e libata: add missi... |
91 |
#ifdef CONFIG_PM |
30ced0f0d [PATCH] PATA liba... |
92 93 |
.suspend = ata_pci_device_suspend, .resume = ata_pci_device_resume, |
438ac6d5e libata: add missi... |
94 |
#endif |
669a5db41 [libata] Add a bu... |
95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
}; static int __init netcell_init(void) { return pci_register_driver(&netcell_pci_driver); } static void __exit netcell_exit(void) { pci_unregister_driver(&netcell_pci_driver); } module_init(netcell_init); module_exit(netcell_exit); MODULE_AUTHOR("Alan Cox"); MODULE_DESCRIPTION("SCSI low-level driver for Netcell PATA RAID"); MODULE_LICENSE("GPL"); MODULE_DEVICE_TABLE(pci, netcell_pci_tbl); MODULE_VERSION(DRV_VERSION); |