[PATCH] pcmcia: embed dev_link_t into struct pcmcia_device

Embed dev_link_t into struct pcmcia_device(), as they basically address the
same entity. The actual contents of dev_link_t will be cleaned up step by step.
This patch includes a bugfix from and signed-off-by Andrew Morton.

Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
This commit is contained in:
Dominik Brodowski
2006-03-05 10:45:09 +01:00
vanhempi a78f4dd331
commit fd238232cd
52 muutettua tiedostoa jossa 446 lisäystä ja 729 poistoa

Näytä tiedosto

@@ -70,7 +70,7 @@ static void pdacf_release(dev_link_t *link)
*/
static int snd_pdacf_free(struct snd_pdacf *pdacf)
{
dev_link_t *link = &pdacf->link;
dev_link_t *link = pdacf->p_dev;
pdacf_release(link);
@@ -100,6 +100,8 @@ static int snd_pdacf_attach(struct pcmcia_device *p_dev)
.dev_free = snd_pdacf_dev_free,
};
link = dev_to_instance(p_dev);
snd_printdd(KERN_DEBUG "pdacf_attach called\n");
/* find an empty slot from the card list */
for (i = 0; i < SNDRV_CARDS; i++) {
@@ -133,7 +135,7 @@ static int snd_pdacf_attach(struct pcmcia_device *p_dev)
pdacf->index = i;
card_list[i] = card;
link = &pdacf->link;
pdacf->p_dev = p_dev;
link->priv = pdacf;
link->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO;
@@ -150,10 +152,6 @@ static int snd_pdacf_attach(struct pcmcia_device *p_dev)
link->conf.ConfigIndex = 1;
link->conf.Present = PRESENT_OPTION;
/* Chain drivers */
link->next = NULL;
link->handle = p_dev;
pdacf_config(link);
return 0;
@@ -262,7 +260,7 @@ static void pdacf_config(dev_link_t *link)
if (snd_pdacf_assign_resources(pdacf, link->io.BasePort1, link->irq.AssignedIRQ) < 0)
goto failed;
link->dev = &pdacf->node;
link->dev_node = &pdacf->node;
link->state &= ~DEV_CONFIG_PENDING;
return;

Näytä tiedosto

@@ -116,7 +116,7 @@ struct snd_pdacf {
void *pcm_area;
/* pcmcia stuff */
dev_link_t link;
struct pcmcia_device *p_dev;
dev_node_t node;
};

Näytä tiedosto

@@ -126,7 +126,8 @@ static struct snd_vx_hardware vxp440_hw = {
/*
* create vxpocket instance
*/
static struct snd_vxpocket *snd_vxpocket_new(struct snd_card *card, int ibl)
static struct snd_vxpocket *snd_vxpocket_new(struct snd_card *card, int ibl,
struct pcmcia_device *p_dev)
{
dev_link_t *link; /* Info for cardmgr */
struct vx_core *chip;
@@ -135,6 +136,8 @@ static struct snd_vxpocket *snd_vxpocket_new(struct snd_card *card, int ibl)
.dev_free = snd_vxpocket_dev_free,
};
link = dev_to_instance(p_dev);
chip = snd_vx_create(card, &vxpocket_hw, &snd_vxpocket_ops,
sizeof(struct snd_vxpocket) - sizeof(struct vx_core));
if (! chip)
@@ -148,7 +151,7 @@ static struct snd_vxpocket *snd_vxpocket_new(struct snd_card *card, int ibl)
vxp = (struct snd_vxpocket *)chip;
link = &vxp->link;
vxp->p_dev = p_dev;
link->priv = chip;
link->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO;
@@ -263,7 +266,7 @@ static void vxpocket_config(dev_link_t *link)
if (snd_vxpocket_assign_resources(chip, link->io.BasePort1, link->irq.AssignedIRQ) < 0)
goto failed;
link->dev = &vxp->node;
link->dev_node = &vxp->node;
link->state &= ~DEV_CONFIG_PENDING;
kfree(parse);
return;
@@ -339,7 +342,7 @@ static int vxpocket_attach(struct pcmcia_device *p_dev)
return -ENOMEM;
}
vxp = snd_vxpocket_new(card, ibl[i]);
vxp = snd_vxpocket_new(card, ibl[i], p_dev);
if (! vxp) {
snd_card_free(card);
return -ENODEV;
@@ -349,13 +352,10 @@ static int vxpocket_attach(struct pcmcia_device *p_dev)
vxp->index = i;
card_alloc |= 1 << i;
/* Chain drivers */
vxp->link.next = NULL;
vxp->p_dev = p_dev;
vxp->p_dev->state |= DEV_PRESENT | DEV_CONFIG_PENDING;
vxp->link.handle = p_dev;
vxp->link.state |= DEV_PRESENT | DEV_CONFIG_PENDING;
p_dev->instance = &vxp->link;
vxpocket_config(&vxp->link);
vxpocket_config(p_dev);
return 0;
}

Näytä tiedosto

@@ -42,7 +42,7 @@ struct snd_vxpocket {
int index; /* card index */
/* pcmcia stuff */
dev_link_t link;
struct pcmcia_device *p_dev;
dev_node_t node;
};