From 5b38501da66ed672b34922190744d3b78ac38915 Mon Sep 17 00:00:00 2001 From: ian Date: Mon, 1 Apr 2013 00:44:20 +0000 Subject: Fix low-level uart drivers that set their fifo sizes in the softc too late. uart(4) allocates send and receiver buffers in attach() before it calls the low-level driver's attach routine. Many low-level drivers set the fifo sizes in their attach routine, which is too late. Other drivers set them in the probe() routine, so that they're available when uart(4) allocates buffers. This fixes the ones that were setting the values too late by moving the code to probe(). --- sys/sparc64/pci/sbbc.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) (limited to 'sys/sparc64') diff --git a/sys/sparc64/pci/sbbc.c b/sys/sparc64/pci/sbbc.c index 218093f..c19fb71 100644 --- a/sys/sparc64/pci/sbbc.c +++ b/sys/sparc64/pci/sbbc.c @@ -835,13 +835,6 @@ sbbc_uart_bus_attach(struct uart_softc *sc) bst = bas->bst; bsh = bas->bsh; - sc->sc_rxfifosz = SBBC_SRAM_READ_4(sbbc_solcons + - SBBC_CONS_OFF(cons_in_end)) - SBBC_SRAM_READ_4(sbbc_solcons + - SBBC_CONS_OFF(cons_in_begin)) - 1; - sc->sc_txfifosz = SBBC_SRAM_READ_4(sbbc_solcons + - SBBC_CONS_OFF(cons_out_end)) - SBBC_SRAM_READ_4(sbbc_solcons + - SBBC_CONS_OFF(cons_out_begin)) - 1; - uart_lock(sc->sc_hwmtx); /* @@ -995,11 +988,24 @@ sbbc_uart_bus_param(struct uart_softc *sc __unused, int baudrate __unused, } static int -sbbc_uart_bus_probe(struct uart_softc *sc __unused) +sbbc_uart_bus_probe(struct uart_softc *sc) { + struct uart_bas *bas; + bus_space_tag_t bst; + bus_space_handle_t bsh; - if (sbbc_console != 0) + if (sbbc_console != 0) { + bas = &sc->sc_bas; + bst = bas->bst; + bsh = bas->bsh; + sc->sc_rxfifosz = SBBC_SRAM_READ_4(sbbc_solcons + + SBBC_CONS_OFF(cons_in_end)) - SBBC_SRAM_READ_4(sbbc_solcons + + SBBC_CONS_OFF(cons_in_begin)) - 1; + sc->sc_txfifosz = SBBC_SRAM_READ_4(sbbc_solcons + + SBBC_CONS_OFF(cons_out_end)) - SBBC_SRAM_READ_4(sbbc_solcons + + SBBC_CONS_OFF(cons_out_begin)) - 1; return (0); + } return (ENXIO); } -- cgit v1.1