• Home
  • Raw
  • Download

Lines Matching +full:compact +full:- +full:flash

1 // SPDX-License-Identifier: GPL-2.0-only
3 * ixp4xx PATA/Compact Flash driver
4 * Copyright (C) 2006-07 Tower Technologies
7 * An ATA driver to handle a Compact Flash connected
31 dev->pio_mode = XFER_PIO_0; in ixp4xx_set_mode()
32 dev->xfer_mode = XFER_PIO_0; in ixp4xx_set_mode()
33 dev->xfer_shift = ATA_SHIFT_PIO; in ixp4xx_set_mode()
34 dev->flags |= ATA_DFLAG_PIO; in ixp4xx_set_mode()
45 struct ata_port *ap = qc->dev->link->ap; in ixp4xx_mmio_data_xfer()
46 void __iomem *mmio = ap->ioaddr.data_addr; in ixp4xx_mmio_data_xfer()
47 struct ixp4xx_pata_data *data = dev_get_platdata(ap->host->dev); in ixp4xx_mmio_data_xfer()
52 *data->cs0_cfg &= ~(0x01); in ixp4xx_mmio_data_xfer()
66 unsigned char *trailing_buf = buf + buflen - 1; in ixp4xx_mmio_data_xfer()
79 *data->cs0_cfg |= 0x01; in ixp4xx_mmio_data_xfer()
99 struct ata_ioports *ioaddr = &ap->ioaddr; in ixp4xx_setup_port()
103 ioaddr->cmd_addr = data->cs0; in ixp4xx_setup_port()
104 ioaddr->altstatus_addr = data->cs1 + 0x06; in ixp4xx_setup_port()
105 ioaddr->ctl_addr = data->cs1 + 0x06; in ixp4xx_setup_port()
115 *(unsigned long *)&ioaddr->data_addr ^= 0x02; in ixp4xx_setup_port()
116 *(unsigned long *)&ioaddr->cmd_addr ^= 0x03; in ixp4xx_setup_port()
117 *(unsigned long *)&ioaddr->altstatus_addr ^= 0x03; in ixp4xx_setup_port()
118 *(unsigned long *)&ioaddr->ctl_addr ^= 0x03; in ixp4xx_setup_port()
119 *(unsigned long *)&ioaddr->error_addr ^= 0x03; in ixp4xx_setup_port()
120 *(unsigned long *)&ioaddr->feature_addr ^= 0x03; in ixp4xx_setup_port()
121 *(unsigned long *)&ioaddr->nsect_addr ^= 0x03; in ixp4xx_setup_port()
122 *(unsigned long *)&ioaddr->lbal_addr ^= 0x03; in ixp4xx_setup_port()
123 *(unsigned long *)&ioaddr->lbam_addr ^= 0x03; in ixp4xx_setup_port()
124 *(unsigned long *)&ioaddr->lbah_addr ^= 0x03; in ixp4xx_setup_port()
125 *(unsigned long *)&ioaddr->device_addr ^= 0x03; in ixp4xx_setup_port()
126 *(unsigned long *)&ioaddr->status_addr ^= 0x03; in ixp4xx_setup_port()
127 *(unsigned long *)&ioaddr->command_addr ^= 0x03; in ixp4xx_setup_port()
141 struct ixp4xx_pata_data *data = dev_get_platdata(&pdev->dev); in ixp4xx_pata_probe()
149 return -EINVAL; in ixp4xx_pata_probe()
152 host = ata_host_alloc(&pdev->dev, 1); in ixp4xx_pata_probe()
154 return -ENOMEM; in ixp4xx_pata_probe()
157 ret = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32)); in ixp4xx_pata_probe()
161 data->cs0 = devm_ioremap(&pdev->dev, cs0->start, 0x1000); in ixp4xx_pata_probe()
162 data->cs1 = devm_ioremap(&pdev->dev, cs1->start, 0x1000); in ixp4xx_pata_probe()
164 if (!data->cs0 || !data->cs1) in ixp4xx_pata_probe()
165 return -ENOMEM; in ixp4xx_pata_probe()
173 return -EINVAL; in ixp4xx_pata_probe()
176 *data->cs0_cfg = data->cs0_bits; in ixp4xx_pata_probe()
177 *data->cs1_cfg = data->cs1_bits; in ixp4xx_pata_probe()
179 ap = host->ports[0]; in ixp4xx_pata_probe()
181 ap->ops = &ixp4xx_port_ops; in ixp4xx_pata_probe()
182 ap->pio_mask = ATA_PIO4; in ixp4xx_pata_probe()
183 ap->flags |= ATA_FLAG_NO_ATAPI; in ixp4xx_pata_probe()
185 ixp4xx_setup_port(ap, data, cs0->start, cs1->start); in ixp4xx_pata_probe()
187 ata_print_version_once(&pdev->dev, DRV_VERSION); in ixp4xx_pata_probe()
204 MODULE_DESCRIPTION("low-level driver for ixp4xx Compact Flash PATA");