xref: /netbsd-src/sys/arch/arm/iomd/console/consinit.c (revision ed9977b1224ae46b1df090a9d378605dde53e47b)
1*ed9977b1Sdyoung /*	$NetBSD: consinit.c,v 1.8 2011/07/01 20:26:36 dyoung Exp $ */
27d4a1addSreinoud 
37d4a1addSreinoud /*
47d4a1addSreinoud  * Copyright (c) 1994-1998 Mark Brinicombe.
57d4a1addSreinoud  * Copyright (c) 1994 Brini.
67d4a1addSreinoud  * All rights reserved.
77d4a1addSreinoud  *
87d4a1addSreinoud  * This code is derived from software written for Brini by Mark Brinicombe
97d4a1addSreinoud  *
107d4a1addSreinoud  * Redistribution and use in source and binary forms, with or without
117d4a1addSreinoud  * modification, are permitted provided that the following conditions
127d4a1addSreinoud  * are met:
137d4a1addSreinoud  * 1. Redistributions of source code must retain the above copyright
147d4a1addSreinoud  *    notice, this list of conditions and the following disclaimer.
157d4a1addSreinoud  * 2. Redistributions in binary form must reproduce the above copyright
167d4a1addSreinoud  *    notice, this list of conditions and the following disclaimer in the
177d4a1addSreinoud  *    documentation and/or other materials provided with the distribution.
187d4a1addSreinoud  * 3. All advertising materials mentioning features or use of this software
197d4a1addSreinoud  *    must display the following acknowledgement:
207d4a1addSreinoud  *	This product includes software developed by Mark Brinicombe
217d4a1addSreinoud  *	for the NetBSD Project.
227d4a1addSreinoud  * 4. The name of the company nor the name of the author may be used to
237d4a1addSreinoud  *    endorse or promote products derived from this software without specific
247d4a1addSreinoud  *    prior written permission.
257d4a1addSreinoud  *
267d4a1addSreinoud  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
277d4a1addSreinoud  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
287d4a1addSreinoud  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
297d4a1addSreinoud  * IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
307d4a1addSreinoud  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
317d4a1addSreinoud  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
327d4a1addSreinoud  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
337d4a1addSreinoud  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
347d4a1addSreinoud  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
357d4a1addSreinoud  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
367d4a1addSreinoud  * SUCH DAMAGE.
377d4a1addSreinoud  *
387d4a1addSreinoud  * Console init functions for machines with VIDC
397d4a1addSreinoud  *
407d4a1addSreinoud  * Created      : 17/09/94
417d4a1addSreinoud  * Updated	: 18/04/01 updated for new wscons
427d4a1addSreinoud  */
437d4a1addSreinoud 
4408716eaeSlukem #include <sys/cdefs.h>
45*ed9977b1Sdyoung __KERNEL_RCSID(0, "$NetBSD: consinit.c,v 1.8 2011/07/01 20:26:36 dyoung Exp $");
4608716eaeSlukem 
477d4a1addSreinoud #include <sys/param.h>
487d4a1addSreinoud #include <sys/systm.h>
497d4a1addSreinoud #include <sys/kernel.h>
507d4a1addSreinoud #include <sys/conf.h>
517d4a1addSreinoud #include <sys/device.h>
527d4a1addSreinoud 
53*ed9977b1Sdyoung #include <sys/bus.h>
547d4a1addSreinoud 
557d4a1addSreinoud #include <dev/cons.h>
567d4a1addSreinoud 
577d4a1addSreinoud #include <arm/iomd/vidc.h>
587d4a1addSreinoud #include <arm/iomd/iomdreg.h>
59f8694181Sbjh21 #include <arm/iomd/iomdvar.h>
60f8694181Sbjh21 #include <arm/iomd/iomdkbcvar.h>
617d4a1addSreinoud #include <arm/iomd/vidcvideo.h>
627d4a1addSreinoud 
637d4a1addSreinoud #include "vidcvideo.h"
64f8694181Sbjh21 #include "iomdkbc.h"
657d4a1addSreinoud 
662c38f195Sbjh21 #if ((NVIDCVIDEO > 0) && (NIOMDKBC > 0))
677d4a1addSreinoud 
687d4a1addSreinoud extern videomemory_t videomemory;
697d4a1addSreinoud extern struct bus_space iomd_bs_tag;
707d4a1addSreinoud 
717d4a1addSreinoud #endif
727d4a1addSreinoud 
7312d0f602Sreinoud 
7412d0f602Sreinoud #ifdef COMCONSOLE
7512d0f602Sreinoud extern void comcninit(struct consdev *cp);
7612d0f602Sreinoud #endif
7712d0f602Sreinoud 
7812d0f602Sreinoud 
797d4a1addSreinoud void
consinit(void)807d4a1addSreinoud consinit(void)
817d4a1addSreinoud {
827d4a1addSreinoud 
837d4a1addSreinoud 	static int consinit_called = 0;
847d4a1addSreinoud 
857d4a1addSreinoud 	if (consinit_called != 0)
867d4a1addSreinoud 		return;
877d4a1addSreinoud 	consinit_called = 1;
887d4a1addSreinoud 
897d4a1addSreinoud #ifdef COMCONSOLE
907d4a1addSreinoud 	comcninit(NULL);
917d4a1addSreinoud 	return;
927d4a1addSreinoud #endif
937d4a1addSreinoud 
947d4a1addSreinoud 
952c38f195Sbjh21 #if ((NVIDCVIDEO > 0) && (NIOMDKBC > 0))
96f8694181Sbjh21 	vidcvideo_cnattach(videomemory.vidm_vbase);
972c38f195Sbjh21 #if NIOMDKBC > 0
98f8694181Sbjh21 	iomdkbc_cnattach(&iomd_bs_tag, IOMD_ADDRESS(IOMD_KBDDAT), 0);
99f8694181Sbjh21 #endif
1007d4a1addSreinoud 	return;
1017d4a1addSreinoud #else
1027d4a1addSreinoud 	/* XXX For old VIDC console. */
1037d4a1addSreinoud 	cninit();
1047d4a1addSreinoud 	return;
1057d4a1addSreinoud #endif
1067d4a1addSreinoud 	panic("No console");	/* Will we ever see this?  */
1077d4a1addSreinoud }
108