[PATCH 4/4] nios2/altera_serial_jtag: Switch to resources

franck.jullien at gmail.com franck.jullien at gmail.com
Tue Jul 26 16:07:57 EDT 2011


From: Franck Jullien <franck.jullien at gmail.com>

Signed-off-by: Franck Jullien <franck.jullien at gmail.com>
---
 drivers/serial/serial_altera_jtag.c |   27 +++++++++++++++++++++++----
 1 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/drivers/serial/serial_altera_jtag.c b/drivers/serial/serial_altera_jtag.c
index 322f9e9..2e34c89 100644
--- a/drivers/serial/serial_altera_jtag.c
+++ b/drivers/serial/serial_altera_jtag.c
@@ -30,6 +30,12 @@
 #include <asm/io.h>
 #include <asm/nios2-io.h>
 
+struct altera_serial_jtag_priv {
+	struct console_device cdev;
+	void __iomem *regs;
+};
+
+
 static int altera_serial_jtag_setbaudrate(struct console_device *cdev, int baudrate)
 {
 	return 0;
@@ -37,7 +43,10 @@ static int altera_serial_jtag_setbaudrate(struct console_device *cdev, int baudr
 
 static void altera_serial_jtag_putc(struct console_device *cdev, char c)
 {
-	struct nios_jtag *jtag = (struct nios_jtag *)cdev->dev->map_base;
+	struct altera_serial_jtag_priv *priv = container_of(cdev,
+		struct altera_serial_jtag_priv, cdev);
+
+	struct nios_jtag *jtag = priv->regs;
 	uint32_t st;
 
 	while (1) {
@@ -51,14 +60,20 @@ static void altera_serial_jtag_putc(struct console_device *cdev, char c)
 
 static int altera_serial_jtag_tstc(struct console_device *cdev)
 {
-	struct nios_jtag *jtag = (struct nios_jtag *)cdev->dev->map_base;
+	struct altera_serial_jtag_priv *priv = container_of(cdev,
+		struct altera_serial_jtag_priv, cdev);
+
+	struct nios_jtag *jtag = priv->regs;
 
 	return readl(&jtag->control) & NIOS_JTAG_RRDY;
 }
 
 static int altera_serial_jtag_getc(struct console_device *cdev)
 {
-	struct nios_jtag *jtag = (struct nios_jtag *)cdev->dev->map_base;
+	struct altera_serial_jtag_priv *priv = container_of(cdev,
+		struct altera_serial_jtag_priv, cdev);
+
+	struct nios_jtag *jtag = priv->regs;
 	uint32_t val;
 
 	while (1) {
@@ -73,8 +88,12 @@ static int altera_serial_jtag_getc(struct console_device *cdev)
 static int altera_serial_jtag_probe(struct device_d *dev) {
 
 	struct console_device *cdev;
+	struct altera_serial_jtag_priv *priv;
+
+	priv = xmalloc(sizeof(*priv));
+	cdev = &priv->cdev;
 
-	cdev = malloc(sizeof(struct console_device));
+	priv->regs = dev_request_mem_region(dev, 0);
 	dev->type_data = cdev;
 	cdev->dev = dev;
 	cdev->f_caps = CONSOLE_STDIN | CONSOLE_STDOUT | CONSOLE_STDERR;
-- 
1.7.6




More information about the barebox mailing list