Lines Matching +full:udma +full:- +full:c

1 // SPDX-License-Identifier: GPL-2.0-only
3 * pata_atiixp.c - ATI PATA for new ATA layer
4 * (C) 2005 Red Hat Inc
5 * (C) 2009-2010 Bartlomiej Zolnierkiewicz
9 * linux/drivers/ide/pci/atiixp.c Version 0.01-bart2 Feb. 26, 2004
11 * Copyright (C) 2003 ATI Inc. <[email protected]>
12 * Copyright (C) 2004 Bartlomiej Zolnierkiewicz
39 /* Board has onboard PATA<->SATA converters */
40 .ident = "MSI E350DM-E33",
43 DMI_MATCH(DMI_BOARD_NAME, "E350DM-E33(MS-7720)"),
51 struct pci_dev *pdev = to_pci_dev(ap->host->dev); in atiixp_cable_detect()
52 u8 udma; in atiixp_cable_detect() local
59 pci_read_config_byte(pdev, ATIIXP_IDE_UDMA_MODE + ap->port_no, &udma); in atiixp_cable_detect()
60 if ((udma & 0x07) >= 0x04 || (udma & 0x70) >= 0x40) in atiixp_cable_detect()
68 * atiixp_prereset - perform reset handling
83 struct ata_port *ap = link->ap; in atiixp_prereset()
84 struct pci_dev *pdev = to_pci_dev(ap->host->dev); in atiixp_prereset()
86 if (!pci_test_config_bits(pdev, &atiixp_enable_bits[ap->port_no])) in atiixp_prereset()
87 return -ENOENT; in atiixp_prereset()
93 * atiixp_set_pio_timing - set initial PIO mode data
107 struct pci_dev *pdev = to_pci_dev(ap->host->dev); in atiixp_set_pio_timing()
108 int dn = 2 * ap->port_no + adev->devno; in atiixp_set_pio_timing()
109 int timing_shift = (16 * ap->port_no) + 8 * (adev->devno ^ 1); in atiixp_set_pio_timing()
125 * atiixp_set_piomode - set initial PIO mode data
137 atiixp_set_pio_timing(ap, adev, adev->pio_mode - XFER_PIO_0); in atiixp_set_piomode()
142 * atiixp_set_dmamode - set initial DMA mode data
154 struct pci_dev *pdev = to_pci_dev(ap->host->dev); in atiixp_set_dmamode()
155 int dma = adev->dma_mode; in atiixp_set_dmamode()
156 int dn = 2 * ap->port_no + adev->devno; in atiixp_set_dmamode()
162 if (adev->dma_mode >= XFER_UDMA_0) { in atiixp_set_dmamode()
165 dma -= XFER_UDMA_0; in atiixp_set_dmamode()
172 int timing_shift = (16 * ap->port_no) + 8 * (adev->devno ^ 1); in atiixp_set_dmamode()
175 dma -= XFER_MW_DMA_0; in atiixp_set_dmamode()
188 if (adev->dma_mode >= XFER_MW_DMA_2) in atiixp_set_dmamode()
190 else if (adev->dma_mode == XFER_MW_DMA_1) in atiixp_set_dmamode()
192 else if (adev->dma_mode == XFER_MW_DMA_0) in atiixp_set_dmamode()
196 if (adev->pio_mode != wanted_pio) in atiixp_set_dmamode()
202 * atiixp_bmdma_start - DMA start callback
205 * When DMA begins we need to ensure that the UDMA control
214 struct ata_port *ap = qc->ap; in atiixp_bmdma_start()
215 struct ata_device *adev = qc->dev; in atiixp_bmdma_start()
217 struct pci_dev *pdev = to_pci_dev(ap->host->dev); in atiixp_bmdma_start()
218 int dn = (2 * ap->port_no) + adev->devno; in atiixp_bmdma_start()
231 * atiixp_bmdma_stop - DMA stop callback
234 * DMA has completed. Clear the UDMA flag as the next operations will
235 * be PIO ones not UDMA data transfer.
243 struct ata_port *ap = qc->ap; in atiixp_bmdma_stop()
244 struct pci_dev *pdev = to_pci_dev(ap->host->dev); in atiixp_bmdma_stop()
245 int dn = (2 * ap->port_no) + qc->dev->devno; in atiixp_bmdma_stop()
285 if (pdev->device == PCI_DEVICE_ID_ATI_IXP600_IDE) in atiixp_init_one()
317 MODULE_DESCRIPTION("low-level driver for ATI IXP200/300/400");