From: visa Date: Mon, 3 Jul 2017 08:17:20 +0000 (+0000) Subject: Attach com(4) using fdt on octeon. X-Git-Url: http://artulab.com/gitweb/?a=commitdiff_plain;h=23da198f2158759a1c523f27cd67e48af5311e71;p=openbsd Attach com(4) using fdt on octeon. The relevant part of uartbus(4) is made part of the com(4) glue to avoid extra maneuvers in the code. --- diff --git a/sys/arch/octeon/conf/GENERIC b/sys/arch/octeon/conf/GENERIC index 10890efb652..cec46389cb2 100644 --- a/sys/arch/octeon/conf/GENERIC +++ b/sys/arch/octeon/conf/GENERIC @@ -1,4 +1,4 @@ -# $OpenBSD: GENERIC,v 1.33 2017/06/18 13:58:44 visa Exp $ +# $OpenBSD: GENERIC,v 1.34 2017/07/03 08:17:20 visa Exp $ # # For further information on compiling OpenBSD kernels, see the config(8) # man page. @@ -31,7 +31,6 @@ mainbus0 at root cpu0 at mainbus0 clock0 at mainbus0 iobus0 at mainbus0 -uartbus0 at mainbus0 simplebus* at fdt? simplebus* at iobus? @@ -42,9 +41,6 @@ octcf0 at iobus0 amdcf0 at iobus0 octrng0 at iobus0 -com0 at uartbus0 -com1 at uartbus0 - pcibus* at iobus0 pci* at pcibus? @@ -52,6 +48,7 @@ ppb* at pci? # PCI-PCI bridges pci* at ppb? cn30xxsmi* at fdt? # MDIO controller +com* at fdt? octciu* at fdt? # Interrupt controller v1 octmmc* at fdt? # MMC host controller sdmmc* at octmmc? # SD/MMC bus diff --git a/sys/arch/octeon/conf/RAMDISK b/sys/arch/octeon/conf/RAMDISK index 3b10b89bc6a..0e9d6413a91 100644 --- a/sys/arch/octeon/conf/RAMDISK +++ b/sys/arch/octeon/conf/RAMDISK @@ -1,4 +1,4 @@ -# $OpenBSD: RAMDISK,v 1.31 2017/06/18 13:58:44 visa Exp $ +# $OpenBSD: RAMDISK,v 1.32 2017/07/03 08:17:20 visa Exp $ machine octeon mips64 maxusers 4 @@ -37,9 +37,6 @@ clock0 at mainbus0 iobus0 at mainbus0 octcf0 at iobus0 amdcf0 at iobus0 -uartbus0 at mainbus0 -com0 at uartbus0 -com1 at uartbus0 simplebus* at fdt? simplebus* at iobus? @@ -52,6 +49,7 @@ ppb* at pci? pci* at ppb? cn30xxsmi* at fdt? # MDIO controller +com* at fdt? octciu* at fdt? # Interrupt controller v1 octmmc* at fdt? # MMC host controller sdmmc* at octmmc? # SD/MMC bus diff --git a/sys/arch/octeon/conf/files.octeon b/sys/arch/octeon/conf/files.octeon index b49f6150445..d8d521902db 100644 --- a/sys/arch/octeon/conf/files.octeon +++ b/sys/arch/octeon/conf/files.octeon @@ -1,4 +1,4 @@ -# $OpenBSD: files.octeon,v 1.37 2017/06/18 13:58:44 visa Exp $ +# $OpenBSD: files.octeon,v 1.38 2017/07/03 08:17:20 visa Exp $ # Standard stanzas config(8) can't run without maxpartitions 16 @@ -115,12 +115,7 @@ device cnmac: ether, ifnet, mii, ifmedia attach cnmac at cn30xxgmx file arch/octeon/dev/if_cnmac.c cnmac -define uartbus {[base = -1]} -device uartbus -attach uartbus at mainbus -file arch/octeon/dev/octeon_uartbus.c uartbus - -attach com at uartbus with cn30xxuart +attach com at fdt with cn30xxuart file arch/octeon/dev/cn30xxuart.c cn30xxuart device pcibus diff --git a/sys/arch/octeon/dev/cn30xxuart.c b/sys/arch/octeon/dev/cn30xxuart.c index a8b198acf7c..a658f593e1a 100644 --- a/sys/arch/octeon/dev/cn30xxuart.c +++ b/sys/arch/octeon/dev/cn30xxuart.c @@ -1,4 +1,4 @@ -/* $OpenBSD: cn30xxuart.c,v 1.9 2016/04/14 13:51:58 visa Exp $ */ +/* $OpenBSD: cn30xxuart.c,v 1.10 2017/07/03 08:17:20 visa Exp $ */ /* * Copyright (c) 2001-2004 Opsycon AB (www.opsycon.se / www.opsycon.com) @@ -32,16 +32,20 @@ #include #include +#include +#include + +#include #include #include #include +#include #include #include #include #include -#include #include #define OCTEON_UART_FIFO_SIZE 64 @@ -65,76 +69,78 @@ static int delay_changed = 1; int cn30xxuart_delay(void); void cn30xxuart_wait_txhr_empty(int); +uint8_t uartbus_read_1(bus_space_tag_t, bus_space_handle_t, bus_size_t); +void uartbus_write_1(bus_space_tag_t, bus_space_handle_t, bus_size_t, + uint8_t); + +bus_space_t uartbus_tag = { + .bus_base = PHYS_TO_XKPHYS(0, CCA_NC), + .bus_private = NULL, + ._space_read_1 = uartbus_read_1, + ._space_write_1 = uartbus_write_1, + ._space_map = iobus_space_map, + ._space_unmap = iobus_space_unmap +}; + +void +com_fdt_init_cons(void) +{ + comconsiot = &uartbus_tag; + comconsaddr = OCTEON_UART0_BASE; + comconsfreq = octeon_ioclock_speed(); + comconsrate = B115200; + comconscflag = (TTYDEF_CFLAG & ~(CSIZE | PARENB)) | CS8; +} + int cn30xxuart_probe(struct device *parent, void *match, void *aux) { - struct cfdata *cf = match; - struct uartbus_attach_args *uba = aux; - bus_space_tag_t iot = uba->uba_memt; - bus_space_handle_t ioh; - int rv = 0, console; - - if (strcmp(uba->uba_name, com_cd.cd_name) != 0) - return 0; - - console = 1; - - /* if it's in use as console, it's there. */ - if (!(console && !comconsattached)) { - if (bus_space_map(iot, uba->uba_baseaddr, COM_NPORTS, 0, &ioh)) { - printf(": can't map uart registers\n"); - return 1; - } - rv = comprobe1(iot, ioh); - } else - rv = 1; - - /* make a config stanza with exact locators match over a generic line */ - if (cf->cf_loc[0] != -1) - rv += rv; + struct fdt_attach_args *faa = aux; - return rv; + return OF_is_compatible(faa->fa_node, "cavium,octeon-3860-uart"); } void cn30xxuart_attach(struct device *parent, struct device *self, void *aux) { + struct fdt_attach_args *faa = aux; struct com_softc *sc = (void *)self; - struct uartbus_attach_args *uba = aux; - int console; + int console = 0; + + if (faa->fa_nreg != 1) + return; - console = 1; + if (comconsiot == &uartbus_tag && comconsaddr == faa->fa_reg[0].addr) + console = 1; - sc->sc_iot = uba->uba_memt; - sc->sc_iobase = uba->uba_baseaddr; sc->sc_hwflags = 0; sc->sc_swflags = 0; sc->sc_frequency = octeon_ioclock_speed(); sc->sc_uarttype = COM_UART_16550A; sc->sc_fifolen = OCTEON_UART_FIFO_SIZE; - /* if it's in use as console, it's there. */ - if (bus_space_map(sc->sc_iot, sc->sc_iobase, COM_NPORTS, 0, &sc->sc_ioh)) { - printf(": can't map uart registers\n"); - return; - } - - if (console && !comconsattached) { - /* - * If we are the console, reuse the existing bus_space - * information, so that comcnattach() invokes bus_space_map() - * with correct parameters. - */ - - if (comcnattach(sc->sc_iot, sc->sc_iobase, 115200, - sc->sc_frequency, (TTYDEF_CFLAG & ~(CSIZE | PARENB)) | CS8)) - panic("can't setup serial console"); + if (!console || comconsattached) { + sc->sc_iot = &uartbus_tag; + sc->sc_iobase = faa->fa_reg[0].addr; + if (bus_space_map(sc->sc_iot, sc->sc_iobase, COM_NPORTS, 0, + &sc->sc_ioh)) { + printf(": could not map UART registers\n"); + return; + } + } else { + /* Reuse the early console settings. */ + sc->sc_iot = comconsiot; + sc->sc_iobase = comconsaddr; + if (comcnattach(sc->sc_iot, sc->sc_iobase, comconsrate, + sc->sc_frequency, comconscflag)) + panic("could not set up serial console"); + sc->sc_ioh = comconsioh; } com_attach_subr(sc); - octeon_intr_establish(uba->uba_intr, IPL_TTY, cn30xxuart_intr, - (void *)sc, sc->sc_dev.dv_xname); + octeon_intr_establish_fdt(faa->fa_node, IPL_TTY, cn30xxuart_intr, sc, + sc->sc_dev.dv_xname); } int @@ -154,6 +160,7 @@ cn30xxuart_intr(void *arg) /* * Early console routines. */ + int cn30xxuart_delay(void) { @@ -223,3 +230,20 @@ cn30xxuartcngetc(dev_t dev) return (c); } + +/* + * Bus access routines. These let com(4) work with the 64-bit registers. + */ + +uint8_t +uartbus_read_1(bus_space_tag_t tag, bus_space_handle_t handle, bus_size_t off) +{ + return *(volatile uint64_t *)(handle + (off << 3)); +} + +void +uartbus_write_1(bus_space_tag_t tag, bus_space_handle_t handle, bus_size_t off, + uint8_t value) +{ + *(volatile uint64_t *)(handle + (off << 3)) = value; +} diff --git a/sys/arch/octeon/dev/mainbus.c b/sys/arch/octeon/dev/mainbus.c index f9d6f8d3da4..274cf054cc6 100644 --- a/sys/arch/octeon/dev/mainbus.c +++ b/sys/arch/octeon/dev/mainbus.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mainbus.c,v 1.8 2016/01/16 11:21:42 visa Exp $ */ +/* $OpenBSD: mainbus.c,v 1.9 2017/07/03 08:17:20 visa Exp $ */ /* * Copyright (c) 2001-2003 Opsycon AB (www.opsycon.se / www.opsycon.com) @@ -84,10 +84,6 @@ mainbus_attach(struct device *parent, struct device *self, void *aux) caa.caa_maa.maa_name = "clock"; config_found(self, &caa.caa_maa, mainbus_print); - /* uart I/O */ - caa.caa_maa.maa_name = "uartbus"; - config_found(self, &caa.caa_maa, mainbus_print); - /* on-board I/O */ caa.caa_maa.maa_name = "iobus"; config_found(self, &caa.caa_maa, mainbus_print); diff --git a/sys/arch/octeon/dev/octeon_uartbus.c b/sys/arch/octeon/dev/octeon_uartbus.c deleted file mode 100644 index bc6a7442038..00000000000 --- a/sys/arch/octeon/dev/octeon_uartbus.c +++ /dev/null @@ -1,321 +0,0 @@ -/* $OpenBSD: octeon_uartbus.c,v 1.7 2016/07/27 11:28:40 visa Exp $ */ - -/* - * Copyright (c) 2000-2004 Opsycon AB (www.opsycon.se) - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - */ - -/* - * This is a uartbus, for OCTEON UART. - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include - -#include -#include - -int uartbusmatch(struct device *, void *, void *); -void uartbusattach(struct device *, struct device *, void *); -int uartbusprint(void *, const char *); -int uartbussubmatch(struct device *, void *, void *); - -u_int8_t uartbus_read_1(bus_space_tag_t, bus_space_handle_t, bus_size_t); -u_int16_t uartbus_read_2(bus_space_tag_t, bus_space_handle_t, bus_size_t); -u_int32_t uartbus_read_4(bus_space_tag_t, bus_space_handle_t, bus_size_t); -u_int64_t uartbus_read_8(bus_space_tag_t, bus_space_handle_t, bus_size_t); - -void uartbus_write_1(bus_space_tag_t, bus_space_handle_t, bus_size_t, - u_int8_t); -void uartbus_write_2(bus_space_tag_t, bus_space_handle_t, bus_size_t, - u_int16_t); -void uartbus_write_4(bus_space_tag_t, bus_space_handle_t, bus_size_t, - u_int32_t); -void uartbus_write_8(bus_space_tag_t, bus_space_handle_t, bus_size_t, - u_int64_t); - -void uartbus_read_raw_2(bus_space_tag_t, bus_space_handle_t, bus_addr_t, - u_int8_t *, bus_size_t); -void uartbus_write_raw_2(bus_space_tag_t, bus_space_handle_t, bus_addr_t, - const u_int8_t *, bus_size_t); -void uartbus_read_raw_4(bus_space_tag_t, bus_space_handle_t, bus_addr_t, - u_int8_t *, bus_size_t); -void uartbus_write_raw_4(bus_space_tag_t, bus_space_handle_t, bus_addr_t, - const u_int8_t *, bus_size_t); -void uartbus_read_raw_8(bus_space_tag_t, bus_space_handle_t, bus_addr_t, - u_int8_t *, bus_size_t); -void uartbus_write_raw_8(bus_space_tag_t, bus_space_handle_t, bus_addr_t, - const u_int8_t *, bus_size_t); - -int uartbus_space_map(bus_space_tag_t, bus_addr_t, bus_size_t, int, - bus_space_handle_t *); -void uartbus_space_unmap(bus_space_tag_t, bus_space_handle_t, bus_size_t); -int uartbus_space_region(bus_space_tag_t, bus_space_handle_t, bus_size_t, - bus_size_t, bus_space_handle_t *); - -void *uartbus_space_vaddr(bus_space_tag_t, bus_space_handle_t); - -bus_addr_t uartbus_pa_to_device(paddr_t); -paddr_t uartbus_device_to_pa(bus_addr_t); - -struct cfattach uartbus_ca = { - sizeof(struct device), uartbusmatch, uartbusattach -}; - -struct cfdriver uartbus_cd = { - NULL, "uartbus", DV_DULL -}; - -bus_space_t uartbus_tag = { - PHYS_TO_XKPHYS(0, CCA_NC), - NULL, - uartbus_read_1, uartbus_write_1, - uartbus_read_2, uartbus_write_2, - uartbus_read_4, uartbus_write_4, - uartbus_read_8, uartbus_write_8, - uartbus_read_raw_2, uartbus_write_raw_2, - uartbus_read_raw_4, uartbus_write_raw_4, - uartbus_read_raw_8, uartbus_write_raw_8, - uartbus_space_map, uartbus_space_unmap, uartbus_space_region, - uartbus_space_vaddr -}; - -/* - * List of uartbus child devices. - */ - -#define UARTBUSDEV(name, addr, i) \ - { name, &uartbus_tag, addr, i } -struct uartbus_attach_args uartbus_children[] = { - UARTBUSDEV("com", OCTEON_UART0_BASE, CIU_INT_UART0), - UARTBUSDEV("com", OCTEON_UART1_BASE, CIU_INT_UART1), -}; -#undef UARTBUSDEV - - - -/* - * Match bus only to targets which have this bus. - */ -int -uartbusmatch(struct device *parent, void *match, void *aux) -{ - return (1); -} - -int -uartbusprint(void *aux, const char *uartbus) -{ - struct uartbus_attach_args *uba = aux; - - if (uartbus != NULL) - printf("%s at %s", uba->uba_name, uartbus); - - if (uba->uba_baseaddr != 0) - printf(" base 0x%lx", uba->uba_baseaddr); - if (uba->uba_intr >= 0) - printf(" irq %d", uba->uba_intr); - - return (UNCONF); -} - -int -uartbussubmatch(struct device *parent, void *vcf, void *args) -{ - struct cfdata *cf = vcf; - struct uartbus_attach_args *uba = args; - - if (strcmp(cf->cf_driver->cd_name, uba->uba_name) != 0) - return 0; - - if (cf->cf_loc[0] != -1 && cf->cf_loc[0] != (int)uba->uba_baseaddr) - return 0; - - return (*cf->cf_attach->ca_match)(parent, cf, uba); -} - -void -uartbusattach(struct device *parent, struct device *self, void *aux) -{ - uint i; - - printf("\n"); - - /* - * Attach subdevices. - */ - for (i = 0; i < nitems(uartbus_children); i++) - config_found_sm(self, uartbus_children + i, - uartbusprint, uartbussubmatch); -} - -/* - * Bus access primitives. These are really ugly... - */ - -u_int8_t -uartbus_read_1(bus_space_tag_t t, bus_space_handle_t h, bus_size_t o) -{ - return *(volatile uint64_t *)(h + (o << 3)); -} - -u_int16_t -uartbus_read_2(bus_space_tag_t t, bus_space_handle_t h, bus_size_t o) -{ - panic(__func__); -} - -u_int32_t -uartbus_read_4(bus_space_tag_t t, bus_space_handle_t h, bus_size_t o) -{ - panic(__func__); -} - -u_int64_t -uartbus_read_8(bus_space_tag_t t, bus_space_handle_t h, bus_size_t o) -{ - panic(__func__); -} - -void -uartbus_write_1(bus_space_tag_t t, bus_space_handle_t h, bus_size_t o, u_int8_t v) -{ - *(volatile uint64_t *)(h + (o << 3)) = v; -} - -void -uartbus_write_2(bus_space_tag_t t, bus_space_handle_t h, bus_size_t o, u_int16_t v) -{ - panic(__func__); -} - -void -uartbus_write_4(bus_space_tag_t t, bus_space_handle_t h, bus_size_t o, u_int32_t v) -{ - panic(__func__); -} - -void -uartbus_write_8(bus_space_tag_t t, bus_space_handle_t h, bus_size_t o, u_int64_t v) -{ - panic(__func__); -} - -void -uartbus_read_raw_2(bus_space_tag_t t, bus_space_handle_t h, bus_addr_t o, - u_int8_t *buf, bus_size_t len) -{ - panic(__func__); -} - -void -uartbus_write_raw_2(bus_space_tag_t t, bus_space_handle_t h, bus_addr_t o, - const u_int8_t *buf, bus_size_t len) -{ - panic(__func__); -} - -void -uartbus_read_raw_4(bus_space_tag_t t, bus_space_handle_t h, bus_addr_t o, - u_int8_t *buf, bus_size_t len) -{ - panic(__func__); -} - -void -uartbus_write_raw_4(bus_space_tag_t t, bus_space_handle_t h, bus_addr_t o, - const u_int8_t *buf, bus_size_t len) -{ - panic(__func__); -} - -void -uartbus_read_raw_8(bus_space_tag_t t, bus_space_handle_t h, bus_addr_t o, - u_int8_t *buf, bus_size_t len) -{ - panic(__func__); -} - -void -uartbus_write_raw_8(bus_space_tag_t t, bus_space_handle_t h, bus_addr_t o, - const u_int8_t *buf, bus_size_t len) -{ - panic(__func__); -} - -int -uartbus_space_map(bus_space_tag_t t, bus_addr_t offs, bus_size_t size, - int flags, bus_space_handle_t *bshp) -{ - *bshp = t->bus_base + offs; - - return 0; -} - -void -uartbus_space_unmap(bus_space_tag_t t, bus_space_handle_t bsh, bus_size_t size) -{ -} - -int -uartbus_space_region(bus_space_tag_t t, bus_space_handle_t bsh, - bus_size_t offset, bus_size_t size, bus_space_handle_t *nbshp) -{ - *nbshp = bsh + offset; - return (0); -} - -void * -uartbus_space_vaddr(bus_space_tag_t t, bus_space_handle_t h) -{ - return (void *)h; -} - -/* - * uartbus bus_dma helpers. - */ - -bus_addr_t -uartbus_pa_to_device(paddr_t pa) -{ - return (bus_addr_t)pa; -} - -paddr_t -uartbus_device_to_pa(bus_addr_t addr) -{ - return (paddr_t)addr; -} diff --git a/sys/arch/octeon/dev/uartbusvar.h b/sys/arch/octeon/dev/uartbusvar.h deleted file mode 100644 index 918869050fc..00000000000 --- a/sys/arch/octeon/dev/uartbusvar.h +++ /dev/null @@ -1,41 +0,0 @@ -/* $OpenBSD: uartbusvar.h,v 1.1 2011/05/08 13:39:30 syuu Exp $ */ - -/* - * Copyright (c) 2001-2003 Opsycon AB (www.opsycon.se / www.opsycon.com) - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - */ - -#ifndef _UARTBUSVAR_H_ -#define _UARTBUSVAR_H_ - -#include - -struct uartbus_attach_args { - char *uba_name; - bus_space_tag_t uba_memt; - bus_addr_t uba_baseaddr; - int uba_intr; -}; - -#endif /* _UARTBUSVAR_H_ */ diff --git a/sys/arch/octeon/include/autoconf.h b/sys/arch/octeon/include/autoconf.h index 63919f2770a..b934eae1943 100644 --- a/sys/arch/octeon/include/autoconf.h +++ b/sys/arch/octeon/include/autoconf.h @@ -1,4 +1,4 @@ -/* $OpenBSD: autoconf.h,v 1.2 2017/04/07 13:30:43 visa Exp $ */ +/* $OpenBSD: autoconf.h,v 1.3 2017/07/03 08:17:20 visa Exp $ */ /* * Copyright (c) 2001-2003 Opsycon AB (www.opsycon.se / www.opsycon.com) @@ -45,6 +45,8 @@ extern enum devclass bootdev_class; #include +void com_fdt_init_cons(void); + extern unsigned int octeon_ver; #define OCTEON_1 0 #define OCTEON_PLUS 1 diff --git a/sys/arch/octeon/octeon/machdep.c b/sys/arch/octeon/octeon/machdep.c index c089a76f8c9..f25fae4fdb1 100644 --- a/sys/arch/octeon/octeon/machdep.c +++ b/sys/arch/octeon/octeon/machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: machdep.c,v 1.95 2017/06/19 14:47:27 visa Exp $ */ +/* $OpenBSD: machdep.c,v 1.96 2017/07/03 08:17:20 visa Exp $ */ /* * Copyright (c) 2009, 2010 Miodrag Vallat. @@ -550,6 +550,7 @@ consinit() static int console_ok = 0; if (console_ok == 0) { + com_fdt_init_cons(); cninit(); console_ok = 1; }