devices/e100-2.6.32-ethercat.c
branchredundancy
changeset 2142 26c74f035ab0
parent 2121 d05df15dcc6c
child 2419 fdb85a806585
child 2589 2b9c78543663
equal deleted inserted replaced
2137:bb9af8815750 2142:26c74f035ab0
  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);