Lines Matching +full:valid +full:- +full:mask

1 // SPDX-License-Identifier: GPL-2.0-only
26 unsigned long mask[2]; member
30 * pacpi_pre_reset - check for 40/80 pin
39 struct ata_port *ap = link->ap; in pacpi_pre_reset()
40 struct pata_acpi *acpi = ap->private_data; in pacpi_pre_reset()
41 if (ACPI_HANDLE(&ap->tdev) == NULL || ata_acpi_gtm(ap, &acpi->gtm) < 0) in pacpi_pre_reset()
42 return -ENODEV; in pacpi_pre_reset()
48 * pacpi_cable_detect - cable type detection
56 struct pata_acpi *acpi = ap->private_data; in pacpi_cable_detect()
58 if ((acpi->mask[0] | acpi->mask[1]) & (0xF8 << ATA_SHIFT_UDMA)) in pacpi_cable_detect()
65 * pacpi_discover_modes - filter non ACPI modes
70 * set up sensibly. From this we get a mask of ACPI modes we can use
75 struct pata_acpi *acpi = ap->private_data; in pacpi_discover_modes()
79 probe = acpi->gtm; in pacpi_discover_modes()
86 ap->cbl = ATA_CBL_PATA80; in pacpi_discover_modes()
92 * pacpi_mode_filter - mode filter for ACPI
94 * @mask: mask of valid modes
96 * Filter the valid mode list according to our own specific rules, in
97 * this case the list of discovered valid modes obtained by ACPI probing
100 static unsigned int pacpi_mode_filter(struct ata_device *adev, unsigned int mask) in pacpi_mode_filter() argument
102 struct pata_acpi *acpi = adev->link->ap->private_data; in pacpi_mode_filter()
103 return mask & acpi->mask[adev->devno]; in pacpi_mode_filter()
107 * pacpi_set_piomode - set initial PIO mode data
114 int unit = adev->devno; in pacpi_set_piomode()
115 struct pata_acpi *acpi = ap->private_data; in pacpi_set_piomode()
118 if (!(acpi->gtm.flags & 0x10)) in pacpi_set_piomode()
122 t = ata_timing_find_mode(adev->pio_mode); in pacpi_set_piomode()
123 acpi->gtm.drive[unit].pio = t->cycle; in pacpi_set_piomode()
124 ata_acpi_stm(ap, &acpi->gtm); in pacpi_set_piomode()
126 ata_acpi_gtm(ap, &acpi->gtm); in pacpi_set_piomode()
130 * pacpi_set_dmamode - set initial DMA mode data
137 int unit = adev->devno; in pacpi_set_dmamode()
138 struct pata_acpi *acpi = ap->private_data; in pacpi_set_dmamode()
141 if (!(acpi->gtm.flags & 0x10)) in pacpi_set_dmamode()
145 t = ata_timing_find_mode(adev->dma_mode); in pacpi_set_dmamode()
146 if (adev->dma_mode >= XFER_UDMA_0) { in pacpi_set_dmamode()
147 acpi->gtm.drive[unit].dma = t->udma; in pacpi_set_dmamode()
148 acpi->gtm.flags |= (1 << (2 * unit)); in pacpi_set_dmamode()
150 acpi->gtm.drive[unit].dma = t->cycle; in pacpi_set_dmamode()
151 acpi->gtm.flags &= ~(1 << (2 * unit)); in pacpi_set_dmamode()
153 ata_acpi_stm(ap, &acpi->gtm); in pacpi_set_dmamode()
155 ata_acpi_gtm(ap, &acpi->gtm); in pacpi_set_dmamode()
159 * pacpi_qc_issue - command issue
169 struct ata_port *ap = qc->ap; in pacpi_qc_issue()
170 struct ata_device *adev = qc->dev; in pacpi_qc_issue()
171 struct pata_acpi *acpi = ap->private_data; in pacpi_qc_issue()
173 if (acpi->gtm.flags & 0x10) in pacpi_qc_issue()
176 if (adev != acpi->last) { in pacpi_qc_issue()
180 acpi->last = adev; in pacpi_qc_issue()
186 * pacpi_port_start - port setup
194 struct pci_dev *pdev = to_pci_dev(ap->host->dev); in pacpi_port_start()
197 if (ACPI_HANDLE(&ap->tdev) == NULL) in pacpi_port_start()
198 return -ENODEV; in pacpi_port_start()
200 acpi = ap->private_data = devm_kzalloc(&pdev->dev, sizeof(struct pata_acpi), GFP_KERNEL); in pacpi_port_start()
201 if (ap->private_data == NULL) in pacpi_port_start()
202 return -ENOMEM; in pacpi_port_start()
203 acpi->mask[0] = pacpi_discover_modes(ap, &ap->link.device[0]); in pacpi_port_start()
204 acpi->mask[1] = pacpi_discover_modes(ap, &ap->link.device[1]); in pacpi_port_start()
225 * pacpi_init_one - Register ACPI ATA PCI device with kernel services
235 * Zero on success, or -ERRNO value.
250 if (pdev->vendor == PCI_VENDOR_ID_ATI) { in pacpi_init_one()
278 MODULE_DESCRIPTION("SCSI low-level driver for ATA in ACPI mode");