sata_via.c (6f366c1c751454df3d1c0f25f15ee0164821112a) sata_via.c (a0fcdc0259e98d1c16d96baea9ba8a8603e41791)
1/*
2 * sata_via.c - VIA Serial ATA controllers
3 *
4 * Maintained by: Jeff Garzik <jgarzik@pobox.com>
5 * Please ALWAYS copy linux-ide@vger.kernel.org
6 on emails.
7 *
8 * Copyright 2003-2004 Red Hat, Inc. All rights reserved.

--- 64 unchanged lines hidden (view full) ---

73 SATA_2DEV = (1 << 5), /* SATA is master/slave */
74};
75
76static int svia_init_one (struct pci_dev *pdev, const struct pci_device_id *ent);
77static u32 svia_scr_read (struct ata_port *ap, unsigned int sc_reg);
78static void svia_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val);
79static void svia_noop_freeze(struct ata_port *ap);
80static void vt6420_error_handler(struct ata_port *ap);
1/*
2 * sata_via.c - VIA Serial ATA controllers
3 *
4 * Maintained by: Jeff Garzik <jgarzik@pobox.com>
5 * Please ALWAYS copy linux-ide@vger.kernel.org
6 on emails.
7 *
8 * Copyright 2003-2004 Red Hat, Inc. All rights reserved.

--- 64 unchanged lines hidden (view full) ---

73 SATA_2DEV = (1 << 5), /* SATA is master/slave */
74};
75
76static int svia_init_one (struct pci_dev *pdev, const struct pci_device_id *ent);
77static u32 svia_scr_read (struct ata_port *ap, unsigned int sc_reg);
78static void svia_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val);
79static void svia_noop_freeze(struct ata_port *ap);
80static void vt6420_error_handler(struct ata_port *ap);
81static void vt6421_sata_error_handler(struct ata_port *ap);
82static void vt6421_pata_error_handler(struct ata_port *ap);
81static int vt6421_pata_cable_detect(struct ata_port *ap);
83static void vt6421_set_pio_mode(struct ata_port *ap, struct ata_device *adev);
84static void vt6421_set_dma_mode(struct ata_port *ap, struct ata_device *adev);
85static int vt6421_port_start(struct ata_port *ap);
86
87static const struct pci_device_id svia_pci_tbl[] = {
88 { PCI_VDEVICE(VIA, 0x5337), vt6420 },
89 { PCI_VDEVICE(VIA, 0x0591), vt6420 },
90 { PCI_VDEVICE(VIA, 0x3149), vt6420 },

--- 76 unchanged lines hidden (view full) ---

167 .bmdma_status = ata_bmdma_status,
168
169 .qc_prep = ata_qc_prep,
170 .qc_issue = ata_qc_issue_prot,
171 .data_xfer = ata_data_xfer,
172
173 .freeze = ata_bmdma_freeze,
174 .thaw = ata_bmdma_thaw,
82static void vt6421_set_pio_mode(struct ata_port *ap, struct ata_device *adev);
83static void vt6421_set_dma_mode(struct ata_port *ap, struct ata_device *adev);
84static int vt6421_port_start(struct ata_port *ap);
85
86static const struct pci_device_id svia_pci_tbl[] = {
87 { PCI_VDEVICE(VIA, 0x5337), vt6420 },
88 { PCI_VDEVICE(VIA, 0x0591), vt6420 },
89 { PCI_VDEVICE(VIA, 0x3149), vt6420 },

--- 76 unchanged lines hidden (view full) ---

166 .bmdma_status = ata_bmdma_status,
167
168 .qc_prep = ata_qc_prep,
169 .qc_issue = ata_qc_issue_prot,
170 .data_xfer = ata_data_xfer,
171
172 .freeze = ata_bmdma_freeze,
173 .thaw = ata_bmdma_thaw,
175 .error_handler = vt6421_pata_error_handler,
174 .error_handler = ata_bmdma_error_handler,
176 .post_internal_cmd = ata_bmdma_post_internal_cmd,
175 .post_internal_cmd = ata_bmdma_post_internal_cmd,
176 .cable_detect = vt6421_pata_cable_detect,
177
178 .irq_handler = ata_interrupt,
179 .irq_clear = ata_bmdma_irq_clear,
180 .irq_on = ata_irq_on,
181 .irq_ack = ata_irq_ack,
182
183 .port_start = vt6421_port_start,
184};

--- 13 unchanged lines hidden (view full) ---

198 .bmdma_status = ata_bmdma_status,
199
200 .qc_prep = ata_qc_prep,
201 .qc_issue = ata_qc_issue_prot,
202 .data_xfer = ata_data_xfer,
203
204 .freeze = ata_bmdma_freeze,
205 .thaw = ata_bmdma_thaw,
177
178 .irq_handler = ata_interrupt,
179 .irq_clear = ata_bmdma_irq_clear,
180 .irq_on = ata_irq_on,
181 .irq_ack = ata_irq_ack,
182
183 .port_start = vt6421_port_start,
184};

--- 13 unchanged lines hidden (view full) ---

198 .bmdma_status = ata_bmdma_status,
199
200 .qc_prep = ata_qc_prep,
201 .qc_issue = ata_qc_issue_prot,
202 .data_xfer = ata_data_xfer,
203
204 .freeze = ata_bmdma_freeze,
205 .thaw = ata_bmdma_thaw,
206 .error_handler = vt6421_sata_error_handler,
206 .error_handler = ata_bmdma_error_handler,
207 .post_internal_cmd = ata_bmdma_post_internal_cmd,
207 .post_internal_cmd = ata_bmdma_post_internal_cmd,
208 .cable_detect = ata_cable_sata,
208
209 .irq_handler = ata_interrupt,
210 .irq_clear = ata_bmdma_irq_clear,
211 .irq_on = ata_irq_on,
212 .irq_ack = ata_irq_ack,
213
214 .scr_read = svia_scr_read,
215 .scr_write = svia_scr_write,

--- 109 unchanged lines hidden (view full) ---

325}
326
327static void vt6420_error_handler(struct ata_port *ap)
328{
329 return ata_bmdma_drive_eh(ap, vt6420_prereset, ata_std_softreset,
330 NULL, ata_std_postreset);
331}
332
209
210 .irq_handler = ata_interrupt,
211 .irq_clear = ata_bmdma_irq_clear,
212 .irq_on = ata_irq_on,
213 .irq_ack = ata_irq_ack,
214
215 .scr_read = svia_scr_read,
216 .scr_write = svia_scr_write,

--- 109 unchanged lines hidden (view full) ---

326}
327
328static void vt6420_error_handler(struct ata_port *ap)
329{
330 return ata_bmdma_drive_eh(ap, vt6420_prereset, ata_std_softreset,
331 NULL, ata_std_postreset);
332}
333
333static int vt6421_pata_prereset(struct ata_port *ap)
334static int vt6421_pata_cable_detect(struct ata_port *ap)
334{
335 struct pci_dev *pdev = to_pci_dev(ap->host->dev);
336 u8 tmp;
337
338 pci_read_config_byte(pdev, PATA_UDMA_TIMING, &tmp);
339 if (tmp & 0x10)
335{
336 struct pci_dev *pdev = to_pci_dev(ap->host->dev);
337 u8 tmp;
338
339 pci_read_config_byte(pdev, PATA_UDMA_TIMING, &tmp);
340 if (tmp & 0x10)
340 ap->cbl = ATA_CBL_PATA40;
341 else
342 ap->cbl = ATA_CBL_PATA80;
343 return 0;
341 return ATA_CBL_PATA40;
342 return ATA_CBL_PATA80;
344}
345
343}
344
346static void vt6421_pata_error_handler(struct ata_port *ap)
347{
348 return ata_bmdma_drive_eh(ap, vt6421_pata_prereset, ata_std_softreset,
349 NULL, ata_std_postreset);
350}
351
352static int vt6421_sata_prereset(struct ata_port *ap)
353{
354 ap->cbl = ATA_CBL_SATA;
355 return 0;
356}
357
358static void vt6421_sata_error_handler(struct ata_port *ap)
359{
360 return ata_bmdma_drive_eh(ap, vt6421_sata_prereset, ata_std_softreset,
361 NULL, ata_std_postreset);
362}
363
364static void vt6421_set_pio_mode(struct ata_port *ap, struct ata_device *adev)
365{
366 struct pci_dev *pdev = to_pci_dev(ap->host->dev);
367 static const u8 pio_bits[] = { 0xA8, 0x65, 0x65, 0x31, 0x20 };
368 pci_write_config_byte(pdev, PATA_PIO_TIMING, pio_bits[adev->pio_mode - XFER_PIO_0]);
369}
370
371static void vt6421_set_dma_mode(struct ata_port *ap, struct ata_device *adev)

--- 236 unchanged lines hidden ---
345static void vt6421_set_pio_mode(struct ata_port *ap, struct ata_device *adev)
346{
347 struct pci_dev *pdev = to_pci_dev(ap->host->dev);
348 static const u8 pio_bits[] = { 0xA8, 0x65, 0x65, 0x31, 0x20 };
349 pci_write_config_byte(pdev, PATA_PIO_TIMING, pio_bits[adev->pio_mode - XFER_PIO_0]);
350}
351
352static void vt6421_set_dma_mode(struct ata_port *ap, struct ata_device *adev)

--- 236 unchanged lines hidden ---