xref: /openbmc/linux/drivers/ata/sata_promise.c (revision f42b3800)
1 /*
2  *  sata_promise.c - Promise SATA
3  *
4  *  Maintained by:  Jeff Garzik <jgarzik@pobox.com>
5  *		    Mikael Pettersson <mikpe@it.uu.se>
6  *  		    Please ALWAYS copy linux-ide@vger.kernel.org
7  *		    on emails.
8  *
9  *  Copyright 2003-2004 Red Hat, Inc.
10  *
11  *
12  *  This program is free software; you can redistribute it and/or modify
13  *  it under the terms of the GNU General Public License as published by
14  *  the Free Software Foundation; either version 2, or (at your option)
15  *  any later version.
16  *
17  *  This program is distributed in the hope that it will be useful,
18  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
19  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20  *  GNU General Public License for more details.
21  *
22  *  You should have received a copy of the GNU General Public License
23  *  along with this program; see the file COPYING.  If not, write to
24  *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
25  *
26  *
27  *  libata documentation is available via 'make {ps|pdf}docs',
28  *  as Documentation/DocBook/libata.*
29  *
30  *  Hardware information only available under NDA.
31  *
32  */
33 
34 #include <linux/kernel.h>
35 #include <linux/module.h>
36 #include <linux/pci.h>
37 #include <linux/init.h>
38 #include <linux/blkdev.h>
39 #include <linux/delay.h>
40 #include <linux/interrupt.h>
41 #include <linux/device.h>
42 #include <scsi/scsi.h>
43 #include <scsi/scsi_host.h>
44 #include <scsi/scsi_cmnd.h>
45 #include <linux/libata.h>
46 #include "sata_promise.h"
47 
48 #define DRV_NAME	"sata_promise"
49 #define DRV_VERSION	"2.12"
50 
51 enum {
52 	PDC_MAX_PORTS		= 4,
53 	PDC_MMIO_BAR		= 3,
54 	PDC_MAX_PRD		= LIBATA_MAX_PRD - 1, /* -1 for ASIC PRD bug workaround */
55 
56 	/* register offsets */
57 	PDC_FEATURE		= 0x04, /* Feature/Error reg (per port) */
58 	PDC_SECTOR_COUNT	= 0x08, /* Sector count reg (per port) */
59 	PDC_SECTOR_NUMBER	= 0x0C, /* Sector number reg (per port) */
60 	PDC_CYLINDER_LOW	= 0x10, /* Cylinder low reg (per port) */
61 	PDC_CYLINDER_HIGH	= 0x14, /* Cylinder high reg (per port) */
62 	PDC_DEVICE		= 0x18, /* Device/Head reg (per port) */
63 	PDC_COMMAND		= 0x1C, /* Command/status reg (per port) */
64 	PDC_ALTSTATUS		= 0x38, /* Alternate-status/device-control reg (per port) */
65 	PDC_PKT_SUBMIT		= 0x40, /* Command packet pointer addr */
66 	PDC_INT_SEQMASK		= 0x40,	/* Mask of asserted SEQ INTs */
67 	PDC_FLASH_CTL		= 0x44, /* Flash control register */
68 	PDC_GLOBAL_CTL		= 0x48, /* Global control/status (per port) */
69 	PDC_CTLSTAT		= 0x60,	/* IDE control and status (per port) */
70 	PDC_SATA_PLUG_CSR	= 0x6C, /* SATA Plug control/status reg */
71 	PDC2_SATA_PLUG_CSR	= 0x60, /* SATAII Plug control/status reg */
72 	PDC_TBG_MODE		= 0x41C, /* TBG mode (not SATAII) */
73 	PDC_SLEW_CTL		= 0x470, /* slew rate control reg (not SATAII) */
74 
75 	/* PDC_GLOBAL_CTL bit definitions */
76 	PDC_PH_ERR		= (1 <<  8), /* PCI error while loading packet */
77 	PDC_SH_ERR		= (1 <<  9), /* PCI error while loading S/G table */
78 	PDC_DH_ERR		= (1 << 10), /* PCI error while loading data */
79 	PDC2_HTO_ERR		= (1 << 12), /* host bus timeout */
80 	PDC2_ATA_HBA_ERR	= (1 << 13), /* error during SATA DATA FIS transmission */
81 	PDC2_ATA_DMA_CNT_ERR	= (1 << 14), /* DMA DATA FIS size differs from S/G count */
82 	PDC_OVERRUN_ERR		= (1 << 19), /* S/G byte count larger than HD requires */
83 	PDC_UNDERRUN_ERR	= (1 << 20), /* S/G byte count less than HD requires */
84 	PDC_DRIVE_ERR		= (1 << 21), /* drive error */
85 	PDC_PCI_SYS_ERR		= (1 << 22), /* PCI system error */
86 	PDC1_PCI_PARITY_ERR	= (1 << 23), /* PCI parity error (from SATA150 driver) */
87 	PDC1_ERR_MASK		= PDC1_PCI_PARITY_ERR,
88 	PDC2_ERR_MASK		= PDC2_HTO_ERR | PDC2_ATA_HBA_ERR |
89 				  PDC2_ATA_DMA_CNT_ERR,
90 	PDC_ERR_MASK		= PDC_PH_ERR | PDC_SH_ERR | PDC_DH_ERR |
91 				  PDC_OVERRUN_ERR | PDC_UNDERRUN_ERR |
92 				  PDC_DRIVE_ERR | PDC_PCI_SYS_ERR |
93 				  PDC1_ERR_MASK | PDC2_ERR_MASK,
94 
95 	board_2037x		= 0,	/* FastTrak S150 TX2plus */
96 	board_2037x_pata	= 1,	/* FastTrak S150 TX2plus PATA port */
97 	board_20319		= 2,	/* FastTrak S150 TX4 */
98 	board_20619		= 3,	/* FastTrak TX4000 */
99 	board_2057x		= 4,	/* SATAII150 Tx2plus */
100 	board_2057x_pata	= 5,	/* SATAII150 Tx2plus PATA port */
101 	board_40518		= 6,	/* SATAII150 Tx4 */
102 
103 	PDC_HAS_PATA		= (1 << 1), /* PDC20375/20575 has PATA */
104 
105 	/* Sequence counter control registers bit definitions */
106 	PDC_SEQCNTRL_INT_MASK	= (1 << 5), /* Sequence Interrupt Mask */
107 
108 	/* Feature register values */
109 	PDC_FEATURE_ATAPI_PIO	= 0x00, /* ATAPI data xfer by PIO */
110 	PDC_FEATURE_ATAPI_DMA	= 0x01, /* ATAPI data xfer by DMA */
111 
112 	/* Device/Head register values */
113 	PDC_DEVICE_SATA		= 0xE0, /* Device/Head value for SATA devices */
114 
115 	/* PDC_CTLSTAT bit definitions */
116 	PDC_DMA_ENABLE		= (1 << 7),
117 	PDC_IRQ_DISABLE		= (1 << 10),
118 	PDC_RESET		= (1 << 11), /* HDMA reset */
119 
120 	PDC_COMMON_FLAGS	= ATA_FLAG_NO_LEGACY |
121 				  ATA_FLAG_MMIO |
122 				  ATA_FLAG_PIO_POLLING,
123 
124 	/* ap->flags bits */
125 	PDC_FLAG_GEN_II		= (1 << 24),
126 	PDC_FLAG_SATA_PATA	= (1 << 25), /* supports SATA + PATA */
127 	PDC_FLAG_4_PORTS	= (1 << 26), /* 4 ports */
128 };
129 
130 struct pdc_port_priv {
131 	u8			*pkt;
132 	dma_addr_t		pkt_dma;
133 };
134 
135 static int pdc_sata_scr_read(struct ata_port *ap, unsigned int sc_reg, u32 *val);
136 static int pdc_sata_scr_write(struct ata_port *ap, unsigned int sc_reg, u32 val);
137 static int pdc_ata_init_one (struct pci_dev *pdev, const struct pci_device_id *ent);
138 static int pdc_common_port_start(struct ata_port *ap);
139 static int pdc_sata_port_start(struct ata_port *ap);
140 static void pdc_qc_prep(struct ata_queued_cmd *qc);
141 static void pdc_tf_load_mmio(struct ata_port *ap, const struct ata_taskfile *tf);
142 static void pdc_exec_command_mmio(struct ata_port *ap, const struct ata_taskfile *tf);
143 static int pdc_check_atapi_dma(struct ata_queued_cmd *qc);
144 static int pdc_old_sata_check_atapi_dma(struct ata_queued_cmd *qc);
145 static void pdc_irq_clear(struct ata_port *ap);
146 static unsigned int pdc_qc_issue(struct ata_queued_cmd *qc);
147 static void pdc_freeze(struct ata_port *ap);
148 static void pdc_sata_freeze(struct ata_port *ap);
149 static void pdc_thaw(struct ata_port *ap);
150 static void pdc_sata_thaw(struct ata_port *ap);
151 static void pdc_error_handler(struct ata_port *ap);
152 static void pdc_post_internal_cmd(struct ata_queued_cmd *qc);
153 static int pdc_pata_cable_detect(struct ata_port *ap);
154 static int pdc_sata_cable_detect(struct ata_port *ap);
155 
156 static struct scsi_host_template pdc_ata_sht = {
157 	ATA_BASE_SHT(DRV_NAME),
158 	.sg_tablesize		= PDC_MAX_PRD,
159 	.dma_boundary		= ATA_DMA_BOUNDARY,
160 };
161 
162 static const struct ata_port_operations pdc_common_ops = {
163 	.inherits		= &ata_sff_port_ops,
164 
165 	.sff_tf_load		= pdc_tf_load_mmio,
166 	.sff_exec_command	= pdc_exec_command_mmio,
167 	.check_atapi_dma	= pdc_check_atapi_dma,
168 	.qc_prep		= pdc_qc_prep,
169 	.qc_issue		= pdc_qc_issue,
170 	.sff_irq_clear		= pdc_irq_clear,
171 
172 	.post_internal_cmd	= pdc_post_internal_cmd,
173 	.error_handler		= pdc_error_handler,
174 };
175 
176 static struct ata_port_operations pdc_sata_ops = {
177 	.inherits		= &pdc_common_ops,
178 	.cable_detect		= pdc_sata_cable_detect,
179 	.freeze			= pdc_sata_freeze,
180 	.thaw			= pdc_sata_thaw,
181 	.scr_read		= pdc_sata_scr_read,
182 	.scr_write		= pdc_sata_scr_write,
183 	.port_start		= pdc_sata_port_start,
184 };
185 
186 /* First-generation chips need a more restrictive ->check_atapi_dma op */
187 static struct ata_port_operations pdc_old_sata_ops = {
188 	.inherits		= &pdc_sata_ops,
189 	.check_atapi_dma	= pdc_old_sata_check_atapi_dma,
190 };
191 
192 static struct ata_port_operations pdc_pata_ops = {
193 	.inherits		= &pdc_common_ops,
194 	.cable_detect		= pdc_pata_cable_detect,
195 	.freeze			= pdc_freeze,
196 	.thaw			= pdc_thaw,
197 	.port_start		= pdc_common_port_start,
198 };
199 
200 static const struct ata_port_info pdc_port_info[] = {
201 	[board_2037x] =
202 	{
203 		.flags		= PDC_COMMON_FLAGS | ATA_FLAG_SATA |
204 				  PDC_FLAG_SATA_PATA,
205 		.pio_mask	= 0x1f, /* pio0-4 */
206 		.mwdma_mask	= 0x07, /* mwdma0-2 */
207 		.udma_mask	= ATA_UDMA6,
208 		.port_ops	= &pdc_old_sata_ops,
209 	},
210 
211 	[board_2037x_pata] =
212 	{
213 		.flags		= PDC_COMMON_FLAGS | ATA_FLAG_SLAVE_POSS,
214 		.pio_mask	= 0x1f, /* pio0-4 */
215 		.mwdma_mask	= 0x07, /* mwdma0-2 */
216 		.udma_mask	= ATA_UDMA6,
217 		.port_ops	= &pdc_pata_ops,
218 	},
219 
220 	[board_20319] =
221 	{
222 		.flags		= PDC_COMMON_FLAGS | ATA_FLAG_SATA |
223 				  PDC_FLAG_4_PORTS,
224 		.pio_mask	= 0x1f, /* pio0-4 */
225 		.mwdma_mask	= 0x07, /* mwdma0-2 */
226 		.udma_mask	= ATA_UDMA6,
227 		.port_ops	= &pdc_old_sata_ops,
228 	},
229 
230 	[board_20619] =
231 	{
232 		.flags		= PDC_COMMON_FLAGS | ATA_FLAG_SLAVE_POSS |
233 				  PDC_FLAG_4_PORTS,
234 		.pio_mask	= 0x1f, /* pio0-4 */
235 		.mwdma_mask	= 0x07, /* mwdma0-2 */
236 		.udma_mask	= ATA_UDMA6,
237 		.port_ops	= &pdc_pata_ops,
238 	},
239 
240 	[board_2057x] =
241 	{
242 		.flags		= PDC_COMMON_FLAGS | ATA_FLAG_SATA |
243 				  PDC_FLAG_GEN_II | PDC_FLAG_SATA_PATA,
244 		.pio_mask	= 0x1f, /* pio0-4 */
245 		.mwdma_mask	= 0x07, /* mwdma0-2 */
246 		.udma_mask	= ATA_UDMA6,
247 		.port_ops	= &pdc_sata_ops,
248 	},
249 
250 	[board_2057x_pata] =
251 	{
252 		.flags		= PDC_COMMON_FLAGS | ATA_FLAG_SLAVE_POSS |
253 				  PDC_FLAG_GEN_II,
254 		.pio_mask	= 0x1f, /* pio0-4 */
255 		.mwdma_mask	= 0x07, /* mwdma0-2 */
256 		.udma_mask	= ATA_UDMA6,
257 		.port_ops	= &pdc_pata_ops,
258 	},
259 
260 	[board_40518] =
261 	{
262 		.flags		= PDC_COMMON_FLAGS | ATA_FLAG_SATA |
263 				  PDC_FLAG_GEN_II | PDC_FLAG_4_PORTS,
264 		.pio_mask	= 0x1f, /* pio0-4 */
265 		.mwdma_mask	= 0x07, /* mwdma0-2 */
266 		.udma_mask	= ATA_UDMA6,
267 		.port_ops	= &pdc_sata_ops,
268 	},
269 };
270 
271 static const struct pci_device_id pdc_ata_pci_tbl[] = {
272 	{ PCI_VDEVICE(PROMISE, 0x3371), board_2037x },
273 	{ PCI_VDEVICE(PROMISE, 0x3373), board_2037x },
274 	{ PCI_VDEVICE(PROMISE, 0x3375), board_2037x },
275 	{ PCI_VDEVICE(PROMISE, 0x3376), board_2037x },
276 	{ PCI_VDEVICE(PROMISE, 0x3570), board_2057x },
277 	{ PCI_VDEVICE(PROMISE, 0x3571), board_2057x },
278 	{ PCI_VDEVICE(PROMISE, 0x3574), board_2057x },
279 	{ PCI_VDEVICE(PROMISE, 0x3577), board_2057x },
280 	{ PCI_VDEVICE(PROMISE, 0x3d73), board_2057x },
281 	{ PCI_VDEVICE(PROMISE, 0x3d75), board_2057x },
282 
283 	{ PCI_VDEVICE(PROMISE, 0x3318), board_20319 },
284 	{ PCI_VDEVICE(PROMISE, 0x3319), board_20319 },
285 	{ PCI_VDEVICE(PROMISE, 0x3515), board_40518 },
286 	{ PCI_VDEVICE(PROMISE, 0x3519), board_40518 },
287 	{ PCI_VDEVICE(PROMISE, 0x3d17), board_40518 },
288 	{ PCI_VDEVICE(PROMISE, 0x3d18), board_40518 },
289 
290 	{ PCI_VDEVICE(PROMISE, 0x6629), board_20619 },
291 
292 	{ }	/* terminate list */
293 };
294 
295 static struct pci_driver pdc_ata_pci_driver = {
296 	.name			= DRV_NAME,
297 	.id_table		= pdc_ata_pci_tbl,
298 	.probe			= pdc_ata_init_one,
299 	.remove			= ata_pci_remove_one,
300 };
301 
302 static int pdc_common_port_start(struct ata_port *ap)
303 {
304 	struct device *dev = ap->host->dev;
305 	struct pdc_port_priv *pp;
306 	int rc;
307 
308 	rc = ata_port_start(ap);
309 	if (rc)
310 		return rc;
311 
312 	pp = devm_kzalloc(dev, sizeof(*pp), GFP_KERNEL);
313 	if (!pp)
314 		return -ENOMEM;
315 
316 	pp->pkt = dmam_alloc_coherent(dev, 128, &pp->pkt_dma, GFP_KERNEL);
317 	if (!pp->pkt)
318 		return -ENOMEM;
319 
320 	ap->private_data = pp;
321 
322 	return 0;
323 }
324 
325 static int pdc_sata_port_start(struct ata_port *ap)
326 {
327 	int rc;
328 
329 	rc = pdc_common_port_start(ap);
330 	if (rc)
331 		return rc;
332 
333 	/* fix up PHYMODE4 align timing */
334 	if (ap->flags & PDC_FLAG_GEN_II) {
335 		void __iomem *mmio = ap->ioaddr.scr_addr;
336 		unsigned int tmp;
337 
338 		tmp = readl(mmio + 0x014);
339 		tmp = (tmp & ~3) | 1;	/* set bits 1:0 = 0:1 */
340 		writel(tmp, mmio + 0x014);
341 	}
342 
343 	return 0;
344 }
345 
346 static void pdc_reset_port(struct ata_port *ap)
347 {
348 	void __iomem *mmio = ap->ioaddr.cmd_addr + PDC_CTLSTAT;
349 	unsigned int i;
350 	u32 tmp;
351 
352 	for (i = 11; i > 0; i--) {
353 		tmp = readl(mmio);
354 		if (tmp & PDC_RESET)
355 			break;
356 
357 		udelay(100);
358 
359 		tmp |= PDC_RESET;
360 		writel(tmp, mmio);
361 	}
362 
363 	tmp &= ~PDC_RESET;
364 	writel(tmp, mmio);
365 	readl(mmio);	/* flush */
366 }
367 
368 static int pdc_pata_cable_detect(struct ata_port *ap)
369 {
370 	u8 tmp;
371 	void __iomem *mmio = ap->ioaddr.cmd_addr + PDC_CTLSTAT + 0x03;
372 
373 	tmp = readb(mmio);
374 	if (tmp & 0x01)
375 		return ATA_CBL_PATA40;
376 	return ATA_CBL_PATA80;
377 }
378 
379 static int pdc_sata_cable_detect(struct ata_port *ap)
380 {
381 	return ATA_CBL_SATA;
382 }
383 
384 static int pdc_sata_scr_read(struct ata_port *ap, unsigned int sc_reg, u32 *val)
385 {
386 	if (sc_reg > SCR_CONTROL)
387 		return -EINVAL;
388 	*val = readl(ap->ioaddr.scr_addr + (sc_reg * 4));
389 	return 0;
390 }
391 
392 static int pdc_sata_scr_write(struct ata_port *ap, unsigned int sc_reg, u32 val)
393 {
394 	if (sc_reg > SCR_CONTROL)
395 		return -EINVAL;
396 	writel(val, ap->ioaddr.scr_addr + (sc_reg * 4));
397 	return 0;
398 }
399 
400 static void pdc_atapi_pkt(struct ata_queued_cmd *qc)
401 {
402 	struct ata_port *ap = qc->ap;
403 	dma_addr_t sg_table = ap->prd_dma;
404 	unsigned int cdb_len = qc->dev->cdb_len;
405 	u8 *cdb = qc->cdb;
406 	struct pdc_port_priv *pp = ap->private_data;
407 	u8 *buf = pp->pkt;
408 	__le32 *buf32 = (__le32 *) buf;
409 	unsigned int dev_sel, feature;
410 
411 	/* set control bits (byte 0), zero delay seq id (byte 3),
412 	 * and seq id (byte 2)
413 	 */
414 	switch (qc->tf.protocol) {
415 	case ATAPI_PROT_DMA:
416 		if (!(qc->tf.flags & ATA_TFLAG_WRITE))
417 			buf32[0] = cpu_to_le32(PDC_PKT_READ);
418 		else
419 			buf32[0] = 0;
420 		break;
421 	case ATAPI_PROT_NODATA:
422 		buf32[0] = cpu_to_le32(PDC_PKT_NODATA);
423 		break;
424 	default:
425 		BUG();
426 		break;
427 	}
428 	buf32[1] = cpu_to_le32(sg_table);	/* S/G table addr */
429 	buf32[2] = 0;				/* no next-packet */
430 
431 	/* select drive */
432 	if (sata_scr_valid(&ap->link))
433 		dev_sel = PDC_DEVICE_SATA;
434 	else
435 		dev_sel = qc->tf.device;
436 
437 	buf[12] = (1 << 5) | ATA_REG_DEVICE;
438 	buf[13] = dev_sel;
439 	buf[14] = (1 << 5) | ATA_REG_DEVICE | PDC_PKT_CLEAR_BSY;
440 	buf[15] = dev_sel; /* once more, waiting for BSY to clear */
441 
442 	buf[16] = (1 << 5) | ATA_REG_NSECT;
443 	buf[17] = qc->tf.nsect;
444 	buf[18] = (1 << 5) | ATA_REG_LBAL;
445 	buf[19] = qc->tf.lbal;
446 
447 	/* set feature and byte counter registers */
448 	if (qc->tf.protocol != ATAPI_PROT_DMA)
449 		feature = PDC_FEATURE_ATAPI_PIO;
450 	else
451 		feature = PDC_FEATURE_ATAPI_DMA;
452 
453 	buf[20] = (1 << 5) | ATA_REG_FEATURE;
454 	buf[21] = feature;
455 	buf[22] = (1 << 5) | ATA_REG_BYTEL;
456 	buf[23] = qc->tf.lbam;
457 	buf[24] = (1 << 5) | ATA_REG_BYTEH;
458 	buf[25] = qc->tf.lbah;
459 
460 	/* send ATAPI packet command 0xA0 */
461 	buf[26] = (1 << 5) | ATA_REG_CMD;
462 	buf[27] = qc->tf.command;
463 
464 	/* select drive and check DRQ */
465 	buf[28] = (1 << 5) | ATA_REG_DEVICE | PDC_PKT_WAIT_DRDY;
466 	buf[29] = dev_sel;
467 
468 	/* we can represent cdb lengths 2/4/6/8/10/12/14/16 */
469 	BUG_ON(cdb_len & ~0x1E);
470 
471 	/* append the CDB as the final part */
472 	buf[30] = (((cdb_len >> 1) & 7) << 5) | ATA_REG_DATA | PDC_LAST_REG;
473 	memcpy(buf+31, cdb, cdb_len);
474 }
475 
476 /**
477  *	pdc_fill_sg - Fill PCI IDE PRD table
478  *	@qc: Metadata associated with taskfile to be transferred
479  *
480  *	Fill PCI IDE PRD (scatter-gather) table with segments
481  *	associated with the current disk command.
482  *	Make sure hardware does not choke on it.
483  *
484  *	LOCKING:
485  *	spin_lock_irqsave(host lock)
486  *
487  */
488 static void pdc_fill_sg(struct ata_queued_cmd *qc)
489 {
490 	struct ata_port *ap = qc->ap;
491 	struct scatterlist *sg;
492 	const u32 SG_COUNT_ASIC_BUG = 41*4;
493 	unsigned int si, idx;
494 	u32 len;
495 
496 	if (!(qc->flags & ATA_QCFLAG_DMAMAP))
497 		return;
498 
499 	idx = 0;
500 	for_each_sg(qc->sg, sg, qc->n_elem, si) {
501 		u32 addr, offset;
502 		u32 sg_len;
503 
504 		/* determine if physical DMA addr spans 64K boundary.
505 		 * Note h/w doesn't support 64-bit, so we unconditionally
506 		 * truncate dma_addr_t to u32.
507 		 */
508 		addr = (u32) sg_dma_address(sg);
509 		sg_len = sg_dma_len(sg);
510 
511 		while (sg_len) {
512 			offset = addr & 0xffff;
513 			len = sg_len;
514 			if ((offset + sg_len) > 0x10000)
515 				len = 0x10000 - offset;
516 
517 			ap->prd[idx].addr = cpu_to_le32(addr);
518 			ap->prd[idx].flags_len = cpu_to_le32(len & 0xffff);
519 			VPRINTK("PRD[%u] = (0x%X, 0x%X)\n", idx, addr, len);
520 
521 			idx++;
522 			sg_len -= len;
523 			addr += len;
524 		}
525 	}
526 
527 	len = le32_to_cpu(ap->prd[idx - 1].flags_len);
528 
529 	if (len > SG_COUNT_ASIC_BUG) {
530 		u32 addr;
531 
532 		VPRINTK("Splitting last PRD.\n");
533 
534 		addr = le32_to_cpu(ap->prd[idx - 1].addr);
535 		ap->prd[idx - 1].flags_len = cpu_to_le32(len - SG_COUNT_ASIC_BUG);
536 		VPRINTK("PRD[%u] = (0x%X, 0x%X)\n", idx - 1, addr, SG_COUNT_ASIC_BUG);
537 
538 		addr = addr + len - SG_COUNT_ASIC_BUG;
539 		len = SG_COUNT_ASIC_BUG;
540 		ap->prd[idx].addr = cpu_to_le32(addr);
541 		ap->prd[idx].flags_len = cpu_to_le32(len);
542 		VPRINTK("PRD[%u] = (0x%X, 0x%X)\n", idx, addr, len);
543 
544 		idx++;
545 	}
546 
547 	ap->prd[idx - 1].flags_len |= cpu_to_le32(ATA_PRD_EOT);
548 }
549 
550 static void pdc_qc_prep(struct ata_queued_cmd *qc)
551 {
552 	struct pdc_port_priv *pp = qc->ap->private_data;
553 	unsigned int i;
554 
555 	VPRINTK("ENTER\n");
556 
557 	switch (qc->tf.protocol) {
558 	case ATA_PROT_DMA:
559 		pdc_fill_sg(qc);
560 		/* fall through */
561 
562 	case ATA_PROT_NODATA:
563 		i = pdc_pkt_header(&qc->tf, qc->ap->prd_dma,
564 				   qc->dev->devno, pp->pkt);
565 
566 		if (qc->tf.flags & ATA_TFLAG_LBA48)
567 			i = pdc_prep_lba48(&qc->tf, pp->pkt, i);
568 		else
569 			i = pdc_prep_lba28(&qc->tf, pp->pkt, i);
570 
571 		pdc_pkt_footer(&qc->tf, pp->pkt, i);
572 		break;
573 
574 	case ATAPI_PROT_PIO:
575 		pdc_fill_sg(qc);
576 		break;
577 
578 	case ATAPI_PROT_DMA:
579 		pdc_fill_sg(qc);
580 		/*FALLTHROUGH*/
581 	case ATAPI_PROT_NODATA:
582 		pdc_atapi_pkt(qc);
583 		break;
584 
585 	default:
586 		break;
587 	}
588 }
589 
590 static int pdc_is_sataii_tx4(unsigned long flags)
591 {
592 	const unsigned long mask = PDC_FLAG_GEN_II | PDC_FLAG_4_PORTS;
593 	return (flags & mask) == mask;
594 }
595 
596 static unsigned int pdc_port_no_to_ata_no(unsigned int port_no,
597 					  int is_sataii_tx4)
598 {
599 	static const unsigned char sataii_tx4_port_remap[4] = { 3, 1, 0, 2};
600 	return is_sataii_tx4 ? sataii_tx4_port_remap[port_no] : port_no;
601 }
602 
603 static unsigned int pdc_sata_nr_ports(const struct ata_port *ap)
604 {
605 	return (ap->flags & PDC_FLAG_4_PORTS) ? 4 : 2;
606 }
607 
608 static unsigned int pdc_sata_ata_port_to_ata_no(const struct ata_port *ap)
609 {
610 	const struct ata_host *host = ap->host;
611 	unsigned int nr_ports = pdc_sata_nr_ports(ap);
612 	unsigned int i;
613 
614 	for(i = 0; i < nr_ports && host->ports[i] != ap; ++i)
615 		;
616 	BUG_ON(i >= nr_ports);
617 	return pdc_port_no_to_ata_no(i, pdc_is_sataii_tx4(ap->flags));
618 }
619 
620 static unsigned int pdc_sata_hotplug_offset(const struct ata_port *ap)
621 {
622 	return (ap->flags & PDC_FLAG_GEN_II) ? PDC2_SATA_PLUG_CSR : PDC_SATA_PLUG_CSR;
623 }
624 
625 static void pdc_freeze(struct ata_port *ap)
626 {
627 	void __iomem *mmio = ap->ioaddr.cmd_addr;
628 	u32 tmp;
629 
630 	tmp = readl(mmio + PDC_CTLSTAT);
631 	tmp |= PDC_IRQ_DISABLE;
632 	tmp &= ~PDC_DMA_ENABLE;
633 	writel(tmp, mmio + PDC_CTLSTAT);
634 	readl(mmio + PDC_CTLSTAT); /* flush */
635 }
636 
637 static void pdc_sata_freeze(struct ata_port *ap)
638 {
639 	struct ata_host *host = ap->host;
640 	void __iomem *host_mmio = host->iomap[PDC_MMIO_BAR];
641 	unsigned int hotplug_offset = pdc_sata_hotplug_offset(ap);
642 	unsigned int ata_no = pdc_sata_ata_port_to_ata_no(ap);
643 	u32 hotplug_status;
644 
645 	/* Disable hotplug events on this port.
646 	 *
647 	 * Locking:
648 	 * 1) hotplug register accesses must be serialised via host->lock
649 	 * 2) ap->lock == &ap->host->lock
650 	 * 3) ->freeze() and ->thaw() are called with ap->lock held
651 	 */
652 	hotplug_status = readl(host_mmio + hotplug_offset);
653 	hotplug_status |= 0x11 << (ata_no + 16);
654 	writel(hotplug_status, host_mmio + hotplug_offset);
655 	readl(host_mmio + hotplug_offset); /* flush */
656 
657 	pdc_freeze(ap);
658 }
659 
660 static void pdc_thaw(struct ata_port *ap)
661 {
662 	void __iomem *mmio = ap->ioaddr.cmd_addr;
663 	u32 tmp;
664 
665 	/* clear IRQ */
666 	readl(mmio + PDC_INT_SEQMASK);
667 
668 	/* turn IRQ back on */
669 	tmp = readl(mmio + PDC_CTLSTAT);
670 	tmp &= ~PDC_IRQ_DISABLE;
671 	writel(tmp, mmio + PDC_CTLSTAT);
672 	readl(mmio + PDC_CTLSTAT); /* flush */
673 }
674 
675 static void pdc_sata_thaw(struct ata_port *ap)
676 {
677 	struct ata_host *host = ap->host;
678 	void __iomem *host_mmio = host->iomap[PDC_MMIO_BAR];
679 	unsigned int hotplug_offset = pdc_sata_hotplug_offset(ap);
680 	unsigned int ata_no = pdc_sata_ata_port_to_ata_no(ap);
681 	u32 hotplug_status;
682 
683 	pdc_thaw(ap);
684 
685 	/* Enable hotplug events on this port.
686 	 * Locking: see pdc_sata_freeze().
687 	 */
688 	hotplug_status = readl(host_mmio + hotplug_offset);
689 	hotplug_status |= 0x11 << ata_no;
690 	hotplug_status &= ~(0x11 << (ata_no + 16));
691 	writel(hotplug_status, host_mmio + hotplug_offset);
692 	readl(host_mmio + hotplug_offset); /* flush */
693 }
694 
695 static void pdc_error_handler(struct ata_port *ap)
696 {
697 	if (!(ap->pflags & ATA_PFLAG_FROZEN))
698 		pdc_reset_port(ap);
699 
700 	ata_std_error_handler(ap);
701 }
702 
703 static void pdc_post_internal_cmd(struct ata_queued_cmd *qc)
704 {
705 	struct ata_port *ap = qc->ap;
706 
707 	/* make DMA engine forget about the failed command */
708 	if (qc->flags & ATA_QCFLAG_FAILED)
709 		pdc_reset_port(ap);
710 }
711 
712 static void pdc_error_intr(struct ata_port *ap, struct ata_queued_cmd *qc,
713 			   u32 port_status, u32 err_mask)
714 {
715 	struct ata_eh_info *ehi = &ap->link.eh_info;
716 	unsigned int ac_err_mask = 0;
717 
718 	ata_ehi_clear_desc(ehi);
719 	ata_ehi_push_desc(ehi, "port_status 0x%08x", port_status);
720 	port_status &= err_mask;
721 
722 	if (port_status & PDC_DRIVE_ERR)
723 		ac_err_mask |= AC_ERR_DEV;
724 	if (port_status & (PDC_OVERRUN_ERR | PDC_UNDERRUN_ERR))
725 		ac_err_mask |= AC_ERR_HSM;
726 	if (port_status & (PDC2_ATA_HBA_ERR | PDC2_ATA_DMA_CNT_ERR))
727 		ac_err_mask |= AC_ERR_ATA_BUS;
728 	if (port_status & (PDC_PH_ERR | PDC_SH_ERR | PDC_DH_ERR | PDC2_HTO_ERR
729 			   | PDC_PCI_SYS_ERR | PDC1_PCI_PARITY_ERR))
730 		ac_err_mask |= AC_ERR_HOST_BUS;
731 
732 	if (sata_scr_valid(&ap->link)) {
733 		u32 serror;
734 
735 		pdc_sata_scr_read(ap, SCR_ERROR, &serror);
736 		ehi->serror |= serror;
737 	}
738 
739 	qc->err_mask |= ac_err_mask;
740 
741 	pdc_reset_port(ap);
742 
743 	ata_port_abort(ap);
744 }
745 
746 static inline unsigned int pdc_host_intr(struct ata_port *ap,
747 					 struct ata_queued_cmd *qc)
748 {
749 	unsigned int handled = 0;
750 	void __iomem *port_mmio = ap->ioaddr.cmd_addr;
751 	u32 port_status, err_mask;
752 
753 	err_mask = PDC_ERR_MASK;
754 	if (ap->flags & PDC_FLAG_GEN_II)
755 		err_mask &= ~PDC1_ERR_MASK;
756 	else
757 		err_mask &= ~PDC2_ERR_MASK;
758 	port_status = readl(port_mmio + PDC_GLOBAL_CTL);
759 	if (unlikely(port_status & err_mask)) {
760 		pdc_error_intr(ap, qc, port_status, err_mask);
761 		return 1;
762 	}
763 
764 	switch (qc->tf.protocol) {
765 	case ATA_PROT_DMA:
766 	case ATA_PROT_NODATA:
767 	case ATAPI_PROT_DMA:
768 	case ATAPI_PROT_NODATA:
769 		qc->err_mask |= ac_err_mask(ata_wait_idle(ap));
770 		ata_qc_complete(qc);
771 		handled = 1;
772 		break;
773 
774 	default:
775 		ap->stats.idle_irq++;
776 		break;
777 	}
778 
779 	return handled;
780 }
781 
782 static void pdc_irq_clear(struct ata_port *ap)
783 {
784 	struct ata_host *host = ap->host;
785 	void __iomem *mmio = host->iomap[PDC_MMIO_BAR];
786 
787 	readl(mmio + PDC_INT_SEQMASK);
788 }
789 
790 static irqreturn_t pdc_interrupt(int irq, void *dev_instance)
791 {
792 	struct ata_host *host = dev_instance;
793 	struct ata_port *ap;
794 	u32 mask = 0;
795 	unsigned int i, tmp;
796 	unsigned int handled = 0;
797 	void __iomem *mmio_base;
798 	unsigned int hotplug_offset, ata_no;
799 	u32 hotplug_status;
800 	int is_sataii_tx4;
801 
802 	VPRINTK("ENTER\n");
803 
804 	if (!host || !host->iomap[PDC_MMIO_BAR]) {
805 		VPRINTK("QUICK EXIT\n");
806 		return IRQ_NONE;
807 	}
808 
809 	mmio_base = host->iomap[PDC_MMIO_BAR];
810 
811 	spin_lock(&host->lock);
812 
813 	/* read and clear hotplug flags for all ports */
814 	if (host->ports[0]->flags & PDC_FLAG_GEN_II)
815 		hotplug_offset = PDC2_SATA_PLUG_CSR;
816 	else
817 		hotplug_offset = PDC_SATA_PLUG_CSR;
818 	hotplug_status = readl(mmio_base + hotplug_offset);
819 	if (hotplug_status & 0xff)
820 		writel(hotplug_status | 0xff, mmio_base + hotplug_offset);
821 	hotplug_status &= 0xff;	/* clear uninteresting bits */
822 
823 	/* reading should also clear interrupts */
824 	mask = readl(mmio_base + PDC_INT_SEQMASK);
825 
826 	if (mask == 0xffffffff && hotplug_status == 0) {
827 		VPRINTK("QUICK EXIT 2\n");
828 		goto done_irq;
829 	}
830 
831 	mask &= 0xffff;		/* only 16 tags possible */
832 	if (mask == 0 && hotplug_status == 0) {
833 		VPRINTK("QUICK EXIT 3\n");
834 		goto done_irq;
835 	}
836 
837 	writel(mask, mmio_base + PDC_INT_SEQMASK);
838 
839 	is_sataii_tx4 = pdc_is_sataii_tx4(host->ports[0]->flags);
840 
841 	for (i = 0; i < host->n_ports; i++) {
842 		VPRINTK("port %u\n", i);
843 		ap = host->ports[i];
844 
845 		/* check for a plug or unplug event */
846 		ata_no = pdc_port_no_to_ata_no(i, is_sataii_tx4);
847 		tmp = hotplug_status & (0x11 << ata_no);
848 		if (tmp && ap &&
849 		    !(ap->flags & ATA_FLAG_DISABLED)) {
850 			struct ata_eh_info *ehi = &ap->link.eh_info;
851 			ata_ehi_clear_desc(ehi);
852 			ata_ehi_hotplugged(ehi);
853 			ata_ehi_push_desc(ehi, "hotplug_status %#x", tmp);
854 			ata_port_freeze(ap);
855 			++handled;
856 			continue;
857 		}
858 
859 		/* check for a packet interrupt */
860 		tmp = mask & (1 << (i + 1));
861 		if (tmp && ap &&
862 		    !(ap->flags & ATA_FLAG_DISABLED)) {
863 			struct ata_queued_cmd *qc;
864 
865 			qc = ata_qc_from_tag(ap, ap->link.active_tag);
866 			if (qc && (!(qc->tf.flags & ATA_TFLAG_POLLING)))
867 				handled += pdc_host_intr(ap, qc);
868 		}
869 	}
870 
871 	VPRINTK("EXIT\n");
872 
873 done_irq:
874 	spin_unlock(&host->lock);
875 	return IRQ_RETVAL(handled);
876 }
877 
878 static inline void pdc_packet_start(struct ata_queued_cmd *qc)
879 {
880 	struct ata_port *ap = qc->ap;
881 	struct pdc_port_priv *pp = ap->private_data;
882 	void __iomem *mmio = ap->host->iomap[PDC_MMIO_BAR];
883 	unsigned int port_no = ap->port_no;
884 	u8 seq = (u8) (port_no + 1);
885 
886 	VPRINTK("ENTER, ap %p\n", ap);
887 
888 	writel(0x00000001, mmio + (seq * 4));
889 	readl(mmio + (seq * 4));	/* flush */
890 
891 	pp->pkt[2] = seq;
892 	wmb();			/* flush PRD, pkt writes */
893 	writel(pp->pkt_dma, ap->ioaddr.cmd_addr + PDC_PKT_SUBMIT);
894 	readl(ap->ioaddr.cmd_addr + PDC_PKT_SUBMIT); /* flush */
895 }
896 
897 static unsigned int pdc_qc_issue(struct ata_queued_cmd *qc)
898 {
899 	switch (qc->tf.protocol) {
900 	case ATAPI_PROT_NODATA:
901 		if (qc->dev->flags & ATA_DFLAG_CDB_INTR)
902 			break;
903 		/*FALLTHROUGH*/
904 	case ATA_PROT_NODATA:
905 		if (qc->tf.flags & ATA_TFLAG_POLLING)
906 			break;
907 		/*FALLTHROUGH*/
908 	case ATAPI_PROT_DMA:
909 	case ATA_PROT_DMA:
910 		pdc_packet_start(qc);
911 		return 0;
912 
913 	default:
914 		break;
915 	}
916 
917 	return ata_sff_qc_issue(qc);
918 }
919 
920 static void pdc_tf_load_mmio(struct ata_port *ap, const struct ata_taskfile *tf)
921 {
922 	WARN_ON(tf->protocol == ATA_PROT_DMA || tf->protocol == ATAPI_PROT_DMA);
923 	ata_sff_tf_load(ap, tf);
924 }
925 
926 static void pdc_exec_command_mmio(struct ata_port *ap,
927 				  const struct ata_taskfile *tf)
928 {
929 	WARN_ON(tf->protocol == ATA_PROT_DMA || tf->protocol == ATAPI_PROT_DMA);
930 	ata_sff_exec_command(ap, tf);
931 }
932 
933 static int pdc_check_atapi_dma(struct ata_queued_cmd *qc)
934 {
935 	u8 *scsicmd = qc->scsicmd->cmnd;
936 	int pio = 1; /* atapi dma off by default */
937 
938 	/* Whitelist commands that may use DMA. */
939 	switch (scsicmd[0]) {
940 	case WRITE_12:
941 	case WRITE_10:
942 	case WRITE_6:
943 	case READ_12:
944 	case READ_10:
945 	case READ_6:
946 	case 0xad: /* READ_DVD_STRUCTURE */
947 	case 0xbe: /* READ_CD */
948 		pio = 0;
949 	}
950 	/* -45150 (FFFF4FA2) to -1 (FFFFFFFF) shall use PIO mode */
951 	if (scsicmd[0] == WRITE_10) {
952 		unsigned int lba =
953 			(scsicmd[2] << 24) |
954 			(scsicmd[3] << 16) |
955 			(scsicmd[4] << 8) |
956 			scsicmd[5];
957 		if (lba >= 0xFFFF4FA2)
958 			pio = 1;
959 	}
960 	return pio;
961 }
962 
963 static int pdc_old_sata_check_atapi_dma(struct ata_queued_cmd *qc)
964 {
965 	/* First generation chips cannot use ATAPI DMA on SATA ports */
966 	return 1;
967 }
968 
969 static void pdc_ata_setup_port(struct ata_port *ap,
970 			       void __iomem *base, void __iomem *scr_addr)
971 {
972 	ap->ioaddr.cmd_addr		= base;
973 	ap->ioaddr.data_addr		= base;
974 	ap->ioaddr.feature_addr		=
975 	ap->ioaddr.error_addr		= base + 0x4;
976 	ap->ioaddr.nsect_addr		= base + 0x8;
977 	ap->ioaddr.lbal_addr		= base + 0xc;
978 	ap->ioaddr.lbam_addr		= base + 0x10;
979 	ap->ioaddr.lbah_addr		= base + 0x14;
980 	ap->ioaddr.device_addr		= base + 0x18;
981 	ap->ioaddr.command_addr		=
982 	ap->ioaddr.status_addr		= base + 0x1c;
983 	ap->ioaddr.altstatus_addr	=
984 	ap->ioaddr.ctl_addr		= base + 0x38;
985 	ap->ioaddr.scr_addr		= scr_addr;
986 }
987 
988 static void pdc_host_init(struct ata_host *host)
989 {
990 	void __iomem *mmio = host->iomap[PDC_MMIO_BAR];
991 	int is_gen2 = host->ports[0]->flags & PDC_FLAG_GEN_II;
992 	int hotplug_offset;
993 	u32 tmp;
994 
995 	if (is_gen2)
996 		hotplug_offset = PDC2_SATA_PLUG_CSR;
997 	else
998 		hotplug_offset = PDC_SATA_PLUG_CSR;
999 
1000 	/*
1001 	 * Except for the hotplug stuff, this is voodoo from the
1002 	 * Promise driver.  Label this entire section
1003 	 * "TODO: figure out why we do this"
1004 	 */
1005 
1006 	/* enable BMR_BURST, maybe change FIFO_SHD to 8 dwords */
1007 	tmp = readl(mmio + PDC_FLASH_CTL);
1008 	tmp |= 0x02000;	/* bit 13 (enable bmr burst) */
1009 	if (!is_gen2)
1010 		tmp |= 0x10000;	/* bit 16 (fifo threshold at 8 dw) */
1011 	writel(tmp, mmio + PDC_FLASH_CTL);
1012 
1013 	/* clear plug/unplug flags for all ports */
1014 	tmp = readl(mmio + hotplug_offset);
1015 	writel(tmp | 0xff, mmio + hotplug_offset);
1016 
1017 	/* unmask plug/unplug ints */
1018 	tmp = readl(mmio + hotplug_offset);
1019 	writel(tmp & ~0xff0000, mmio + hotplug_offset);
1020 
1021 	/* don't initialise TBG or SLEW on 2nd generation chips */
1022 	if (is_gen2)
1023 		return;
1024 
1025 	/* reduce TBG clock to 133 Mhz. */
1026 	tmp = readl(mmio + PDC_TBG_MODE);
1027 	tmp &= ~0x30000; /* clear bit 17, 16*/
1028 	tmp |= 0x10000;  /* set bit 17:16 = 0:1 */
1029 	writel(tmp, mmio + PDC_TBG_MODE);
1030 
1031 	readl(mmio + PDC_TBG_MODE);	/* flush */
1032 	msleep(10);
1033 
1034 	/* adjust slew rate control register. */
1035 	tmp = readl(mmio + PDC_SLEW_CTL);
1036 	tmp &= 0xFFFFF03F; /* clear bit 11 ~ 6 */
1037 	tmp  |= 0x00000900; /* set bit 11-9 = 100b , bit 8-6 = 100 */
1038 	writel(tmp, mmio + PDC_SLEW_CTL);
1039 }
1040 
1041 static int pdc_ata_init_one(struct pci_dev *pdev,
1042 			    const struct pci_device_id *ent)
1043 {
1044 	static int printed_version;
1045 	const struct ata_port_info *pi = &pdc_port_info[ent->driver_data];
1046 	const struct ata_port_info *ppi[PDC_MAX_PORTS];
1047 	struct ata_host *host;
1048 	void __iomem *base;
1049 	int n_ports, i, rc;
1050 	int is_sataii_tx4;
1051 
1052 	if (!printed_version++)
1053 		dev_printk(KERN_DEBUG, &pdev->dev, "version " DRV_VERSION "\n");
1054 
1055 	/* enable and acquire resources */
1056 	rc = pcim_enable_device(pdev);
1057 	if (rc)
1058 		return rc;
1059 
1060 	rc = pcim_iomap_regions(pdev, 1 << PDC_MMIO_BAR, DRV_NAME);
1061 	if (rc == -EBUSY)
1062 		pcim_pin_device(pdev);
1063 	if (rc)
1064 		return rc;
1065 	base = pcim_iomap_table(pdev)[PDC_MMIO_BAR];
1066 
1067 	/* determine port configuration and setup host */
1068 	n_ports = 2;
1069 	if (pi->flags & PDC_FLAG_4_PORTS)
1070 		n_ports = 4;
1071 	for (i = 0; i < n_ports; i++)
1072 		ppi[i] = pi;
1073 
1074 	if (pi->flags & PDC_FLAG_SATA_PATA) {
1075 		u8 tmp = readb(base + PDC_FLASH_CTL+1);
1076 		if (!(tmp & 0x80))
1077 			ppi[n_ports++] = pi + 1;
1078 	}
1079 
1080 	host = ata_host_alloc_pinfo(&pdev->dev, ppi, n_ports);
1081 	if (!host) {
1082 		dev_printk(KERN_ERR, &pdev->dev, "failed to allocate host\n");
1083 		return -ENOMEM;
1084 	}
1085 	host->iomap = pcim_iomap_table(pdev);
1086 
1087 	is_sataii_tx4 = pdc_is_sataii_tx4(pi->flags);
1088 	for (i = 0; i < host->n_ports; i++) {
1089 		struct ata_port *ap = host->ports[i];
1090 		unsigned int ata_no = pdc_port_no_to_ata_no(i, is_sataii_tx4);
1091 		unsigned int port_offset = 0x200 + ata_no * 0x80;
1092 		unsigned int scr_offset = 0x400 + ata_no * 0x100;
1093 
1094 		pdc_ata_setup_port(ap, base + port_offset, base + scr_offset);
1095 
1096 		ata_port_pbar_desc(ap, PDC_MMIO_BAR, -1, "mmio");
1097 		ata_port_pbar_desc(ap, PDC_MMIO_BAR, port_offset, "port");
1098 	}
1099 
1100 	/* initialize adapter */
1101 	pdc_host_init(host);
1102 
1103 	rc = pci_set_dma_mask(pdev, ATA_DMA_MASK);
1104 	if (rc)
1105 		return rc;
1106 	rc = pci_set_consistent_dma_mask(pdev, ATA_DMA_MASK);
1107 	if (rc)
1108 		return rc;
1109 
1110 	/* start host, request IRQ and attach */
1111 	pci_set_master(pdev);
1112 	return ata_host_activate(host, pdev->irq, pdc_interrupt, IRQF_SHARED,
1113 				 &pdc_ata_sht);
1114 }
1115 
1116 static int __init pdc_ata_init(void)
1117 {
1118 	return pci_register_driver(&pdc_ata_pci_driver);
1119 }
1120 
1121 static void __exit pdc_ata_exit(void)
1122 {
1123 	pci_unregister_driver(&pdc_ata_pci_driver);
1124 }
1125 
1126 MODULE_AUTHOR("Jeff Garzik");
1127 MODULE_DESCRIPTION("Promise ATA TX2/TX4/TX4000 low-level driver");
1128 MODULE_LICENSE("GPL");
1129 MODULE_DEVICE_TABLE(pci, pdc_ata_pci_tbl);
1130 MODULE_VERSION(DRV_VERSION);
1131 
1132 module_init(pdc_ata_init);
1133 module_exit(pdc_ata_exit);
1134