obs600_autoconf.c revision 1.4
11.4Smatt/*	$NetBSD: obs600_autoconf.c,v 1.4 2011/06/20 17:44:33 matt Exp $	*/
21.1Skiyohara
31.1Skiyohara/*
41.1Skiyohara * Copyright 2004 Shigeyuki Fukushima.
51.1Skiyohara * All rights reserved.
61.1Skiyohara *
71.1Skiyohara * Written by Shigeyuki Fukushima for The NetBSD Project.
81.1Skiyohara *
91.1Skiyohara * Redistribution and use in source and binary forms, with or without
101.1Skiyohara * modification, are permitted provided that the following conditions
111.1Skiyohara * are met:
121.1Skiyohara * 1. Redistributions of source code must retain the above copyright
131.1Skiyohara *    notice, this list of conditions and the following disclaimer.
141.1Skiyohara * 2. Redistributions in binary form must reproduce the above
151.1Skiyohara *    copyright notice, this list of conditions and the following
161.1Skiyohara *    disclaimer in the documentation and/or other materials provided
171.1Skiyohara *    with the distribution.
181.1Skiyohara * 3. The name of the author may not be used to endorse or promote
191.1Skiyohara *    products derived from this software without specific prior
201.1Skiyohara *    written permission.
211.1Skiyohara *
221.1Skiyohara * THIS SOFTWARE IS PROVIDED THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
231.1Skiyohara * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
241.1Skiyohara * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
251.1Skiyohara * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE
261.1Skiyohara * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
271.1Skiyohara * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
281.1Skiyohara * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
291.1Skiyohara * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
301.1Skiyohara * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
311.1Skiyohara * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
321.1Skiyohara * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
331.1Skiyohara * DAMAGE.
341.1Skiyohara */
351.1Skiyohara#include <sys/cdefs.h>
361.4Smatt__KERNEL_RCSID(0, "$NetBSD: obs600_autoconf.c,v 1.4 2011/06/20 17:44:33 matt Exp $");
371.1Skiyohara
381.1Skiyohara#include <sys/systm.h>
391.1Skiyohara#include <sys/device.h>
401.3Smatt#include <sys/cpu.h>
411.3Smatt#include <sys/intr.h>
421.1Skiyohara
431.1Skiyohara#include <machine/obs600.h>
441.1Skiyohara
451.1Skiyohara#include <powerpc/ibm4xx/cpu.h>
461.1Skiyohara#include <powerpc/ibm4xx/dcr4xx.h>
471.1Skiyohara
481.1Skiyohara#include <dev/ic/comreg.h>
491.1Skiyohara
501.1Skiyohara
511.1Skiyohara/*
521.1Skiyohara * Determine device configuration for a machine.
531.1Skiyohara */
541.1Skiyoharavoid
551.1Skiyoharacpu_configure(void)
561.1Skiyohara{
571.1Skiyohara
581.1Skiyohara	/* Initialize intr and add UICs */
591.1Skiyohara	intr_init();
601.4Smatt	pic_add(&pic_uic1);
611.4Smatt	pic_add(&pic_uic2);
621.1Skiyohara
631.1Skiyohara	calc_delayconst();
641.1Skiyohara
651.1Skiyohara	/* Make sure that timers run at CPU frequency */
661.1Skiyohara	mtdcr(DCR_CPC0_CR1, mfdcr(DCR_CPC0_CR1) & ~CPC0_CR1_CETE);
671.1Skiyohara
681.1Skiyohara	if (config_rootfound("plb", NULL) == NULL)
691.1Skiyohara		panic("configure: mainbus not configured");
701.1Skiyohara
711.1Skiyohara	printf("biomask %x netmask %x ttymask %x\n",
721.1Skiyohara	    imask[IPL_BIO], imask[IPL_NET], imask[IPL_TTY]);
731.1Skiyohara
741.1Skiyohara	(void)spl0();
751.1Skiyohara
761.1Skiyohara	/*
771.1Skiyohara	 * Now allow hardware interrupts.
781.1Skiyohara	 */
791.1Skiyohara	__asm volatile ("wrteei 1");
801.1Skiyohara}
811.1Skiyohara
821.3Smattvoid
831.3Smattdevice_register(device_t dev, void *aux)
841.1Skiyohara{
851.1Skiyohara
861.1Skiyohara	obs405_device_register(dev, aux, OBS600_COM_FREQ);
871.1Skiyohara}
88