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); |