Return to mcreg.h CVS log | Up to [local] / sys / arch / mvme68k / dev |
File: [local] / sys / arch / mvme68k / dev / mcreg.h (download)
Revision 1.1.1.1 (vendor branch), Tue Mar 4 16:07:41 2008 UTC (16 years, 6 months ago) by nbrk
Import of OpenBSD 4.2 release kernel tree with initial code to support Jornada 720/728, StrongARM 1110-based handheld PC. At this point kernel roots on NFS and boots into vfs_mountroot() and traps. What is supported: - glass console, Jornada framebuffer (jfb) works in 16bpp direct color mode (needs some palette tweaks for non black/white/blue colors, i think) - saic, SA11x0 interrupt controller (needs cleanup) - sacom, SA11x0 UART (supported only as boot console for now) - SA11x0 GPIO controller fully supported (but can't handle multiple interrupt handlers on one gpio pin) - sassp, SSP port on SA11x0 that attaches spibus - Jornada microcontroller (jmcu) to control kbd, battery, etc throught the SPI bus (wskbd attaches on jmcu, but not tested) - tod functions seem work - initial code for SA-1111 (chip companion) : this is TODO Next important steps, i think: - gpio and intc on sa1111 - pcmcia support for sa11x0 (and sa1111 help logic) - REAL root on nfs when we have PCMCIA support (we may use any of supported pccard NICs) - root on wd0! (using already supported PCMCIA-ATA) |
/* $OpenBSD: mcreg.h,v 1.9 2004/07/30 22:29:45 miod Exp $ */ /* * Copyright (c) 1995 Theo de Raadt * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * VME162 MCchip */ struct mcreg { /*0x00*/ volatile u_char mc_chipid; /*0x01*/ volatile u_char mc_chiprev; /*0x02*/ volatile u_char mc_genctl; /*0x03*/ volatile u_char mc_vecbase; /*0x04*/ volatile u_long mc_t1cmp; /*0x08*/ volatile u_long mc_t1count; /*0x0C*/ volatile u_long mc_t2cmp; /*0x10*/ volatile u_long mc_t2count; /*0x14*/ volatile u_char mc_lsbprescale; /*0x15*/ volatile u_char mc_adjprescale; /*0x16*/ volatile u_char mc_t2ctl; /*0x17*/ volatile u_char mc_t1ctl; /*0x18*/ volatile u_char mc_t4irq; /*0x19*/ volatile u_char mc_t3irq; /*0x1A*/ volatile u_char mc_t2irq; /*0x1B*/ volatile u_char mc_t1irq; /*0x1C*/ volatile u_char mc_parity; /*0x1D*/ volatile u_char mc_zsirq; /*0x1E*/ volatile u_char mc_t4ctl; /*0x1F*/ volatile u_char mc_t3ctl; /*0x20*/ volatile u_short mc_drambase; /*0x22*/ volatile u_short mc_srambase; /*0x24*/ volatile u_char mc_dramsize; /*0x25*/ volatile u_char mc_memoptions; #define MC_MEMOPTIONS_SRAMMASK 0x18 #define MC_MEMOPTIONS_SRAM128K 0x00 #define MC_MEMOPTIONS_SRAM512K 0x08 #define MC_MEMOPTIONS_SRAM1M 0x10 #define MC_MEMOPTIONS_SRAM2M 0x18 #define MC_MEMOPTIONS_DRAMMASK 0x07 #define MC_MEMOPTIONS_DRAM1M 0x00 #define MC_MEMOPTIONS_DRAM2M 0x01 #define MC_MEMOPTIONS_DRAM4M 0x03 #define MC_MEMOPTIONS_DRAM4M2 0x04 #define MC_MEMOPTIONS_DRAM8M 0x05 #define MC_MEMOPTIONS_DRAM16M 0x07 /*0x26*/ volatile u_char mc_sramsize; /*0x27*/ volatile u_char mc_resv1; /*0x28*/ volatile u_char mc_ieerr; /*0x29*/ volatile u_char mc_resv2; /*0x2A*/ volatile u_char mc_ieirq; /*0x2B*/ volatile u_char mc_iefailirq; /*0x2C*/ volatile u_char mc_ncrerr; /*0x2D*/ volatile u_char mc_input; #define MC_INPUT_USR1 0x80 #define MC_INPUT_USR2 0x40 #define MC_INPUT_USR3 0x20 #define MC_INPUT_USR4 0x10 #define MC_INPUT_PROM 0x08 #define MC_INPUT_BUG3 0x04 #define MC_INPUT_BUG2 0x02 #define MC_INPUT_BUG1 0x01 /*0x2E*/ volatile u_char mc_ver; /*0x01*/ volatile u_char mc_ncrirq; /*0x01*/ volatile u_long mc_t3cmp; /*0x01*/ volatile u_long mc_t3count; /*0x01*/ volatile u_long mc_t4cmp; /*0x01*/ volatile u_long mc_t4count; /*0x01*/ volatile u_char mc_busclock; /*0x01*/ volatile u_char mc_promtime; /*0x01*/ volatile u_char mc_flashctl; #define MC_FLASHCTL_WRITE 0x08 /*0x01*/ volatile u_char mc_abortirq; /*0x01*/ volatile u_char mc_resetctl; /*0x01*/ volatile u_char mc_watchdogctl; /*0x01*/ volatile u_char mc_watchdogtime; /*0x01*/ volatile u_char mc_resv3; /*0x01*/ volatile u_char mc_dramctl; /*0x01*/ volatile u_char mc_resv4; /*0x01*/ volatile u_char mc_mpustat; /*0x01*/ volatile u_char mc_resv5; /*0x01*/ volatile u_long mc_prescale; }; #define MC_MCCHIP_OFF 0x42000 #define MC_CHIPID 0x84 /* * points to system's MCchip registers */ extern struct mcreg *sys_mc; /* * for the console we need zs phys addr */ #define ZS0_PHYS_162 (0xfff45000) #define ZS1_PHYS_162 (0xfff45801) /* * We lock off our interrupt vector at 0x50. */ #define MC_VECBASE 0x50 #define MC_NVEC 16 #define MCV_ZS 0x00 #define MCV_TIMER4 0x03 #define MCV_TIMER3 0x04 #define MCV_NCR 0x05 #define MCV_IEFAIL 0x06 #define MCV_IE 0x07 #define MCV_TIMER2 0x08 #define MCV_TIMER1 0x09 #define MCV_PARITY 0x0b #define MCV_ABORT 0x0e #define MC_TCTL_CEN 0x01 #define MC_TCTL_COC 0x02 #define MC_TCTL_COVF 0x04 #define MC_TCTL_OVF 0xf0 #define MC_ABORT_ABS 0x40 #define mc_timer_us2lim(us) (us) /* timer increments in "us" */ #define MC_IRQ_IPL 0x07 #define MC_IRQ_ICLR 0x08 #define MC_IRQ_IEN 0x10 #define MC_IRQ_INT 0x20 #define MC_GENCTL_IEN 0x02 #define MC_IEERR_SCLR 0x01 #define MC_SC_INHIBIT (0 << 6) #define MC_SC_SNOOP (1 << 6) #define MC_SC_INVAL (2 << 6) #define MC_SC_RESV (3 << 6) #define MC_VER_ISLX 0x40 #define MC_VER_REAL040 0x10 #define MC_VER_NOIE 0x08 #define MC_VER_NONCR 0x04 #define MC_VER_NOVME 0x02 #define MC_VER_33MHZ 0x01 void mc_enableflashwrite(int on); #define MC_ENAFLASHWRITE_OFFSET 0xcc000 #define MC_DISFLASHWRITE_OFFSET 0xc8000 int mc_hasflash(void); int mcintr_establish(int, struct intrhand *, const char *);