/***************************************************************************
- * Copyright (C) 2007-2009 by Øyvind Harboe *
+ * Copyright (C) 2007-2010 by Øyvind Harboe *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
#define TEST_MANUAL() 0
#define VERBOSE(a)
-#if BUILD_ECOSBOARD
+#if BUILD_ZY1000_MASTER
+#if BUILD_ECOSBOARD
#include <cyg/hal/hal_io.h> // low level i/o
#include <cyg/hal/hal_intr.h> // low level i/o
-
-#if 0
-int diag_printf(const char *fmt, ...);
-#define ZY1000_POKE(a, b) HAL_WRITE_UINT32(a, b); diag_printf("poke 0x%08x,0x%08x\n", a, b)
-#define ZY1000_PEEK(a, b) HAL_READ_UINT32(a, b); diag_printf("peek 0x%08x = 0x%08x\n", a, b)
-#else
#define ZY1000_PEEK(a, b) HAL_READ_UINT32(a, b)
#define ZY1000_POKE(a, b) HAL_WRITE_UINT32(a, b)
+#else
+#define ZY1000_PEEK(a, b) do {b = *( ( volatile uint32_t *)(a) );} while (0)
+#define ZY1000_POKE(a, b) do {*( ( volatile uint32_t *)(a) ) = b;} while (0)
+extern volatile void *zy1000_jtag_master;
+#define ZY1000_JTAG_BASE ((unsigned long)zy1000_jtag_master)
#endif
#else
/* redirect this to TCP/IP */
-#define ZY1000_PEEK(a, b) b = 1;
-#define ZY1000_POKE(a, b)
+#define ZY1000_JTAG_BASE 0
+extern void zy1000_tcpout(uint32_t address, uint32_t data);
+extern uint32_t zy1000_tcpin(uint32_t address);
+#define ZY1000_PEEK(a, b) b=zy1000_tcpin(a)
+#define ZY1000_POKE(a, b) zy1000_tcpout(a, b)
#endif
+#if BUILD_ZY1000_MASTER
// FIFO empty?
static __inline__ void waitIdle(void)
{
} while ((empty & 0x100) == 0);
}
+static __inline__ void zy1000_flush_readqueue(void)
+{
+ /* Not used w/hardware fifo */
+}
+static __inline__ void zy1000_flush_callbackqueue(void)
+{
+ /* Not used w/hardware fifo */
+}
+#else
+extern void waitIdle(void);
+void zy1000_flush_readqueue(void);
+void zy1000_flush_callbackqueue(void);
+void zy1000_jtag_add_callback4(jtag_callback_t callback, jtag_callback_data_t data0, jtag_callback_data_t data1, jtag_callback_data_t data2, jtag_callback_data_t data3);
+void zy1000_jtag_add_callback(jtag_callback1_t callback, jtag_callback_data_t data0);
+#endif
+
static __inline__ void waitQueue(void)
{
// waitIdle();
}
}
+#if BUILD_ZY1000_MASTER
#define interface_jtag_add_callback(callback, in) callback(in)
-
#define interface_jtag_add_callback4(callback, in, data1, data2, data3) jtag_set_error(callback(in, data1, data2, data3))
+#else
+#define interface_jtag_add_callback(callback, in) zy1000_jtag_add_callback(callback, in)
+#define interface_jtag_add_callback4(callback, in, data1, data2, data3) zy1000_jtag_add_callback4(callback, in, data1, data2, data3)
+#endif