Commit 71dc28b2 authored by Pat Gefre's avatar Pat Gefre Committed by Tony Luck

sn_console.c:

  move sn_debug_printf to only compile for DEBUG
  early printk needs to handle missing carriage returns
Signed-off-by: default avatarPat Gefre <pfg@sgi.com>
Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
parent 99202312
...@@ -105,10 +105,9 @@ static struct miscdevice misc; /* used with misc_register for dynamic */ ...@@ -105,10 +105,9 @@ static struct miscdevice misc; /* used with misc_register for dynamic */
extern u64 master_node_bedrock_address; extern u64 master_node_bedrock_address;
extern void early_sn_setup(void); extern void early_sn_setup(void);
static int sn_debug_printf(const char *fmt, ...);
#undef DEBUG #undef DEBUG
#ifdef DEBUG #ifdef DEBUG
static int sn_debug_printf(const char *fmt, ...);
#define DPRINTF(x...) sn_debug_printf(x) #define DPRINTF(x...) sn_debug_printf(x)
#else #else
#define DPRINTF(x...) do { } while (0) #define DPRINTF(x...) do { } while (0)
...@@ -489,6 +488,8 @@ static struct uart_ops sn_console_ops = { ...@@ -489,6 +488,8 @@ static struct uart_ops sn_console_ops = {
/* End of uart struct functions and defines */ /* End of uart struct functions and defines */
#ifdef DEBUG
/** /**
* sn_debug_printf - close to hardware debugging printf * sn_debug_printf - close to hardware debugging printf
* @fmt: printf format * @fmt: printf format
...@@ -520,6 +521,7 @@ sn_debug_printf(const char *fmt, ...) ...@@ -520,6 +521,7 @@ sn_debug_printf(const char *fmt, ...)
va_end(args); va_end(args);
return printed_len; return printed_len;
} }
#endif /* DEBUG */
/* /*
* Interrupt handling routines. * Interrupt handling routines.
...@@ -654,7 +656,7 @@ sn_transmit_chars(struct sn_cons_port *port, int raw) ...@@ -654,7 +656,7 @@ sn_transmit_chars(struct sn_cons_port *port, int raw)
port->sc_ops->sal_puts(start, xmit_count); port->sc_ops->sal_puts(start, xmit_count);
#ifdef DEBUG #ifdef DEBUG
if (!result) if (!result)
sn_debug_printf("`"); DPRINTF("`");
#endif #endif
if (result > 0) { if (result > 0) {
xmit_count -= result; xmit_count -= result;
...@@ -971,6 +973,7 @@ module_exit(sn_sal_module_exit); ...@@ -971,6 +973,7 @@ module_exit(sn_sal_module_exit);
/** /**
* puts_raw_fixed - sn_sal_console_write helper for adding \r's as required * puts_raw_fixed - sn_sal_console_write helper for adding \r's as required
* @puts_raw : puts function to do the writing
* @s: input string * @s: input string
* @count: length * @count: length
* *
...@@ -978,19 +981,19 @@ module_exit(sn_sal_module_exit); ...@@ -978,19 +981,19 @@ module_exit(sn_sal_module_exit);
* ia64_sn_console_putb (what sal_puts_raw below actually does). * ia64_sn_console_putb (what sal_puts_raw below actually does).
* *
*/ */
static void puts_raw_fixed(const char *s, int count)
static void puts_raw_fixed(int (*puts_raw) (const char *s, int len), const char *s, int count)
{ {
const char *s1; const char *s1;
struct sn_cons_port *port = &sal_console_port;
/* Output '\r' before each '\n' */ /* Output '\r' before each '\n' */
while ((s1 = memchr(s, '\n', count)) != NULL) { while ((s1 = memchr(s, '\n', count)) != NULL) {
port->sc_ops->sal_puts_raw(s, s1 - s); puts_raw(s, s1 - s);
port->sc_ops->sal_puts_raw("\r\n", 2); puts_raw("\r\n", 2);
count -= s1 + 1 - s; count -= s1 + 1 - s;
s = s1 + 1; s = s1 + 1;
} }
port->sc_ops->sal_puts_raw(s, count); puts_raw(s, count);
} }
/** /**
...@@ -1072,7 +1075,7 @@ sn_sal_console_write(struct console *co, const char *s, unsigned count) ...@@ -1072,7 +1075,7 @@ sn_sal_console_write(struct console *co, const char *s, unsigned count)
/* fell thru */ /* fell thru */
stole_lock = 1; stole_lock = 1;
} }
puts_raw_fixed(s, count); puts_raw_fixed(port->sc_ops->sal_puts_raw, s, count);
} }
else { else {
stole_lock = 0; stole_lock = 0;
...@@ -1081,12 +1084,12 @@ sn_sal_console_write(struct console *co, const char *s, unsigned count) ...@@ -1081,12 +1084,12 @@ sn_sal_console_write(struct console *co, const char *s, unsigned count)
sn_transmit_chars(port, 1); sn_transmit_chars(port, 1);
spin_unlock_irqrestore(&port->sc_port.lock, flags); spin_unlock_irqrestore(&port->sc_port.lock, flags);
puts_raw_fixed(s, count); puts_raw_fixed(port->sc_ops->sal_puts_raw, s, count);
} }
} }
else { else {
/* Not yet registered with serial core - simple case */ /* Not yet registered with serial core - simple case */
puts_raw_fixed(s, count); puts_raw_fixed(port->sc_ops->sal_puts_raw, s, count);
} }
} }
...@@ -1123,7 +1126,7 @@ sn_sal_console_setup(struct console *co, char *options) ...@@ -1123,7 +1126,7 @@ sn_sal_console_setup(struct console *co, char *options)
static void __init static void __init
sn_sal_console_write_early(struct console *co, const char *s, unsigned count) sn_sal_console_write_early(struct console *co, const char *s, unsigned count)
{ {
sal_console_port.sc_ops->sal_puts(s, count); puts_raw_fixed(sal_console_port.sc_ops->sal_puts_raw, s, count);
} }
/* Used for very early console printing - again, before /* Used for very early console printing - again, before
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment