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