#define CREATE_TRACE_POINTS
#include <trace/events/printk.h>
+#ifdef CONFIG_EARLY_PRINTK_DIRECT
+extern void printascii(char *);
+#endif
+
/* printk's without a loglevel use this.. */
#define DEFAULT_MESSAGE_LOGLEVEL CONFIG_DEFAULT_MESSAGE_LOGLEVEL
return idx + msg->len;
}
+#ifdef CONFIG_RK_LAST_LOG
+extern void rk_last_log_text(char *text, size_t size);
+static char rk_text[1024];
+static size_t msg_print_text(const struct log *msg, enum log_flags prev,
+ bool syslog, char *buf, size_t size);
+#endif
/* insert record into the buffer, discard old ones, update heads */
static void log_store(int facility, int level,
enum log_flags flags, u64 ts_nsec,
memset(log_dict(msg) + dict_len, 0, pad_len);
msg->len = sizeof(struct log) + text_len + dict_len + pad_len;
+#ifdef CONFIG_RK_LAST_LOG
+ size = msg_print_text(msg, msg->flags, true, rk_text, sizeof(rk_text));
+ rk_last_log_text(rk_text, size);
+#endif
/* insert message */
log_next_idx += msg->len;
log_next_seq++;
}
}
+#ifdef CONFIG_EARLY_PRINTK_DIRECT
+ printascii(text);
+#endif
+
if (level == -1)
level = default_message_loglevel;
}
EXPORT_SYMBOL(printk);
+#if defined(CONFIG_RK_DEBUG_UART) && (CONFIG_RK_DEBUG_UART >= 0)
+void console_disable_suspend(void)
+{
+ console_suspended = 0;
+}
+#endif
#else /* CONFIG_PRINTK */
#define LOG_LINE_MAX 0