Port-cobalt archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
LCD messages on boot/shutdown (Re: Shutdown does not finish output on LCD)
I wrote:
If there is no objection, I'd also like to commit this patch
(which shows "NetBSD/cobalt Startuping up..." on boot and
"NetBSD/cobalt Shutting down..." on shutdown to the LCD panel)
soon.
This might be useful for people who don't have serial console.
---
Izumi Tsutsui
> david_albert%comcast.net@localhost wrote:
>
> > However the last thing shown on the LCD panel is:
> >
> > [Shutting down]
> > > swap1
> >
> > This makes it hard to know when it is save to turn
> > off power unless you have a serial console connected.
>
> Then, what is your expected behaivor?
>
> Does the attached patch help?
> ---
> Izumi Tsutsui
>
>
> Index: dev/panel.c
> ===================================================================
> RCS file: /cvsroot/src/sys/arch/cobalt/dev/panel.c,v
> retrieving revision 1.10
> diff -u -r1.10 panel.c
> --- dev/panel.c 6 Apr 2006 11:50:19 -0000 1.10
> +++ dev/panel.c 4 Feb 2008 14:14:33 -0000
> @@ -55,6 +55,9 @@
> #define PANEL_POLLRATE (hz / 10)
> #define PANEL_REGION 0x20
> #define DATA_OFFSET 0x10
> +#define PANEL_COLS 16
> +#define PANEL_VCOLS 40
> +#define PANEL_ROWS 2
>
> struct panel_softc {
> struct device sc_dev;
> @@ -68,6 +71,7 @@
>
> static int panel_match(struct device *, struct cfdata *, void *);
> static void panel_attach(struct device *, struct device *, void *);
> +static void panel_shutdown(void *);
>
> static void panel_soft(void *);
>
> @@ -103,7 +107,7 @@
> {
> struct panel_softc *sc = (void *)self;
> struct mainbus_attach_args *maa = aux;
> -
> + struct hd44780_io io;
> static struct lcdkp_xlate keys[] = {
> { 0xfa, 'h' },
> { 0xf6, 'k' },
> @@ -123,8 +127,8 @@
> 1, &sc->sc_lcd.sc_iodr);
>
> sc->sc_lcd.sc_dev_ok = 1;
> - sc->sc_lcd.sc_cols = 16;
> - sc->sc_lcd.sc_vcols = 40;
> + sc->sc_lcd.sc_cols = PANEL_COLS;
> + sc->sc_lcd.sc_vcols = PANEL_VCOLS;
> sc->sc_lcd.sc_flags = HD_8BIT | HD_MULTILINE | HD_KEYPAD;
>
> sc->sc_lcd.sc_writereg = panel_cbt_hdwritereg;
> @@ -133,6 +137,17 @@
>
> hd44780_attach_subr(&sc->sc_lcd);
>
> + /* Hello World */
> + io.dat = 0;
> + io.len = PANEL_VCOLS * PANEL_ROWS;
> + memset(io.buf, ' ', io.len);
> + memcpy(io.buf, "NetBSD/cobalt ", PANEL_COLS);
> + memcpy(io.buf + PANEL_VCOLS, "Starting up... ", PANEL_COLS);
> + hd44780_ddram_io(&sc->sc_lcd, sc->sc_lcd.sc_curchip, &io,
> + HD_DDRAM_WRITE);
> +
> + shutdownhook_establish(panel_shutdown, sc);
> +
> sc->sc_kp.sc_iot = maa->ma_iot;
> sc->sc_kp.sc_ioh = MIPS_PHYS_TO_KSEG1(0x1d000000); /* XXX */
>
> @@ -147,6 +162,22 @@
> printf("\n");
> }
>
> +static void
> +panel_shutdown(void *arg)
> +{
> + struct panel_softc *sc = arg;
> + struct hd44780_io io;
> +
> + /* Goodbye World */
> + io.dat = 0;
> + io.len = PANEL_VCOLS * PANEL_ROWS;
> + memset(io.buf, ' ', io.len);
> + memcpy(io.buf, "NetBSD/cobalt ", PANEL_COLS);
> + memcpy(io.buf + PANEL_VCOLS, "Shutting down...", PANEL_COLS);
> + hd44780_ddram_io(&sc->sc_lcd, sc->sc_lcd.sc_curchip, &io,
> + HD_DDRAM_WRITE);
> +}
> +
> static uint8_t
> panel_cbt_kprread(bus_space_tag_t iot, bus_space_handle_t ioh)
> {
>
Home |
Main Index |
Thread Index |
Old Index