diff options
| author | David S. Miller <davem@nuts.ninka.net> | 2003-06-03 13:49:17 -0700 |
|---|---|---|
| committer | David S. Miller <davem@nuts.ninka.net> | 2003-06-03 13:49:17 -0700 |
| commit | 760bebe12514fa33a4724c3eabb7cc996c4b1507 (patch) | |
| tree | d31f0a5e872deb865aa5add8e0a5125c2bb9f29a | |
| parent | 60c7e91511150663090eb4936dad912f401a3f5e (diff) | |
[NET]: Convert PPC 8260_io/enet.c away from init_etherdev().
| -rw-r--r-- | arch/ppc/8260_io/enet.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/arch/ppc/8260_io/enet.c b/arch/ppc/8260_io/enet.c index 7a24273167aa..1366680e3ece 100644 --- a/arch/ppc/8260_io/enet.c +++ b/arch/ppc/8260_io/enet.c @@ -630,19 +630,15 @@ int __init scc_enet_init(void) bd = (bd_t *)__res; - /* Allocate some private information. + /* Create an Ethernet device instance. */ - cep = (struct scc_enet_private *)kmalloc(sizeof(*cep), GFP_KERNEL); - if (cep == NULL) + dev = alloc_etherdev(sizeof(*cep)); + if (!dev) return -ENOMEM; - __clear_user(cep,sizeof(*cep)); + cep = dev->priv; spin_lock_init(&cep->lock); - /* Create an Ethernet device instance. - */ - dev = init_etherdev(0, 0); - /* Get pointer to SCC area in parameter RAM. */ ep = (scc_enet_t *)(&immap->im_dprambase[PROFF_ENET]); @@ -771,6 +767,7 @@ int __init scc_enet_init(void) /* Allocate a page. */ mem_addr = __get_free_page(GFP_KERNEL); + /* BUG: no check for failure */ /* Initialize the BD for every fragment in the page. */ @@ -808,6 +805,7 @@ int __init scc_enet_init(void) /* Install our interrupt handler. */ request_irq(SIU_INT_ENET, scc_enet_interrupt, 0, "enet", dev); + /* BUG: no check for failure */ /* Set GSMR_H to enable all normal operating modes. * Set GSMR_L to enable Ethernet to MC68160. @@ -837,7 +835,6 @@ int __init scc_enet_init(void) io->iop_pdatc |= PC_EST8260_ENET_NOTFD; dev->base_addr = (unsigned long)ep; - dev->priv = cep; /* The CPM Ethernet specific entries in the device structure. */ dev->open = scc_enet_open; @@ -852,6 +849,12 @@ int __init scc_enet_init(void) */ sccp->scc_gsmrl |= (SCC_GSMRL_ENR | SCC_GSMRL_ENT); + err = register_netdev(dev); + if (err) { + kfree(dev); + return err; + } + printk("%s: SCC ENET Version 0.1, ", dev->name); for (i=0; i<5; i++) printk("%02x:", dev->dev_addr[i]); |
