summaryrefslogtreecommitdiff
path: root/cleopatre
diff options
context:
space:
mode:
authorsave2009-11-25 14:43:37 +0000
committersave2009-11-25 14:43:37 +0000
commit949db7d2922706540e5ca60ad0ef113d62e5c82a (patch)
treea0d94d8ee9a883ca418cab3b37fa23b042fac98d /cleopatre
parente4df1c51ef1a1b495033ae22b5cb2ea967897755 (diff)
cleo/devkit/plcdrv: trace can be changed through module param
Now the traces can be activated/deactivated through a module parameter:trace trace can be : - 1 for linux level, - 2 for processing level, - 4 for mailbox level, - 8 for hal level, - 16 for packet printing. - or a mix of the previous values. git-svn-id: svn+ssh://pessac/svn/cesar/trunk@6474 017c9cb6-072f-447c-8318-d5b54f68fe89
Diffstat (limited to 'cleopatre')
-rw-r--r--cleopatre/devkit/plcdrv/arm/inc/common.h9
-rw-r--r--cleopatre/devkit/plcdrv/arm/src/hal.c3
-rw-r--r--cleopatre/devkit/plcdrv/arm/src/linux_drv.c26
-rw-r--r--cleopatre/devkit/plcdrv/arm/src/mailbox.c3
-rw-r--r--cleopatre/devkit/plcdrv/arm/src/processing.c3
5 files changed, 25 insertions, 19 deletions
diff --git a/cleopatre/devkit/plcdrv/arm/inc/common.h b/cleopatre/devkit/plcdrv/arm/inc/common.h
index 51aa645bf5..2875bf5be8 100644
--- a/cleopatre/devkit/plcdrv/arm/inc/common.h
+++ b/cleopatre/devkit/plcdrv/arm/inc/common.h
@@ -20,8 +20,17 @@
#include <linux/kernel.h> //for printk...
#include <linux/string.h> //for memcpy, memset...
#include <linux/if_ether.h>//for ETH_ALEN
+#include <asm/bitops.h> //test_bit using on TRACE
#endif
+/** Define different trace levels */
+#define TRACE_HAL 0
+#define TRACE_MAIL 1
+#define TRACE_PROCESS 2
+#define TRACE_LINUX 3
+#define TRACE_PACKET 4
+extern uint32_t trace;
+
/** Max size of an Ethernet frame (size for all buffers) must be align on 4 bytes */
#define PKT_BUF_SZ 1524
diff --git a/cleopatre/devkit/plcdrv/arm/src/hal.c b/cleopatre/devkit/plcdrv/arm/src/hal.c
index 9964b3cbfa..f5e0b1f94b 100644
--- a/cleopatre/devkit/plcdrv/arm/src/hal.c
+++ b/cleopatre/devkit/plcdrv/arm/src/hal.c
@@ -26,8 +26,7 @@
#endif
/** Define Debug/Trace Level */
-//#define TRACE(...) printk(KERN_INFO "SPC300: HAL : " __VA_ARGS__)
-#define TRACE(...)
+#define TRACE(...) if(test_bit(TRACE_HAL, (const volatile unsigned long*)&trace)) printk(KERN_INFO "SPC300: HAL : " __VA_ARGS__)
/** Time Out for leon start */
#define TOUT_LEON_START 2000 //in ms
diff --git a/cleopatre/devkit/plcdrv/arm/src/linux_drv.c b/cleopatre/devkit/plcdrv/arm/src/linux_drv.c
index db2184f7dd..e46ec28da1 100644
--- a/cleopatre/devkit/plcdrv/arm/src/linux_drv.c
+++ b/cleopatre/devkit/plcdrv/arm/src/linux_drv.c
@@ -57,16 +57,14 @@ MODULE_DESCRIPTION("SPC300 PLC driver");
MODULE_LICENSE("SPiDCOM Technologies 2009");
/** Define Debug/Trace Level */
-//#define TRACE(...) printk(KERN_INFO DRV_NAME": "DRV_LAYER": " __VA_ARGS__)
-#define TRACE(...)
-#define PRINTPKT(a,b,c) print_packet(a,b,c)
-//#define PRINTPKT(a,b,c)
+#define TRACE(...) if(test_bit(TRACE_LINUX, (const volatile unsigned long*)&trace)) printk(KERN_INFO DRV_NAME": "DRV_LAYER": " __VA_ARGS__)
+#define PRINTPKT(a,b,c) if(test_bit(TRACE_PACKET, (const volatile unsigned long*)&trace)) print_packet(a,b,c)
/** Define DSU trace modes */
-#define TRACE_NONE 0
-#define TRACE_PROC 1
-#define TRACE_AHB 2
-#define TRACE_ALL 3
+#define DSU_TRACE_NONE 0
+#define DSU_TRACE_PROC 1
+#define DSU_TRACE_AHB 2
+#define DSU_TRACE_ALL 3
#define MSEC_PER_JIFFY (1000/HZ) //aligned on HZ, which corresponds to 10ms
@@ -121,9 +119,10 @@ static int nb_rx_interface_buffers = DEFAULT_NB_INTERFACE_BUFFERS;
#define LEON_CODE_BASE 0x41C00000
static uint32_t leon_start_addr = LEON_CODE_BASE;
static uint32_t dsu_ctrl = (LEON_DSU_BZ | LEON_DSU_BD | LEON_DSU_BW | LEON_DSU_BE | LEON_DSU_TE);
-static uint32_t dsu_trace = TRACE_PROC;
+static uint32_t dsu_trace = DSU_TRACE_PROC;
static int debug = 0;
static int nowd = 0;
+uint32_t trace = 0;
module_param(nb_rx_data_buffers, int, 0644);
MODULE_PARM_DESC(nb_rx_data_buffers, "Number of Data Ethernet buffers for PLC -> ARM exchanges");
module_param(nb_rx_mme_buffers, int, 0644);
@@ -140,6 +139,7 @@ module_param(debug, int, 0644);
MODULE_PARM_DESC(debug, "Let's the user start PLC Processor by debugger");
module_param(nowd, int, 0644);
MODULE_PARM_DESC(nowd, "Don't use Watchdog timer for PLC Processor");
+module_param(trace, uint, 0644);
static const unsigned char __hexdigits[] = "0123456789ABCDEF";
@@ -370,20 +370,20 @@ int plcdrv_launch_leon(void)
//Set trace mode for leon
switch(dsu_trace)
{
- case TRACE_NONE:
+ case DSU_TRACE_NONE:
dsu_ctrl &= ~LEON_DSU_TE;
*leon_trace_ptr &= ~(LEON_TRACE_PROC_EN | LEON_TRACE_AHB_EN);
break;
- case TRACE_ALL:
+ case DSU_TRACE_ALL:
dsu_ctrl |= LEON_DSU_TE;
*leon_trace_ptr |= (LEON_TRACE_PROC_EN | LEON_TRACE_AHB_EN);
break;
- case TRACE_AHB:
+ case DSU_TRACE_AHB:
dsu_ctrl |= LEON_DSU_TE;
*leon_trace_ptr &= ~(LEON_TRACE_PROC_EN);
*leon_trace_ptr |= (LEON_TRACE_AHB_EN);
break;
- case TRACE_PROC:
+ case DSU_TRACE_PROC:
default:
dsu_ctrl |= LEON_DSU_TE;
*leon_trace_ptr &= ~(LEON_TRACE_AHB_EN);
diff --git a/cleopatre/devkit/plcdrv/arm/src/mailbox.c b/cleopatre/devkit/plcdrv/arm/src/mailbox.c
index 5a6610eda4..9016aa4e14 100644
--- a/cleopatre/devkit/plcdrv/arm/src/mailbox.c
+++ b/cleopatre/devkit/plcdrv/arm/src/mailbox.c
@@ -25,8 +25,7 @@
#endif
/** Define Debug/Trace Level */
-#define TRACE(...) printk(KERN_INFO "SPC300: MAIL: " __VA_ARGS__)
-//#define TRACE(...)
+#define TRACE(...) if(test_bit(TRACE_MAIL, (const volatile unsigned long*)&trace)) printk(KERN_INFO "SPC300: MAIL: " __VA_ARGS__)
/** Data parameters */
#define MBX_MSG_DATA_TYPE_DATA 0
diff --git a/cleopatre/devkit/plcdrv/arm/src/processing.c b/cleopatre/devkit/plcdrv/arm/src/processing.c
index 95b262fa57..406d28d46f 100644
--- a/cleopatre/devkit/plcdrv/arm/src/processing.c
+++ b/cleopatre/devkit/plcdrv/arm/src/processing.c
@@ -45,8 +45,7 @@ static inline unsigned short int ntohs(unsigned short int x)
#endif // __LINUX__
/** Define Debug/Trace Level */
-//#define TRACE(...) printk(KERN_INFO "SPC300: PROC: " __VA_ARGS__)
-#define TRACE(...)
+#define TRACE(...) if(test_bit(TRACE_PROCESS, (const volatile unsigned long*)&trace)) printk(KERN_INFO "SPC300: PROC: " __VA_ARGS__)
/** Define HPAV Ethernet type */
#define ETH_P_HPAV 0x88E1