]> git.sur5r.net Git - u-boot/blobdiff - arch/arm/include/asm/arch-sunxi/timer.h
sunxi: Fix watchdog reset function for R40
[u-boot] / arch / arm / include / asm / arch-sunxi / timer.h
index 58e14fd0f713033aeaa2e2b0976b40444a8e1399..ccdf942534a40b94cebd69a610d2b5ceaa4dbea9 100644 (file)
 #ifndef _SUNXI_TIMER_H_
 #define _SUNXI_TIMER_H_
 
-#define WDT_CTRL_RESTART       (0x1 << 0)
-#define WDT_CTRL_KEY           (0x0a57 << 1)
-#define WDT_MODE_EN            (0x1 << 0)
-#define WDT_MODE_RESET_EN      (0x1 << 1)
-
 #ifndef __ASSEMBLY__
 
 #include <linux/types.h>
+#include <asm/arch/watchdog.h>
 
 /* General purpose timer */
 struct sunxi_timer {
@@ -43,12 +39,6 @@ struct sunxi_64cnt {
        u32 hi;                 /* 0xa8 */
 };
 
-/* Watchdog */
-struct sunxi_wdog {
-       u32 ctl;                /* 0x90 */
-       u32 mode;               /* 0x94 */
-};
-
 /* Rtc */
 struct sunxi_rtc {
        u32 ctl;                /* 0x100 */
@@ -77,15 +67,20 @@ struct sunxi_timer_reg {
        struct sunxi_timer timer[6];    /* We have 6 timers */
        u8 res2[16];
        struct sunxi_avs avs;
-       struct sunxi_wdog wdog;
-       u8 res3[8];
-       struct sunxi_64cnt cnt64;
+#if defined(CONFIG_SUNXI_GEN_SUN4I) || defined(CONFIG_MACH_SUN8I_R40)
+       struct sunxi_wdog wdog; /* 0x90 */
+       /* XXX the following is not accurate for sun5i/sun7i */
+       struct sunxi_64cnt cnt64;       /* 0xa0 */
        u8 res4[0x58];
        struct sunxi_rtc rtc;
        struct sunxi_alarm alarm;
        struct sunxi_tgp tgp[4];
        u8 res5[8];
        u32 cpu_cfg;
+#elif defined(CONFIG_SUNXI_GEN_SUN6I)
+       u8 res3[16];
+       struct sunxi_wdog wdog[5];      /* We have 5 watchdogs */
+#endif
 };
 
 #endif /* __ASSEMBLY__ */