xref: /netbsd/sys/arch/epoc32/epoc32/autoconf.c (revision 2a929cd9)
1*2a929cd9Skiyohara /*	$NetBSD: autoconf.c,v 1.2 2013/06/20 13:40:09 kiyohara Exp $	*/
268122621Skiyohara /*
368122621Skiyohara  * Copyright (c) 2013 KIYOHARA Takashi
468122621Skiyohara  * All rights reserved.
568122621Skiyohara  *
668122621Skiyohara  * Redistribution and use in source and binary forms, with or without
768122621Skiyohara  * modification, are permitted provided that the following conditions
868122621Skiyohara  * are met:
968122621Skiyohara  * 1. Redistributions of source code must retain the above copyright
1068122621Skiyohara  *    notice, this list of conditions and the following disclaimer.
1168122621Skiyohara  * 2. Redistributions in binary form must reproduce the above copyright
1268122621Skiyohara  *    notice, this list of conditions and the following disclaimer in the
1368122621Skiyohara  *    documentation and/or other materials provided with the distribution.
1468122621Skiyohara  *
1568122621Skiyohara  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
1668122621Skiyohara  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
1768122621Skiyohara  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
1868122621Skiyohara  * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
1968122621Skiyohara  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
2068122621Skiyohara  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
2168122621Skiyohara  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2268122621Skiyohara  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
2368122621Skiyohara  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
2468122621Skiyohara  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
2568122621Skiyohara  * POSSIBILITY OF SUCH DAMAGE.
2668122621Skiyohara  */
2768122621Skiyohara 
2868122621Skiyohara #include <sys/cdefs.h>
29*2a929cd9Skiyohara __KERNEL_RCSID(0, "$NetBSD: autoconf.c,v 1.2 2013/06/20 13:40:09 kiyohara Exp $");
3068122621Skiyohara 
3168122621Skiyohara #include <sys/systm.h>
3268122621Skiyohara #include <sys/types.h>
3368122621Skiyohara #include <sys/conf.h>
3468122621Skiyohara #include <sys/device.h>
3568122621Skiyohara 
3668122621Skiyohara 
3768122621Skiyohara void
cpu_configure(void)3868122621Skiyohara cpu_configure(void)
3968122621Skiyohara {
4068122621Skiyohara 
4168122621Skiyohara 	splhigh();
4268122621Skiyohara 	splserial();
4368122621Skiyohara 
4468122621Skiyohara 	if (config_rootfound("mainbus", NULL) == NULL)
4568122621Skiyohara 		panic("configure: mainbus not configured");
4668122621Skiyohara 
4768122621Skiyohara 	/* Time to start taking interrupts so lets open the flood gates .... */
4868122621Skiyohara 	(void)spl0();
4968122621Skiyohara }
5068122621Skiyohara 
5168122621Skiyohara void
cpu_rootconf(void)5268122621Skiyohara cpu_rootconf(void)
5368122621Skiyohara {
5468122621Skiyohara 
5568122621Skiyohara 	aprint_normal("boot device: %s\n",
5668122621Skiyohara 	    booted_device ? device_xname(booted_device) : "<unknown>");
5768122621Skiyohara 
5868122621Skiyohara 	setroot(booted_device, booted_partition);
5968122621Skiyohara }
6068122621Skiyohara 
6168122621Skiyohara void
device_register(device_t dev,void * aux)6268122621Skiyohara device_register(device_t dev, void *aux)
6368122621Skiyohara {
6468122621Skiyohara 
6568122621Skiyohara 	if (device_is_a(dev, "clpslcd") ||
6668122621Skiyohara 	    device_is_a(dev, "wmlcd")) {
6768122621Skiyohara 		extern int epoc32_fb_width, epoc32_fb_height, epoc32_fb_addr;
6868122621Skiyohara 		prop_dictionary_t dict = device_properties(dev);
6968122621Skiyohara 
7068122621Skiyohara 		prop_dictionary_set_uint32(dict, "width", epoc32_fb_width);
7168122621Skiyohara 		prop_dictionary_set_uint32(dict, "height", epoc32_fb_height);
7268122621Skiyohara 		prop_dictionary_set_uint32(dict, "addr", epoc32_fb_addr);
7368122621Skiyohara 	}
74*2a929cd9Skiyohara 
75*2a929cd9Skiyohara 	if (booted_device == NULL)
76*2a929cd9Skiyohara 		if (device_is_a(dev, "wd"))
77*2a929cd9Skiyohara 			booted_device = dev;
7868122621Skiyohara }
79