• Home
  • Raw
  • Download

Lines Matching refs:ap

105 static void pata_s3c_set_piomode(struct ata_port *ap, struct ata_device *adev)  in pata_s3c_set_piomode()  argument
107 struct s3c_ide_info *info = ap->host->private_data; in pata_s3c_set_piomode()
177 static void pata_s3c_tf_load(struct ata_port *ap, in pata_s3c_tf_load() argument
180 struct ata_ioports *ioaddr = &ap->ioaddr; in pata_s3c_tf_load()
183 if (tf->ctl != ap->last_ctl) { in pata_s3c_tf_load()
184 ata_outb(ap->host, tf->ctl, ioaddr->ctl_addr); in pata_s3c_tf_load()
185 ap->last_ctl = tf->ctl; in pata_s3c_tf_load()
186 ata_wait_idle(ap); in pata_s3c_tf_load()
190 ata_outb(ap->host, tf->hob_feature, ioaddr->feature_addr); in pata_s3c_tf_load()
191 ata_outb(ap->host, tf->hob_nsect, ioaddr->nsect_addr); in pata_s3c_tf_load()
192 ata_outb(ap->host, tf->hob_lbal, ioaddr->lbal_addr); in pata_s3c_tf_load()
193 ata_outb(ap->host, tf->hob_lbam, ioaddr->lbam_addr); in pata_s3c_tf_load()
194 ata_outb(ap->host, tf->hob_lbah, ioaddr->lbah_addr); in pata_s3c_tf_load()
198 ata_outb(ap->host, tf->feature, ioaddr->feature_addr); in pata_s3c_tf_load()
199 ata_outb(ap->host, tf->nsect, ioaddr->nsect_addr); in pata_s3c_tf_load()
200 ata_outb(ap->host, tf->lbal, ioaddr->lbal_addr); in pata_s3c_tf_load()
201 ata_outb(ap->host, tf->lbam, ioaddr->lbam_addr); in pata_s3c_tf_load()
202 ata_outb(ap->host, tf->lbah, ioaddr->lbah_addr); in pata_s3c_tf_load()
206 ata_outb(ap->host, tf->device, ioaddr->device_addr); in pata_s3c_tf_load()
208 ata_wait_idle(ap); in pata_s3c_tf_load()
214 static void pata_s3c_tf_read(struct ata_port *ap, struct ata_taskfile *tf) in pata_s3c_tf_read() argument
216 struct ata_ioports *ioaddr = &ap->ioaddr; in pata_s3c_tf_read()
218 tf->feature = ata_inb(ap->host, ioaddr->error_addr); in pata_s3c_tf_read()
219 tf->nsect = ata_inb(ap->host, ioaddr->nsect_addr); in pata_s3c_tf_read()
220 tf->lbal = ata_inb(ap->host, ioaddr->lbal_addr); in pata_s3c_tf_read()
221 tf->lbam = ata_inb(ap->host, ioaddr->lbam_addr); in pata_s3c_tf_read()
222 tf->lbah = ata_inb(ap->host, ioaddr->lbah_addr); in pata_s3c_tf_read()
223 tf->device = ata_inb(ap->host, ioaddr->device_addr); in pata_s3c_tf_read()
226 ata_outb(ap->host, tf->ctl | ATA_HOB, ioaddr->ctl_addr); in pata_s3c_tf_read()
227 tf->hob_feature = ata_inb(ap->host, ioaddr->error_addr); in pata_s3c_tf_read()
228 tf->hob_nsect = ata_inb(ap->host, ioaddr->nsect_addr); in pata_s3c_tf_read()
229 tf->hob_lbal = ata_inb(ap->host, ioaddr->lbal_addr); in pata_s3c_tf_read()
230 tf->hob_lbam = ata_inb(ap->host, ioaddr->lbam_addr); in pata_s3c_tf_read()
231 tf->hob_lbah = ata_inb(ap->host, ioaddr->lbah_addr); in pata_s3c_tf_read()
232 ata_outb(ap->host, tf->ctl, ioaddr->ctl_addr); in pata_s3c_tf_read()
233 ap->last_ctl = tf->ctl; in pata_s3c_tf_read()
240 static void pata_s3c_exec_command(struct ata_port *ap, in pata_s3c_exec_command() argument
243 ata_outb(ap->host, tf->command, ap->ioaddr.command_addr); in pata_s3c_exec_command()
244 ata_sff_pause(ap); in pata_s3c_exec_command()
250 static u8 pata_s3c_check_status(struct ata_port *ap) in pata_s3c_check_status() argument
252 return ata_inb(ap->host, ap->ioaddr.status_addr); in pata_s3c_check_status()
258 static u8 pata_s3c_check_altstatus(struct ata_port *ap) in pata_s3c_check_altstatus() argument
260 return ata_inb(ap->host, ap->ioaddr.altstatus_addr); in pata_s3c_check_altstatus()
269 struct ata_port *ap = dev->link->ap; in pata_s3c_data_xfer() local
270 struct s3c_ide_info *info = ap->host->private_data; in pata_s3c_data_xfer()
271 void __iomem *data_addr = ap->ioaddr.data_addr; in pata_s3c_data_xfer()
291 dev_err(ap->dev, "unexpected trailing data\n"); in pata_s3c_data_xfer()
299 static void pata_s3c_dev_select(struct ata_port *ap, unsigned int device) in pata_s3c_dev_select() argument
306 ata_outb(ap->host, tmp, ap->ioaddr.device_addr); in pata_s3c_dev_select()
307 ata_sff_pause(ap); in pata_s3c_dev_select()
313 static unsigned int pata_s3c_devchk(struct ata_port *ap, in pata_s3c_devchk() argument
316 struct ata_ioports *ioaddr = &ap->ioaddr; in pata_s3c_devchk()
319 pata_s3c_dev_select(ap, device); in pata_s3c_devchk()
321 ata_outb(ap->host, 0x55, ioaddr->nsect_addr); in pata_s3c_devchk()
322 ata_outb(ap->host, 0xaa, ioaddr->lbal_addr); in pata_s3c_devchk()
324 ata_outb(ap->host, 0xaa, ioaddr->nsect_addr); in pata_s3c_devchk()
325 ata_outb(ap->host, 0x55, ioaddr->lbal_addr); in pata_s3c_devchk()
327 ata_outb(ap->host, 0x55, ioaddr->nsect_addr); in pata_s3c_devchk()
328 ata_outb(ap->host, 0xaa, ioaddr->lbal_addr); in pata_s3c_devchk()
330 nsect = ata_inb(ap->host, ioaddr->nsect_addr); in pata_s3c_devchk()
331 lbal = ata_inb(ap->host, ioaddr->lbal_addr); in pata_s3c_devchk()
347 ata_msleep(link->ap, ATA_WAIT_AFTER_RESET); in pata_s3c_wait_after_reset()
363 static int pata_s3c_bus_softreset(struct ata_port *ap, in pata_s3c_bus_softreset() argument
366 struct ata_ioports *ioaddr = &ap->ioaddr; in pata_s3c_bus_softreset()
369 ata_outb(ap->host, ap->ctl, ioaddr->ctl_addr); in pata_s3c_bus_softreset()
371 ata_outb(ap->host, ap->ctl | ATA_SRST, ioaddr->ctl_addr); in pata_s3c_bus_softreset()
373 ata_outb(ap->host, ap->ctl, ioaddr->ctl_addr); in pata_s3c_bus_softreset()
374 ap->last_ctl = ap->ctl; in pata_s3c_bus_softreset()
376 return pata_s3c_wait_after_reset(&ap->link, deadline); in pata_s3c_bus_softreset()
385 struct ata_port *ap = link->ap; in pata_s3c_softreset() local
391 if (pata_s3c_devchk(ap, 0)) in pata_s3c_softreset()
395 pata_s3c_dev_select(ap, 0); in pata_s3c_softreset()
398 rc = pata_s3c_bus_softreset(ap, deadline); in pata_s3c_softreset()
406 classes[0] = ata_sff_dev_classify(&ap->link.device[0], in pata_s3c_softreset()
415 static void pata_s3c_set_devctl(struct ata_port *ap, u8 ctl) in pata_s3c_set_devctl() argument
417 ata_outb(ap->host, ctl, ap->ioaddr.ctl_addr); in pata_s3c_set_devctl()
500 struct ata_port *ap; in pata_s3c_probe() local
539 ap = host->ports[0]; in pata_s3c_probe()
540 ap->pio_mask = ATA_PIO4; in pata_s3c_probe()
543 ap->ops = &pata_s3c_port_ops; in pata_s3c_probe()
548 ap->ops = &pata_s5p_port_ops; in pata_s3c_probe()
555 ap->flags |= ATA_FLAG_PIO_POLLING; in pata_s3c_probe()
557 ata_port_desc(ap, "no IRQ, using PIO polling\n"); in pata_s3c_probe()
560 ap->ioaddr.cmd_addr = info->ide_addr + S3C_ATA_CMD; in pata_s3c_probe()
561 ap->ioaddr.data_addr = info->ide_addr + S3C_ATA_PIO_DTR; in pata_s3c_probe()
562 ap->ioaddr.error_addr = info->ide_addr + S3C_ATA_PIO_FED; in pata_s3c_probe()
563 ap->ioaddr.feature_addr = info->ide_addr + S3C_ATA_PIO_FED; in pata_s3c_probe()
564 ap->ioaddr.nsect_addr = info->ide_addr + S3C_ATA_PIO_SCR; in pata_s3c_probe()
565 ap->ioaddr.lbal_addr = info->ide_addr + S3C_ATA_PIO_LLR; in pata_s3c_probe()
566 ap->ioaddr.lbam_addr = info->ide_addr + S3C_ATA_PIO_LMR; in pata_s3c_probe()
567 ap->ioaddr.lbah_addr = info->ide_addr + S3C_ATA_PIO_LHR; in pata_s3c_probe()
568 ap->ioaddr.device_addr = info->ide_addr + S3C_ATA_PIO_DVR; in pata_s3c_probe()
569 ap->ioaddr.status_addr = info->ide_addr + S3C_ATA_PIO_CSD; in pata_s3c_probe()
570 ap->ioaddr.command_addr = info->ide_addr + S3C_ATA_PIO_CSD; in pata_s3c_probe()
571 ap->ioaddr.altstatus_addr = info->ide_addr + S3C_ATA_PIO_DAD; in pata_s3c_probe()
572 ap->ioaddr.ctl_addr = info->ide_addr + S3C_ATA_PIO_DAD; in pata_s3c_probe()
574 ata_port_desc(ap, "mmio cmd 0x%llx ", in pata_s3c_probe()