/*************************************************************************** * __________ __ ___. * Open \______ \ ____ ____ | | _\_ |__ _______ ___ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ * \/ \/ \/ \/ \/ * $Id$ * * Copyright (C) 2004 by Linus Nielsen Feltzing * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ****************************************************************************/ #ifndef __MCF5249_H__ #define __MCF5249_H__ #define MBAR 0x40000000 #define MBAR2 0x80000000 #define RSR (*(volatile unsigned char *)(MBAR + 0x000)) #define SYPCR (*(volatile unsigned char *)(MBAR + 0x001)) #define SWIVR (*(volatile unsigned char *)(MBAR + 0x002)) #define SWSR (*(volatile unsigned char *)(MBAR + 0x003)) #define MPARK (*(volatile unsigned char *)(MBAR + 0x00c)) #define IPR (*(volatile unsigned long *)(MBAR + 0x040)) #define IMR (*(volatile unsigned long *)(MBAR + 0x044)) #define ICR0 (*(volatile unsigned char *)(MBAR + 0x04c)) #define ICR1 (*(volatile unsigned char *)(MBAR + 0x04d)) #define ICR2 (*(volatile unsigned char *)(MBAR + 0x04e)) #define ICR3 (*(volatile unsigned char *)(MBAR + 0x04f)) #define ICR4 (*(volatile unsigned char *)(MBAR + 0x050)) #define ICR5 (*(volatile unsigned char *)(MBAR + 0x051)) #define ICR6 (*(volatile unsigned char *)(MBAR + 0x052)) #define ICR7 (*(volatile unsigned char *)(MBAR + 0x053)) #define ICR8 (*(volatile unsigned char *)(MBAR + 0x054)) #define ICR9 (*(volatile unsigned char *)(MBAR + 0x055)) #define ICR10 (*(volatile unsigned char *)(MBAR + 0x056)) #define ICR11 (*(volatile unsigned char *)(MBAR + 0x057)) #define CSAR0 (*(volatile unsigned long *)(MBAR + 0x080)) #define CSMR0 (*(volatile unsigned long *)(MBAR + 0x084)) #define CSCR0 (*(volatile unsigned long *)(MBAR + 0x088)) #define CSAR1 (*(volatile unsigned long *)(MBAR + 0x08c)) #define CSMR1 (*(volatile unsigned long *)(MBAR + 0x090)) #define CSCR1 (*(volatile unsigned long *)(MBAR + 0x094)) #define CSAR2 (*(volatile unsigned long *)(MBAR + 0x098)) #define CSMR2 (*(volatile unsigned long *)(MBAR + 0x09c)) #define CSCR2 (*(volatile unsigned long *)(MBAR + 0x0a0)) #define CSAR3 (*(volatile unsigned long *)(MBAR + 0x0a4)) #define CSMR3 (*(volatile unsigned long *)(MBAR + 0x0a8)) #define CSCR3 (*(volatile unsigned long *)(MBAR + 0x0ac)) #define DCR (*(volatile unsigned short *)(MBAR + 0x100)) #define DACR0 (*(volatile unsigned long *)(MBAR + 0x108)) #define DMR0 (*(volatile unsigned long *)(MBAR + 0x10c)) #define DACR1 (*(volatile unsigned long *)(MBAR + 0x110)) #define DMR1 (*(volatile unsigned long *)(MBAR + 0x114)) #define TMR0 (*(volatile unsigned short *)(MBAR + 0x140)) #define TRR0 (*(volatile unsigned short *)(MBAR + 0x144)) #define TCR0 (*(volatile unsigned short *)(MBAR + 0x148)) #define TCN0 (*(volatile unsigned short *)(MBAR + 0x14c)) #define TER0 (*(volatile unsigned char *)(MBAR + 0x151)) #define TMR1 (*(volatile unsigned short *)(MBAR + 0x180)) #define TRR1 (*(volatile unsigned short *)(MBAR + 0x184)) #define TCR1 (*(volatile unsigned short *)(MBAR + 0x188)) #define TCN1 (*(volatile unsigned short *)(MBAR + 0x18c)) #define TER1 (*(volatile unsigned char *)(MBAR + 0x191)) #define UMR0 (*(volatile unsigned char *)(MBAR + 0x1c0)) #define USR0 (*(volatile unsigned char *)(MBAR + 0x1c4)) #define UCSR0 (*(volatile unsigned char *)(MBAR + 0x1c4)) #define UCR0 (*(volatile unsigned char *)(MBAR + 0x1c8)) #define URB0 (*(volatile unsigned char *)(MBAR + 0x1cc)) #define UTB0 (*(volatile unsigned char *)(MBAR + 0x1cc)) #define UIPCR0 (*(volatile unsigned char *)(MBAR + 0x1d0)) #define UACR0 (*(volatile unsigned char *)(MBAR + 0x1d0)) #define UISR0 (*(volatile unsigned char *)(MBAR + 0x1d4)) #define UIMR0 (*(volatile unsigned char *)(MBAR + 0x1d4)) #define UBG10 (*(volatile unsigned char *)(MBAR + 0x1d8)) #define UBG20 (*(volatile unsigned char *)(MBAR + 0x1dc)) #define UIVR0 (*(volatile unsigned char *)(MBAR + 0x1f0)) #define UIP0 (*(volatile unsigned char *)(MBAR + 0x1f4)) #define UOP10 (*(volatile unsigned char *)(MBAR + 0x1f8)) #define UOP00 (*(volatile unsigned char *)(MBAR + 0x1fc)) #define UMR1 (*(volatile unsigned char *)(MBAR + 0x200)) #define USR1 (*(volatile unsigned char *)(MBAR + 0x204)) #define UCSR1 (*(volatile unsigned char *)(MBAR + 0x204)) #define UCR1 (*(volatile unsigned char *)(MBAR + 0x208)) #define URB1 (*(volatile unsigned char *)(MBAR + 0x20c)) #define UTB1 (*(volatile unsigned char *)(MBAR + 0x20c)) #define UIPCR1 (*(volatile unsigned char *)(MBAR + 0x210)) #define UACR1 (*(volatile unsigned char *)(MBAR + 0x210)) #define UISR1 (*(volatile unsigned char *)(MBAR + 0x214)) #define UIMR1 (*(volatile unsigned char *)(MBAR + 0x214)) #define UBG11 (*(volatile unsigned char *)(MBAR + 0x218)) #define UBG21 (*(volatile unsigned char *)(MBAR + 0x21c)) #define UIVR1 (*(volatile unsigned char *)(MBAR + 0x230)) #define UIP1 (*(volatile unsigned char *)(MBAR + 0x234)) #define UOP11 (*(volatile unsigned char *)(MBAR + 0x238)) #define UOP01 (*(volatile unsigned char *)(MBAR + 0x23c)) #define MADR (*(volatile unsigned char *)(MBAR + 0x280)) #define MFDR (*(volatile unsigned char *)(MBAR + 0x284)) #define MBCR (*(volatile unsigned char *)(MBAR + 0x288)) #define MBSR (*(volatile unsigned char *)(MBAR + 0x28c)) #define MBDR (*(volatile unsigned char *)(MBAR + 0x290)) #define SAR0 (*(volatile unsigned long *)(MBAR + 0x300)) #define DAR0 (*(volatile unsigned long *)(MBAR + 0x304)) #define DCR0 (*(volatile unsigned long *)(MBAR + 0x308)) #define BCR0 (*(volatile unsigned long *)(MBAR + 0x30c)) #define DSR0 (*(volatile unsigned char *)(MBAR + 0x310)) #define DIVR0 (*(volatile unsigned char *)(MBAR + 0x314)) #define SAR1 (*(volatile unsigned long *)(MBAR + 0x340)) #define DAR1 (*(volatile unsigned long *)(MBAR + 0x344)) #define DCR1 (*(volatile unsigned long *)(MBAR + 0x348)) #define BCR1 (*(volatile unsigned long *)(MBAR + 0x34c)) #define DSR1 (*(volatile unsigned char *)(MBAR + 0x350)) #define DIVR1 (*(volatile unsigned char *)(MBAR + 0x354)) #define SAR2 (*(volatile unsigned long *)(MBAR + 0x380)) #define DAR2 (*(volatile unsigned long *)(MBAR + 0x384)) #define DCR2 (*(volatile unsigned long *)(MBAR + 0x388)) #define BCR2 (*(volatile unsigned long *)(MBAR + 0x38c)) #define DSR2 (*(volatile unsigned char *)(MBAR + 0x390)) #define DIVR2 (*(volatile unsigned char *)(MBAR + 0x394)) #define SAR3 (*(volatile unsigned long *)(MBAR + 0x3c0)) #define DAR3 (*(volatile unsigned long *)(MBAR + 0x3c4)) #define DCR3 (*(volatile unsigned long *)(MBAR + 0x3c8)) #define BCR3 (*(volatile unsigned long *)(MBAR + 0x3cc)) #define DSR3 (*(volatile unsigned char *)(MBAR + 0x3d0)) #define DIVR3 (*(volatile unsigned char *)(MBAR + 0x3d4)) #define QSPIMR (*(volatile unsigned short *)(MBAR + 0x400)) #define QSPIQDLYR (*(volatile unsigned short *)(MBAR + 0x404)) #define QSPIQWR (*(volatile unsigned short *)(MBAR + 0x408)) #define QSPIQIR (*(volatile unsigned short *)(MBAR + 0x40c)) #define QSPIQAR (*(volatile unsigned short *)(MBAR + 0x410)) #define QSPIQDR (*(volatile unsigned short *)(MBAR + 0x414)) #define GPIO_READ (*(volatile unsigned long *)(MBAR2 + 0x000)) #define GPIO_OUT (*(volatile unsigned long *)(MBAR2 + 0x004)) #define GPIO_ENABLE (*(volatile unsigned long *)(MBAR2 + 0x008)) #define GPIO_FUNCTION (*(volatile unsigned long *)(MBAR2 + 0x00c)) #define IIS1CONFIG (*(volatile unsigned long *)(MBAR2 + 0x010)) #define IIS2CONFIG (*(volatile unsigned long *)(MBAR2 + 0x014)) #define IIS3CONFIG (*(volatile unsigned long *)(MBAR2 + 0x018)) #define IIS4CONFIG (*(volatile unsigned long *)(MBAR2 + 0x01c)) #define EBU1CONFIG (*(volatile unsigned long *)(MBAR2 + 0x020)) #define EBU1RCVCCHANNEL1 (*(volatile unsigned long *)(MBAR2 + 0x024)) #define EBUTXCCHANNEL1 (*(volatile unsigned long *)(MBAR2 + 0x028)) #define EBUTXCCHANNEL2 (*(volatile unsigned long *)(MBAR2 + 0x02c)) #define DATAINCONTROL (*(volatile unsigned long *)(MBAR2 + 0x030)) #define PDIR1_L (*(volatile unsigned long *)(MBAR2 + 0x034)) #define PDIR3_L (*(volatile unsigned long *)(MBAR2 + 0x044)) #define PDIR1_R (*(volatile unsigned long *)(MBAR2 + 0x054)) #define PDIR3_R (*(volatile unsigned long *)(MBAR2 + 0x064)) #define PDOR1_L (*(volatile unsigned long *)(MBAR2 + 0x034)) #define PDOR1_R (*(volatile unsigned long *)(MBAR2 + 0x044)) #define PDOR2_L (*(volatile unsigned long *)(MBAR2 + 0x054)) #define PDOR2_R (*(volatile unsigned long *)(MBAR2 + 0x064)) #define PDIR2 (*(volatile unsigned long *)(MBAR2 + 0x074)) #define PDOR3 (*(volatile unsigned long *)(MBAR2 + 0x074)) #define UCHANNELTRANSMIT (*(volatile unsigned long *)(MBAR2 + 0x084)) #define U1CHANNELRECEIVE (*(volatile unsigned long *)(MBAR2 + 0x088)) #define Q1CHANNELRECEIVE (*(volatile unsigned long *)(MBAR2 + 0x08c)) #define CD_TEXT_CONTROL (*(volatile unsigned char *)(MBAR2 + 0x092)) #define INTERRUPTEN (*(volatile unsigned long *)(MBAR2 + 0x094)) #define INTERRUPTCLEAR (*(volatile unsigned long *)(MBAR2 + 0x098)) #define INTERRUPTSTAT (*(volatile unsigned long *)(MBAR2 + 0x098)) #define DMACONFIG (*(volatile unsigned char *)(MBAR2 + 0x09f)) #define PHASECONFIG (*(volatile unsigned char *)(MBAR2 + 0x0a3)) #define XTRIM (*(volatile unsigned short *)(MBAR2 + 0x0a6)) #define FREQMEAS (*(volatile unsigned long *)(MBAR2 + 0x0a8)) #define BLOCKCONTROL (*(volatile unsigned short *)(MBAR2 + 0x0ca)) #define AUDIOGLOB (*(volatile unsigned short *)(MBAR2 + 0x0ce)) #define EBU2CONFIG (*(volatile unsigned long *)(MBAR2 + 0x0d0)) #define EBU2RCVCCHANNEL1 (*(volatile unsigned short *)(MBAR2 + 0x0d4)) #define U2CHANNELRECEIVE (*(volatile unsigned long *)(MBAR2 + 0x0d8)) #define Q2CHANNELRECEIVE (*(volatile unsigned long *)(MBAR2 + 0x0dc)) #define DEVICE_ID (*(volatile unsigned long *)(MBAR2 + 0x0ac)) #define GPIO1_READ (*(volatile unsigned long *)(MBAR2 + 0x0b0)) #define GPIO1_OUT (*(volatile unsigned long *)(MBAR2 + 0x0b4)) #define GPIO1_ENABLE (*(volatile unsigned long *)(MBAR2 + 0x0b8)) #define GPIO1_FUNCTION (*(volatile unsigned long *)(MBAR2 + 0x0bc)) #define GPIO_INT_STAT (*(volatile unsigned long *)(MBAR2 + 0x0c0)) #define GPIO_INT_CLEAR (*(volatile unsigned long *)(MBAR2 + 0x0c0)) #define GPIO_INT_EN (*(volatile unsigned long *)(MBAR2 + 0x0c4)) #define INTERRUPTSTAT3 (*(volatile unsigned long *)(MBAR2 + 0x0e0)) #define INTERRUPTCLEAR3 (*(volatile unsigned long *)(MBAR2 + 0x0e0)) #define INTERRUPTEN3 (*(volatile unsigned long *)(MBAR2 + 0x0e4)) #define INTPRI1 (*(volatile unsigned long *)(MBAR2 + 0x140)) #define INTPRI2 (*(volatile unsigned long *)(MBAR2 + 0x144)) #define INTPRI3 (*(volatile unsigned long *)(MBAR2 + 0x148)) #define INTPRI4 (*(volatile unsigned long *)(MBAR2 + 0x14c)) #define INTPRI5 (*(volatile unsigned long *)(MBAR2 + 0x150)) #define INTPRI6 (*(volatile unsigned long *)(MBAR2 + 0x154)) #define INTPRI7 (*(volatile unsigned long *)(MBAR2 + 0x158)) #define INTPRI8 (*(volatile unsigned long *)(MBAR2 + 0x15c)) #define SPURVEC (*(volatile unsigned char *)(MBAR2 + 0x167)) #define INTBASE (*(volatile unsigned char *)(MBAR2 + 0x16b)) #define PLLCR (*(volatile unsigned long *)(MBAR2 + 0x180)) #define DMAROUTE (*(volatile unsigned long *)(MBAR2 + 0x188)) #define IDECONFIG1 (*(volatile unsigned long *)(MBAR2 + 0x18c)) #define IDECONFIG2 (*(volatile unsigned long *)(MBAR2 + 0x190)) #define IPERRORADR (*(volatile unsigned long *)(MBAR2 + 0x194)) #define EXTRAINT (*(volatile unsigned long *)(MBAR2 + 0x198)) #define ADCONFIG (*(volatile unsigned short *)(MBAR2 + 0x402)) #define ADVALUE (*(volatile unsigned short *)(MBAR2 + 0x406)) #define MADR2 (*(volatile unsigned char *)(MBAR2 + 0x440)) #define MFDR2 (*(volatile unsigned char *)(MBAR2 + 0x444)) #define MBCR2 (*(volatile unsigned char *)(MBAR2 + 0x448)) #define MBSR2 (*(volatile unsigned char *)(MBAR2 + 0x44c)) #define MBDR2 (*(volatile unsigned char *)(MBAR2 + 0x450)) #define FLASHMEDIACONFIG (*(volatile unsigned long *)(MBAR2 + 0x460)) #define FLASHMEDIACMD1 (*(volatile unsigned long *)(MBAR2 + 0x464)) #define FLASHMEDIACMD2 (*(volatile unsigned long *)(MBAR2 + 0x468)) #define FLASHMEDIADATA1 (*(volatile unsigned long *)(MBAR2 + 0x46c)) #define FLASHMEDIADATA2 (*(volatile unsigned long *)(MBAR2 + 0x470)) #define FLASHMEDIASTATUS (*(volatile unsigned long *)(MBAR2 + 0x474)) #define FLASHMEDIAINTEN (*(volatile unsigned long *)(MBAR2 + 0x478)) #define FLASHMEDIAINTSTAT (*(volatile unsigned long *)(MBAR2 + 0x47c)) #define FLASHMEDIAINTCLEAR (*(volatile unsigned long *)(MBAR2 + 0x47c)) /* DMA Registers ... */ #define O_SAR 0x00 /* Source Address */ #define O_DAR 0x04 /* Destination Address */ #define O_DCR 0x08 /* DMA Control Register */ #define O_BCR 0x0C /* 16 or 24 bits depending on BCR24BIT */ #define O_DSR 0x10 /* DMA Status Register */ #define O_IVR 0x14 /* Interrupt Vector Register */ /* DMA Control Register bits */ #define DMA_INT (1 << 31) /* Enable Interrupts */ #define DMA_EEXT (1 << 30) /* Enable peripherial request */ #define DMA_CS (1 << 29) /* Cycle Steal */ #define DMA_AA (1 << 28) /* Auto-Align */ #define DMA_BWC(x) (((x)&7) << 25) /* Bandwidth control */ #define DMA_SINC (1 << 22) /* Source Increment */ #define DMA_SSIZE(x) (((x)&3) << 20) /* Size of source data */ #define DMA_DINC (1 << 19) /* Destination Increment */ #define DMA_DSIZE(x) (((x)&3) << 17) /* Size of destination data */ #define DMA_START (1 << 16) /* Start DMA transfer */ #define DMA_SIZE_DWORD 0 /* 4 bytes */ #define DMA_SIZE_BYTE 1 /* 1 byte */ #define DMA_SIZE_WORD 2 /* 2 bytes */ #define DMA_SIZE_LINE 3 /* 16 bytes */ /* DMA Status Register bits */ #define DMA_CE (1 << 6) /* Configuration Error */ #define DMA_BES (1 << 5) /* Bus error on source */ #define DMA_BED (1 << 4) /* Bus error on destination */ #define DMA_REQ (1 << 2) /* Request pending */ #define DMA_BSY (1 << 1) /* DMA channel busy */ #define DMA_DONE (1 << 0) /* Transfer has completed */ /* DMAROUTE config */ #define DMA0_REQ_AUDIO_1 0x80 #define DMA0_REQ_AUDIO_2 0x81 #define DMA1_REQ_AUDIO_1 0x8000 #define DMA1_REQ_AUDIO_2 0x8100 /* Timer frequency */ /* timer is based on busclk == cpuclk/2 */ #define TIMER_FREQ (CPU_FREQ/2) #endif