Lines Matching +full:timing +full:-

1 // SPDX-License-Identifier: GPL-2.0-only
3 * pata_cmd640.c - CMD640 PCI PATA for new ATA layer
9 * Copyright (C) 1995-1996 Linus Torvalds & authors (see driver)
45 * cmd640_set_piomode - set initial PIO mode data
54 struct cmd640_reg *timing = ap->private_data; in cmd640_set_piomode() local
55 struct pci_dev *pdev = to_pci_dev(ap->host->dev); in cmd640_set_piomode()
60 int arttim = ARTIM0 + 2 * adev->devno; in cmd640_set_piomode()
63 if (ata_timing_compute(adev, adev->pio_mode, &t, T, 0) < 0) { in cmd640_set_piomode()
68 /* The second channel has shared timings and the setup timing is in cmd640_set_piomode()
70 if (ap->port_no && pair) { in cmd640_set_piomode()
72 ata_timing_compute(pair, pair->pio_mode, &p, T, 1); in cmd640_set_piomode()
78 t.active += t.recover - 16; in cmd640_set_piomode()
88 t.recover--; /* 640B only */ in cmd640_set_piomode()
97 if (ap->port_no == 0) { in cmd640_set_piomode()
100 /* Load setup timing */ in cmd640_set_piomode()
116 timing->reg58[adev->devno] = (t.active << 4) | t.recover; in cmd640_set_piomode()
122 * cmd640_qc_issue - command preparation hook
131 struct ata_port *ap = qc->ap; in cmd640_qc_issue()
132 struct ata_device *adev = qc->dev; in cmd640_qc_issue()
133 struct pci_dev *pdev = to_pci_dev(ap->host->dev); in cmd640_qc_issue()
134 struct cmd640_reg *timing = ap->private_data; in cmd640_qc_issue() local
136 if (ap->port_no != 0 && adev->devno != timing->last) { in cmd640_qc_issue()
137 pci_write_config_byte(pdev, DRWTIM23, timing->reg58[adev->devno]); in cmd640_qc_issue()
138 timing->last = adev->devno; in cmd640_qc_issue()
144 * cmd640_port_start - port setup
153 struct pci_dev *pdev = to_pci_dev(ap->host->dev); in cmd640_port_start()
154 struct cmd640_reg *timing; in cmd640_port_start() local
156 timing = devm_kzalloc(&pdev->dev, sizeof(struct cmd640_reg), GFP_KERNEL); in cmd640_port_start()
157 if (timing == NULL) in cmd640_port_start()
158 return -ENOMEM; in cmd640_port_start()
159 timing->last = -1; /* Force a load */ in cmd640_port_start()
160 ap->private_data = timing; in cmd640_port_start()
166 struct pci_dev *pdev = to_pci_dev(ap->host->dev); in cmd640_sff_irq_check()
167 int irq_reg = ap->port_no ? ARTIM23 : CFR; in cmd640_sff_irq_check()
168 u8 irq_stat, irq_mask = ap->port_no ? 0x10 : 0x04; in cmd640_sff_irq_check()
269 MODULE_DESCRIPTION("low-level driver for CMD640 PATA controllers");