]> git.sur5r.net Git - u-boot/commitdiff
inka4x0: Add hardware diagnosis and RTC in configuration.
authorDetlev Zundel <dzu@denx.de>
Sun, 29 Mar 2009 22:31:35 +0000 (00:31 +0200)
committerWolfgang Denk <wd@denx.de>
Mon, 30 Mar 2009 07:41:58 +0000 (09:41 +0200)
This patch adds the board specific communication routines needed by
the external 4543 RTC.

Signed-off-by: Detlev Zundel <dzu@denx.de>
Signed-off-by: Andreas Pfefferle <ap@denx.de>
board/inka4x0/inka4x0.c
include/configs/inka4x0.h

index bb5c25d3b69acaea4ed52169fd2e5d4f08dfe435..a8bc3b309c3cd581ecd5be38b14b4636205ad4b7 100644 (file)
@@ -33,6 +33,7 @@
  * MA 02111-1307 USA
  */
 
+#include <asm/io.h>
 #include <common.h>
 #include <mpc5xxx.h>
 #include <pci.h>
@@ -189,6 +190,8 @@ int misc_init_r (void) {
 
 int misc_init_f (void)
 {
+       struct mpc5xxx_gpio *gpio = (struct mpc5xxx_gpio *)MPC5XXX_GPIO;
+       struct mpc5xxx_wu_gpio *wu_gpio = (struct mpc5xxx_wu_gpio *)MPC5XXX_WU_GPIO;
        char tmp[10];
        int i, br;
 
@@ -236,6 +239,23 @@ int misc_init_f (void)
        *(vu_long *) MPC5XXX_WU_GPIO_ENABLE |= GPIO_PSC3_9;
        *(vu_long *) MPC5XXX_WU_GPIO_DIR    |= GPIO_PSC3_9;
        *(vu_long *) MPC5XXX_WU_GPIO_DATA_O   |= GPIO_PSC3_9;
+
+       /*
+        * Configure three wire serial interface to RTC (PSC1_4,
+        * PSC2_4, PSC3_4, PSC3_5)
+        */
+       setbits_8(&wu_gpio->enable,  MPC5XXX_GPIO_WKUP_PSC1_4 |
+                                    MPC5XXX_GPIO_WKUP_PSC2_4);
+       setbits_8(&wu_gpio->ddr,     MPC5XXX_GPIO_WKUP_PSC1_4 |
+                                    MPC5XXX_GPIO_WKUP_PSC2_4);
+       clrbits_8(&wu_gpio->dvo,     MPC5XXX_GPIO_WKUP_PSC1_4);
+       clrbits_8(&gpio->sint_inten, MPC5XXX_GPIO_SINT_PSC3_4 |
+                                    MPC5XXX_GPIO_SINT_PSC3_5);
+       setbits_8(&gpio->sint_gpioe, MPC5XXX_GPIO_SINT_PSC3_4 |
+                                    MPC5XXX_GPIO_SINT_PSC3_5);
+       setbits_8(&gpio->sint_ddr,   MPC5XXX_GPIO_SINT_PSC3_5);
+       clrbits_8(&gpio->sint_dvo,   MPC5XXX_GPIO_SINT_PSC3_5);
+
        return 0;
 }
 
index b80796d023305f52352827ffbb966a006f6e0cec..5f06b0922c6c252714feef9b1c4ea4bbef73063f 100644 (file)
@@ -1,4 +1,7 @@
 /*
+ * (C) Copyright 2009
+ * Detlev Zundel, DENX Software Engineering, dzu@denx.de.
+ *
  * (C) Copyright 2003-2005
  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  *
  */
 #include <config_cmd_default.h>
 
+#define CONFIG_CMD_DATE
 #define CONFIG_CMD_DHCP
 #define CONFIG_CMD_EXT2
 #define CONFIG_CMD_FAT
 #define CONFIG_CMD_IDE
 #define CONFIG_CMD_NFS
 #define CONFIG_CMD_PCI
+#define CONFIG_CMD_PING
 #define CONFIG_CMD_SNTP
 #define CONFIG_CMD_USB
 
-
 #define        CONFIG_TIMESTAMP        1       /* Print image info with timestamp */
 
 #if (TEXT_BASE == 0xFFE00000)          /* Boot low */
  *     01 -> CAN1 on I2C1, CAN2 on Tmr0/1 do not use on TQM5200 with onboard
  *           EEPROM
  * use PSC1 as UART: Bits 28-31 (mask: 0x00000007): 0100
- * use PSC6_1 and PSC6_3 as GPIO: Bits 9:11 (mask: 0x07000000):
- *     011 -> PSC6 could not be used as UART or CODEC. IrDA still possible.
+ * use PSC2 as UART: Bits 24-27 (mask: 0x00000070): 0100
+ * use PSC3 as UART: Bits 20-23 (mask: 0x00000700): 0100
+ * use PSC6 as UART: Bits  9-11 (mask: 0x00700000): 0101
  */
-#define CONFIG_SYS_GPS_PORT_CONFIG     0x01001004
+#define CONFIG_SYS_GPS_PORT_CONFIG     0x01501444
 
 /*
  * RTC configuration
  */
-#define CONFIG_RTC_MPC5200     1       /* use internal MPC5200 RTC */
+#define CONFIG_RTC_RTC4543     1       /* use external RTC */
+
+/*
+ * Software (bit-bang) three wire serial configuration
+ *
+ * Note that we need the ifdefs because otherwise compilation of
+ * mkimage.c fails.
+ */
+#define CONFIG_SOFT_TWS                1
+
+#ifdef TWS_IMPLEMENTATION
+#include <mpc5xxx.h>
+#include <asm/io.h>
+
+#define TWS_CE         MPC5XXX_GPIO_WKUP_PSC1_4 /* GPIO_WKUP_0 */
+#define TWS_WR         MPC5XXX_GPIO_WKUP_PSC2_4 /* GPIO_WKUP_1 */
+#define TWS_DATA       MPC5XXX_GPIO_SINT_PSC3_4 /* GPIO_SINT_0 */
+#define TWS_CLK                MPC5XXX_GPIO_SINT_PSC3_5 /* GPIO_SINT_1 */
+
+static inline void tws_ce(unsigned bit)
+{
+       struct mpc5xxx_wu_gpio *wu_gpio =
+               (struct mpc5xxx_wu_gpio *)MPC5XXX_WU_GPIO;
+       if (bit)
+               setbits_8(&wu_gpio->dvo, TWS_CE);
+       else
+               clrbits_8(&wu_gpio->dvo, TWS_CE);
+}
+
+static inline void tws_wr(unsigned bit)
+{
+       struct mpc5xxx_wu_gpio *wu_gpio =
+               (struct mpc5xxx_wu_gpio *)MPC5XXX_WU_GPIO;
+       if (bit)
+               setbits_8(&wu_gpio->dvo, TWS_WR);
+       else
+               clrbits_8(&wu_gpio->dvo, TWS_WR);
+}
+
+static inline void tws_clk(unsigned bit)
+{
+       struct mpc5xxx_gpio *gpio =
+               (struct mpc5xxx_gpio *)MPC5XXX_GPIO;
+       if (bit)
+               setbits_8(&gpio->sint_dvo, TWS_CLK);
+       else
+               clrbits_8(&gpio->sint_dvo, TWS_CLK);
+}
+
+static inline void tws_data(unsigned bit)
+{
+       struct mpc5xxx_gpio *gpio =
+               (struct mpc5xxx_gpio *)MPC5XXX_GPIO;
+       if (bit)
+               setbits_8(&gpio->sint_dvo, TWS_DATA);
+       else
+               clrbits_8(&gpio->sint_dvo, TWS_DATA);
+}
+
+static inline unsigned tws_data_read(void)
+{
+       struct mpc5xxx_gpio *gpio =
+                       (struct mpc5xxx_gpio *)MPC5XXX_GPIO;
+       return !!(in_8(&gpio->sint_ival) & TWS_DATA);
+}
+
+static inline void tws_data_config_output(unsigned output)
+{
+       struct mpc5xxx_gpio *gpio =
+               (struct mpc5xxx_gpio *)MPC5XXX_GPIO;
+       if (output)
+               setbits_8(&gpio->sint_ddr, TWS_DATA);
+       else
+               clrbits_8(&gpio->sint_ddr, TWS_DATA);
+}
+#endif /* TWS_IMPLEMENTATION */
 
 /*
  * Miscellaneous configurable options