Lines Matching refs:info

93 pata_s3c_setup_timing(struct s3c_ide_info *info, const struct ata_timing *ata)  in pata_s3c_setup_timing()  argument
107 struct s3c_ide_info *info = ap->host->private_data; in pata_s3c_set_piomode() local
110 ulong ata_cfg = readl(info->ide_addr + S3C_ATA_CFG); in pata_s3c_set_piomode()
119 cycle_time = (int)(1000000000UL / clk_get_rate(info->clk)); in pata_s3c_set_piomode()
124 piotime = pata_s3c_setup_timing(info, &timing); in pata_s3c_set_piomode()
126 writel(ata_cfg, info->ide_addr + S3C_ATA_CFG); in pata_s3c_set_piomode()
127 writel(piotime, info->ide_addr + S3C_ATA_PIO_TIME); in pata_s3c_set_piomode()
134 static int wait_for_host_ready(struct s3c_ide_info *info) in wait_for_host_ready() argument
137 void __iomem *fifo_reg = info->ide_addr + info->fifo_status_reg; in wait_for_host_ready()
153 struct s3c_ide_info *info = host->private_data; in ata_outb() local
155 wait_for_host_ready(info); in ata_outb()
164 struct s3c_ide_info *info = host->private_data; in ata_inb() local
167 wait_for_host_ready(info); in ata_inb()
169 wait_for_host_ready(info); in ata_inb()
170 temp = readb(info->ide_addr + S3C_ATA_PIO_RDATA); in ata_inb()
270 struct s3c_ide_info *info = ap->host->private_data; in pata_s3c_data_xfer() local
278 wait_for_host_ready(info); in pata_s3c_data_xfer()
280 wait_for_host_ready(info); in pata_s3c_data_xfer()
281 *data_ptr = readw(info->ide_addr in pata_s3c_data_xfer()
286 wait_for_host_ready(info); in pata_s3c_data_xfer()
453 struct s3c_ide_info *info = host->private_data; in pata_s3c_irq() local
456 reg = readl(info->ide_addr + S3C_ATA_IRQ); in pata_s3c_irq()
457 writel(reg, info->ide_addr + S3C_ATA_IRQ); in pata_s3c_irq()
462 static void pata_s3c_hwinit(struct s3c_ide_info *info, in pata_s3c_hwinit() argument
465 switch (info->cpu_type) { in pata_s3c_hwinit()
468 pata_s3c_cfg_mode(info->sfr_addr); in pata_s3c_hwinit()
469 pata_s3c_set_endian(info->ide_addr, 1); in pata_s3c_hwinit()
470 pata_s3c_enable(info->ide_addr, true); in pata_s3c_hwinit()
474 writel(0x1f, info->ide_addr + S3C_ATA_IRQ); in pata_s3c_hwinit()
475 writel(0x1b, info->ide_addr + S3C_ATA_IRQ_MSK); in pata_s3c_hwinit()
480 pata_s3c_set_endian(info->ide_addr, 0); in pata_s3c_hwinit()
481 pata_s3c_enable(info->ide_addr, true); in pata_s3c_hwinit()
485 writel(0x3f, info->ide_addr + S3C_ATA_IRQ); in pata_s3c_hwinit()
486 writel(0x3f, info->ide_addr + S3C_ATA_IRQ_MSK); in pata_s3c_hwinit()
498 struct s3c_ide_info *info; in pata_s3c_probe() local
507 info = devm_kzalloc(dev, sizeof(*info), GFP_KERNEL); in pata_s3c_probe()
508 if (!info) { in pata_s3c_probe()
513 info->irq = platform_get_irq(pdev, 0); in pata_s3c_probe()
517 info->ide_addr = devm_ioremap_resource(dev, res); in pata_s3c_probe()
518 if (IS_ERR(info->ide_addr)) in pata_s3c_probe()
519 return PTR_ERR(info->ide_addr); in pata_s3c_probe()
521 info->clk = devm_clk_get(&pdev->dev, "cfcon"); in pata_s3c_probe()
522 if (IS_ERR(info->clk)) { in pata_s3c_probe()
524 ret = PTR_ERR(info->clk); in pata_s3c_probe()
525 info->clk = NULL; in pata_s3c_probe()
529 clk_enable(info->clk); in pata_s3c_probe()
544 info->sfr_addr = info->ide_addr + 0x1800; in pata_s3c_probe()
545 info->ide_addr += 0x1900; in pata_s3c_probe()
546 info->fifo_status_reg = 0x94; in pata_s3c_probe()
549 info->fifo_status_reg = 0x84; in pata_s3c_probe()
552 info->cpu_type = cpu_type; in pata_s3c_probe()
554 if (info->irq <= 0) { in pata_s3c_probe()
556 info->irq = 0; 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()
577 host->private_data = info; in pata_s3c_probe()
583 pata_s3c_hwinit(info, pdata); in pata_s3c_probe()
587 ret = ata_host_activate(host, info->irq, in pata_s3c_probe()
588 info->irq ? pata_s3c_irq : NULL, in pata_s3c_probe()
596 clk_disable(info->clk); in pata_s3c_probe()
603 struct s3c_ide_info *info = host->private_data; in pata_s3c_remove() local
607 clk_disable(info->clk); in pata_s3c_remove()
626 struct s3c_ide_info *info = host->private_data; in pata_s3c_resume() local
628 pata_s3c_hwinit(info, pdata); in pata_s3c_resume()