summaryrefslogtreecommitdiff
path: root/cleopatre/devkit/plcdrv/src
diff options
context:
space:
mode:
Diffstat (limited to 'cleopatre/devkit/plcdrv/src')
-rw-r--r--cleopatre/devkit/plcdrv/src/plcdrv.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/cleopatre/devkit/plcdrv/src/plcdrv.c b/cleopatre/devkit/plcdrv/src/plcdrv.c
index e87190ffd3..30431fd314 100644
--- a/cleopatre/devkit/plcdrv/src/plcdrv.c
+++ b/cleopatre/devkit/plcdrv/src/plcdrv.c
@@ -233,6 +233,33 @@ plcdrv_writeproc_set_mark (struct file *file, const char *buffer,
}
/**
+ * Read some regbank registers.
+ * \param page buffer to write data to
+ * \param start unused
+ * \param offset unused
+ * \param count unused
+ * \param eof to be set if end of file reached
+ * \param data priv structure
+ * \return number of read bytes
+ */
+static int
+plcdrv_readproc_regbank (char *page, char **start, off_t offset, int count,
+ int *eof, void *data)
+{
+ char *p;
+
+ p = page;
+ p += sprintf (p, "RB_RESET_CAUSE = 0x%08x\n", RB_RST_GSRC_VA);
+ p += sprintf (p, "RB_PACKAGE = 0x%08x\n", RB_PACKAGE_VA);
+ *eof = 1;
+
+ /* Clear the register after reading it. */
+ RB_RST_GSRC_VA = 0x0;
+
+ return p - page;
+}
+
+/**
* Set/Unset Reset the Leon processor.
* \param activate true to activate reset
* \return error code
@@ -813,6 +840,7 @@ plcdrv_uninit (struct net_device *dev)
unregister_chrdev_region (priv->dev_number, 2);
/* Remove proc. */
+ remove_proc_entry ("regbank", priv->proc_dir_plc);
remove_proc_entry ("set_mark", priv->proc_dir_plc);
remove_proc_entry ("stats", priv->proc_dir_plc);
remove_proc_entry ("version", priv->proc_dir_plc);
@@ -883,6 +911,8 @@ plcdrv_init (struct net_device *dev)
entry->write_proc = plcdrv_writeproc_set_mark;
entry->data = priv;
}
+ create_proc_read_entry ("regbank", 0, priv->proc_dir_plc,
+ plcdrv_readproc_regbank, priv);
/* Set Leon code base address (translation). */
leon_start_addr_ptr = (uint32_t *) ioremap (RB_LEON_ADD_START, 1);