Message ID | 20181204135507.3706-2-anup@brainfault.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | RISC-V SBI earlycon | expand |
On Tue, Dec 04, 2018 at 07:25:05PM +0530, Anup Patel wrote: > In RISC-V, the M-mode runtime firmware provide SBI calls for > debug prints. This patch adds earlycon support using RISC-V > SBI console calls. To enable it, just pass "earlycon=sbi" in > kernel parameters. > > Signed-off-by: Anup Patel <anup@brainfault.org> This makes more sense to take through the riscv tree, so feel free to add: Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> to it and take it that way. thanks, greg k-h
On Tue, 04 Dec 2018 05:55:05 PST (-0800), anup@brainfault.org wrote: > In RISC-V, the M-mode runtime firmware provide SBI calls for > debug prints. This patch adds earlycon support using RISC-V > SBI console calls. To enable it, just pass "earlycon=sbi" in > kernel parameters. > > Signed-off-by: Anup Patel <anup@brainfault.org> > --- > drivers/tty/serial/Kconfig | 12 +++++++++++ > drivers/tty/serial/Makefile | 1 + > drivers/tty/serial/earlycon-riscv-sbi.c | 28 +++++++++++++++++++++++++ > 3 files changed, 41 insertions(+) > create mode 100644 drivers/tty/serial/earlycon-riscv-sbi.c > > diff --git a/drivers/tty/serial/Kconfig b/drivers/tty/serial/Kconfig > index 32886c304641..287bb41ac814 100644 > --- a/drivers/tty/serial/Kconfig > +++ b/drivers/tty/serial/Kconfig > @@ -85,6 +85,18 @@ config SERIAL_EARLYCON_ARM_SEMIHOST > with "earlycon=smh" on the kernel command line. The console is > enabled when early_param is processed. > > +config SERIAL_EARLYCON_RISCV_SBI > + bool "Early console using RISC-V SBI" > + depends on RISCV > + select SERIAL_CORE > + select SERIAL_CORE_CONSOLE > + select SERIAL_EARLYCON > + help > + Support for early debug console using RISC-V SBI. This enables > + the console before standard serial driver is probed. This is enabled > + with "earlycon=sbi" on the kernel command line. The console is > + enabled when early_param is processed. > + > config SERIAL_SB1250_DUART > tristate "BCM1xxx on-chip DUART serial support" > depends on SIBYTE_SB1xxx_SOC=y > diff --git a/drivers/tty/serial/Makefile b/drivers/tty/serial/Makefile > index daac675612df..3ce26ce08616 100644 > --- a/drivers/tty/serial/Makefile > +++ b/drivers/tty/serial/Makefile > @@ -7,6 +7,7 @@ obj-$(CONFIG_SERIAL_CORE) += serial_core.o > > obj-$(CONFIG_SERIAL_EARLYCON) += earlycon.o > obj-$(CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST) += earlycon-arm-semihost.o > +obj-$(CONFIG_SERIAL_EARLYCON_RISCV_SBI) += earlycon-riscv-sbi.o > > # These Sparc drivers have to appear before others such as 8250 > # which share ttySx minor node space. Otherwise console device > diff --git a/drivers/tty/serial/earlycon-riscv-sbi.c b/drivers/tty/serial/earlycon-riscv-sbi.c > new file mode 100644 > index 000000000000..e1a551aae336 > --- /dev/null > +++ b/drivers/tty/serial/earlycon-riscv-sbi.c > @@ -0,0 +1,28 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * RISC-V SBI based earlycon > + * > + * Copyright (C) 2018 Anup Patel <anup@brainfault.org> > + */ > +#include <linux/kernel.h> > +#include <linux/console.h> > +#include <linux/init.h> > +#include <linux/serial_core.h> > +#include <asm/sbi.h> > + > +static void sbi_console_write(struct console *con, > + const char *s, unsigned int n) > +{ > + int i; > + > + for (i = 0; i < n; ++i) > + sbi_console_putchar(s[i]); > +} > + > +static int __init early_sbi_setup(struct earlycon_device *device, > + const char *opt) > +{ > + device->con->write = sbi_console_write; > + return 0; > +} > +EARLYCON_DECLARE(sbi, early_sbi_setup); Reviewed-by: Palmer Dabbelt <palmer@sifive.com>
On Wed, 05 Dec 2018 01:58:46 PST (-0800), Greg KH wrote: > On Tue, Dec 04, 2018 at 07:25:05PM +0530, Anup Patel wrote: >> In RISC-V, the M-mode runtime firmware provide SBI calls for >> debug prints. This patch adds earlycon support using RISC-V >> SBI console calls. To enable it, just pass "earlycon=sbi" in >> kernel parameters. >> >> Signed-off-by: Anup Patel <anup@brainfault.org> > > This makes more sense to take through the riscv tree, so feel free to > add: > > Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > > to it and take it that way. It should be in my for-next now. Thanks!
diff --git a/drivers/tty/serial/Kconfig b/drivers/tty/serial/Kconfig index 32886c304641..287bb41ac814 100644 --- a/drivers/tty/serial/Kconfig +++ b/drivers/tty/serial/Kconfig @@ -85,6 +85,18 @@ config SERIAL_EARLYCON_ARM_SEMIHOST with "earlycon=smh" on the kernel command line. The console is enabled when early_param is processed. +config SERIAL_EARLYCON_RISCV_SBI + bool "Early console using RISC-V SBI" + depends on RISCV + select SERIAL_CORE + select SERIAL_CORE_CONSOLE + select SERIAL_EARLYCON + help + Support for early debug console using RISC-V SBI. This enables + the console before standard serial driver is probed. This is enabled + with "earlycon=sbi" on the kernel command line. The console is + enabled when early_param is processed. + config SERIAL_SB1250_DUART tristate "BCM1xxx on-chip DUART serial support" depends on SIBYTE_SB1xxx_SOC=y diff --git a/drivers/tty/serial/Makefile b/drivers/tty/serial/Makefile index daac675612df..3ce26ce08616 100644 --- a/drivers/tty/serial/Makefile +++ b/drivers/tty/serial/Makefile @@ -7,6 +7,7 @@ obj-$(CONFIG_SERIAL_CORE) += serial_core.o obj-$(CONFIG_SERIAL_EARLYCON) += earlycon.o obj-$(CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST) += earlycon-arm-semihost.o +obj-$(CONFIG_SERIAL_EARLYCON_RISCV_SBI) += earlycon-riscv-sbi.o # These Sparc drivers have to appear before others such as 8250 # which share ttySx minor node space. Otherwise console device diff --git a/drivers/tty/serial/earlycon-riscv-sbi.c b/drivers/tty/serial/earlycon-riscv-sbi.c new file mode 100644 index 000000000000..e1a551aae336 --- /dev/null +++ b/drivers/tty/serial/earlycon-riscv-sbi.c @@ -0,0 +1,28 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * RISC-V SBI based earlycon + * + * Copyright (C) 2018 Anup Patel <anup@brainfault.org> + */ +#include <linux/kernel.h> +#include <linux/console.h> +#include <linux/init.h> +#include <linux/serial_core.h> +#include <asm/sbi.h> + +static void sbi_console_write(struct console *con, + const char *s, unsigned int n) +{ + int i; + + for (i = 0; i < n; ++i) + sbi_console_putchar(s[i]); +} + +static int __init early_sbi_setup(struct earlycon_device *device, + const char *opt) +{ + device->con->write = sbi_console_write; + return 0; +} +EARLYCON_DECLARE(sbi, early_sbi_setup);
In RISC-V, the M-mode runtime firmware provide SBI calls for debug prints. This patch adds earlycon support using RISC-V SBI console calls. To enable it, just pass "earlycon=sbi" in kernel parameters. Signed-off-by: Anup Patel <anup@brainfault.org> --- drivers/tty/serial/Kconfig | 12 +++++++++++ drivers/tty/serial/Makefile | 1 + drivers/tty/serial/earlycon-riscv-sbi.c | 28 +++++++++++++++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 drivers/tty/serial/earlycon-riscv-sbi.c