[U-Boot] [PATCH 2/3] board: atmel: sama5d2_icp: standby disable on CAN transceivers in SPL

Eugen.Hristev at microchip.com Eugen.Hristev at microchip.com
Wed May 8 12:58:19 UTC 2019


From: Eugen Hristev <eugen.hristev at microchip.com>

The 2 CAN transceivers have a STBDY pin which must be low in order to
operate.
This pin is tied to PB25.
Set it to 0 in bootstrap.
At a later time, this needs to be controlled by Linux power management
system, or requested by some driver as a gpio and tied to 0 during
CAN link up.

Signed-off-by: Eugen Hristev <eugen.hristev at microchip.com>
---
 board/atmel/sama5d2_icp/sama5d2_icp.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/board/atmel/sama5d2_icp/sama5d2_icp.c b/board/atmel/sama5d2_icp/sama5d2_icp.c
index 1c28aab..f55ea2c 100644
--- a/board/atmel/sama5d2_icp/sama5d2_icp.c
+++ b/board/atmel/sama5d2_icp/sama5d2_icp.c
@@ -73,6 +73,12 @@ int misc_init_r(void)
 /* SPL */
 #ifdef CONFIG_SPL_BUILD
 
+/* must set PB25 low to enable the CAN transceivers */
+static void board_can_stdby_dis(void)
+{
+	atmel_pio4_set_pio_output(AT91_PIO_PORTB, 25, 0);
+}
+
 /* deassert reset lines for external periph in case of warm reboot */
 static void board_reset_additional_periph(void)
 {
@@ -111,6 +117,7 @@ void spl_board_init(void)
 	spl_mmc_init();
 #endif
 	board_reset_additional_periph();
+	board_can_stdby_dis();
 }
 
 void spl_display_print(void)
-- 
2.7.4



More information about the U-Boot mailing list