summaryrefslogtreecommitdiffstats
path: root/drivers/serial/serial_altera_jtag.c
diff options
context:
space:
mode:
authorFranck Jullien <franck.jullien@gmail.com>2011-07-26 22:07:57 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2011-07-27 10:54:13 +0200
commit389f3ea06767186acfa3c8c3e89a8c82b5138b1b (patch)
treef0152726318a8e8b55764266b073757ff2e6b697 /drivers/serial/serial_altera_jtag.c
parent2c628dbadddb5e7bb18ce71e2bca6a723ee2089a (diff)
downloadbarebox-389f3ea06767186acfa3c8c3e89a8c82b5138b1b.tar.gz
barebox-389f3ea06767186acfa3c8c3e89a8c82b5138b1b.tar.xz
nios2/altera_serial_jtag: Switch to resources
Signed-off-by: Franck Jullien <franck.jullien@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/serial/serial_altera_jtag.c')
-rw-r--r--drivers/serial/serial_altera_jtag.c27
1 files changed, 23 insertions, 4 deletions
diff --git a/drivers/serial/serial_altera_jtag.c b/drivers/serial/serial_altera_jtag.c
index 322f9e9324..2e34c894a4 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;