obs600_autoconf.c revision 1.1
11.1Skiyohara/*	$NetBSD: obs600_autoconf.c,v 1.1 2010/03/18 14:15:38 kiyohara 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.1Skiyohara__KERNEL_RCSID(0, "$NetBSD: obs600_autoconf.c,v 1.1 2010/03/18 14:15:38 kiyohara Exp $");
371.1Skiyohara
381.1Skiyohara#include <sys/systm.h>
391.1Skiyohara#include <sys/device.h>
401.1Skiyohara
411.1Skiyohara#include <machine/intr.h>
421.1Skiyohara#include <machine/obs600.h>
431.1Skiyohara
441.1Skiyohara#include <powerpc/ibm4xx/cpu.h>
451.1Skiyohara#include <powerpc/ibm4xx/dcr4xx.h>
461.1Skiyohara
471.1Skiyohara#include <dev/ic/comreg.h>
481.1Skiyohara
491.1Skiyohara
501.1Skiyohara/*
511.1Skiyohara * Determine device configuration for a machine.
521.1Skiyohara */
531.1Skiyoharavoid
541.1Skiyoharacpu_configure(void)
551.1Skiyohara{
561.1Skiyohara
571.1Skiyohara	/* Initialize intr and add UICs */
581.1Skiyohara	intr_init();
591.1Skiyohara	uic_add(DCR_UIC1_BASE, 28);	/* UIC1 cascade to irq 28 */
601.1Skiyohara	uic_add(DCR_UIC2_BASE, 30);	/* UIC2 cascade to irq 30 */
611.1Skiyohara
621.1Skiyohara	calc_delayconst();
631.1Skiyohara
641.1Skiyohara	/* Make sure that timers run at CPU frequency */
651.1Skiyohara	mtdcr(DCR_CPC0_CR1, mfdcr(DCR_CPC0_CR1) & ~CPC0_CR1_CETE);
661.1Skiyohara
671.1Skiyohara	if (config_rootfound("plb", NULL) == NULL)
681.1Skiyohara		panic("configure: mainbus not configured");
691.1Skiyohara
701.1Skiyohara	printf("biomask %x netmask %x ttymask %x\n",
711.1Skiyohara	    imask[IPL_BIO], imask[IPL_NET], imask[IPL_TTY]);
721.1Skiyohara
731.1Skiyohara	(void)spl0();
741.1Skiyohara
751.1Skiyohara	/*
761.1Skiyohara	 * Now allow hardware interrupts.
771.1Skiyohara	 */
781.1Skiyohara	__asm volatile ("wrteei 1");
791.1Skiyohara}
801.1Skiyohara
811.1Skiyoharavoid device_register(struct device *dev, void *aux)
821.1Skiyohara{
831.1Skiyohara
841.1Skiyohara	obs405_device_register(dev, aux, OBS600_COM_FREQ);
851.1Skiyohara}
86