Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5d4c51f6 authored by Alessandro Zummo's avatar Alessandro Zummo Committed by Jeff Garzik
Browse files

[libata] pata_ixp4xx: convert to new EH



Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent 49de0ac8
Loading
Loading
Loading
Loading
+31 −42
Original line number Diff line number Diff line
/*
 * ixp4xx PATA/Compact Flash driver
 * Copyright (c) 2006 Tower Technologies
 * Copyright (C) 2006-07 Tower Technologies
 * Author: Alessandro Zummo <a.zummo@towertech.it>
 *
 * An ATA driver to handle a Compact Flash connected
 * to the ixp4xx expansion bus in TrueIDE mode. The CF
 * must have it chip selects connected to two CS lines
 * on the ixp4xx. The interrupt line is optional, if not
 * specified the driver will run in polling mode.
 * on the ixp4xx. In the irq is not available, you might
 * want to modify both this driver and libata to run in
 * polling mode.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
@@ -23,7 +24,7 @@
#include <scsi/scsi_host.h>

#define DRV_NAME	"pata_ixp4xx_cf"
#define DRV_VERSION	"0.1.3"
#define DRV_VERSION	"0.2"

static int ixp4xx_set_mode(struct ata_port *ap, struct ata_device **error)
{
@@ -42,13 +43,6 @@ static int ixp4xx_set_mode(struct ata_port *ap, struct ata_device **error)
	return 0;
}

static void ixp4xx_phy_reset(struct ata_port *ap)
{
	ap->cbl = ATA_CBL_PATA40;
	ata_port_probe(ap);
	ata_bus_reset(ap);
}

static void ixp4xx_mmio_data_xfer(struct ata_device *adev, unsigned char *buf,
				unsigned int buflen, int write_data)
{
@@ -92,10 +86,6 @@ static void ixp4xx_mmio_data_xfer(struct ata_device *adev, unsigned char *buf,
	*data->cs0_cfg |= 0x01;
}

static void ixp4xx_irq_clear(struct ata_port *ap)
{
}

static struct scsi_host_template ixp4xx_sht = {
	.module			= THIS_MODULE,
	.name			= DRV_NAME,
@@ -121,23 +111,26 @@ static struct ata_port_operations ixp4xx_port_ops = {
	.port_disable		= ata_port_disable,
	.tf_load		= ata_tf_load,
	.tf_read		= ata_tf_read,
	.check_status 	= ata_check_status,
	.exec_command		= ata_exec_command,
	.check_status 		= ata_check_status,
	.dev_select 		= ata_std_dev_select,

	.freeze			= ata_bmdma_freeze,
	.thaw			= ata_bmdma_thaw,
	.error_handler		= ata_bmdma_error_handler,
	.post_internal_cmd	= ata_bmdma_post_internal_cmd,

	.qc_prep 		= ata_qc_prep,
	.qc_issue		= ata_qc_issue_prot,
	.eng_timeout	= ata_eng_timeout,
	.data_xfer		= ixp4xx_mmio_data_xfer,
	.cable_detect		= ata_cable_40wire,

	.irq_clear	= ixp4xx_irq_clear,
	.irq_handler		= ata_interrupt,
	.irq_clear		= ata_bmdma_irq_clear,
	.irq_on			= ata_irq_on,
	.irq_ack	= ata_irq_ack,
	.irq_ack		= ata_dummy_irq_ack,

	.port_start		= ata_port_start,

	.phy_reset	= ixp4xx_phy_reset,
};

static void ixp4xx_setup_port(struct ata_ioports *ioaddr,
@@ -211,10 +204,6 @@ static __devinit int ixp4xx_pata_probe(struct platform_device *pdev)
	ap->pio_mask = 0x1f; /* PIO4 */
	ap->flags |= ATA_FLAG_MMIO | ATA_FLAG_NO_LEGACY | ATA_FLAG_NO_ATAPI;

	/* run in polling mode if no irq has been assigned */
	if (!irq)
		ap->flags |= ATA_FLAG_PIO_POLLING;

	ixp4xx_setup_port(&ap->ioaddr, data);

	dev_printk(KERN_INFO, &pdev->dev, "version " DRV_VERSION "\n");