Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 67459
b: refs/heads/master
c: fb4e6e6
h: refs/heads/master
i:
  67457: 2c66866
  67455: 793719d
v: v3
  • Loading branch information
Grant Likely authored and Josh Boyer committed Oct 3, 2007
1 parent 76d3548 commit 270cfde
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 4 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 852e1ea748e83eba7fdb1cc198f271837b16137b
refs/heads/master: fb4e6e663b404ecdfac2e3f6e643d204488b28e9
41 changes: 38 additions & 3 deletions trunk/drivers/serial/uartlite.c
Original file line number Diff line number Diff line change
Expand Up @@ -373,6 +373,31 @@ static void ulite_console_write(struct console *co, const char *s,
spin_unlock_irqrestore(&port->lock, flags);
}

#if defined(CONFIG_OF)
static inline void __init ulite_console_of_find_device(int id)
{
struct device_node *np;
struct resource res;
const unsigned int *of_id;
int rc;

for_each_compatible_node(np, NULL, "xilinx,uartlite") {
of_id = of_get_property(np, "port-number", NULL);
if ((!of_id) || (*of_id != id))
continue;

rc = of_address_to_resource(np, 0, &res);
if (rc)
continue;

ulite_ports[id].mapbase = res.start;
return;
}
}
#else /* CONFIG_OF */
static inline void __init ulite_console_of_find_device(int id) { /* do nothing */ }
#endif /* CONFIG_OF */

static int __init ulite_console_setup(struct console *co, char *options)
{
struct uart_port *port;
Expand All @@ -386,10 +411,20 @@ static int __init ulite_console_setup(struct console *co, char *options)

port = &ulite_ports[co->index];

/* Check if it is an OF device */
if (!port->mapbase)
ulite_console_of_find_device(co->index);

/* Do we have a device now? */
if (!port->mapbase) {
pr_debug("console on ttyUL%i not present\n", co->index);
return -ENODEV;
}

/* not initialized yet? */
if (!port->membase) {
pr_debug("console on ttyUL%i not initialized\n", co->index);
return -ENODEV;
if (ulite_request_port(port))
return -ENODEV;
}

if (options)
Expand Down Expand Up @@ -461,7 +496,7 @@ static int __devinit ulite_assign(struct device *dev, int id, u32 base, int irq)
return -EINVAL;
}

if (ulite_ports[id].mapbase) {
if ((ulite_ports[id].mapbase) && (ulite_ports[id].mapbase != base)) {
dev_err(dev, "cannot assign to %s%i; it is already in use\n",
ULITE_NAME, id);
return -EBUSY;
Expand Down

0 comments on commit 270cfde

Please sign in to comment.