ppc4xx: Fix building for PLU405 boards
authorMatthias Fuchs <matthias.fuchs@esd.eu>
Mon, 1 Feb 2010 12:53:59 +0000 (13:53 +0100)
committerStefan Roese <sr@denx.de>
Wed, 3 Feb 2010 08:17:44 +0000 (09:17 +0100)
The init_coupler() function from board/esd/plu405/plu405.c
got lost somehow! This patch readds it.

Signed-off-by: Matthias Fuchs <matthias.fuchs@esd.eu>
Signed-off-by: Stefan Roese <sr@denx.de>
board/esd/plu405/plu405.c

index e385a78a2e8c65d23ae096488fe47bff09e3ab89..0f7fa69a74ccaeb575bf1cef1a7f32688691f680 100644 (file)
@@ -46,6 +46,34 @@ const unsigned char fpgadata[] =
  */
 #include "../common/fpga.c"
 
+/*
+ * generate a short spike on the CAN tx line
+ * to bring the couplers in sync
+ */
+void init_coupler(u32 addr)
+{
+       struct sja1000_basic_s *ctrl = (struct sja1000_basic_s *)addr;
+
+       /* reset */
+       out_8(&ctrl->cr, CR_RR);
+
+       /* dominant */
+       out_8(&ctrl->btr0, 0x00); /* btr setup is required */
+       out_8(&ctrl->btr1, 0x14); /* we use 1Mbit/s */
+       out_8(&ctrl->oc, OC_TP1 | OC_TN1 | OC_POL1 |
+             OC_TP0 | OC_TN0 | OC_POL0 | OC_MODE1);
+       out_8(&ctrl->cr, 0x00);
+
+       /* delay */
+       in_8(&ctrl->cr);
+       in_8(&ctrl->cr);
+       in_8(&ctrl->cr);
+       in_8(&ctrl->cr);
+
+       /* reset */
+       out_8(&ctrl->cr, CR_RR);
+}
+
 int board_early_init_f(void)
 {
        /*