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 --- |