/* * Hardware register defines for Elvees NVCom-01 microcontroller. * * Copyright (C) 2010 Serge Vakulenko, * * This file is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. * * You can redistribute this file and/or modify it under the terms of the GNU * General Public License (GPL) as published by the Free Software Foundation; * either version 2 of the License, or (at your discretion) any later version. * See the accompanying file "COPYING.txt" for more details. * * As a special exception to the GPL, permission is granted for additional * uses of the text contained in this file. See the accompanying file * "COPY-UOS.txt" for details. */ #ifndef _IO_MCT06_H #define _IO_MCT06_H #define MC_BASE_ADDR 0xB82F0000 #define MC_R(a) *(volatile unsigned*)(MC_BASE_ADDR + (a)) #define MC_A(a) (MC_BASE_ADDR + (a)) #define DMA_MEM_CH0_BASE 0x0000 /* + */ #define DMA_MEM_CH1_BASE 0x0400 /* + */ #define MPORT_BASE 0x1000 /* + */ #define UART_BASE 0x3000 /* + */ #define CSR_BASE 0x4000 /* + */ #define Hm_CRAM_BASE 0x4400 #define Hm_ICACHE_BASE 0x4800 #define Hm_DCACHE_BASE 0x4C00 #define IT0_BASE 0x5000 /* + */ #define WDT_BASE 0x5010 /* + */ #define IT1_BASE 0x5020 /* + */ #define IT2_BASE 0x5040 /* + */ #define SPFMIC0_BASE 0x7000 #define DMA_SPFMIC0_BASE 0x7800 #define SPFMIC1_BASE 0x8000 #define DMA_SPFMIC1_BASE 0x8800 #define SWIC0_BASE 0x9000 #define SWIC1_BASE 0xA000 #define DMA_SWIC01_BASE 0xA800 #define SWIC2_BASE 0xB000 #define SWIC3_BASE 0xC000 #define DMA_SWIC23_BASE 0xC800 #define EMAC0_BASE 0xD000 #define DMA_EMAC0_BASE 0xD800 #define EMAC1_BASE 0xE000 #define DMA_EMAC1_BASE 0xE800 #define MC_BASE1_ADDR 0xB8300000 #define MC_R1(a) *(volatile unsigned*)(MC_BASE1_ADDR + (a)) #define MC_A1(a) (MC_BASE1_ADDR + (a)) #define ARINC429_BASE 0x0000 #define DMA_ARINC429_BASE 0x1000 #define BIC01553_BASE 0x1800 #define BIC11553_BASE 0x2800 #define MFBSP0_BASE 0x3800 #define MFBSP1_BASE 0x4000 #define DMA_MFBSP_BASE 0x4800 #define CANBIC0_BASE 0x5000 #define CANBIC1_BASE 0x6000 #define DSP0_BASE 0xB8480000 #define DSP1_BASE 0xB8880000 /* * Регистры DMA MEM(0-7) CH0 */ #define MC_CSR_MEM(n) MC_R (DMA_MEM_CH0_BASE + 0x0000+(n<<7)) /* Управление и состояние */ #define MC_CP_MEM(n) MC_R (DMA_MEM_CH0_BASE + 0x0004+(n<<7)) /* Указатель цепочки */ #define MC_IR0_MEM(n) MC_R (DMA_MEM_CH0_BASE + 0x0008+(n<<7)) /* Индекс "0" внешней памяти */ #define MC_IR1_MEM(n) MC_R (DMA_MEM_CH0_BASE + 0x000C+(n<<7)) /* Индекс "1" внешней памяти */ #define MC_OR_MEM(n) MC_R (DMA_MEM_CH0_BASE + 0x0010+(n<<7)) /* Смещение внешней памяти */ #define MC_Y_MEM(n) MC_R (DMA_MEM_CH0_BASE + 0x0014+(n<<7)) /* Параметры направления Y при двухмерной адресации */ #define MC_RUN_MEM(n) MC_R (DMA_MEM_CH0_BASE + 0x0018+(n<<7)) /* Управление состоянием бита RUN */ /* * Регистры DMA MEM(0-7) CH1 */ #define MC_CSR_MEM1(n) MC_R (DMA_MEM_CH1_BASE + 0x000+(n<<7)) /* Управление и состояние */ #define MC_CP_MEM1(n) MC_R (DMA_MEM_CH1_BASE + 0x004+(n<<7)) /* Указатель цепочки */ #define MC_IR0_MEM1(n) MC_R (DMA_MEM_CH1_BASE + 0x008+(n<<7)) /* Индекс "0" внешней памяти */ #define MC_IR1_MEM1(n) MC_R (DMA_MEM_CH1_BASE + 0x00C+(n<<7)) /* Индекс "1" внешней памяти */ #define MC_OR_MEM1(n) MC_R (DMA_MEM_CH1_BASE + 0x010+(n<<7)) /* Смещение внешней памяти */ #define MC_Y_MEM1(n) MC_R (DMA_MEM_CH1_BASE + 0x014+(n<<7)) /* Параметры направления Y при двухмерной адресации */ #define MC_RUN_MEM1(n) MC_R (DMA_MEM_CH1_BASE + 0x018+(n<<7)) /* Управление состоянием бита RUN */ /* * Регистры порта внешней памяти MPORT */ #define MC_CSCON0 MC_R (MPORT_BASE + 0x000) /* Регистр конфигурации 0 */ #define MC_CSCON1 MC_R (MPORT_BASE + 0x004) /* Регистр конфигурации 1 */ #define MC_CSCON2 MC_R (MPORT_BASE + 0x008) /* Регистр конфигурации 2 */ #define MC_CSCON3 MC_R (MPORT_BASE + 0x00C) /* Регистр конфигурации 3 */ #define MC_CSCON4 MC_R (MPORT_BASE + 0x010) /* Регистр конфигурации 4 */ #define MC_SDRCON MC_R (MPORT_BASE + 0x014) /* Регистр конфигурации памяти SDRAM */ #define MC_SDRTMR MC_R (MPORT_BASE + 0x018) /* Временные параметры памяти SDRAM */ #define MC_SDRCSR MC_R (MPORT_BASE + 0x01C) /* Управление режимами памяти SDRAM */ #define MC_FLY_WS MC_R (MPORT_BASE + 0x020) /* Доп. такты ожидания в режиме FLYBY */ #define MC_CSREXT MC_R (MPORT_BASE + 0x024) /* Регистр управления режимами контроля внешней памяти */ #define MC_AERROR_EXT MC_R (MPORT_BASE + 0x028) /* Регистр ошибок внешней памяти */ /* * Системные регистры */ #define MC_CRPLL MC_R (CSR_BASE + 0x000) /* Управление PLL */ #define MC_CLKEN MC_R (CSR_BASE + 0x004) /* Управление отключением частоты от устройств */ #define MC_CSR MC_R (CSR_BASE + 0x008) /* Управление и состояние */ #define MC_MASKR0 MC_R (CSR_BASE + 0x010) /* Регистр 0 маски прерываний */ #define MC_QSTR0 MC_R (CSR_BASE + 0x014) /* Регистр 0 запросов прерываний */ #define MC_MASKR1 MC_R (CSR_BASE + 0x018) /* Регистр 1 маски прерываний */ #define MC_QSTR1 MC_R (CSR_BASE + 0x01C) /* Регистр 1 запросов прерываний */ #define MC_MASKR2 MC_R (CSR_BASE + 0x020) /* Регистр 2 маски прерываний */ #define MC_QSTR2 MC_R (CSR_BASE + 0x024) /* Регистр 2 запросов прерываний */ #define MC_MASKR3 MC_R (CSR_BASE + 0x028) /* Регистр 3 маски прерываний */ #define MC_QSTR3 MC_R (CSR_BASE + 0x02c) /* Регистр 3 запросов прерываний */ #define MC_IRQM MC_R (CSR_BASE + 0x030) /* Режимы внешних прерываний nIRQ[3:0] */ #define MC_MASKR4 MC_R (CSR_BASE + 0x034) /* Регистр 4 маски прерываний */ #define MC_QSTR4 MC_R (CSR_BASE + 0x038) /* Регистр 4 запросов прерываний */ #define MC_RST_PROG MC_R (CSR_BASE + 0x03c) /* Регистр программного сброса портов */ #define MC_AXI_RND MC_R (CSR_BASE + 0x04C) /* Регистр управления приоритета доступа контроллеров DMA */ /* * Регистры UART0 */ #define MC_UART0_BASE MC_A (UART_BASE) #define MC_RBR MC_R (UART_BASE) /* Приемный буферный регистр */ #define MC_THR MC_R (UART_BASE) /* Передающий буферный регистр */ #define MC_IER MC_R (UART_BASE + 0x004) /* Регистр разрешения прерываний */ #define MC_IIR MC_R (UART_BASE + 0x008) /* Регистр идентификации прерывания */ #define MC_FCR MC_R (UART_BASE + 0x008) /* Регистр управления FIFO */ #define MC_LCR MC_R (UART_BASE + 0x00C) /* Регистр управления линией */ #define MC_MCR MC_R (UART_BASE + 0x010) /* Регистр управления модемом */ #define MC_LSR MC_R (UART_BASE + 0x014) /* Регистр состояния линии */ #define MC_MSR MC_R (UART_BASE + 0x018) /* Регистр состояния модемом */ #define MC_SPR MC_R (UART_BASE + 0x01C) /* Регистр Scratch Pad */ #define MC_DLL MC_R (UART_BASE + 0x000) /* Регистр делителя младший */ #define MC_DLM MC_R (UART_BASE + 0x004) /* Регистр делителя старший */ #define MC_SCLR MC_R (UART_BASE + 0x014) /* Регистр предделителя (scaler) */ /* * Регистры интервального таймера IT0, IT1 */ #define MC_ITCSR0 MC_R (0x5000) /* Управление */ #define MC_ITPERIOD0 MC_R (0x5004) /* Период работы таймера */ #define MC_ITCOUNT0 MC_R (0x5008) /* Счетчик */ #define MC_ITSCALE0 MC_R (0x500C) /* Предделитель */ #define MC_ITCSR1 MC_R (0x5020) /* Управление */ #define MC_ITPERIOD1 MC_R (0x5024) /* Период работы таймера */ #define MC_ITCOUNT1 MC_R (0x5028) /* Счетчик */ #define MC_ITSCALE1 MC_R (0x502C) /* Предделитель */ /* * Регистры интервальных таймеров IT2 - IT15 */ #define MC_ITCSR(n) MC_R (0x5040+((n - 2) << 4)) /* Управление */ #define MC_ITPERIOD(n) MC_R (0x5044+((n - 2) << 4)) /* Период работы таймера */ #define MC_ITCOUNT(n) MC_R (0x5048+((n - 2) << 4)) /* Счетчик */ #define MC_ITSCALE(n) MC_R (0x504C+((n - 2) << 4)) /* Предделитель */ /* * Регистры WDT */ #define MC_WTCSR MC_R (WDT_BASE) /* Управление */ #define MC_WTPERIOD MC_R (WDT_BASE + 0x04) /* Период работы таймера */ #define MC_WTCOUNT MC_R (WDT_BASE + 0x08) /* Счетчик */ #define MC_WTSCALE MC_R (WDT_BASE + 0x0C) /* Предделитель */ /* * Регистры Ethernet MAC0 */ #define MC_EMAC0_MODE_CSR MC_R(EMAC0_BASE) /* MODE Control and Status Register */ #define MC_EMAC0_MAC_CSR MC_R(EMAC0_BASE+4) /* MAC Control and Status Register */ #define MC_EMAC0_MD_MODE MC_R(EMAC0_BASE+8) /* Регистр режима работы порта MD */ #define MC_EMAC0_MD_CONTROL MC_R(EMAC0_BASE+0x0C) /* Регистр управления портом MD */ #define MC_EMAC0_MD_STATUS MC_R(EMAC0_BASE+0x10) /* Регистр статуса порта MD */ #define MC_EMAC0_SRC_ADDR1 MC_R(EMAC0_BASE+0x14) /* Source Address part 1 */ #define MC_EMAC0_SRC_ADDR2 MC_R(EMAC0_BASE+0x18) /* Source Address part 2 */ #define MC_EMAC0_DST_ADDR1 MC_R(EMAC0_BASE+0x1C) /* Destination address part 1 */ #define MC_EMAC0_DST_ADDR2 MC_R(EMAC0_BASE+0x20) /* Destination address part 2 */ #define MC_EMAC0_TYPE MC_R(EMAC0_BASE+0x24) /* Регистр TYPE */ #define MC_EMAC0_LEN_BRD_RX MC_R(EMAC0_BASE+0x28) /* Регистр ограничения длины кадра на прием */ #define MC_EMAC0_IFS_COLL_MODE MC_R(EMAC0_BASE+0x2C) /* Регистр IFS и режима обработки коллизий */ #define MC_EMAC0_UC_ADDR1 MC_R(EMAC0_BASE+0x30) /* Регистр младшей части уникального адреса MAC */ #define MC_EMAC0_UC_ADDR2 MC_R(EMAC0_BASE+0x34) /* Регистр старшей части уникального адреса MAC */ #define MC_EMAC0_MC_ADDR1 MC_R(EMAC0_BASE+0x38) /* Регистр младшей части группового адреса MAC */ #define MC_EMAC0_MC_ADDR2 MC_R(EMAC0_BASE+0x3C) /* Регистр старшей части группового адреса адреса MAC */ #define MC_EMAC0_MC_ADDR_MSK1 MC_R(EMAC0_BASE+0x40) /* Регистр младшей части маски группового адреса MAC */ #define MC_EMAC0_MC_ADDR_MSK2 MC_R(EMAC0_BASE+0x44) /* Регистр старшей части маски группового адреса MAC */ #define MC_EMAC0_HASH_TABLE1 MC_R(EMAC0_BASE+0x48) /* Регистр младшей части хэш-таблицы */ #define MC_EMAC0_HASH_TABLE2 MC_R(EMAC0_BASE+0x4C) /* Регистр старшей части хэш-таблицы */ #define MC_EMAC0_AFDX_ADDR MC_R(EMAC0_BASE+0x50) /* Регистр отображает часть MAC адреса, не содержащую VL */ #define MC_EMAC0_SND_FR_TIMER MC_R(EMAC0_BASE+0x54) /* Transmit Timer */ #define MC_EMAC0_TXB_CSR MC_R(EMAC0_BASE+0x58) /* Transmit Buffer Control and Status Register */ #define MC_EMAC0_RXB_CSR MC_R(EMAC0_BASE+0x5C) /* Receive Buffer Control and Status Register */ #define MC_EMAC0_INT_CSR MC_R(EMAC0_BASE+0x60) /* Interrupt Control and Status Register */ #define MC_EMAC0_TX_FRAME_CNT MC_R(EMAC0_BASE+0x64) /* Счетчик передаваемых кадров */ #define MC_EMAC0_TX_STATUS MC_R(EMAC0_BASE+0x68) /* Статус выполненной передачи */ #define MC_EMAC0_RX_FRAME_CNT MC_R(EMAC0_BASE+0x6C) /* Счетчик принятых кадров */ #define MC_EMAC0_RX_STATUS MC_R(EMAC0_BASE+0x70) /* Статус выполнения приема */ #define MC_EMAC0_RX_CTR MC_R(EMAC0_BASE+0x70) /* Receive Control Register */ #endif