ARM: at91: ma5d4: Reset CAN controllers late
authorMarek Vasut <marex@denx.de>
Tue, 2 May 2017 18:27:42 +0000 (20:27 +0200)
committerTom Rini <trini@konsulko.com>
Thu, 29 Jun 2017 17:30:28 +0000 (13:30 -0400)
The CAN controllers need slight delay between toggling of their reset
line. Move this action into board_init(), otherwise timer will not be
initialized and the board might hang.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Andreas Bießmann <andreas.devel@googlemail.com>
board/aries/ma5d4evk/ma5d4evk.c

index dd74e29..aa02b8a 100644 (file)
@@ -269,12 +269,6 @@ int board_early_init_f(void)
        at91_set_pio_output(AT91_PIO_PORTD, 29, 0);
        at91_set_pio_output(AT91_PIO_PORTD, 30, 0);
 
-       /* Reset CAN controllers */
-       at91_set_pio_output(AT91_PIO_PORTB, 21, 0);
-       udelay(100);
-       at91_set_pio_output(AT91_PIO_PORTB, 21, 1);
-       at91_pio3_set_pio_pulldown(AT91_PIO_PORTB, 21, 0);
-
        ma5d4evk_serial_hw_init();
 
        return 0;
@@ -305,6 +299,12 @@ int board_init(void)
        at91_udp_hw_init();
 #endif
 
+       /* Reset CAN controllers */
+       at91_set_pio_output(AT91_PIO_PORTB, 21, 0);
+       udelay(100);
+       at91_set_pio_output(AT91_PIO_PORTB, 21, 1);
+       at91_pio3_set_pio_pulldown(AT91_PIO_PORTB, 21, 0);
+
        return 0;
 }