Lines Matching +full:udma +full:- +full:c
2 * Copyright (C) 1998-1999 Andrzej Krzysztofowicz, Author and Maintainer
3 * Copyright (C) 1998-2000 Andre Hedrick <andre@linux-ide.org>
4 * Copyright (C) 2003 Red Hat
5 * Copyright (C) 2006-2007 MontaVista Software, Inc. <source@mvista.com>
19 * PIIX4 errata #9 - Only on ultra obscure hw
20 * ICH3 errata #13 - Not observed to affect real hw
24 * PIIX4 errata #10 - BM IDE hang with non UDMA
26 * 440MX errata #15 - As PIIX4 errata #10
27 * PIIX4 errata #15 - Must not read control registers
29 * 440MX errata #13 - As PIIX4 errata #15
30 * ICH2 errata #21 - DMA mode 0 doesn't work right
31 * ICH0/1 errata #55 - As ICH2 errata #21
32 * ICH2 spec c #9 - Extra operations needed to handle
34 * ICH2 spec c #20 - IDE PRD must not cross a 64K boundary
36 * ICH2 spec c #24 - UDMA mode 4,5 t85/86 should be 6ns not 3.3
39 * 450NX: errata #19 - DMA hangs on old 450NX
40 * 450NX: errata #20 - DMA hangs on old 450NX
41 * 450NX: errata #25 - Corruption with DMA on old 450NX
42 * ICH3 errata #15 - IDE deadlock under high load
44 * ICH3 errata #18 - Don't use native mode
61 * piix_set_pio_mode - set host controller for PIO mode
70 struct pci_dev *dev = to_pci_dev(hwif->dev); in piix_set_pio_mode()
71 int is_slave = drive->dn & 1; in piix_set_pio_mode()
72 int master_port = hwif->channel ? 0x42 : 0x40; in piix_set_pio_mode()
79 const u8 pio = drive->pio_mode - XFER_PIO_0; in piix_set_pio_mode()
99 if (drive->media == ide_disk) in piix_set_pio_mode()
111 slave_data &= hwif->channel ? 0x0f : 0xf0; in piix_set_pio_mode()
113 (hwif->channel ? 4 : 0); in piix_set_pio_mode()
129 * piix_set_dma_mode - set host controller for DMA mode
139 struct pci_dev *dev = to_pci_dev(hwif->dev); in piix_set_dma_mode()
140 u8 maslave = hwif->channel ? 0x42 : 0x40; in piix_set_dma_mode()
141 int a_speed = 3 << (drive->dn * 4); in piix_set_dma_mode()
142 int u_flag = 1 << drive->dn; in piix_set_dma_mode()
143 int v_flag = 0x01 << drive->dn; in piix_set_dma_mode()
144 int w_flag = 0x10 << drive->dn; in piix_set_dma_mode()
149 const u8 speed = drive->dma_mode; in piix_set_dma_mode()
159 u8 udma = speed - XFER_UDMA_0; in piix_set_dma_mode() local
161 u_speed = min_t(u8, 2 - (udma & 1), udma) << (drive->dn * 4); in piix_set_dma_mode()
190 drive->pio_mode = in piix_set_dma_mode()
191 mwdma_to_pio[speed - XFER_MW_DMA_0] + XFER_PIO_0; in piix_set_dma_mode()
193 drive->pio_mode = XFER_PIO_2; /* for SWDMA2 */ in piix_set_dma_mode()
200 * init_chipset_ich - set up the ICH chipset
218 * ich_clear_irq - clear BMDMA status
227 ide_hwif_t *hwif = drive->hwif; in ich_clear_irq()
235 if (drive->waiting_for_dma || hwif->dma_base == 0) in ich_clear_irq()
239 dma_stat = inb(hwif->dma_base + ATA_DMA_STATUS); in ich_clear_irq()
241 outb(dma_stat, hwif->dma_base + ATA_DMA_STATUS); in ich_clear_irq()
261 { 0x27DF, 0x1071, 0xD221 }, /* ICH7 on Hercules EC-900 */
266 { 0x27df, 0x104d, 0x900e }, /* ICH7 on Sony TZ-90 */
273 struct pci_dev *pdev = to_pci_dev(hwif->dev); in piix_cable_detect()
275 u8 reg54h = 0, mask = hwif->channel ? 0xc0 : 0x30; in piix_cable_detect()
278 while (lap->device) { in piix_cable_detect()
279 if (lap->device == pdev->device && in piix_cable_detect()
280 lap->subvendor == pdev->subsystem_vendor && in piix_cable_detect()
281 lap->subdevice == pdev->subsystem_device) { in piix_cable_detect()
293 * init_hwif_piix - fill in the hwif for the PIIX
302 if (!hwif->dma_base) in init_hwif_piix()
306 hwif->ultra_mask = hwif->mwdma_mask = hwif->swdma_mask = 0; in init_hwif_piix()
322 #define DECLARE_PIIX_DEV(udma) \ argument
331 .udma_mask = udma, \
334 #define DECLARE_ICH_DEV(mwdma, udma) \ argument
344 .udma_mask = udma, \
361 DECLARE_PIIX_DEV(0x00), /* no udma */
370 /* 6: ICH[2-6]/ICH[2-3]M/C-ICH/ICH5-SATA/ESB2/ICH8M */
372 /* 7: ICH7/7-R, no MWDMA1 */
377 * piix_init_one - called when a PIIX is found
387 return ide_pci_init_one(dev, &piix_pci_info[id->driver_data], NULL); in piix_init_one()
391 * piix_check_450nx - Check for problem 450NX setup
407 if (pdev->revision == 0x00) in piix_check_450nx()
410 else if (cfg & (1<<14) && pdev->revision < 5) in piix_check_450nx()