summaryrefslogtreecommitdiff
path: root/post/ether.c
diff options
context:
space:
mode:
authorwdenk <wdenk>2004-01-20 23:12:12 +0000
committerwdenk <wdenk>2004-01-20 23:12:12 +0000
commitc837dcb1a316745092567bfe4fb266d0941884ff (patch)
tree8b275e8c982d1b0a411ff33c08c86cd3d343eed6 /post/ether.c
parentb0aef11c9f1f98d018adaa484f1e048fa626801e (diff)
downloadu-boot-imx-c837dcb1a316745092567bfe4fb266d0941884ff.zip
u-boot-imx-c837dcb1a316745092567bfe4fb266d0941884ff.tar.gz
u-boot-imx-c837dcb1a316745092567bfe4fb266d0941884ff.tar.bz2
* The PS/2 mux on the BMS2003 board needs 450 ms after power on
before we can access it; add delay in case we are faster (with no CF card inserted) * Cleanup of some init functions * Make sure SCC Ethernet is always stopped by the time we boot Linux to avoid Linux crashes by early packets coming in. * Accelerate flash accesses on LWMON board by using buffered writes
Diffstat (limited to 'post/ether.c')
-rw-r--r--post/ether.c25
1 files changed, 12 insertions, 13 deletions
diff --git a/post/ether.c b/post/ether.c
index 0a8b36f..b041a43 100644
--- a/post/ether.c
+++ b/post/ether.c
@@ -70,6 +70,7 @@ static int ctlr_list[][2] = { };
static struct {
void (*init) (int index);
+ void (*halt) (int index);
int (*send) (int index, volatile void *packet, int length);
int (*recv) (int index, void *packet, int length);
} ctlr_proc[1];
@@ -77,7 +78,6 @@ static struct {
static char *ctlr_name[1] = { "SCC" };
static int used_by_uart[1] = { -1 };
-static int used_by_ether[1] = { -1 };
/* Ethernet Transmit and Receive Buffers */
#define DBUF_LENGTH 1520
@@ -452,6 +452,14 @@ CPM_CR_CH_SCC4 };
#endif
}
+static void scc_halt (int scc_index)
+{
+ volatile immap_t *immr = (immap_t *) CFG_IMMR;
+
+ immr->im_cpm.cp_scc[scc_index].scc_gsmrl &=
+ ~(SCC_GSMRL_ENR | SCC_GSMRL_ENT);
+}
+
static int scc_send (int index, volatile void *packet, int length)
{
int i, j = 0;
@@ -573,20 +581,14 @@ static int test_ctlr (int ctlr, int index)
Done:
+ ctlr_proc[ctlr].halt (index);
+
#if !defined(CONFIG_8xx_CONS_NONE)
if (used_by_uart[ctlr] == index) {
serial_init ();
}
#endif
-#if defined(SCC_ENET)
- if (used_by_ether[ctlr] == index) {
- DECLARE_GLOBAL_DATA_PTR;
-
- eth_init (gd->bd);
- }
-#endif
-
/*
* SCC2 Ethernet parameter RAM space overlaps
* the SPI parameter RAM space. So we need to restore
@@ -622,11 +624,8 @@ int ether_post_test (int flags)
used_by_uart[CTLR_SCC] = 3;
#endif
-#if defined(SCC_ENET)
- used_by_ether[CTLR_SCC] = SCC_ENET;
-#endif
-
ctlr_proc[CTLR_SCC].init = scc_init;
+ ctlr_proc[CTLR_SCC].halt = scc_halt;
ctlr_proc[CTLR_SCC].send = scc_send;
ctlr_proc[CTLR_SCC].recv = scc_recv;