early_printk.c 785 B

1234567891011121314151617181920212223242526272829303132333435
  1. /*
  2. * Copyright IBM Corp. 2017
  3. */
  4. #include <linux/console.h>
  5. #include <linux/kernel.h>
  6. #include <linux/init.h>
  7. #include <asm/sclp.h>
  8. static void sclp_early_write(struct console *con, const char *s, unsigned int len)
  9. {
  10. __sclp_early_printk(s, len);
  11. }
  12. static struct console sclp_early_console = {
  13. .name = "earlysclp",
  14. .write = sclp_early_write,
  15. .flags = CON_PRINTBUFFER | CON_BOOT,
  16. .index = -1,
  17. };
  18. static int __init setup_early_printk(char *buf)
  19. {
  20. if (early_console)
  21. return 0;
  22. /* Accept only "earlyprintk" and "earlyprintk=sclp" */
  23. if (buf && strncmp(buf, "sclp", 4))
  24. return 0;
  25. if (!sclp.has_linemode && !sclp.has_vt220)
  26. return 0;
  27. early_console = &sclp_early_console;
  28. register_console(early_console);
  29. return 0;
  30. }
  31. early_param("earlyprintk", setup_early_printk);