console.c 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. /*
  2. * arch/mips/dec/prom/console.c
  3. *
  4. * DECstation PROM-based early console support.
  5. *
  6. * Copyright (C) 2004, 2007 Maciej W. Rozycki
  7. *
  8. * This program is free software; you can redistribute it and/or
  9. * modify it under the terms of the GNU General Public License
  10. * as published by the Free Software Foundation; either version
  11. * 2 of the License, or (at your option) any later version.
  12. */
  13. #include <linux/console.h>
  14. #include <linux/init.h>
  15. #include <linux/kernel.h>
  16. #include <linux/string.h>
  17. #include <asm/dec/prom.h>
  18. static void __init prom_console_write(struct console *con, const char *s,
  19. unsigned int c)
  20. {
  21. char buf[81];
  22. unsigned int chunk = sizeof(buf) - 1;
  23. while (c > 0) {
  24. if (chunk > c)
  25. chunk = c;
  26. memcpy(buf, s, chunk);
  27. buf[chunk] = '\0';
  28. prom_printf("%s", buf);
  29. s += chunk;
  30. c -= chunk;
  31. }
  32. }
  33. static struct console promcons __initdata = {
  34. .name = "prom",
  35. .write = prom_console_write,
  36. .flags = CON_BOOT | CON_PRINTBUFFER,
  37. .index = -1,
  38. };
  39. void __init register_prom_console(void)
  40. {
  41. register_console(&promcons);
  42. }