pata_pcmcia: get rid of extra indirection

We don't need ata_pcmcia_info any more.

Acked-by: Jeff Garzik <jgarzik@redhat.com>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
This commit is contained in:
Dominik Brodowski 2010-03-20 20:04:26 +01:00
parent 378b451ede
commit a371b37ccd

View file

@ -45,16 +45,6 @@
#define DRV_NAME "pata_pcmcia" #define DRV_NAME "pata_pcmcia"
#define DRV_VERSION "0.3.5" #define DRV_VERSION "0.3.5"
/*
* Private data structure to glue stuff together
*/
struct ata_pcmcia_info {
struct pcmcia_device *pdev;
int ndev;
dev_node_t node;
};
/** /**
* pcmcia_set_mode - PCMCIA specific mode setup * pcmcia_set_mode - PCMCIA specific mode setup
* @link: link * @link: link
@ -248,7 +238,6 @@ static int pcmcia_init_one(struct pcmcia_device *pdev)
{ {
struct ata_host *host; struct ata_host *host;
struct ata_port *ap; struct ata_port *ap;
struct ata_pcmcia_info *info;
struct pcmcia_config_check *stk = NULL; struct pcmcia_config_check *stk = NULL;
int is_kme = 0, ret = -ENOMEM, p; int is_kme = 0, ret = -ENOMEM, p;
unsigned long io_base, ctl_base; unsigned long io_base, ctl_base;
@ -256,14 +245,6 @@ static int pcmcia_init_one(struct pcmcia_device *pdev)
int n_ports = 1; int n_ports = 1;
struct ata_port_operations *ops = &pcmcia_port_ops; struct ata_port_operations *ops = &pcmcia_port_ops;
info = kzalloc(sizeof(*info), GFP_KERNEL);
if (info == NULL)
return -ENOMEM;
/* Glue stuff together. FIXME: We may be able to get rid of info with care */
info->pdev = pdev;
pdev->priv = info;
/* Set up attributes in order to probe card and get resources */ /* Set up attributes in order to probe card and get resources */
pdev->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO; pdev->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO;
pdev->io.Attributes2 = IO_DATA_PATH_WIDTH_8; pdev->io.Attributes2 = IO_DATA_PATH_WIDTH_8;
@ -347,16 +328,14 @@ static int pcmcia_init_one(struct pcmcia_device *pdev)
if (ret) if (ret)
goto failed; goto failed;
info->ndev = 1; pdev->priv = host;
kfree(stk); kfree(stk);
return 0; return 0;
failed: failed:
kfree(stk); kfree(stk);
info->ndev = 0;
pcmcia_disable_device(pdev); pcmcia_disable_device(pdev);
out1: out1:
kfree(info);
return ret; return ret;
} }
@ -370,20 +349,12 @@ out1:
static void pcmcia_remove_one(struct pcmcia_device *pdev) static void pcmcia_remove_one(struct pcmcia_device *pdev)
{ {
struct ata_pcmcia_info *info = pdev->priv; struct ata_host *host = pdev->priv;
struct device *dev = &pdev->dev;
if (host)
ata_host_detach(host);
if (info != NULL) {
/* If we have attached the device to the ATA layer, detach it */
if (info->ndev) {
struct ata_host *host = dev_get_drvdata(dev);
ata_host_detach(host);
}
info->ndev = 0;
pdev->priv = NULL;
}
pcmcia_disable_device(pdev); pcmcia_disable_device(pdev);
kfree(info);
} }
static struct pcmcia_device_id pcmcia_devices[] = { static struct pcmcia_device_id pcmcia_devices[] = {