From 379b0ec3e5eacdde822966c84062bea41da7ae89 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 19 Feb 2019 19:47:19 +0000 Subject: Working --- app/steth.c | 77 ++++++++++++++++++++++++++++++++----------------------------- 1 file changed, 40 insertions(+), 37 deletions(-) (limited to 'app/steth.c') diff --git a/app/steth.c b/app/steth.c index afd68ed..5ed11c7 100644 --- a/app/steth.c +++ b/app/steth.c @@ -200,40 +200,41 @@ steth_lwip_init (struct netif *netif) #ifdef FUCKED -static void fucked_phy_reset(uint8_t phy) +static void fucked_phy_reset (uint8_t phy) { -unsigned i; - eth_smi_write(phy, PHY_REG_BCR, PHY_REG_BCR_RESET); - for (i=0;(eth_smi_read(phy, PHY_REG_BCR) & PHY_REG_BCR_RESET) && (i<1000);++i) delay_us(1000); + unsigned i; + eth_smi_write (phy, PHY_REG_BCR, PHY_REG_BCR_RESET); + + for (i = 0; (eth_smi_read (phy, PHY_REG_BCR) & PHY_REG_BCR_RESET) && (i < 1000); ++i) delay_us (1000); } -static void fucked_eth_init(uint8_t phy, enum eth_clk clock) +static void fucked_eth_init (uint8_t phy, enum eth_clk clock) { - ETH_MACMIIAR = clock; - fucked_phy_reset(phy); - - ETH_MACCR = ETH_MACCR_CSTF | ETH_MACCR_FES | ETH_MACCR_DM | - ETH_MACCR_APCS | ETH_MACCR_RD; - ETH_MACFFR = ETH_MACFFR_RA | ETH_MACFFR_PM; - ETH_MACHTHR = 0; /* pass all frames */ - ETH_MACHTLR = 0; - ETH_MACFCR = (0x100 << ETH_MACFCR_PT_SHIFT); - ETH_MACVLANTR = 0; - ETH_DMAOMR = ETH_DMAOMR_DTCEFD | ETH_DMAOMR_RSF | ETH_DMAOMR_DFRF | - ETH_DMAOMR_TSF | ETH_DMAOMR_FEF | ETH_DMAOMR_OSF; - ETH_DMABMR = ETH_DMABMR_AAB | ETH_DMABMR_FB | - (32 << ETH_DMABMR_RDP_SHIFT) | (32 << ETH_DMABMR_PBL_SHIFT) | - ETH_DMABMR_PM_2_1 | ETH_DMABMR_USP; + ETH_MACMIIAR = clock; + fucked_phy_reset (phy); + + ETH_MACCR = ETH_MACCR_CSTF | ETH_MACCR_FES | ETH_MACCR_DM | + ETH_MACCR_APCS | ETH_MACCR_RD; + ETH_MACFFR = ETH_MACFFR_RA | ETH_MACFFR_PM; + ETH_MACHTHR = 0; /* pass all frames */ + ETH_MACHTLR = 0; + ETH_MACFCR = (0x100 << ETH_MACFCR_PT_SHIFT); + ETH_MACVLANTR = 0; + ETH_DMAOMR = ETH_DMAOMR_DTCEFD | ETH_DMAOMR_RSF | ETH_DMAOMR_DFRF | + ETH_DMAOMR_TSF | ETH_DMAOMR_FEF | ETH_DMAOMR_OSF; + ETH_DMABMR = ETH_DMABMR_AAB | ETH_DMABMR_FB | + (32 << ETH_DMABMR_RDP_SHIFT) | (32 << ETH_DMABMR_PBL_SHIFT) | + ETH_DMABMR_PM_2_1 | ETH_DMABMR_USP; } #endif void eth_reset (void) { -unsigned i; + unsigned i; - printf("Eth_reset()\r\n"); + printf ("Eth_reset()\r\n"); rcc_periph_reset_hold (RST_ETHMAC); delay_ms (1); @@ -246,7 +247,7 @@ unsigned i; rcc_periph_reset_release (RST_ETHMAC); - delay_ms (1); + delay_ms (1); CLEAR (NRST); delay_us (1); SET (NRST); @@ -255,16 +256,17 @@ unsigned i; TRACE; ETH_DMABMR |= ETH_DMABMR_SR; - i=0; + i = 0; + while (ETH_DMABMR & ETH_DMABMR_SR) { - delay_ms(1); - i++; + delay_ms (1); + i++; - if (i>1000) { - printf("No 50MHz clock to ethernet MAC\n"); - return; - } - } + if (i > 1000) { + printf ("No 50MHz clock to ethernet MAC\n"); + return; + } + } /*MDC = HCLK / 102 (0b100) => 1.6MHz */ TRACE; @@ -274,10 +276,10 @@ unsigned i; eth_init (PHY, ETH_CLK_150_168MHZ); #endif - if (eth_smi_read (PHY, 0)==0xffff) { - fucked=1; - printf("WARNING: PHY is AWOL\r\n"); - } + if (eth_smi_read (PHY, 0) == 0xffff) { + fucked = 1; + printf ("WARNING: PHY is AWOL\r\n"); + } TRACE; phy_stat(); @@ -370,7 +372,8 @@ steth_init (void) #endif eth_start_an(); - if (fucked) delay_ms(1000); + + if (fucked) delay_ms (1000); @@ -404,7 +407,7 @@ void steth_slow_tick (void) an_happy = phy_link_an_done (PHY); - if ((!phy_link_isup (PHY) || !an_happy) && running) { + if ((!phy_link_isup (PHY) || !an_happy) && running) { printf ("stopping nic\r\n"); eth_reset(); -- cgit v1.2.3