From 3be9796df73e200ae3778316a3ac696370731289 Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Mon, 5 Dec 2005 21:06:12 +0000 Subject: [PATCH] Obtengo MAC de la PROM de la placa =) --- pruebas/keil/red_test_anda/etherdev.c | 41 +++++++++++++++++++++------ 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/pruebas/keil/red_test_anda/etherdev.c b/pruebas/keil/red_test_anda/etherdev.c index a473629..d3b1a5a 100644 --- a/pruebas/keil/red_test_anda/etherdev.c +++ b/pruebas/keil/red_test_anda/etherdev.c @@ -142,8 +142,33 @@ bit etherdev_init(void) // Mask all interrupts in mask register. etherdev_reg_write(IMR, 0x00); - // TODO Obtengo MAC de la placa - //etherdev_reg_write(CR, 0x21); + // Obtengo MAC de la placa + etherdev_reg_write(RBCR0, 0x0c); // Vamos a leer 12 bytes (2 x 6) + etherdev_reg_write(RBCR1, 0x00); + etherdev_reg_write(RSAR0, 0x00); // En la dirección 0x0000 + etherdev_reg_write(RSAR1, 0x00); + etherdev_reg_write(CR, RD0 | STA); // Comienza lectura + uip_buf[6] = etherdev_reg_read(RDMA); + etherdev_reg_read(RDMA); // Ignoramos porque viene como un word + uip_buf[7] = etherdev_reg_read(RDMA); + etherdev_reg_read(RDMA); // Ignoramos porque viene como un word + uip_buf[8] = etherdev_reg_read(RDMA); + etherdev_reg_read(RDMA); // Ignoramos porque viene como un word + uip_buf[9] = etherdev_reg_read(RDMA); + etherdev_reg_read(RDMA); // Ignoramos porque viene como un word + uip_buf[10] = etherdev_reg_read(RDMA); + etherdev_reg_read(RDMA); // Ignoramos porque viene como un word + uip_buf[11] = etherdev_reg_read(RDMA); + etherdev_reg_read(RDMA); // Ignoramos porque viene como un word + + // Wait until remote DMA operation completes. + while(!(etherdev_reg_read(ISR) & RDC)) continue; + + // Abort/ complete DMA operation. + etherdev_reg_write(CR, RD2 | STP); + + // Limpia ISR + etherdev_reg_write(ISR, RDC); // Set transmit page start. etherdev_reg_write(TPSR, ETH_TX_PAGE_START); @@ -164,12 +189,12 @@ bit etherdev_init(void) etherdev_reg_write(CURR, ETH_RX_PAGE_START + 1); // Set physical address - etherdev_reg_write(PAR0, 0x00); - etherdev_reg_write(PAR1, 0x0c); - etherdev_reg_write(PAR2, 0x6e); - etherdev_reg_write(PAR3, 0x37); - etherdev_reg_write(PAR4, 0x19); - etherdev_reg_write(PAR5, 0xbe); + etherdev_reg_write(PAR0, uip_buf[0]); + etherdev_reg_write(PAR1, uip_buf[0]); + etherdev_reg_write(PAR2, uip_buf[0]); + etherdev_reg_write(PAR3, uip_buf[0]); + etherdev_reg_write(PAR4, uip_buf[0]); + etherdev_reg_write(PAR5, uip_buf[0]); // Select RTL8019AS register page 0 and abort DMA operation. etherdev_reg_write(CR, RD2 | STP); -- 2.43.0