Blame view
drivers/ata/pata_pcmcia.c
12.5 KB
c82ee6d3b treewide: Replace... |
1 |
// SPDX-License-Identifier: GPL-2.0-or-later |
669a5db41 [libata] Add a bu... |
2 3 |
/* * pata_pcmcia.c - PCMCIA PATA controller driver. |
ab7716300 ata: Switch all m... |
4 |
* Copyright 2005-2006 Red Hat Inc, all rights reserved. |
85cd7251b [libata #pata-dri... |
5 |
* PCMCIA ident update Copyright 2006 Marcin Juszkiewicz |
669a5db41 [libata] Add a bu... |
6 7 |
* <openembedded@hrw.one.pl> * |
669a5db41 [libata] Add a bu... |
8 9 10 11 12 13 14 15 |
* Heavily based upon ide-cs.c * The initial developer of the original code is David A. Hinds * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds * are Copyright (C) 1999 David A. Hinds. All Rights Reserved. */ #include <linux/kernel.h> #include <linux/module.h> |
669a5db41 [libata] Add a bu... |
16 17 |
#include <linux/blkdev.h> #include <linux/delay.h> |
5a0e3ad6a include cleanup: ... |
18 |
#include <linux/slab.h> |
669a5db41 [libata] Add a bu... |
19 20 21 |
#include <scsi/scsi_host.h> #include <linux/ata.h> #include <linux/libata.h> |
669a5db41 [libata] Add a bu... |
22 23 24 25 26 27 28 |
#include <pcmcia/cistpl.h> #include <pcmcia/ds.h> #include <pcmcia/cisreg.h> #include <pcmcia/ciscode.h> #define DRV_NAME "pata_pcmcia" |
3d47aa8e7 [libata] Drain da... |
29 |
#define DRV_VERSION "0.3.5" |
669a5db41 [libata] Add a bu... |
30 |
|
4dc5200d7 pcmcia - spot sla... |
31 32 |
/** * pcmcia_set_mode - PCMCIA specific mode setup |
0260731f0 libata-link: link... |
33 |
* @link: link |
4dc5200d7 pcmcia - spot sla... |
34 35 36 37 38 39 40 |
* @r_failed_dev: Return pointer for failed device * * Perform the tuning and setup of the devices and timings, which * for PCMCIA is the same as any other controller. We wrap it however * as we need to spot hardware with incorrect or missing master/slave * decode, which alas is embarrassingly common in the PC world */ |
0260731f0 libata-link: link... |
41 |
static int pcmcia_set_mode(struct ata_link *link, struct ata_device **r_failed_dev) |
4dc5200d7 pcmcia - spot sla... |
42 |
{ |
0260731f0 libata-link: link... |
43 44 |
struct ata_device *master = &link->device[0]; struct ata_device *slave = &link->device[1]; |
4dc5200d7 pcmcia - spot sla... |
45 46 |
if (!ata_dev_enabled(master) || !ata_dev_enabled(slave)) |
0260731f0 libata-link: link... |
47 |
return ata_do_set_mode(link, r_failed_dev); |
4dc5200d7 pcmcia - spot sla... |
48 49 |
if (memcmp(master->id + ATA_ID_FW_REV, slave->id + ATA_ID_FW_REV, |
5796d1c4c [libata] Address ... |
50 |
ATA_ID_FW_REV_LEN + ATA_ID_PROD_LEN) == 0) { |
4dc5200d7 pcmcia - spot sla... |
51 52 53 54 |
/* Suspicious match, but could be two cards from the same vendor - check serial */ if (memcmp(master->id + ATA_ID_SERNO, slave->id + ATA_ID_SERNO, ATA_ID_SERNO_LEN) == 0 && master->id[ATA_ID_SERNO] >> 8) { |
a9a79dfec ata: Convert ata_... |
55 56 |
ata_dev_warn(slave, "is a ghost device, ignoring "); |
4dc5200d7 pcmcia - spot sla... |
57 58 59 |
ata_dev_disable(slave); } } |
0260731f0 libata-link: link... |
60 |
return ata_do_set_mode(link, r_failed_dev); |
4dc5200d7 pcmcia - spot sla... |
61 |
} |
a5df2eabd pata_pcmcia: Add ... |
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
/** * pcmcia_set_mode_8bit - PCMCIA specific mode setup * @link: link * @r_failed_dev: Return pointer for failed device * * For the simple emulated 8bit stuff the less we do the better. */ static int pcmcia_set_mode_8bit(struct ata_link *link, struct ata_device **r_failed_dev) { return 0; } /** * ata_data_xfer_8bit - Transfer data by 8bit PIO |
989e0aac1 ata: pass queued ... |
78 |
* @qc: queued command |
a5df2eabd pata_pcmcia: Add ... |
79 80 |
* @buf: data buffer * @buflen: buffer length |
f885521f0 pata_pcmcia: conv... |
81 |
* @rw: read/write |
a5df2eabd pata_pcmcia: Add ... |
82 83 84 85 86 87 |
* * Transfer data from/to the device data register by 8 bit PIO. * * LOCKING: * Inherited from caller. */ |
989e0aac1 ata: pass queued ... |
88 |
static unsigned int ata_data_xfer_8bit(struct ata_queued_cmd *qc, |
f885521f0 pata_pcmcia: conv... |
89 |
unsigned char *buf, unsigned int buflen, int rw) |
a5df2eabd pata_pcmcia: Add ... |
90 |
{ |
989e0aac1 ata: pass queued ... |
91 |
struct ata_port *ap = qc->dev->link->ap; |
f885521f0 pata_pcmcia: conv... |
92 93 |
if (rw == READ) |
a5df2eabd pata_pcmcia: Add ... |
94 |
ioread8_rep(ap->ioaddr.data_addr, buf, buflen); |
f885521f0 pata_pcmcia: conv... |
95 96 97 98 |
else iowrite8_rep(ap->ioaddr.data_addr, buf, buflen); return buflen; |
a5df2eabd pata_pcmcia: Add ... |
99 |
} |
3d47aa8e7 [libata] Drain da... |
100 101 102 103 104 |
/** * pcmcia_8bit_drain_fifo - Stock FIFO drain logic for SFF controllers * @qc: command * * Drain the FIFO and device of any stuck data following a command |
3ad2f3fbb tree-wide: Assort... |
105 |
* failing to complete. In some cases this is necessary before a |
3d47aa8e7 [libata] Drain da... |
106 107 108 |
* reset will recover the device. * */ |
4fca377f7 [libata] trivial:... |
109 |
|
9ffc5da5e libata: make func... |
110 |
static void pcmcia_8bit_drain_fifo(struct ata_queued_cmd *qc) |
3d47aa8e7 [libata] Drain da... |
111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
{ int count; struct ata_port *ap; /* We only need to flush incoming data when a command was running */ if (qc == NULL || qc->dma_dir == DMA_TO_DEVICE) return; ap = qc->ap; /* Drain up to 64K of data before we give up this recovery method */ for (count = 0; (ap->ops->sff_check_status(ap) & ATA_DRQ) && count++ < 65536;) ioread8(ap->ioaddr.data_addr); if (count) |
a9a79dfec ata: Convert ata_... |
127 128 |
ata_port_warn(ap, "drained %d bytes to clear DRQ ", count); |
3d47aa8e7 [libata] Drain da... |
129 130 |
} |
a5df2eabd pata_pcmcia: Add ... |
131 |
|
669a5db41 [libata] Add a bu... |
132 |
static struct scsi_host_template pcmcia_sht = { |
68d1d07b5 libata: implement... |
133 |
ATA_PIO_SHT(DRV_NAME), |
669a5db41 [libata] Add a bu... |
134 135 136 |
}; static struct ata_port_operations pcmcia_port_ops = { |
029cfd6b7 libata: implement... |
137 |
.inherits = &ata_sff_port_ops, |
23ebda2fc libata: remove at... |
138 |
.sff_data_xfer = ata_sff_data_xfer32, |
029cfd6b7 libata: implement... |
139 140 |
.cable_detect = ata_cable_40wire, .set_mode = pcmcia_set_mode, |
669a5db41 [libata] Add a bu... |
141 |
}; |
a5df2eabd pata_pcmcia: Add ... |
142 |
static struct ata_port_operations pcmcia_8bit_port_ops = { |
029cfd6b7 libata: implement... |
143 |
.inherits = &ata_sff_port_ops, |
5682ed33a libata: rename SF... |
144 |
.sff_data_xfer = ata_data_xfer_8bit, |
029cfd6b7 libata: implement... |
145 146 |
.cable_detect = ata_cable_40wire, .set_mode = pcmcia_set_mode_8bit, |
8244cd059 libata-sff: renam... |
147 |
.sff_drain_fifo = pcmcia_8bit_drain_fifo, |
a5df2eabd pata_pcmcia: Add ... |
148 |
}; |
0bac660a7 pcmcia: use pcmci... |
149 |
|
00990e7ce pcmcia: use autoc... |
150 |
static int pcmcia_check_one_config(struct pcmcia_device *pdev, void *priv_data) |
0bac660a7 pcmcia: use pcmci... |
151 |
{ |
00990e7ce pcmcia: use autoc... |
152 |
int *is_kme = priv_data; |
b08f5bc40 drivers/ata/pata_... |
153 154 |
if ((pdev->resource[0]->flags & IO_DATA_PATH_WIDTH) != IO_DATA_PATH_WIDTH_8) { |
00990e7ce pcmcia: use autoc... |
155 156 157 158 159 160 161 162 163 164 165 |
pdev->resource[0]->flags &= ~IO_DATA_PATH_WIDTH; pdev->resource[0]->flags |= IO_DATA_PATH_WIDTH_AUTO; } pdev->resource[1]->flags &= ~IO_DATA_PATH_WIDTH; pdev->resource[1]->flags |= IO_DATA_PATH_WIDTH_8; if (pdev->resource[1]->end) { pdev->resource[0]->end = 8; pdev->resource[1]->end = (*is_kme) ? 2 : 1; } else { if (pdev->resource[0]->end < 16) |
8e2fc39dd pcmcia: pcmcia_co... |
166 |
return -ENODEV; |
0bac660a7 pcmcia: use pcmci... |
167 |
} |
00990e7ce pcmcia: use autoc... |
168 169 |
return pcmcia_request_io(pdev); |
0bac660a7 pcmcia: use pcmci... |
170 |
} |
669a5db41 [libata] Add a bu... |
171 172 173 174 175 176 177 178 179 180 |
/** * pcmcia_init_one - attach a PCMCIA interface * @pdev: pcmcia device * * Register a PCMCIA IDE interface. Such interfaces are PIO 0 and * shared IRQ. */ static int pcmcia_init_one(struct pcmcia_device *pdev) { |
5d728824e libata: convert t... |
181 182 |
struct ata_host *host; struct ata_port *ap; |
444486a5f pcmcia: use dynam... |
183 |
int is_kme = 0, ret = -ENOMEM, p; |
669a5db41 [libata] Add a bu... |
184 |
unsigned long io_base, ctl_base; |
0d5ff5667 libata: convert t... |
185 |
void __iomem *io_addr, *ctl_addr; |
d7b174500 pata_pcmcia: Mino... |
186 |
int n_ports = 1; |
a5df2eabd pata_pcmcia: Add ... |
187 |
struct ata_port_operations *ops = &pcmcia_port_ops; |
669a5db41 [libata] Add a bu... |
188 |
/* Set up attributes in order to probe card and get resources */ |
00990e7ce pcmcia: use autoc... |
189 190 |
pdev->config_flags |= CONF_ENABLE_IRQ | CONF_AUTO_SET_IO | CONF_AUTO_SET_VPP | CONF_AUTO_CHECK_VCC; |
669a5db41 [libata] Add a bu... |
191 |
|
669a5db41 [libata] Add a bu... |
192 193 |
/* See if we have a manufacturer identifier. Use it to set is_kme for vendor quirks */ |
efd50585e [PATCH] pcmcia: r... |
194 195 196 |
is_kme = ((pdev->manf_id == MANFID_KME) && ((pdev->card_id == PRODID_KME_KXLC005_A) || (pdev->card_id == PRODID_KME_KXLC005_B))); |
669a5db41 [libata] Add a bu... |
197 |
|
00990e7ce pcmcia: use autoc... |
198 |
if (pcmcia_loop_config(pdev, pcmcia_check_one_config, &is_kme)) { |
440eed43e pcmcia: introduce... |
199 |
pdev->config_flags &= ~CONF_AUTO_CHECK_VCC; |
00990e7ce pcmcia: use autoc... |
200 |
if (pcmcia_loop_config(pdev, pcmcia_check_one_config, &is_kme)) |
0bac660a7 pcmcia: use pcmci... |
201 |
goto failed; /* No suitable config found */ |
669a5db41 [libata] Add a bu... |
202 |
} |
9a017a910 pcmcia: do not us... |
203 |
io_base = pdev->resource[0]->start; |
00990e7ce pcmcia: use autoc... |
204 205 206 207 |
if (pdev->resource[1]->end) ctl_base = pdev->resource[1]->start; else ctl_base = pdev->resource[0]->start + 0x0e; |
eb14120f7 pcmcia: re-work p... |
208 |
if (!pdev->irq) |
444486a5f pcmcia: use dynam... |
209 |
goto failed; |
1ac71e5a3 pcmcia: convert p... |
210 |
ret = pcmcia_enable_device(pdev); |
444486a5f pcmcia: use dynam... |
211 212 |
if (ret) goto failed; |
669a5db41 [libata] Add a bu... |
213 |
|
0d5ff5667 libata: convert t... |
214 215 216 217 218 219 |
/* iomap */ ret = -ENOMEM; io_addr = devm_ioport_map(&pdev->dev, io_base, 8); ctl_addr = devm_ioport_map(&pdev->dev, ctl_base, 1); if (!io_addr || !ctl_addr) goto failed; |
669a5db41 [libata] Add a bu... |
220 |
/* Success. Disable the IRQ nIEN line, do quirks */ |
0d5ff5667 libata: convert t... |
221 |
iowrite8(0x02, ctl_addr); |
669a5db41 [libata] Add a bu... |
222 |
if (is_kme) |
0d5ff5667 libata: convert t... |
223 |
iowrite8(0x81, ctl_addr + 0x01); |
669a5db41 [libata] Add a bu... |
224 225 226 |
/* FIXME: Could be more ports at base + 0x10 but we only deal with one right now */ |
9a017a910 pcmcia: do not us... |
227 |
if (resource_size(pdev->resource[0]) >= 0x20) |
d7b174500 pata_pcmcia: Mino... |
228 |
n_ports = 2; |
669a5db41 [libata] Add a bu... |
229 |
|
a5df2eabd pata_pcmcia: Add ... |
230 231 |
if (pdev->manf_id == 0x0097 && pdev->card_id == 0x1620) ops = &pcmcia_8bit_port_ops; |
669a5db41 [libata] Add a bu... |
232 |
/* |
5796d1c4c [libata] Address ... |
233 234 |
* Having done the PCMCIA plumbing the ATA side is relatively * sane. |
669a5db41 [libata] Add a bu... |
235 |
*/ |
5d728824e libata: convert t... |
236 |
ret = -ENOMEM; |
d7b174500 pata_pcmcia: Mino... |
237 |
host = ata_host_alloc(&pdev->dev, n_ports); |
5d728824e libata: convert t... |
238 239 |
if (!host) goto failed; |
5d728824e libata: convert t... |
240 |
|
d7b174500 pata_pcmcia: Mino... |
241 242 |
for (p = 0; p < n_ports; p++) { ap = host->ports[p]; |
5d728824e libata: convert t... |
243 |
|
d7b174500 pata_pcmcia: Mino... |
244 |
ap->ops = ops; |
14bdef982 [libata] convert ... |
245 |
ap->pio_mask = ATA_PIO0; /* ISA so PIO 0 cycles */ |
d7b174500 pata_pcmcia: Mino... |
246 247 248 249 |
ap->flags |= ATA_FLAG_SLAVE_POSS; ap->ioaddr.cmd_addr = io_addr + 0x10 * p; ap->ioaddr.altstatus_addr = ctl_addr + 0x10 * p; ap->ioaddr.ctl_addr = ctl_addr + 0x10 * p; |
9363c3825 libata: rename SF... |
250 |
ata_sff_std_ports(&ap->ioaddr); |
d7b174500 pata_pcmcia: Mino... |
251 252 253 |
ata_port_desc(ap, "cmd 0x%lx ctl 0x%lx", io_base, ctl_base); } |
cbcdd8759 libata: implement... |
254 |
|
5d728824e libata: convert t... |
255 |
/* activate */ |
eb14120f7 pcmcia: re-work p... |
256 |
ret = ata_host_activate(host, pdev->irq, ata_sff_interrupt, |
5d728824e libata: convert t... |
257 258 |
IRQF_SHARED, &pcmcia_sht); if (ret) |
669a5db41 [libata] Add a bu... |
259 |
goto failed; |
a371b37cc pata_pcmcia: get ... |
260 |
pdev->priv = host; |
669a5db41 [libata] Add a bu... |
261 |
return 0; |
669a5db41 [libata] Add a bu... |
262 |
failed: |
669a5db41 [libata] Add a bu... |
263 |
pcmcia_disable_device(pdev); |
669a5db41 [libata] Add a bu... |
264 265 266 267 268 269 270 271 272 273 274 275 276 |
return ret; } /** * pcmcia_remove_one - unplug an pcmcia interface * @pdev: pcmcia device * * A PCMCIA ATA device has been unplugged. Perform the needed * cleanup. Also called on module unload for any active devices. */ static void pcmcia_remove_one(struct pcmcia_device *pdev) { |
a371b37cc pata_pcmcia: get ... |
277 278 279 280 |
struct ata_host *host = pdev->priv; if (host) ata_host_detach(host); |
669a5db41 [libata] Add a bu... |
281 |
pcmcia_disable_device(pdev); |
669a5db41 [libata] Add a bu... |
282 |
} |
25f8f54f6 pcmcia: Convert p... |
283 |
static const struct pcmcia_device_id pcmcia_devices[] = { |
669a5db41 [libata] Add a bu... |
284 |
PCMCIA_DEVICE_FUNC_ID(4), |
77ec15cc2 [libata] pata_pcm... |
285 |
PCMCIA_DEVICE_MANF_CARD(0x0000, 0x0000), /* Corsair */ |
669a5db41 [libata] Add a bu... |
286 |
PCMCIA_DEVICE_MANF_CARD(0x0007, 0x0000), /* Hitachi */ |
ed2a6e4ac pata_pcmcia: Upda... |
287 288 |
PCMCIA_DEVICE_MANF_CARD(0x000a, 0x0000), /* I-O Data CFA */ PCMCIA_DEVICE_MANF_CARD(0x001c, 0x0001), /* Mitsubishi CFA */ |
669a5db41 [libata] Add a bu... |
289 |
PCMCIA_DEVICE_MANF_CARD(0x0032, 0x0704), |
7871e74ac pata_pcmcia.c: ad... |
290 |
PCMCIA_DEVICE_MANF_CARD(0x0032, 0x2904), |
ed2a6e4ac pata_pcmcia: Upda... |
291 |
PCMCIA_DEVICE_MANF_CARD(0x0045, 0x0401), /* SanDisk CFA */ |
795659ef0 pcmcia: uniform d... |
292 |
PCMCIA_DEVICE_MANF_CARD(0x004f, 0x0000), /* Kingston */ |
a5df2eabd pata_pcmcia: Add ... |
293 |
PCMCIA_DEVICE_MANF_CARD(0x0097, 0x1620), /* TI emulated */ |
669a5db41 [libata] Add a bu... |
294 295 296 |
PCMCIA_DEVICE_MANF_CARD(0x0098, 0x0000), /* Toshiba */ PCMCIA_DEVICE_MANF_CARD(0x00a4, 0x002d), PCMCIA_DEVICE_MANF_CARD(0x00ce, 0x0000), /* Samsung */ |
5796d1c4c [libata] Address ... |
297 |
PCMCIA_DEVICE_MANF_CARD(0x0319, 0x0000), /* Hitachi */ |
669a5db41 [libata] Add a bu... |
298 |
PCMCIA_DEVICE_MANF_CARD(0x2080, 0x0001), |
ed2a6e4ac pata_pcmcia: Upda... |
299 300 |
PCMCIA_DEVICE_MANF_CARD(0x4e01, 0x0100), /* Viking CFA */ PCMCIA_DEVICE_MANF_CARD(0x4e01, 0x0200), /* Lexar, Viking CFA */ |
669a5db41 [libata] Add a bu... |
301 302 303 304 305 |
PCMCIA_DEVICE_PROD_ID123("Caravelle", "PSC-IDE ", "PSC000", 0x8c36137c, 0xd0693ab8, 0x2768a9f0), PCMCIA_DEVICE_PROD_ID123("CDROM", "IDE", "MCD-601p", 0x1b9179ca, 0xede88951, 0x0d902f74), PCMCIA_DEVICE_PROD_ID123("PCMCIA", "IDE CARD", "F1", 0x281f1c5d, 0x1907960c, 0xf7fde8b9), PCMCIA_DEVICE_PROD_ID12("ARGOSY", "CD-ROM", 0x78f308dc, 0x66536591), PCMCIA_DEVICE_PROD_ID12("ARGOSY", "PnPIDE", 0x78f308dc, 0x0c694728), |
044dcc824 pata_pcmcia: add ... |
306 |
PCMCIA_DEVICE_PROD_ID12("CNF ", "CD-ROM", 0x46d7db81, 0x66536591), |
669a5db41 [libata] Add a bu... |
307 308 309 310 311 312 313 314 315 |
PCMCIA_DEVICE_PROD_ID12("CNF CD-M", "CD-ROM", 0x7d93b852, 0x66536591), PCMCIA_DEVICE_PROD_ID12("Creative Technology Ltd.", "PCMCIA CD-ROM Interface Card", 0xff8c8a45, 0xfe8020c4), PCMCIA_DEVICE_PROD_ID12("Digital Equipment Corporation.", "Digital Mobile Media CD-ROM", 0x17692a66, 0xef1dcbde), PCMCIA_DEVICE_PROD_ID12("EXP", "CD+GAME", 0x6f58c983, 0x63c13aaf), PCMCIA_DEVICE_PROD_ID12("EXP ", "CD-ROM", 0x0a5c52fd, 0x66536591), PCMCIA_DEVICE_PROD_ID12("EXP ", "PnPIDE", 0x0a5c52fd, 0x0c694728), PCMCIA_DEVICE_PROD_ID12("FREECOM", "PCCARD-IDE", 0x5714cbf7, 0x48e0ab8e), PCMCIA_DEVICE_PROD_ID12("HITACHI", "FLASH", 0xf4f43949, 0x9eb86aae), PCMCIA_DEVICE_PROD_ID12("HITACHI", "microdrive", 0xf4f43949, 0xa6d76178), |
795659ef0 pcmcia: uniform d... |
316 |
PCMCIA_DEVICE_PROD_ID12("Hyperstone", "Model1", 0x3d5b9ef5, 0xca6ab420), |
669a5db41 [libata] Add a bu... |
317 318 |
PCMCIA_DEVICE_PROD_ID12("IBM", "microdrive", 0xb569a6e5, 0xa6d76178), PCMCIA_DEVICE_PROD_ID12("IBM", "IBM17JSSFP20", 0xb569a6e5, 0xf2508753), |
85ea2d3f9 pata_pcmcia / ide... |
319 |
PCMCIA_DEVICE_PROD_ID12("KINGSTON", "CF CARD 1GB", 0x2e6d1829, 0x55d5bffb), |
f25798eda pata_pcmcia/ide-c... |
320 |
PCMCIA_DEVICE_PROD_ID12("KINGSTON", "CF CARD 4GB", 0x2e6d1829, 0x531e7d10), |
363f7e428 PCMCIA: Add anoth... |
321 |
PCMCIA_DEVICE_PROD_ID12("KINGSTON", "CF8GB", 0x2e6d1829, 0xacbe682e), |
669a5db41 [libata] Add a bu... |
322 323 324 325 |
PCMCIA_DEVICE_PROD_ID12("IO DATA", "CBIDE2 ", 0x547e66dc, 0x8671043b), PCMCIA_DEVICE_PROD_ID12("IO DATA", "PCIDE", 0x547e66dc, 0x5c5ab149), PCMCIA_DEVICE_PROD_ID12("IO DATA", "PCIDEII", 0x547e66dc, 0xb3662674), PCMCIA_DEVICE_PROD_ID12("LOOKMEET", "CBIDE2 ", 0xe37be2b5, 0x8671043b), |
74e23386b pcmcia: add an pa... |
326 |
PCMCIA_DEVICE_PROD_ID12("M-Systems", "CF300", 0x7ed2ad87, 0x7e9e78ee), |
669a5db41 [libata] Add a bu... |
327 328 329 330 331 332 333 334 335 |
PCMCIA_DEVICE_PROD_ID12("M-Systems", "CF500", 0x7ed2ad87, 0x7a13045c), PCMCIA_DEVICE_PROD_ID2("NinjaATA-", 0xebe0bd79), PCMCIA_DEVICE_PROD_ID12("PCMCIA", "CD-ROM", 0x281f1c5d, 0x66536591), PCMCIA_DEVICE_PROD_ID12("PCMCIA", "PnPIDE", 0x281f1c5d, 0x0c694728), PCMCIA_DEVICE_PROD_ID12("SHUTTLE TECHNOLOGY LTD.", "PCCARD-IDE/ATAPI Adapter", 0x4a3f0ba0, 0x322560e1), PCMCIA_DEVICE_PROD_ID12("SEAGATE", "ST1", 0x87c1b330, 0xe1f30883), PCMCIA_DEVICE_PROD_ID12("SAMSUNG", "04/05/06", 0x43d74cb4, 0x6a22777d), PCMCIA_DEVICE_PROD_ID12("SMI VENDOR", "SMI PRODUCT", 0x30896c92, 0x703cc5f6), PCMCIA_DEVICE_PROD_ID12("TOSHIBA", "MK2001MPL", 0xb4585a1a, 0x3489e003), |
a0a00cbf8 [PATCH] pata: tea... |
336 |
PCMCIA_DEVICE_PROD_ID1("TRANSCEND 512M ", 0xd0909443), |
a17bf2202 pcmcia: add anoth... |
337 |
PCMCIA_DEVICE_PROD_ID12("TRANSCEND", "TS1GCF45", 0x709b1bf1, 0xf68b6f32), |
bf4e18294 [PATCH] pcmcia: A... |
338 |
PCMCIA_DEVICE_PROD_ID12("TRANSCEND", "TS1GCF80", 0x709b1bf1, 0x2a54d4b1), |
48aaae7a2 pata_pcmcia: reco... |
339 |
PCMCIA_DEVICE_PROD_ID12("TRANSCEND", "TS2GCF120", 0x709b1bf1, 0x969aa4f2), |
a0a00cbf8 [PATCH] pata: tea... |
340 |
PCMCIA_DEVICE_PROD_ID12("TRANSCEND", "TS4GCF120", 0x709b1bf1, 0xf54a91c8), |
85ea2d3f9 pata_pcmcia / ide... |
341 |
PCMCIA_DEVICE_PROD_ID12("TRANSCEND", "TS4GCF133", 0x709b1bf1, 0x7558f133), |
f25798eda pata_pcmcia/ide-c... |
342 |
PCMCIA_DEVICE_PROD_ID12("TRANSCEND", "TS8GCF133", 0x709b1bf1, 0xb2f89b47), |
669a5db41 [libata] Add a bu... |
343 |
PCMCIA_DEVICE_PROD_ID12("WIT", "IDE16", 0x244e5994, 0x3e232852), |
0517793fa [PATCH] pcmcia: y... |
344 |
PCMCIA_DEVICE_PROD_ID12("WEIDA", "TWTTI", 0xcc7cf69c, 0x212bb918), |
669a5db41 [libata] Add a bu... |
345 346 347 |
PCMCIA_DEVICE_PROD_ID1("STI Flash", 0xe4a13209), PCMCIA_DEVICE_PROD_ID12("STI", "Flash 5.0", 0xbf2df18d, 0x8cb57a0e), PCMCIA_MFC_DEVICE_PROD_ID12(1, "SanDisk", "ConnectPlus", 0x7a954bd9, 0x74be00c6), |
a12d6c9a0 [libata] pata_pcm... |
348 |
PCMCIA_DEVICE_PROD_ID2("Flash Card", 0x5a362506), |
669a5db41 [libata] Add a bu... |
349 350 351 352 353 354 355 |
PCMCIA_DEVICE_NULL, }; MODULE_DEVICE_TABLE(pcmcia, pcmcia_devices); static struct pcmcia_driver pcmcia_driver = { .owner = THIS_MODULE, |
2e9b981a7 pcmcia: move driv... |
356 |
.name = DRV_NAME, |
669a5db41 [libata] Add a bu... |
357 358 359 360 |
.id_table = pcmcia_devices, .probe = pcmcia_init_one, .remove = pcmcia_remove_one, }; |
460604850 drivers/ata: use ... |
361 |
module_pcmcia_driver(pcmcia_driver); |
669a5db41 [libata] Add a bu... |
362 363 364 365 366 |
MODULE_AUTHOR("Alan Cox"); MODULE_DESCRIPTION("low-level driver for PCMCIA ATA"); MODULE_LICENSE("GPL"); MODULE_VERSION(DRV_VERSION); |