Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:23:45

0001 /*
0002  *  Coldfire MCF5206e on-chip peripherial definitions.
0003  *  Contents of this file based on information provided in
0004  *  Motorola MCF5206e User's Manual
0005  *
0006  *  Copyright (C) 2000 OKTET Ltd., St.-Petersburg, Russia
0007  *  Author: Victor V. Vengerov <vvv@oktet.ru>
0008  *
0009  *  The license and distribution terms for this file may be
0010  *  found in the file LICENSE in this distribution or at
0011  *  http://www.rtems.org/license/LICENSE.
0012  */
0013 
0014 #ifndef __MCF5206E_H__
0015 #define __MCF5206E_H__
0016 
0017 #ifdef ASM
0018 #define MCF5206E_REG8(base,ofs) (ofs+base)
0019 #define MCF5206E_REG16(base,ofs) (ofs+base)
0020 #define MCF5206E_REG32(base,ofs) (ofs+base)
0021 #else
0022 #define MCF5206E_REG8(base,ofs) \
0023     (volatile uint8_t*)((uint8_t*)(base) + (ofs))
0024 #define MCF5206E_REG16(base,ofs) \
0025     (volatile uint16_t*)((uint8_t*)(base) + (ofs))
0026 #define MCF5206E_REG32(base,ofs) \
0027     (volatile uint32_t*)((uint8_t*)(base) + (ofs))
0028 #endif
0029 
0030 /*** Instruction Cache -- MCF5206e User's Manual, Chapter 4 ***/
0031 
0032 /* CACR - Cache Control Register */
0033 #define MCF5206E_CACR_CENB  (0x80000000) /* Cache Enable */
0034 #define MCF5206E_CACR_CPDI  (0x10000000) /* Disable CPUSHL Invalidation */
0035 #define MCF5206E_CACR_CFRZ  (0x08000000) /* Cache Freeze */
0036 #define MCF5206E_CACR_CINV  (0x01000000) /* Cache Invalidate */
0037 #define MCF5206E_CACR_CEIB  (0x00000400) /* Cache Enable Noncacheable
0038                                             instruction bursting */
0039 #define MCF5206E_CACR_DCM   (0x00000200) /* Default cache mode - noncacheable*/
0040 #define MCF5206E_CACR_DBWE  (0x00000100) /* Default Buffered Write Enable */
0041 #define MCF5206E_CACR_DWP   (0x00000020) /* Default Write Protection */
0042 #define MCF5206E_CACR_CLNF  (0x00000003) /* Cache Line Fill */
0043 
0044 /* ACR0, ACR1 - Access Control Registers */
0045 #define MCF5206E_ACR_AB     (0xff000000) /* Address Base */
0046 #define MCF5206E_ACR_AB_S   (24)
0047 #define MCF5206E_ACR_AM     (0x00ff0000) /* Address Mask */
0048 #define MCF5206E_ACR_AM_S   (16)
0049 #define MCF5206E_ACR_EN     (0x00008000) /* Enable ACR */
0050 #define MCF5206E_ACR_SM     (0x00006000) /* Supervisor Mode */
0051 #define MCF5206E_ACR_SM_USR (0x00000000) /* Match if user mode */
0052 #define MCF5206E_ACR_SM_SVR (0x00002000) /* Match if supervisor mode */
0053 #define MCF5206E_ACR_SM_ANY (0x00004000) /* Match Always */
0054 #define MCF5206E_ACR_CM     (0x00000040) /* Cache Mode (1 - noncacheable) */
0055 #define MCF5206E_ACR_BUFW   (0x00000020) /* Buffered Write Enable */
0056 #define MCF5206E_ACR_WP     (0x00000004) /* Write Protect */
0057 #define MCF5206E_ACR_BASE(base) ((base) & MCF5206E_ACR_AB)
0058 #define MCF5206E_ACR_MASK(mask) (((mask) >> 8) & MCF5206E_ACR_AM)
0059 
0060 /*** SRAM -- MCF5206e User's Manual, Chapter 5 ***/
0061 
0062 /* RAMBAR - SRAM Base Address Register */
0063 #define MCF5206E_RAMBAR_BA  (0xffffe000) /* SRAM Base Address */
0064 #define MCF5206E_RAMBAR_WP  (0x00000100) /* Write Protect */
0065 #define MCF5206E_RAMBAR_CI  (0x00000020) /* CPU Space mask */
0066 #define MCF5206E_RAMBAR_SC  (0x00000010) /* Supervisor Code Space Mask */
0067 #define MCF5206E_RAMBAR_SD  (0x00000008) /* Supervisor Data Space Mask */
0068 #define MCF5206E_RAMBAR_UC  (0x00000004) /* User Code Space Mask */
0069 #define MCF5206E_RAMBAR_UD  (0x00000002) /* User Data Space Mask */
0070 #define MCF5206E_RAMBAR_V   (0x00000001) /* Contents of RAMBAR are valid */
0071 
0072 /*** DMA Controller Module -- MCF5206e User's Manual, Chapter 7 ***/
0073 
0074 /* DMA Source Address Register */
0075 #define MCF5206E_SAR(mbar,chn) MCF5206E_REG32(mbar,0x200 + ((chn) * 0x40))
0076 
0077 /* DMA Destination Address Register */
0078 #define MCF5206E_DAR(mbar,chn) MCF5206E_REG32(mbar,0x204 + ((chn) * 0x40))
0079 
0080 /* DMA Byte Count Register */
0081 #define MCF5206E_BCR(mbar,chn) MCF5206E_REG16(mbar,0x20C + ((chn) * 0x40))
0082 
0083 /* DMA Control Register */
0084 #define MCF5206E_DCR(mbar,chn) MCF5206E_REG16(mbar,0x208 + ((chn) * 0x40))
0085 #define MCF5206E_DCR_INT    (0x8000) /* Interrupt on completion of transfer */
0086 #define MCF5206E_DCR_EEXT   (0x4000) /* Enable External DMA Request */
0087 #define MCF5206E_DCR_CS     (0x2000) /* Cycle Steal */
0088 #define MCF5206E_DCR_AA     (0x1000) /* Auto Align */
0089 #define MCF5206E_DCR_BWC    (0x0E00) /* Bandwidth Control: */
0090 #define MCF5206E_DCR_BWC_DISABLE (0x0000) /* Bandwidth Control Disabled */
0091 #define MCF5206E_DCR_BWC_512     (0x0200) /* 512 bytes */
0092 #define MCF5206E_DCR_BWC_1024    (0x0400) /* 1024 bytes */
0093 #define MCF5206E_DCR_BWC_2048    (0x0600) /* 2048 bytes */
0094 #define MCF5206E_DCR_BWC_4096    (0x0800) /* 4096 bytes */
0095 #define MCF5206E_DCR_BWC_8192    (0x0A00) /* 8192 bytes */
0096 #define MCF5206E_DCR_BWC_16384   (0x0C00) /* 16384 bytes */
0097 #define MCF5206E_DCR_BWC_32768   (0x0E00) /* 32768 bytes */
0098 #define MCF5206E_DCR_SAA    (0x0100) /* Single Address Access */
0099 #define MCF5206E_DCR_S_RW   (0x0080) /* Single Address Access Read/Write Val */
0100 #define MCF5206E_DCR_SINC   (0x0040) /* Source Increment */
0101 #define MCF5206E_DCR_SSIZE  (0x0030) /* Source Size: */
0102 #define MCF5206E_DCR_SSIZE_LONG  (0x0000) /* Longword (4 bytes) */
0103 #define MCF5206E_DCR_SSIZE_BYTE  (0x0010) /* Byte */
0104 #define MCF5206E_DCR_SSIZE_WORD  (0x0020) /* Word (2 bytes) */
0105 #define MCF5206E_DCR_SSIZE_LINE  (0x0030) /* Line (16 bytes) */
0106 #define MCF5206E_DCR_DINC   (0x0008) /* Destination Increment */
0107 #define MCF5206E_DCR_DSIZE  (0x0006) /* Destination Size: */
0108 #define MCF5206E_DCR_DSIZE_LONG  (0x0000) /* Longword (4 bytes) */
0109 #define MCF5206E_DCR_DSIZE_BYTE  (0x0002) /* Byte */
0110 #define MCF5206E_DCR_DSIZE_WORD  (0x0004) /* Word (2 bytes) */
0111 #define MCF5206E_DCR_DSIZE_LINE  (0x0006) /* Line (16 bytes) */
0112 #define MCF5206E_DCR_START  (0x0001) /* Start Transfer */
0113 
0114 /* DMA Status Register */
0115 #define MCF5206E_DSR(mbar,chn) MCF5206E_REG8(mbar,0x210 + ((chn) * 0x40))
0116 #define MCF5206E_DSR_CE     (0x40) /* Configuration Error has occured */
0117 #define MCF5206E_DSR_BES    (0x20) /* Bus Error on Source */
0118 #define MCF5206E_DSR_BED    (0x10) /* Bus Error on Destination */
0119 #define MCF5206E_DSR_REQ    (0x04) /* Request */
0120 #define MCF5206E_DSR_BSY    (0x02) /* Busy */
0121 #define MCF5206E_DSR_DONE   (0x01) /* Transaction Done */
0122 
0123 /* DMA Interrupt Vector Register */
0124 #define MCF5206E_DIVR(mbar,chn) MCF5206E_REG8(mbar,0x214 + ((chn) * 0x40))
0125 
0126 
0127 /*** System Integration Module -- MCF5206e User's Manual, Chapter 8 ***/
0128 
0129 /* MBAR - Module Base Address Register */
0130 #define MCF5206E_MBAR_BA  (0xFFFFFC00) /* Base Address */
0131 #define MCF5206E_MBAR_SC  (0x00000010) /* Supervisor Code Space Mask */
0132 #define MCF5206E_MBAR_SD  (0x00000008) /* Supervisor Data Space Mask */
0133 #define MCF5206E_MBAR_UC  (0x00000004) /* User Code Space Mask */
0134 #define MCF5206E_MBAR_UD  (0x00000002) /* User Data Space Mask */
0135 #define MCF5206E_MBAR_V   (0x00000001) /* Contents of MBAR are valid */
0136 
0137 /* SIM Configuration Register */
0138 #define MCF5206E_SIMR(mbar) MCF5206E_REG8(mbar,0x003)
0139 #define MCF5206E_SIMR_FRZ1 (0x80)  /* Disable Soft Wdog Timer when FREEZE */
0140 #define MCF5206E_SIMR_FRZ0 (0x40)  /* Disable Bus Timeout monitor when FREEZE*/
0141 #define MCF5206E_SIMR_BL   (0x01)  /* Bus Lock Enable */
0142 
0143 /* Interrupt numbers assignment */
0144 #define MCF5206E_INTR_EXT_IRQ1 (1)   /* External IRQ1 */
0145 #define MCF5206E_INTR_EXT_IPL1 (1)   /* External IPL1 */
0146 #define MCF5206E_INTR_EXT_IPL2 (2)   /* External IPL2 */
0147 #define MCF5206E_INTR_EXT_IPL3 (3)   /* External IPL3 */
0148 #define MCF5206E_INTR_EXT_IRQ4 (4)   /* External IRQ4 */
0149 #define MCF5206E_INTR_EXT_IPL4 (4)   /* External IPL4 */
0150 #define MCF5206E_INTR_EXT_IPL5 (5)   /* External IPL5 */
0151 #define MCF5206E_INTR_EXT_IPL6 (6)   /* External IPL6 */
0152 #define MCF5206E_INTR_EXT_IRQ7 (7)   /* External IRQ7 */
0153 #define MCF5206E_INTR_EXT_IPL7 (7)   /* External IPL7 */
0154 #define MCF5206E_INTR_SWT      (8)   /* Software Watchdog Timer */
0155 #define MCF5206E_INTR_TIMER_1  (9)   /* Timer 1 interrupt */
0156 #define MCF5206E_INTR_TIMER_2  (10)  /* Timer 2 interrupt */
0157 #define MCF5206E_INTR_MBUS     (11)  /* MBUS interrupt */
0158 #define MCF5206E_INTR_UART_1   (12)  /* UART 1 interrupt */
0159 #define MCF5206E_INTR_UART_2   (13)  /* UART 2 interrupt */
0160 #define MCF5206E_INTR_DMA_0    (14)  /* DMA channel 0 interrupt */
0161 #define MCF5206E_INTR_DMA_1    (15)  /* DMA channel 1 interrupt */
0162 
0163 #define MCF5206E_INTR_BIT(n) (1 << (n))
0164 
0165 /* Interrupt Control Registers (ICR1 - ICR15) */
0166 #define MCF5206E_ICR(mbar,n) MCF5206E_REG8(mbar,0x014 + (n) - 1)
0167 
0168 #define MCF5206E_ICR_AVEC (0x80) /* Autovector Enable */
0169 #define MCF5206E_ICR_IL   (0x1c) /* Interrupt Level */
0170 #define MCF5206E_ICR_IL_S (2)
0171 #define MCF5206E_ICR_IP   (0x03) /* Interrupt Priority */
0172 #define MCF5206E_ICR_IP_S (0)
0173 
0174 /* Interrupt Mask Register */
0175 #define MCF5206E_IMR(mbar) MCF5206E_REG16(mbar,0x036)
0176 
0177 /* Interrupt Pending Register */
0178 #define MCF5206E_IPR(mbar) MCF5206E_REG16(mbar,0x03a)
0179 
0180 /* Reset Status Register */
0181 #define MCF5206E_RSR(mbar) MCF5206E_REG8(mbar,0x040)
0182 #define MCF5206E_RSR_HRST  (0x80) /* Hard Reset or System Reset */
0183 #define MCF5206E_RSR_SWTR  (0x20) /* Software Watchdog Timer Reset */
0184 
0185 /* System Protection Control Register */
0186 #define MCF5206E_SYPCR(mbar) MCF5206E_REG8(mbar,0x041)
0187 #define MCF5206E_SYPCR_SWE   (0x80) /* Software Watchdog Enable */
0188 #define MCF5206E_SYPCR_SWRI  (0x40) /* Software Watchdog Reset/Interrupt Sel.*/
0189 #define MCF5206E_SYPCR_SWP   (0x20) /* Software Watchdog Prescaler */
0190 #define MCF5206E_SYPCR_SWT   (0x18) /* Software Watchdog Timing: */
0191 #define MCF5206E_SYPCR_SWT_S (3)
0192 #define MCF5206E_SYPCR_SWT_9   (0x00) /* timeout = (1<<9)/sysfreq */
0193 #define MCF5206E_SYPCR_SWT_11  (0x08) /* timeout = (1<<11)/sysfreq */
0194 #define MCF5206E_SYPCR_SWT_13  (0x10) /* timeout = (1<<13)/sysfreq */
0195 #define MCF5206E_SYPCR_SWT_15  (0x18) /* timeout = (1<<15)/sysfreq */
0196 #define MCF5206E_SYPCR_SWT_18  (0x20) /* timeout = (1<<18)/sysfreq */
0197 #define MCF5206E_SYPCR_SWT_20  (0x28) /* timeout = (1<<20)/sysfreq */
0198 #define MCF5206E_SYPCR_SWT_22  (0x30) /* timeout = (1<<22)/sysfreq */
0199 #define MCF5206E_SYPCR_SWT_24  (0x38) /* timeout = (1<<24)/sysfreq */
0200 #define MCF5206E_SYPCR_BME   (0x04) /* Bus Timeout Monitor Enable */
0201 #define MCF5206E_SYPCR_BMT   (0x03) /* Bus Monitor Timing: */
0202 #define MCF5206E_SYPCR_BMT_1024 (0x00) /* timeout 1024 system clocks */
0203 #define MCF5206E_SYPCR_BMT_512  (0x01) /* timeout 512 system clocks */
0204 #define MCF5206E_SYPCR_BMT_256  (0x02) /* timeout 256 system clocks */
0205 #define MCF5206E_SYPCR_BMT_128  (0x03) /* timeout 128 system clocks */
0206 
0207 /* Software Watchdog Interrupt Vector Register */
0208 #define MCF5206E_SWIVR(mbar) MCF5206E_REG8(mbar,0x042)
0209 
0210 /* Software Watchdog Service Register */
0211 #define MCF5206E_SWSR(mbar)  MCF5206E_REG8(mbar,0x043)
0212 #define MCF5206E_SWSR_KEY1 (0x55)
0213 #define MCF5206E_SWSR_KEY2 (0xAA)
0214 
0215 /* Pin Assignment Register */
0216 #define MCF5206E_PAR(mbar) MCF5206E_REG16(mbar,0x0CA)
0217 #define MCF5206E_PAR_PAR9          (0x200)
0218 #define MCF5206E_PAR_PAR9_TOUT     (0x000) /* Timer 0 output */
0219 #define MCF5206E_PAR_PAR9_DREQ1    (0x200) /* DMA channel 1 request */
0220 #define MCF5206E_PAR_PAR8          (0x100)
0221 #define MCF5206E_PAR_PAR8_TIN0     (0x000) /* Timer 1 input */
0222 #define MCF5206E_PAR_PAR8_DREQ0    (0x100) /* DMA channel 0 request */
0223 #define MCF5206E_PAR_PAR7          (0x080)
0224 #define MCF5206E_PAR_PAR7_RSTO     (0x000) /* Reset output */
0225 #define MCF5206E_PAR_PAR7_UART2    (0x080) /* UART 2 RTS output */
0226 #define MCF5206E_PAR_PAR6          (0x040)
0227 #define MCF5206E_PAR_PAR6_IRQ      (0x000) /* IRQ7, IRQ4, IRQ1 */
0228 #define MCF5206E_PAR_PAR6_IPL      (0x040) /* IPL2, IPL1, IPL0 */
0229 #define MCF5206E_PAR_PAR5          (0x020)
0230 #define MCF5206E_PAR_PAR5_GPIO     (0x000) /* General purpose I/O PP7-PP4 */
0231 #define MCF5206E_PAR_PAR5_PST      (0x020) /* BDM signals PST3-PST0 */
0232 #define MCF5206E_PAR_PAR4          (0x010)
0233 #define MCF5206E_PAR_PAR4_GPIO     (0x000) /* General purpose I/O PP3-PP0 */
0234 #define MCF5206E_PAR_PAR4_DDATA    (0x010) /* BDM signals DDATA3-DDATA0 */
0235 #define MCF5206E_PAR_PAR3          (0x008)
0236 #define MCF5206E_PAR_PAR2          (0x004)
0237 #define MCF5206E_PAR_PAR1          (0x002)
0238 #define MCF5206E_PAR_PAR0          (0x001)
0239 #define MCF5206E_PAR_WE0_WE1_WE2_WE3 (0x000)
0240 #define MCF5206E_PAR_WE0_WE1_CS5_CS4 (0x001)
0241 #define MCF5206E_PAR_WE0_WE1_CS5_A24 (0x002)
0242 #define MCF5206E_PAR_WE0_WE1_A25_A24 (0x003)
0243 #define MCF5206E_PAR_WE0_CS6_CS5_CS4 (0x004)
0244 #define MCF5206E_PAR_WE0_CS6_CS5_A24 (0x005)
0245 #define MCF5206E_PAR_WE0_CS6_A25_A24 (0x006)
0246 #define MCF5206E_PAR_WE0_A26_A25_A24 (0x007)
0247 #define MCF5206E_PAR_CS7_CS6_CS5_CS4 (0x008)
0248 #define MCF5206E_PAR_CS7_CS6_CS4_A24 (0x009)
0249 #define MCF5206E_PAR_CS7_CS6_A25_A24 (0x00A)
0250 #define MCF5206E_PAR_CS7_A26_A25_A24 (0x00B)
0251 #define MCF5206E_PAR_A27_A26_A25_A24 (0x00C)
0252 
0253 /* Bus Master Arbitration Control */
0254 #define MCF5206E_MARB(mbar) MCF5206E_REG8(mbar,0x007)
0255 #define MCF5206E_MARB_NOARB     (0x08) /* Arbiter operation disable */
0256 #define MCF5206E_MARB_ARBCTRL   (0x04) /* Arb. order: Internal DMA, Coldfire */
0257 
0258 /*** Chip Select Module -- MCF5206e User's Manual, Chapter 9 ***/
0259 
0260 /* Chip Select Address Register */
0261 #define MCF5206E_CSAR(mbar,bank) MCF5206E_REG16(mbar,0x064 + ((bank) * 12))
0262 
0263 /* Chip Select Mask Register */
0264 #define MCF5206E_CSMR(mbar,bank) MCF5206E_REG32(mbar,0x068 + ((bank) * 12))
0265 #define MCF5206E_CSMR_BAM (0xffff0000) /* Base Address Mask */
0266 #define MCF5206E_CSMR_BAM_S (16)
0267 #define MCF5206E_CSMR_MASK_256M  (0x0FFF0000)
0268 #define MCF5206E_CSMR_MASK_128M  (0x07FF0000)
0269 #define MCF5206E_CSMR_MASK_64M   (0x03FF0000)
0270 #define MCF5206E_CSMR_MASK_32M   (0x01FF0000)
0271 #define MCF5206E_CSMR_MASK_16M   (0x00FF0000)
0272 #define MCF5206E_CSMR_MASK_8M    (0x007F0000)
0273 #define MCF5206E_CSMR_MASK_4M    (0x003F0000)
0274 #define MCF5206E_CSMR_MASK_2M    (0x001F0000)
0275 #define MCF5206E_CSMR_MASK_1M    (0x000F0000)
0276 #define MCF5206E_CSMR_MASK_1024K (0x000F0000)
0277 #define MCF5206E_CSMR_MASK_512K  (0x00070000)
0278 #define MCF5206E_CSMR_MASK_256K  (0x00030000)
0279 #define MCF5206E_CSMR_MASK_128K  (0x00010000)
0280 #define MCF5206E_CSMR_MASK_64K   (0x00000000)
0281 #define MCF5206E_CSMR_CI  (0x00000020) /* CPU Space Mask (CSMR1 only) */
0282 #define MCF5206E_CSMR_SC  (0x00000010) /* Supervisor Code Space Mask */
0283 #define MCF5206E_CSMR_SD  (0x00000008) /* Supervisor Data Space Mask */
0284 #define MCF5206E_CSMR_UC  (0x00000004) /* User Code Space Mask */
0285 #define MCF5206E_CSMR_UD  (0x00000002) /* User Data Space Mask */
0286 
0287 /* Chip Select Control Register */
0288 #define MCF5206E_CSCR(mbar,bank) MCF5206E_REG16(mbar,0x6E + ((bank) * 12))
0289 #define MCF5206E_CSCR_WS    (0x3c00) /* Wait States */
0290 #define MCF5206E_CSCR_WS_S  (10)
0291 #define MCF5206E_CSCR_WS0   (0x0000) /* 0 Wait States */
0292 #define MCF5206E_CSCR_WS1   (0x0400) /* 1 Wait States */
0293 #define MCF5206E_CSCR_WS2   (0x0800) /* 2 Wait States */
0294 #define MCF5206E_CSCR_WS3   (0x0C00) /* 3 Wait States */
0295 #define MCF5206E_CSCR_WS4   (0x1000) /* 4 Wait States */
0296 #define MCF5206E_CSCR_WS5   (0x1400) /* 5 Wait States */
0297 #define MCF5206E_CSCR_WS6   (0x1800) /* 6 Wait States */
0298 #define MCF5206E_CSCR_WS7   (0x1C00) /* 7 Wait States */
0299 #define MCF5206E_CSCR_WS8   (0x2000) /* 8 Wait States */
0300 #define MCF5206E_CSCR_WS9   (0x2400) /* 9 Wait States */
0301 #define MCF5206E_CSCR_WS10  (0x2800) /* 10 Wait States */
0302 #define MCF5206E_CSCR_WS11  (0x2C00) /* 11 Wait States */
0303 #define MCF5206E_CSCR_WS12  (0x3000) /* 12 Wait States */
0304 #define MCF5206E_CSCR_WS13  (0x3400) /* 13 Wait States */
0305 #define MCF5206E_CSCR_WS14  (0x3800) /* 14 Wait States */
0306 #define MCF5206E_CSCR_WS15  (0x3C00) /* 15 Wait States */
0307 #define MCF5206E_CSCR_BRST  (0x0200) /* Burst Enable */
0308 #define MCF5206E_CSCR_AA    (0x0100) /* Coldfire Core Auto Acknowledge
0309                                         Enable */
0310 #define MCF5206E_CSCR_PS    (0x00C0) /* Port Size */
0311 #define MCF5206E_CSCR_PS_S  (6)
0312 #define MCF5206E_CSCR_PS_32 (0x0000) /* Port Size = 32 bits */
0313 #define MCF5206E_CSCR_PS_8  (0x0040) /* Port Size = 8 bits */
0314 #define MCF5206E_CSCR_PS_16 (0x0080) /* Port Size = 16 bits */
0315 #define MCF5206E_CSCR_EMAA  (0x0020) /* External Master Automatic Acknowledge
0316                                         Enable */
0317 #define MCF5206E_CSCR_ASET  (0x0010) /* Address Setup Enable */
0318 #define MCF5206E_CSCR_WRAH  (0x0008) /* Write Address Hold Enable */
0319 #define MCF5206E_CSCR_RDAH  (0x0004) /* Read Address Hold Enable */
0320 #define MCF5206E_CSCR_WR    (0x0002) /* Write Enable */
0321 #define MCF5206E_CSCR_RD    (0x0001) /* Read Enable */
0322 
0323 /* Default Memory Control Register */
0324 #define MCF5206E_DMCR(mbar) MCF5206E_REG16(mbar, 0x0C6)
0325 
0326 /*** Parallel Port (GPIO) Module -- MCF5206e User's Manual, Chapter 10 ***/
0327 
0328 /* Port A Data Direction Register */
0329 #define MCF5206E_PPDDR(mbar) MCF5206E_REG8(mbar,0x1C5)
0330 
0331 /* Port A Data Register */
0332 #define MCF5206E_PPDAT(mbar) MCF5206E_REG8(mbar,0x1C9)
0333 
0334 #define MCF5206E_PP_DAT0  (0x01)
0335 #define MCF5206E_PP_DAT1  (0x02)
0336 #define MCF5206E_PP_DAT2  (0x04)
0337 #define MCF5206E_PP_DAT3  (0x08)
0338 #define MCF5206E_PP_DAT4  (0x10)
0339 #define MCF5206E_PP_DAT5  (0x20)
0340 #define MCF5206E_PP_DAT6  (0x40)
0341 #define MCF5206E_PP_DAT7  (0x80)
0342 
0343 /*** DRAM Controller -- MCF5206e User's Manual, Chapter 11 ***/
0344 
0345 /* DRAM Controller Refresh Register */
0346 #define MCF5206E_DCRR(mbar) MCF5206E_REG16(mbar,0x046)
0347 
0348 /* DRAM Controller Timing Register */
0349 #define MCF5206E_DCTR(mbar) MCF5206E_REG16(mbar,0x04A)
0350 #define MCF5206E_DCTR_DAEM  (0x8000) /* Drive Multiplexed Address During
0351                                         External Master DRAM Transfers */
0352 #define MCF5206E_DCTR_EDO   (0x4000) /* Extended Data-Out Enable */
0353 #define MCF5206E_DCTR_RCD   (0x1000) /* RAS-to-CAS Delay Time */
0354 #define MCF5206E_DCTR_RSH   (0x0600) /* RAS Hold Time */
0355 #define MCF5206E_DCTR_RSH_0 (0x0000) /* See User's Manual for details */
0356 #define MCF5206E_DCTR_RSH_1 (0x0200)
0357 #define MCF5206E_DCTR_RSH_2 (0x0400)
0358 #define MCF5206E_DCTR_RP    (0x0060) /* RAS Precharge Time */
0359 #define MCF5206E_DCTR_RP_15 (0x0000) /* RAS Precharges for 1.5 system clks */
0360 #define MCF5206E_DCTR_RP_25 (0x0020) /* RAS Precharges for 2.5 system clks */
0361 #define MCF5206E_DCTR_RP_35 (0x0040) /* RAS Precharges for 3.5 system clks */
0362 #define MCF5206E_DCTR_CAS   (0x0008) /* Column Address Strobe Time */
0363 #define MCF5206E_DCTR_CP    (0x0002) /* CAS Precharge Time */
0364 #define MCF5206E_DCTR_CSR   (0x0001) /* CAS Setup Time for CAS before RAS
0365                                         refresh */
0366 
0367 /* DRAM Controller Address Registers */
0368 #define MCF5206E_DCAR(mbar,bank) MCF5206E_REG16(mbar,0x4C + ((bank) * 12))
0369 
0370 /* DRAM Controller Mask Registers */
0371 #define MCF5206E_DCMR(mbar,bank) MCF5206E_REG32(mbar,0x50 + ((bank) * 12))
0372 #define MCF5206E_DCMR_BAM (0xffff0000) /* Base Address Mask */
0373 #define MCF5206E_DCMR_BAM_S (16)
0374 #define MCF5206E_DCMR_MASK_256M  (0x0FFE0000)
0375 #define MCF5206E_DCMR_MASK_128M  (0x07FE0000)
0376 #define MCF5206E_DCMR_MASK_64M   (0x03FE0000)
0377 #define MCF5206E_DCMR_MASK_32M   (0x01FE0000)
0378 #define MCF5206E_DCMR_MASK_16M   (0x00FE0000)
0379 #define MCF5206E_DCMR_MASK_8M    (0x007E0000)
0380 #define MCF5206E_DCMR_MASK_4M    (0x003E0000)
0381 #define MCF5206E_DCMR_MASK_2M    (0x001E0000)
0382 #define MCF5206E_DCMR_MASK_1M    (0x000E0000)
0383 #define MCF5206E_DCMR_MASK_1024K (0x000E0000)
0384 #define MCF5206E_DCMR_MASK_512K  (0x00060000)
0385 #define MCF5206E_DCMR_MASK_256K  (0x00020000)
0386 #define MCF5206E_DCMR_MASK_128K  (0x00000000)
0387 #define MCF5206E_DCMR_SC  (0x00000010) /* Supervisor Code Space Mask */
0388 #define MCF5206E_DCMR_SD  (0x00000008) /* Supervisor Data Space Mask */
0389 #define MCF5206E_DCMR_UC  (0x00000004) /* User Code Space Mask */
0390 #define MCF5206E_DCMR_UD  (0x00000002) /* User Data Space Mask */
0391 
0392 /* DRAM Controller Control Register */
0393 #define MCF5206E_DCCR(mbar,bank) MCF5206E_REG8(mbar, 0x57 + ((bank) * 12))
0394 #define MCF5206E_DCCR_PS        (0xC0) /* Port Size */
0395 #define MCF5206E_DCCR_PS_32     (0x00) /* 32 bit Port Size */
0396 #define MCF5206E_DCCR_PS_8      (0x40) /* 8 bit Port Size */
0397 #define MCF5206E_DCCR_PS_16     (0x80) /* 16 bit Port Size */
0398 #define MCF5206E_DCCR_BPS       (0x30) /* Bank Page Size */
0399 #define MCF5206E_DCCR_BPS_512   (0x00) /* 512 Byte Page Size */
0400 #define MCF5206E_DCCR_BPS_1K    (0x10) /* 1 KByte Page Size */
0401 #define MCF5206E_DCCR_BPS_2K    (0x20) /* 2 KByte Page Size */
0402 #define MCF5206E_DCCR_PM        (0x0C) /* Page Mode Select */
0403 #define MCF5206E_DCCR_PM_NORMAL (0x00) /* Normal Mode */
0404 #define MCF5206E_DCCR_PM_BURSTP (0x04) /* Burst Page Mode */
0405 #define MCF5206E_DCCR_PM_FASTP  (0x0C) /* Fast Page Mode */
0406 #define MCF5206E_DCCR_WR        (0x02) /* Write Enable */
0407 #define MCF5206E_DCCR_RD        (0x01) /* Read Enable */
0408 
0409 /*** UART Module -- MCF5206e User's Manual, Chapter 12 ***/
0410 
0411 #define MCF5206E_UART_CHANNELS (2)
0412 /* UART Mode Register */
0413 #define MCF5206E_UMR(mbar,n) MCF5206E_REG8(mbar,0x140 + (((n)-1) * 0x40))
0414 #define MCF5206E_UMR1_RXRTS          (0x80) /* Receiver Request-to-Send
0415                                                Control */
0416 #define MCF5206E_UMR1_RXIRQ          (0x40) /* Receiver Interrupt Select */
0417 #define MCF5206E_UMR1_ERR            (0x20) /* Error Mode */
0418 #define MCF5206E_UMR1_PM             (0x1C) /* Parity Mode, Parity Type */
0419 #define MCF5206E_UMR1_PM_EVEN        (0x00) /* Even Parity */
0420 #define MCF5206E_UMR1_PM_ODD         (0x04) /* Odd Parity */
0421 #define MCF5206E_UMR1_PM_FORCE_LOW   (0x08) /* Force parity low */
0422 #define MCF5206E_UMR1_PM_FORCE_HIGH  (0x0C) /* Force parity high */
0423 #define MCF5206E_UMR1_PM_NO_PARITY   (0x10) /* No Parity */
0424 #define MCF5206E_UMR1_PM_MULTI_DATA  (0x18) /* Multidrop mode - data char */
0425 #define MCF5206E_UMR1_PM_MULTI_ADDR  (0x1C) /* Multidrop mode - addr char */
0426 #define MCF5206E_UMR1_BC             (0x03) /* Bits per Character */
0427 #define MCF5206E_UMR1_BC_5           (0x00) /* 5 bits per character */
0428 #define MCF5206E_UMR1_BC_6           (0x01) /* 6 bits per character */
0429 #define MCF5206E_UMR1_BC_7           (0x02) /* 7 bits per character */
0430 #define MCF5206E_UMR1_BC_8           (0x03) /* 8 bits per character */
0431 
0432 #define MCF5206E_UMR2_CM             (0xC0) /* Channel Mode */
0433 #define MCF5206E_UMR2_CM_NORMAL      (0x00) /* Normal Mode */
0434 #define MCF5206E_UMR2_CM_AUTO_ECHO   (0x40) /* Automatic Echo Mode */
0435 #define MCF5206E_UMR2_CM_LOCAL_LOOP  (0x80) /* Local Loopback Mode */
0436 #define MCF5206E_UMR2_CM_REMOTE_LOOP (0xC0) /* Remote Loopback Modde */
0437 #define MCF5206E_UMR2_TXRTS          (0x20) /* Transmitter Ready-to-Send op */
0438 #define MCF5206E_UMR2_TXCTS          (0x10) /* Transmitter Clear-to-Send op */
0439 #define MCF5206E_UMR2_SB             (0x0F) /* Stop Bit Length */
0440 #define MCF5206E_UMR2_SB_1           (0x07) /* 1 Stop Bit for 6-8 bits char */
0441 #define MCF5206E_UMR2_SB_15          (0x08) /* 1.5 Stop Bits for 6-8 bits chr*/
0442 #define MCF5206E_UMR2_SB_2           (0x0F) /* 2 Stop Bits for 6-8 bits char */
0443 #define MCF5206E_UMR2_SB5_1          (0x00) /* 1 Stop Bits for 5 bit char */
0444 #define MCF5206E_UMR2_SB5_15         (0x07) /* 1.5 Stop Bits for 5 bit char */
0445 #define MCF5206E_UMR2_SB5_2          (0x0F) /* 2 Stop Bits for 5 bit char */
0446 
0447 /* UART Status Register (read only) */
0448 #define MCF5206E_USR(mbar,n) MCF5206E_REG8(mbar,0x144 + (((n)-1) * 0x40))
0449 #define MCF5206E_USR_RB     (0x80) /* Received Break */
0450 #define MCF5206E_USR_FE     (0x40) /* Framing Error */
0451 #define MCF5206E_USR_PE     (0x20) /* Parity Error */
0452 #define MCF5206E_USR_OE     (0x10) /* Overrun Error */
0453 #define MCF5206E_USR_TXEMP  (0x08) /* Transmitter Empty */
0454 #define MCF5206E_USR_TXRDY  (0x04) /* Transmitter Ready */
0455 #define MCF5206E_USR_FFULL  (0x02) /* FIFO Full */
0456 #define MCF5206E_USR_RXRDY  (0x01) /* Receiver Ready */
0457 
0458 /* UART Clock Select Register (write only) */
0459 #define MCF5206E_UCSR(mbar,n) MCF5206E_REG8(mbar,0x144 + (((n)-1) * 0x40))
0460 #define MCF5206E_UCSR_RCS       (0xF0) /* Receiver Clock Select */
0461 #define MCF5206E_UCSR_RCS_TIMER (0xD0) /* Timer */
0462 #define MCF5206E_UCSR_RCS_EXT16 (0xE0) /* External clk x16 */
0463 #define MCF5206E_UCSR_RCS_EXT   (0xF0) /* External clk x1 */
0464 #define MCF5206E_UCSR_TCS       (0x0F) /* Transmitter Clock Select */
0465 #define MCF5206E_UCSR_TCS_TIMER (0x0D) /* Timer */
0466 #define MCF5206E_UCSR_TCS_EXT16 (0x0E) /* External clk x16 */
0467 #define MCF5206E_UCSR_TCS_EXT   (0x0F) /* External clk x1 */
0468 
0469 /* UART Command Register (write only) */
0470 #define MCF5206E_UCR(mbar,n) MCF5206E_REG8(mbar,0x148 + (((n)-1) * 0x40))
0471 #define MCF5206E_UCR_MISC            (0x70) /* Miscellaneous Commands: */
0472 #define MCF5206E_UCR_MISC_NOP        (0x00) /* No Command */
0473 #define MCF5206E_UCR_MISC_RESET_MR   (0x10) /* Reset Mode Register Ptr */
0474 #define MCF5206E_UCR_MISC_RESET_RX   (0x20) /* Reset Receiver */
0475 #define MCF5206E_UCR_MISC_RESET_TX   (0x30) /* Reset Transmitter */
0476 #define MCF5206E_UCR_MISC_RESET_ERR  (0x40) /* Reset Error Status */
0477 #define MCF5206E_UCR_MISC_RESET_BRK  (0x50) /* Reset Break-Change Interrupt */
0478 #define MCF5206E_UCR_MISC_START_BRK  (0x60) /* Start Break */
0479 #define MCF5206E_UCR_MISC_STOP_BRK   (0x70) /* Stop Break */
0480 #define MCF5206E_UCR_TC              (0x0C) /* Transmitter Commands: */
0481 #define MCF5206E_UCR_TC_NOP          (0x00) /* No Action Taken */
0482 #define MCF5206E_UCR_TC_ENABLE       (0x04) /* Transmitter Enable */
0483 #define MCF5206E_UCR_TC_DISABLE      (0x08) /* Transmitter Disable */
0484 #define MCF5206E_UCR_RC              (0x03) /* Receiver Commands: */
0485 #define MCF5206E_UCR_RC_NOP          (0x00) /* No Action Taken */
0486 #define MCF5206E_UCR_RC_ENABLE       (0x01) /* Receiver Enable */
0487 #define MCF5206E_UCR_RC_DISABLE      (0x02) /* Receiver Disable */
0488 
0489 /* UART Receive Buffer (read only) */
0490 #define MCF5206E_URB(mbar,n) MCF5206E_REG8(mbar,0x14C + (((n)-1) * 0x40))
0491 
0492 /* UART Transmit Buffer (write only) */
0493 #define MCF5206E_UTB(mbar,n) MCF5206E_REG8(mbar,0x14C + (((n)-1) * 0x40))
0494 
0495 /* UART Input Port Change Register (read only) */
0496 #define MCF5206E_UIPCR(mbar,n) MCF5206E_REG8(mbar,0x150 + (((n)-1) * 0x40))
0497 #define MCF5206E_UIPCR_COS   (0x10) /* Change of State at CTS input */
0498 #define MCF5206E_UIPCR_CTS   (0x01) /* Current State of CTS */
0499 
0500 /* UART Auxiliary Control Register (write only) */
0501 #define MCF5206E_UACR(mbar,n) MCF5206E_REG8(mbar,0x150 + (((n)-1) * 0x40))
0502 #define MCF5206E_UACR_IEC (0x01) /* Input Enable Control - generate interrupt
0503                                     on CTS change */
0504 
0505 /* UART Interrupt Status Register (read only) */
0506 #define MCF5206E_UISR(mbar,n) MCF5206E_REG8(mbar,0x154 + (((n)-1) * 0x40))
0507 #define MCF5206E_UISR_COS   (0x80) /* Change of State has occured at CTS */
0508 #define MCF5206E_UISR_DB    (0x04) /* Delta Break */
0509 #define MCF5206E_UISR_RXRDY (0x02) /* Receiver Ready or FIFO Full */
0510 #define MCF5206E_UISR_TXRDY (0x01) /* Transmitter Ready */
0511 
0512 /* UART Interrupt Mask Register (write only) */
0513 #define MCF5206E_UIMR(mbar,n) MCF5206E_REG8(mbar,0x154 + (((n)-1) * 0x40))
0514 #define MCF5206E_UIMR_COS   (0x80) /* Change of State interrupt enable */
0515 #define MCF5206E_UIMR_DB    (0x04) /* Delta Break interrupt enable */
0516 #define MCF5206E_UIMR_FFULL (0x02) /* FIFO Full interrupt enable */
0517 #define MCF5206E_UIMR_TXRDY (0x01) /* Transmitter Ready Interrupt enable */
0518 
0519 /* UART Baud Rate Generator Prescale MSB Register */
0520 #define MCF5206E_UBG1(mbar,n) MCF5206E_REG8(mbar,0x158 + (((n)-1) * 0x40))
0521 
0522 /* UART Baud Rate Generator Prescale LSB Register */
0523 #define MCF5206E_UBG2(mbar,n) MCF5206E_REG8(mbar,0x15C + (((n)-1) * 0x40))
0524 
0525 /* UART Interrupt Vector Register */
0526 #define MCF5206E_UIVR(mbar,n) MCF5206E_REG8(mbar,0x170 + (((n)-1) * 0x40))
0527 
0528 /* UART Input Port Register (read only) */
0529 #define MCF5206E_UIP(mbar,n) MCF5206E_REG8(mbar,0x174 + (((n)-1) * 0x40))
0530 #define MCF5206E_UIP_CTS  (0x01) /* Current state of CTS input */
0531 
0532 /* UART Output Port Bit Set Command (address-triggered command, write) */
0533 #define MCF5206E_UOP1(mbar,n) MCF5206E_REG8(mbar,0x178 + (((n)-1) * 0x40))
0534 
0535 /* UART Output Port Bit Reset Command (address-triggered command, write */
0536 #define MCF5206E_UOP0(mbar,n) MCF5206E_REG8(mbar,0x17C + (((n)-1) * 0x40))
0537 
0538 /*** M-BUS (I2C) Module -- MCF5206e User's Manual, Chapter 13 ***/
0539 
0540 /* M-Bus Address Register */
0541 #define MCF5206E_MADR(mbar) MCF5206E_REG8(mbar, 0x1E0)
0542 
0543 /* M-Bus Frequency Divider Register */
0544 #define MCF5206E_MFDR(mbar) MCF5206E_REG8(mbar, 0x1E4)
0545 
0546 /* M-Bus Control Register */
0547 #define MCF5206E_MBCR(mbar) MCF5206E_REG8(mbar, 0x1E8)
0548 #define MCF5206E_MBCR_MEN    (0x80) /* M-Bus Enable */
0549 #define MCF5206E_MBCR_MIEN   (0x40) /* M-Bus Interrupt Enable */
0550 #define MCF5206E_MBCR_MSTA   (0x20) /* Master Mode Selection */
0551 #define MCF5206E_MBCR_MTX    (0x10) /* Transmit Mode Selection */
0552 #define MCF5206E_MBCR_TXAK   (0x08) /* Transmit Acknowledge Enable */
0553 #define MCF5206E_MBCR_RSTA   (0x04) /* Repeat Start */
0554 
0555 /* M-Bus Status Register */
0556 #define MCF5206E_MBSR(mbar) MCF5206E_REG8(mbar, 0x1EC)
0557 #define MCF5206E_MBSR_MCF    (0x80) /* Data Transferring Bit */
0558 #define MCF5206E_MBSR_MAAS   (0x40) /* Addressed as a Slave Bit */
0559 #define MCF5206E_MBSR_MBB    (0x20) /* Bus Busy Bit */
0560 #define MCF5206E_MBSR_MAL    (0x10) /* Arbitration Lost */
0561 #define MCF5206E_MBSR_SRW    (0x04) /* Slave Read/Write */
0562 #define MCF5206E_MBSR_MIF    (0x02) /* MBus Interrupt pending */
0563 #define MCF5206E_MBSR_RXAK   (0x01) /* Received Acknowledge */
0564 
0565 /* M-Bus Data I/O Register */
0566 #define MCF5206E_MBDR(mbar) MCF5206E_REG8(mbar, 0x1F0)
0567 
0568 /*** Timer Module -- MCF5206e User's Manual, Chapter 14 ***/
0569 
0570 /* Timer Mode Register */
0571 #define MCF5206E_TMR(mbar,n) MCF5206E_REG16(mbar, 0x100 + (((n)-1)*0x20))
0572 #define MCF5206E_TMR_PS          (0xFF00) /* Prescaler Value */
0573 #define MCF5206E_TMR_PS_S        (8)
0574 #define MCF5206E_TMR_CE          (0x00C0) /* Capture Edge and Enable
0575                                              Interrupt */
0576 #define MCF5206E_TMR_CE_ANY      (0x00C0) /* Capture on any edge */
0577 #define MCF5206E_TMR_CE_FALL     (0x0080) /* Capture on falling edge only */
0578 #define MCF5206E_TMR_CE_RISE     (0x0040) /* Capture on rising edge only */
0579 #define MCF5206E_TMR_CE_NONE     (0x0000) /* Disable Interrupt on capture
0580                                              event */
0581 #define MCF5206E_TMR_OM          (0x0020) /* Output Mode - Toggle output */
0582 #define MCF5206E_TMR_ORI         (0x0010) /* Output Reference Interrupt
0583                                              Enable */
0584 #define MCF5206E_TMR_FRR         (0x0008) /* Free Run/Restart */
0585 #define MCF5206E_TMR_ICLK        (0x0006) /* Input Clock Source */
0586 #define MCF5206E_TMR_ICLK_TIN    (0x0006) /* TIN pin (falling edge) */
0587 #define MCF5206E_TMR_ICLK_DIV16  (0x0004) /* Master system clock divided
0588                                              by 16 */
0589 #define MCF5206E_TMR_ICLK_MSCLK  (0x0002) /* Master System Clock */
0590 #define MCF5206E_TMR_ICLK_STOP   (0x0000) /* Stops counter */
0591 #define MCF5206E_TMR_RST         (0x0001) /* Reset/Enable Timer */
0592 
0593 /* Timer Reference Register */
0594 #define MCF5206E_TRR(mbar,n) MCF5206E_REG16(mbar, 0x104 + (((n)-1)*0x20))
0595 
0596 /* Timer Capture Register */
0597 #define MCF5206E_TCR(mbar,n) MCF5206E_REG16(mbar, 0x108 + (((n)-1)*0x20))
0598 
0599 /* Timer Counter Register */
0600 #define MCF5206E_TCN(mbar,n) MCF5206E_REG16(mbar, 0x10C + (((n)-1)*0x20))
0601 
0602 /* Timer Event Register */
0603 #define MCF5206E_TER(mbar,n) MCF5206E_REG8(mbar, 0x111 + (((n)-1)*0x20))
0604 #define MCF5206E_TER_REF  (0x02) /* Output Reference Event */
0605 #define MCF5206E_TER_CAP  (0x01) /* Capture Event */
0606 
0607 
0608 
0609 #endif