Back to home page

LXR

 
 

    


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

0001 /**
0002  * @file
0003  * 
0004  * @ingroup lm32_milkymist
0005  *
0006  * @brief System configuration.
0007  */
0008 
0009 /*  system_conf.h
0010  *  Global System conf
0011  *
0012  *  Milkymist port of RTEMS
0013  *
0014  *  The license and distribution terms for this file may be
0015  *  found in the file LICENSE in this distribution or at
0016  *  http://www.rtems.org/license/LICENSE.
0017  *
0018  *  COPYRIGHT (c) 2010, 2011 Sebastien Bourdeauducq
0019  */
0020 
0021 #ifndef __SYSTEM_CONFIG_H_
0022 #define __SYSTEM_CONFIG_H_
0023 
0024 #define UART_BAUD_RATE          (115200)
0025 
0026 /* Clock frequency */
0027 #define MM_FREQUENCY            (0xe0001074)
0028 
0029 /* FML bridge */
0030 #define FMLBRG_FLUSH_BASE       (0xc8000000)
0031 #define FMLBRG_LINE_LENGTH      (32)
0032 #define FMLBRG_LINE_COUNT       (512)
0033 
0034 /* UART */
0035 #define MM_UART_RXTX            (0xe0000000)
0036 #define MM_UART_DIV             (0xe0000004)
0037 #define MM_UART_STAT            (0xe0000008)
0038 #define MM_UART_CTRL            (0xe000000c)
0039 
0040 #define UART_STAT_THRE          (0x1)
0041 #define UART_STAT_RX_EVT        (0x2)
0042 #define UART_STAT_TX_EVT        (0x4)
0043 
0044 #define UART_CTRL_RX_INT        (0x1)
0045 #define UART_CTRL_TX_INT        (0x2)
0046 #define UART_CTRL_THRU          (0x4)
0047 
0048 /* Timers */
0049 #define MM_TIMER1_COMPARE       (0xe0001024)
0050 #define MM_TIMER1_COUNTER       (0xe0001028)
0051 #define MM_TIMER1_CONTROL       (0xe0001020)
0052 
0053 #define MM_TIMER0_COMPARE       (0xe0001014)
0054 #define MM_TIMER0_COUNTER       (0xe0001018)
0055 #define MM_TIMER0_CONTROL       (0xe0001010)
0056 
0057 #define TIMER_ENABLE            (0x01)
0058 #define TIMER_AUTORESTART       (0x02)
0059 
0060 /* GPIO */
0061 #define MM_GPIO_IN              (0xe0001000)
0062 #define MM_GPIO_OUT             (0xe0001004)
0063 #define MM_GPIO_INTEN           (0xe0001008)
0064 
0065 #define GPIO_BTN1               (0x00000001)
0066 #define GPIO_BTN2               (0x00000002)
0067 #define GPIO_BTN3               (0x00000004)
0068 #define GPIO_PCBREV0            (0x00000008)
0069 #define GPIO_PCBREV1            (0x00000010)
0070 #define GPIO_PCBREV2            (0x00000020)
0071 #define GPIO_PCBREV3            (0x00000040)
0072 #define GPIO_LED1               (0x00000001)
0073 #define GPIO_LED2               (0x00000002)
0074 
0075 /* System ID and reset */
0076 #define MM_SYSTEM_ID            (0xe000107c)
0077 
0078 /* ICAP */
0079 #define MM_ICAP                 (0xe0001040)
0080 
0081 #define ICAP_READY              (0x01)
0082 #define ICAP_CE                 (0x10000)
0083 #define ICAP_WRITE              (0x20000)
0084 
0085 /* VGA */
0086 #define MM_VGA_RESET            (0xe0003000)
0087 
0088 #define MM_VGA_HRES             (0xe0003004)
0089 #define MM_VGA_HSYNC_START      (0xe0003008)
0090 #define MM_VGA_HSYNC_END        (0xe000300C)
0091 #define MM_VGA_HSCAN            (0xe0003010)
0092 
0093 #define MM_VGA_VRES             (0xe0003014)
0094 #define MM_VGA_VSYNC_START      (0xe0003018)
0095 #define MM_VGA_VSYNC_END        (0xe000301C)
0096 #define MM_VGA_VSCAN            (0xe0003020)
0097 
0098 #define MM_VGA_BASEADDRESS      (0xe0003024)
0099 #define MM_VGA_BASEADDRESS_ACT  (0xe0003028)
0100 
0101 #define MM_VGA_BURST_COUNT      (0xe000302C)
0102 
0103 #define MM_VGA_DDC              (0xe0003030)
0104 
0105 #define MM_VGA_CLKSEL           (0xe0003034)
0106 
0107 #define VGA_RESET               (0x01)
0108 #define VGA_DDC_SDAIN           (0x1)
0109 #define VGA_DDC_SDAOUT          (0x2)
0110 #define VGA_DDC_SDAOE           (0x4)
0111 #define VGA_DDC_SDC             (0x8)
0112 
0113 /* Ethernet */
0114 #define MM_MINIMAC_SETUP        (0xe0008000)
0115 #define MM_MINIMAC_MDIO         (0xe0008004)
0116 
0117 #define MM_MINIMAC_STATE0       (0xe0008008)
0118 #define MM_MINIMAC_COUNT0       (0xe000800C)
0119 #define MM_MINIMAC_STATE1       (0xe0008010)
0120 #define MM_MINIMAC_COUNT1       (0xe0008014)
0121 
0122 #define MM_MINIMAC_TXCOUNT      (0xe0008018)
0123 
0124 #define MINIMAC_RX0_BASE        (0xb0000000)
0125 #define MINIMAC_RX1_BASE        (0xb0000800)
0126 #define MINIMAC_TX_BASE         (0xb0001000)
0127 
0128 #define MINIMAC_SETUP_PHYRST    (0x1)
0129 
0130 #define MINIMAC_STATE_EMPTY     (0x0)
0131 #define MINIMAC_STATE_LOADED    (0x1)
0132 #define MINIMAC_STATE_PENDING   (0x2)
0133 
0134 /* AC97 */
0135 #define MM_AC97_CRCTL           (0xe0005000)
0136 
0137 #define AC97_CRCTL_RQEN         (0x01)
0138 #define AC97_CRCTL_WRITE        (0x02)
0139 
0140 #define MM_AC97_CRADDR          (0xe0005004)
0141 #define MM_AC97_CRDATAOUT       (0xe0005008)
0142 #define MM_AC97_CRDATAIN        (0xe000500C)
0143 
0144 #define MM_AC97_DCTL            (0xe0005010)
0145 #define MM_AC97_DADDRESS        (0xe0005014)
0146 #define MM_AC97_DREMAINING      (0xe0005018)
0147 
0148 #define MM_AC97_UCTL            (0xe0005020)
0149 #define MM_AC97_UADDRESS        (0xe0005024)
0150 #define MM_AC97_UREMAINING      (0xe0005028)
0151 
0152 #define AC97_SCTL_EN            (0x01)
0153 
0154 #define AC97_MAX_DMASIZE        (0x3fffc)
0155 
0156 /* SoftUSB */
0157 #define MM_SOFTUSB_CONTROL      (0xe000f000)
0158 
0159 #define SOFTUSB_CONTROL_RESET   (0x1)
0160 
0161 #define MM_SOFTUSB_PMEM_BASE    (0xa0000000)
0162 #define MM_SOFTUSB_DMEM_BASE    (0xa0020000)
0163 
0164 #define SOFTUSB_PMEM_SIZE       (1 << 13)
0165 #define SOFTUSB_DMEM_SIZE       (1 << 13)
0166 
0167 /* PFPU */
0168 #define MM_PFPU_CTL             (0xe0006000)
0169 #define PFPU_CTL_START          (0x01)
0170 #define PFPU_CTL_BUSY           (0x01)
0171 
0172 #define MM_PFPU_MESHBASE        (0xe0006004)
0173 #define MM_PFPU_HMESHLAST       (0xe0006008)
0174 #define MM_PFPU_VMESHLAST       (0xe000600C)
0175 
0176 #define MM_PFPU_CODEPAGE        (0xe0006010)
0177 
0178 #define MM_PFPU_DREGBASE        (0xe0006400)
0179 #define MM_PFPU_CODEBASE        (0xe0006800)
0180 
0181 #define PFPU_PAGESIZE           (512)
0182 #define PFPU_SPREG_COUNT        (2)
0183 #define PFPU_REG_X              (0)
0184 #define PFPU_REG_Y              (1)
0185 
0186 /* TMU */
0187 #define MM_TMU_CTL              (0xe0007000)
0188 #define TMU_CTL_START           (0x01)
0189 #define TMU_CTL_BUSY            (0x01)
0190 #define TMU_CTL_CHROMAKEY       (0x02)
0191 
0192 #define MM_TMU_HMESHLAST        (0xe0007004)
0193 #define MM_TMU_VMESHLAST        (0xe0007008)
0194 #define MM_TMU_BRIGHTNESS       (0xe000700C)
0195 #define MM_TMU_CHROMAKEY        (0xe0007010)
0196 
0197 #define MM_TMU_VERTICESADR      (0xe0007014)
0198 #define MM_TMU_TEXFBUF          (0xe0007018)
0199 #define MM_TMU_TEXHRES          (0xe000701C)
0200 #define MM_TMU_TEXVRES          (0xe0007020)
0201 #define MM_TMU_TEXHMASK         (0xe0007024)
0202 #define MM_TMU_TEXVMASK         (0xe0007028)
0203 
0204 #define MM_TMU_DSTFBUF          (0xe000702C)
0205 #define MM_TMU_DSTHRES          (0xe0007030)
0206 #define MM_TMU_DSTVRES          (0xe0007034)
0207 #define MM_TMU_DSTHOFFSET       (0xe0007038)
0208 #define MM_TMU_DSTVOFFSET       (0xe000703C)
0209 #define MM_TMU_DSTSQUAREW       (0xe0007040)
0210 #define MM_TMU_DSTSQUAREH       (0xe0007044)
0211 
0212 #define MM_TMU_ALPHA            (0xe0007048)
0213 
0214 /* Memory card */
0215 #define MM_MEMCARD_CLK2XDIV     (0xe0004000)
0216 
0217 #define MM_MEMCARD_ENABLE       (0xe0004004)
0218 
0219 #define MEMCARD_ENABLE_CMD_TX   (0x1)
0220 #define MEMCARD_ENABLE_CMD_RX   (0x2)
0221 #define MEMCARD_ENABLE_DAT_TX   (0x4)
0222 #define MEMCARD_ENABLE_DAT_RX   (0x8)
0223 
0224 #define MM_MEMCARD_PENDING      (0xe0004008)
0225 
0226 #define MEMCARD_PENDING_CMD_TX  (0x1)
0227 #define MEMCARD_PENDING_CMD_RX  (0x2)
0228 #define MEMCARD_PENDING_DAT_TX  (0x4)
0229 #define MEMCARD_PENDING_DAT_RX  (0x8)
0230 
0231 #define MM_MEMCARD_START        (0xe000400c)
0232 
0233 #define MEMCARD_START_CMD_RX    (0x1)
0234 #define MEMCARD_START_DAT_RX    (0x2)
0235 
0236 #define MM_MEMCARD_CMD          (0xe0004010)
0237 #define MM_MEMCARD_DAT          (0xe0004014)
0238 
0239 /* DMX */
0240 #define MM_DMX_TX(x)            (0xe000c000+4*(x))
0241 #define MM_DMX_THRU             (0xe000c800)
0242 #define MM_DMX_RX(x)            (0xe000d000+4*(x))
0243 
0244 /* MIDI */
0245 #define MM_MIDI_RXTX            (0xe000b000)
0246 #define MM_MIDI_DIV             (0xe000b004)
0247 #define MM_MIDI_STAT            (0xe000b008)
0248 #define MM_MIDI_CTRL            (0xe000b00c)
0249 
0250 #define MIDI_STAT_THRE          (0x1)
0251 #define MIDI_STAT_RX_EVT        (0x2)
0252 #define MIDI_STAT_TX_EVT        (0x4)
0253 
0254 #define MIDI_CTRL_RX_INT        (0x1)
0255 #define MIDI_CTRL_TX_INT        (0x2)
0256 #define MIDI_CTRL_THRU          (0x4)
0257 
0258 /* IR */
0259 #define MM_IR_RX                (0xe000e000)
0260 
0261 /* Video input */
0262 #define MM_BT656_I2C            (0xe000a000)
0263 #define MM_BT656_FILTERSTATUS   (0xe000a004)
0264 #define MM_BT656_BASE           (0xe000a008)
0265 #define MM_BT656_MAXBURSTS      (0xe000a00c)
0266 #define MM_BT656_DONEBURSTS     (0xe000a010)
0267 
0268 #define BT656_I2C_SDAIN         (0x1)
0269 #define BT656_I2C_SDAOUT        (0x2)
0270 #define BT656_I2C_SDAOE         (0x4)
0271 #define BT656_I2C_SDC           (0x8)
0272 
0273 #define BT656_FILTER_FIELD1     (0x1)
0274 #define BT656_FILTER_FIELD2     (0x2)
0275 #define BT656_FILTER_INFRAME    (0x4)
0276 
0277 /* Interrupts */
0278 #define MM_IRQ_UART             (0)
0279 #define MM_IRQ_GPIO             (1)
0280 #define MM_IRQ_TIMER0           (2)
0281 #define MM_IRQ_TIMER1           (3)
0282 #define MM_IRQ_AC97CRREQUEST    (4)
0283 #define MM_IRQ_AC97CRREPLY      (5)
0284 #define MM_IRQ_AC97DMAR         (6)
0285 #define MM_IRQ_AC97DMAW         (7)
0286 #define MM_IRQ_PFPU             (8)
0287 #define MM_IRQ_TMU              (9)
0288 #define MM_IRQ_ETHRX            (10)
0289 #define MM_IRQ_ETHTX            (11)
0290 #define MM_IRQ_VIDEOIN          (12)
0291 #define MM_IRQ_MIDI             (13)
0292 #define MM_IRQ_IR               (14)
0293 #define MM_IRQ_USB              (15)
0294 
0295 /* Flash layout */
0296 #define FLASH_BASE                      (0x80000000)
0297 
0298 #define FLASH_OFFSET_STANDBY_BITSTREAM  (0x80000000)
0299 
0300 #define FLASH_OFFSET_RESCUE_BITSTREAM   (0x800A0000)
0301 #define FLASH_OFFSET_RESCUE_BIOS        (0x80220000)
0302 #define FLASH_OFFSET_MAC_ADDRESS        (0x802200E0)
0303 #define FLASH_OFFSET_RESCUE_SPLASH      (0x80240000)
0304 #define FLASH_OFFSET_RESCUE_APP         (0x802E0000)
0305 
0306 #define FLASH_OFFSET_REGULAR_BITSTREAM  (0x806E0000)
0307 #define FLASH_OFFSET_REGULAR_BIOS       (0x80860000)
0308 #define FLASH_OFFSET_REGULAR_SPLASH     (0x80880000)
0309 #define FLASH_OFFSET_REGULAR_APP        (0x80920000)
0310 
0311 /* MMIO */
0312 #define MM_READ(reg) (*((volatile unsigned int *)(reg)))
0313 #define MM_WRITE(reg, val) *((volatile unsigned int *)(reg)) = val
0314 
0315 /* Flash partitions */
0316 
0317 #define FLASH_SECTOR_SIZE     (128*1024)
0318 
0319 #define FLASH_PARTITION_COUNT (5)
0320 
0321 #define FLASH_PARTITIONS { \
0322   { .start_address = 0x806E0000, .length = 0x0180000 }, \
0323   { .start_address = 0x80860000, .length = 0x0020000 }, \
0324   { .start_address = 0x80880000, .length = 0x00A0000 }, \
0325   { .start_address = 0x80920000, .length = 0x0400000 }, \
0326   { .start_address = 0x80D20000, .length = 0x12E0000 }, \
0327 }
0328 
0329 #endif /* __SYSTEM_CONFIG_H_ */