Lines Matching +full:ultra +full:- +full:low
2 * pata_sil680.c - SIL680 PATA for new ATA layer
9 * Copyright (C) 2001-2002 Andre Hedrick <andre@linux-ide.org>
39 * sil680_selreg - return register base
53 base += (ap->port_no << 4); in sil680_selreg()
58 * sil680_seldev - return register base
70 base += (ap->port_no << 4); in sil680_seldev()
71 base |= adev->devno ? 2 : 0; in sil680_seldev()
77 * sil680_cable_detect - cable detection
86 struct pci_dev *pdev = to_pci_dev(ap->host->dev); in sil680_cable_detect()
97 * sil680_set_piomode - set PIO mode data
117 unsigned long addr_mask = 0x80 + 4 * ap->port_no; in sil680_set_piomode()
118 struct pci_dev *pdev = to_pci_dev(ap->host->dev); in sil680_set_piomode()
119 int pio = adev->pio_mode - XFER_PIO_0; in sil680_set_piomode()
121 int port_shift = 4 * adev->devno; in sil680_set_piomode()
127 if (pair != NULL && adev->pio_mode > pair->pio_mode) in sil680_set_piomode()
128 lowest_pio = pair->pio_mode - XFER_PIO_0; in sil680_set_piomode()
133 pci_read_config_word(pdev, tfaddr-2, ®); in sil680_set_piomode()
143 pci_write_config_word(pdev, tfaddr-2, reg); in sil680_set_piomode()
148 * sil680_set_dmamode - set DMA mode data
166 struct pci_dev *pdev = to_pci_dev(ap->host->dev); in sil680_set_dmamode()
169 unsigned long addr_mask = 0x80 + 4 * ap->port_no; in sil680_set_dmamode()
170 int port_shift = adev->devno * 4; in sil680_set_dmamode()
172 u16 multi, ultra; in sil680_set_dmamode() local
177 pci_read_config_word(pdev, ua, &ultra); in sil680_set_dmamode()
180 ultra &= ~0x3F; in sil680_set_dmamode()
186 if (adev->dma_mode >= XFER_UDMA_0) { in sil680_set_dmamode()
188 ultra |= ultra_table[scsc][adev->dma_mode - XFER_UDMA_0]; in sil680_set_dmamode()
191 multi = dma_table[adev->dma_mode - XFER_MW_DMA_0]; in sil680_set_dmamode()
196 pci_write_config_word(pdev, ua, ultra); in sil680_set_dmamode()
200 * sil680_sff_exec_command - issue ATA command to host controller
214 DPRINTK("ata%u: cmd 0x%X\n", ap->print_id, tf->command); in sil680_sff_exec_command()
215 iowrite8(tf->command, ap->ioaddr.command_addr); in sil680_sff_exec_command()
216 ioread8(ap->ioaddr.bmdma_addr + ATA_DMA_CMD); in sil680_sff_exec_command()
221 struct pci_dev *pdev = to_pci_dev(ap->host->dev); in sil680_sff_irq_check()
245 * sil680_init_chip - chip setup
259 pdev->revision ? 1 : 255); in sil680_init_chip()
266 dev_dbg(&pdev->dev, "sil680: BA5_EN = %d clock = %02X\n", in sil680_init_chip()
294 dev_dbg(&pdev->dev, "sil680: BA5_EN = %d clock = %02X\n", in sil680_init_chip()
346 ata_print_version_once(&pdev->dev, DRV_VERSION); in sil680_init_one()
357 return -ENODEV; in sil680_init_one()
371 host = ata_host_alloc_pinfo(&pdev->dev, ppi, 2); in sil680_init_one()
373 return -ENOMEM; in sil680_init_one()
374 host->iomap = pcim_iomap_table(pdev); in sil680_init_one()
377 rc = dma_set_mask_and_coherent(&pdev->dev, ATA_DMA_MASK); in sil680_init_one()
383 mmio_base = host->iomap[SIL680_MMIO_BAR]; in sil680_init_one()
384 host->ports[0]->ioaddr.bmdma_addr = mmio_base + 0x00; in sil680_init_one()
385 host->ports[0]->ioaddr.cmd_addr = mmio_base + 0x80; in sil680_init_one()
386 host->ports[0]->ioaddr.ctl_addr = mmio_base + 0x8a; in sil680_init_one()
387 host->ports[0]->ioaddr.altstatus_addr = mmio_base + 0x8a; in sil680_init_one()
388 ata_sff_std_ports(&host->ports[0]->ioaddr); in sil680_init_one()
389 host->ports[1]->ioaddr.bmdma_addr = mmio_base + 0x08; in sil680_init_one()
390 host->ports[1]->ioaddr.cmd_addr = mmio_base + 0xc0; in sil680_init_one()
391 host->ports[1]->ioaddr.ctl_addr = mmio_base + 0xca; in sil680_init_one()
392 host->ports[1]->ioaddr.altstatus_addr = mmio_base + 0xca; in sil680_init_one()
393 ata_sff_std_ports(&host->ports[1]->ioaddr); in sil680_init_one()
396 return ata_host_activate(host, pdev->irq, ata_bmdma_interrupt, in sil680_init_one()
438 MODULE_DESCRIPTION("low-level driver for SI680 PATA");