static void ft1000_detach(struct pcmcia_device *link);
static int ft1000_attach(struct pcmcia_device *link);
-typedef struct local_info_t {
- struct pcmcia_device *link;
- struct net_device *dev;
-} local_info_t;
-
#define MAX_ASIC_RESET_CNT 10
#define COR_DEFAULT 0x55
static int ft1000_attach(struct pcmcia_device *link)
{
-
- local_info_t *local;
-
DEBUG(0, "ft1000_cs: ft1000_attach()\n");
- local = kzalloc(sizeof(local_info_t), GFP_KERNEL);
- if (!local) {
- return -ENOMEM;
- }
- local->link = link;
-
- link->priv = local;
- local->dev = NULL;
-
+ link->priv = NULL;
link->config_flags |= CONF_ENABLE_IRQ | CONF_AUTO_SET_IO;
return ft1000_config(link);
static void ft1000_detach(struct pcmcia_device *link)
{
- struct net_device *dev = ((local_info_t *) link->priv)->dev;
+ struct net_device *dev = link->priv;
DEBUG(0, "ft1000_cs: ft1000_detach(0x%p)\n", link);
pcmcia_disable_device(link);
- /* This points to the parent local_info_t struct */
free_netdev(dev);
} /* ft1000_detach */
goto failed;
}
- ((local_info_t *) link->priv)->dev = init_ft1000_card(link,
- &ft1000_reset);
- if (((local_info_t *) link->priv)->dev == NULL) {
+ link->priv = init_ft1000_card(link, &ft1000_reset);
+ if (link->priv == NULL) {
printk(KERN_INFO "ft1000: Could not register as network device\n");
goto failed;
}
In a normal driver, additional code may be needed to release
other kernel data structures associated with this device.
*/
- kfree((local_info_t *) link->priv);
/* Don't bother checking to see if these succeed or not */
pcmcia_disable_device(link);
static int ft1000_suspend(struct pcmcia_device *link)
{
- struct net_device *dev = ((local_info_t *) link->priv)->dev;
+ struct net_device *dev = link->priv;
if (link->open)
netif_device_detach(dev);