summaryrefslogtreecommitdiff
path: root/cpu/mpc8xx/scc.c
diff options
context:
space:
mode:
authorWolfgang Denk <wd@denx.de>2008-09-22 22:23:06 +0200
committerWolfgang Denk <wd@denx.de>2008-09-22 22:23:06 +0200
commit5fdc215f0b351b0c36cc3f8a0fa5850f24454bed (patch)
treee3098bd82da0b380a0daa3042b6776ab9254990e /cpu/mpc8xx/scc.c
parenta07faf7b9ad5a86763a577c79922c4ff9a70ef23 (diff)
Fix DPRAM memory leak when CFG_ALLOC_DPRAM is defined, which
eventually leads to a machine check. This change assures that DPRAM is allocated only once in that case. Signed-off-by: Gary Jennejohn <garyj@denx.de> Signed-off-by: Wolfgang Denk <wd@denx.de>
Diffstat (limited to 'cpu/mpc8xx/scc.c')
-rw-r--r--cpu/mpc8xx/scc.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/cpu/mpc8xx/scc.c b/cpu/mpc8xx/scc.c
index 09a3db107b7..09a6348fd0e 100644
--- a/cpu/mpc8xx/scc.c
+++ b/cpu/mpc8xx/scc.c
@@ -215,12 +215,14 @@ static int scc_init (struct eth_device *dev, bd_t * bis)
rxIdx = 0;
txIdx = 0;
+ if (!rtx) {
#ifdef CFG_ALLOC_DPRAM
- rtx = (RTXBD *) (immr->im_cpm.cp_dpmem +
- dpram_alloc_align (sizeof (RTXBD), 8));
+ rtx = (RTXBD *) (immr->im_cpm.cp_dpmem +
+ dpram_alloc_align (sizeof (RTXBD), 8));
#else
- rtx = (RTXBD *) (immr->im_cpm.cp_dpmem + CPM_SCC_BASE);
-#endif /* 0 */
+ rtx = (RTXBD *) (immr->im_cpm.cp_dpmem + CPM_SCC_BASE);
+#endif
+ }
#if (defined(PA_ENET_RXD) && defined(PA_ENET_TXD))
/* Configure port A pins for Txd and Rxd.