devices/e100-2.6.32-ethercat.c
branchstable-1.5
changeset 2143 5ba5b3792365
parent 2121 d05df15dcc6c
child 2416 375dba75a24b
equal deleted inserted replaced
2141:64f03f19124b 2143:5ba5b3792365
     1 /******************************************************************************
     1 /******************************************************************************
     2  *
     2  *
     3  *  $Id$
     3  *  $Id: e100-2.6.32-ethercat.c,v d05df15dcc6c 2011/09/22 16:51:31 fp $
     4  *
     4  *
     5  *  Copyright (C) 2007-2008  Florian Pose, Ingenieurgemeinschaft IgH
     5  *  Copyright (C) 2007-2008  Florian Pose, Ingenieurgemeinschaft IgH
     6  *
     6  *
     7  *  This file is part of the IgH EtherCAT Master.
     7  *  This file is part of the IgH EtherCAT Master.
     8  *
     8  *
  2982 	/* ack any pending wake events, disable PME */
  2982 	/* ack any pending wake events, disable PME */
  2983 	pci_pme_active(pdev, false);
  2983 	pci_pme_active(pdev, false);
  2984 
  2984 
  2985 	// offer device to EtherCAT master module
  2985 	// offer device to EtherCAT master module
  2986 	nic->ecdev = ecdev_offer(netdev, e100_ec_poll, THIS_MODULE);
  2986 	nic->ecdev = ecdev_offer(netdev, e100_ec_poll, THIS_MODULE);
  2987 	if (nic->ecdev) {
  2987 
  2988 		if (ecdev_open(nic->ecdev)) {
  2988 	if (!nic->ecdev) {
  2989 			ecdev_withdraw(nic->ecdev);
       
  2990 			goto err_out_free;
       
  2991 		}
       
  2992 	} else {
       
  2993 		strcpy(netdev->name, "eth%d");
  2989 		strcpy(netdev->name, "eth%d");
  2994 		if((err = register_netdev(netdev))) {
  2990 		if((err = register_netdev(netdev))) {
  2995 			DPRINTK(PROBE, ERR, "Cannot register net device, aborting.\n");
  2991 			DPRINTK(PROBE, ERR, "Cannot register net device, aborting.\n");
  2996 			goto err_out_free;
  2992 			goto err_out_free;
  2997 		}
  2993 		}
  2998 	}
  2994 	}
       
  2995 
  2999 	nic->cbs_pool = pci_pool_create(netdev->name,
  2996 	nic->cbs_pool = pci_pool_create(netdev->name,
  3000 			   nic->pdev,
  2997 			   nic->pdev,
  3001 			   nic->params.cbs.count * sizeof(struct cb),
  2998 			   nic->params.cbs.count * sizeof(struct cb),
  3002 			   sizeof(u32),
  2999 			   sizeof(u32),
  3003 			   0);
  3000 			   0);
  3004 	DPRINTK(PROBE, INFO, "addr 0x%llx, irq %d, MAC addr %pM\n",
  3001 	DPRINTK(PROBE, INFO, "addr 0x%llx, irq %d, MAC addr %pM\n",
  3005 		(unsigned long long)pci_resource_start(pdev, use_io ? 1 : 0),
  3002 		(unsigned long long)pci_resource_start(pdev, use_io ? 1 : 0),
  3006 		pdev->irq, netdev->dev_addr);
  3003 		pdev->irq, netdev->dev_addr);
       
  3004 
       
  3005 	if (nic->ecdev) {
       
  3006 		if (ecdev_open(nic->ecdev)) {
       
  3007 			ecdev_withdraw(nic->ecdev);
       
  3008 			goto err_out_free;
       
  3009 		}
       
  3010 	}
  3007 
  3011 
  3008 	return 0;
  3012 	return 0;
  3009 
  3013 
  3010 err_out_free:
  3014 err_out_free:
  3011 	e100_free(nic);
  3015 	e100_free(nic);