Lines Matching +full:dma +full:- +full:33 +full:bits

1 // SPDX-License-Identifier: GPL-2.0-only
3 * pata_artop.c - ARTOP ATA controller driver
9 * Copyright (C) 1999-2002 Andre Hedrick <andre@linux-ide.org>
11 * driver by Thibaut VARENE <varenet@parisc-linux.org>
34 * The ARTOP has 33 Mhz and "over clocked" timing tables. Until we
43 * artop62x0_pre_reset - probe begin
57 struct ata_port *ap = link->ap; in artop62x0_pre_reset()
58 struct pci_dev *pdev = to_pci_dev(ap->host->dev); in artop62x0_pre_reset()
60 /* Odd numbered device ids are the units with enable bits. */ in artop62x0_pre_reset()
61 if ((pdev->device & 1) && in artop62x0_pre_reset()
62 !pci_test_config_bits(pdev, &artop_enable_bits[ap->port_no])) in artop62x0_pre_reset()
63 return -ENOENT; in artop62x0_pre_reset()
69 * artop6260_cable_detect - identify cable type
77 struct pci_dev *pdev = to_pci_dev(ap->host->dev); in artop6260_cable_detect()
80 if (tmp & (1 << ap->port_no)) in artop6260_cable_detect()
86 * artop6210_load_piomode - Load a set of PATA PIO timings
101 struct pci_dev *pdev = to_pci_dev(ap->host->dev); in artop6210_load_piomode()
102 int dn = adev->devno + 2 * ap->port_no; in artop6210_load_piomode()
108 /* Load the PIO timing active/recovery bits */ in artop6210_load_piomode()
113 * artop6210_set_piomode - Initialize host controller PATA PIO timings
118 * ARTOP we must also clear the UDMA bits if we are not doing UDMA. In
120 * bits as required.
128 struct pci_dev *pdev = to_pci_dev(ap->host->dev); in artop6210_set_piomode()
129 int dn = adev->devno + 2 * ap->port_no; in artop6210_set_piomode()
132 artop6210_load_piomode(ap, adev, adev->pio_mode - XFER_PIO_0); in artop6210_set_piomode()
134 /* Clear the UDMA mode bits (set_dmamode will redo this if needed) */ in artop6210_set_piomode()
141 * artop6260_load_piomode - Initialize host controller PATA PIO timings
155 struct pci_dev *pdev = to_pci_dev(ap->host->dev); in artop6260_load_piomode()
156 int dn = adev->devno + 2 * ap->port_no; in artop6260_load_piomode()
162 /* Load the PIO timing active/recovery bits */ in artop6260_load_piomode()
167 * artop6260_set_piomode - Initialize host controller PATA PIO timings
172 * ARTOP we must also clear the UDMA bits if we are not doing UDMA. In
174 * bits as required.
182 struct pci_dev *pdev = to_pci_dev(ap->host->dev); in artop6260_set_piomode()
185 artop6260_load_piomode(ap, adev, adev->pio_mode - XFER_PIO_0); in artop6260_set_piomode()
187 /* Clear the UDMA mode bits (set_dmamode will redo this if needed) */ in artop6260_set_piomode()
188 pci_read_config_byte(pdev, 0x44 + ap->port_no, &ultra); in artop6260_set_piomode()
189 ultra &= ~(7 << (4 * adev->devno)); /* One nibble per drive */ in artop6260_set_piomode()
190 pci_write_config_byte(pdev, 0x44 + ap->port_no, ultra); in artop6260_set_piomode()
194 * artop6210_set_dmamode - Initialize host controller PATA PIO timings
198 * Set DMA mode for device, in host controller PCI config space.
207 struct pci_dev *pdev = to_pci_dev(ap->host->dev); in artop6210_set_dmamode()
208 int dn = adev->devno + 2 * ap->port_no; in artop6210_set_dmamode()
211 if (adev->dma_mode == XFER_MW_DMA_0) in artop6210_set_dmamode()
216 /* Load the PIO timing active/recovery bits */ in artop6210_set_dmamode()
222 /* Add ultra DMA bits if in UDMA mode */ in artop6210_set_dmamode()
223 if (adev->dma_mode >= XFER_UDMA_0) { in artop6210_set_dmamode()
224 u8 mode = (adev->dma_mode - XFER_UDMA_0) + 1 - clock; in artop6210_set_dmamode()
233 * artop6260_set_dmamode - Initialize host controller PATA PIO timings
237 * Set DMA mode for device, in host controller PCI config space. The
247 struct pci_dev *pdev = to_pci_dev(ap->host->dev); in artop6260_set_dmamode()
250 if (adev->dma_mode == XFER_MW_DMA_0) in artop6260_set_dmamode()
255 /* Load the PIO timing active/recovery bits */ in artop6260_set_dmamode()
258 /* Add ultra DMA bits if in UDMA mode */ in artop6260_set_dmamode()
259 pci_read_config_byte(pdev, 0x44 + ap->port_no, &ultra); in artop6260_set_dmamode()
260 ultra &= ~(7 << (4 * adev->devno)); /* One nibble per drive */ in artop6260_set_dmamode()
261 if (adev->dma_mode >= XFER_UDMA_0) { in artop6260_set_dmamode()
262 u8 mode = adev->dma_mode - XFER_UDMA_0 + 1 - clock; in artop6260_set_dmamode()
265 ultra |= (mode << (4 * adev->devno)); in artop6260_set_dmamode()
267 pci_write_config_byte(pdev, 0x44 + ap->port_no, ultra); in artop6260_set_dmamode()
271 * artop6210_qc_defer - implement serialization
279 struct ata_host *host = qc->ap->host; in artop6210_qc_defer()
280 struct ata_port *alt = host->ports[1 ^ qc->ap->port_no]; in artop6210_qc_defer()
290 if (alt && alt->qc_active) in artop6210_qc_defer()
320 switch (pdev->device) { in atp8xx_fixup()
330 /* Clear reset & test bits */ in atp8xx_fixup()
349 * artop_init_one - Register ARTOP ATA PCI device with kernel services
359 * Zero on success, or -ERRNO value.
395 ata_print_version_once(&pdev->dev, DRV_VERSION); in artop_init_one()
401 switch (id->driver_data) { in artop_init_one()
464 MODULE_DESCRIPTION("SCSI low-level driver for ARTOP PATA");