aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Vasut2020-05-17 18:24:16 +0200
committerDaniel Schwierzeck2020-06-29 22:36:35 +0200
commitada6a2cea5a0d44c3bd64713babd9d73eaf64863 (patch)
treed24c34f6b83a2e187bd6a84e97589ff3930b38fd
parent0e11d79a533e3c874be1c5975abbc52aaba94d93 (diff)
net: pcnet: Move private data allocation to initialize
The private data allocation does not have to be done every time the NIC is initialized at run time, move the allocation to initialize function, which means it will be done only once when the driver starts. Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com> Cc: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> Cc: Joe Hershberger <joe.hershberger@ni.com>
-rw-r--r--drivers/net/pcnet.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/drivers/net/pcnet.c b/drivers/net/pcnet.c
index b670cff2aae..073ffca6b62 100644
--- a/drivers/net/pcnet.c
+++ b/drivers/net/pcnet.c
@@ -189,6 +189,20 @@ int pcnet_initialize(bd_t *bis)
printf("pcnet: Can not allocate memory\n");
break;
}
+
+ /*
+ * We only maintain one structure because the drivers will
+ * never be used concurrently. In 32bit mode the RX and TX
+ * ring entries must be aligned on 16-byte boundaries.
+ */
+ if (!lp) {
+ lp = malloc_cache_aligned(sizeof(*lp));
+ lp->uc = map_physmem((phys_addr_t)&lp->ucp,
+ sizeof(lp->ucp), MAP_NOCACHE);
+ flush_dcache_range((unsigned long)lp,
+ (unsigned long)lp + sizeof(*lp));
+ }
+
dev->priv = (void *)(unsigned long)devbusfn;
sprintf(dev->name, "pcnet#%d", dev_nr);
@@ -330,19 +344,6 @@ static int pcnet_init(struct eth_device *dev, bd_t *bis)
val |= 0x3 << 10;
pcnet_write_csr(dev, 80, val);
- /*
- * We only maintain one structure because the drivers will never
- * be used concurrently. In 32bit mode the RX and TX ring entries
- * must be aligned on 16-byte boundaries.
- */
- if (lp == NULL) {
- lp = malloc_cache_aligned(sizeof(*lp));
- lp->uc = map_physmem((phys_addr_t)&lp->ucp,
- sizeof(lp->ucp), MAP_NOCACHE);
- flush_dcache_range((unsigned long)lp,
- (unsigned long)lp + sizeof(*lp));
- }
-
uc = lp->uc;
uc->init_block.mode = cpu_to_le16(0x0000);