/* * 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_MCT04_H #define _IO_MCT04_H #define MC_BASE_ADDR 0xB82F0000 #define MC_R(a) *(volatile unsigned*)(MC_BASE_ADDR + (a)) #define MC_A(a) (MC_BASE_ADDR + (a)) /* * Регистры DMA MEM(0-7) */ #define MC_CSR_MEM(n) MC_R (0x0000+(n<<7)) /* Управление и состояние */ #define MC_CP_MEM(n) MC_R (0x0004+(n<<7)) /* Указатель цепочки */ #define MC_IR0_MEM(n) MC_R (0x0008+(n<<7)) /* Индекс "0" внешней памяти */ #define MC_IR1_MEM(n) MC_R (0x000C+(n<<7)) /* Индекс "1" внешней памяти */ #define MC_OR_MEM(n) MC_R (0x0010+(n<<7)) /* Смещение внешней памяти */ #define MC_Y_MEM(n) MC_R (0x0014+(n<<7)) /* Параметры направления Y при * двухмерной адресации */ #define MC_RUN_MEM(n) MC_R (0x0018+(n<<7)) /* Управление состоянием бита RUN */ /* * Регистры UART0 */ #define MC_UART0_BASE MC_A (0x3000) #define MC_RBR MC_R (0x3000) /* Приемный буферный регистр */ #define MC_THR MC_R (0x3000) /* Передающий буферный регистр */ #define MC_IER MC_R (0x3004) /* Регистр разрешения прерываний */ #define MC_IIR MC_R (0x3008) /* Регистр идентификации прерывания */ #define MC_FCR MC_R (0x3008) /* Регистр управления FIFO */ #define MC_LCR MC_R (0x300C) /* Регистр управления линией */ #define MC_MCR MC_R (0x3010) /* Регистр управления модемом */ #define MC_LSR MC_R (0x3014) /* Регистр состояния линии */ #define MC_MSR MC_R (0x3018) /* Регистр состояния модемом */ #define MC_SPR MC_R (0x301C) /* Регистр Scratch Pad */ #define MC_DLL MC_R (0x3000) /* Регистр делителя младший */ #define MC_DLM MC_R (0x3004) /* Регистр делителя старший */ #define MC_SCLR MC_R (0x3014) /* Регистр предделителя (scaler) */ /* * Регистры интервального таймера IT0, IT1 */ #define MC_ITCSR MC_R (0x2020) /* Управление */ #define MC_ITPERIOD MC_R (0x2024) /* Период работы таймера */ #define MC_ITCOUNT MC_R (0x2028) /* Счетчик */ #define MC_ITSCALE MC_R (0x202C) /* Предделитель */ #define MC_ITCSR1 MC_R (0x2000) /* Управление */ #define MC_ITPERIOD1 MC_R (0x2004) /* Период работы таймера */ #define MC_ITCOUNT1 MC_R (0x2008) /* Счетчик */ #define MC_ITSCALE1 MC_R (0x200C) /* Предделитель */ /* * Регистры SpaceWire(0,1) */ #define MC_SWIC_HW_VER(n) MC_R (0xA000 + ((n) << 11)) /* Регистр аппаратной версии контроллера */ #define MC_SWIC_STATUS(n) MC_R (0xA004 + ((n) << 11)) /* Регистр состояния */ #define MC_SWIC_RX_CODE(n) MC_R (0xA008 + ((n) << 11)) /* Регистр принятого управляющего символа */ #define MC_SWIC_MODE_CR(n) MC_R (0xA00C + ((n) << 11)) /* Регистр управления режимом работы */ #define MC_SWIC_TX_SPEED(n) MC_R (0xA010 + ((n) << 11)) /* Регистр управления скоростью передачи */ #define MC_SWIC_TX_CODE(n) MC_R (0xA014 + ((n) << 11)) /* Регистр передаваемого управляющего символа */ #define MC_SWIC_RX_SPEED(n) MC_R (0xA018 + ((n) << 11)) /* Регистр измерителя скорости приема */ #define MC_SWIC_CNT_RX_PACK(n) MC_R (0xA01C + ((n) << 11)) /* Регистр счетчика принятых пакетов ненулевой длины */ #define MC_SWIC_CNT_RX0_PACK(n) MC_R (0xA020 + ((n) << 11)) /* Регистр счетчика принятых пакетов нулевой длины */ #define MC_SWIC_ISR_L(n) MC_R (0xA024 + ((n) << 11)) /* Регистр кодов распределенных прерываний (младшая часть) */ #define MC_SWIC_ISR_H(n) MC_R (0xA028 + ((n) << 11)) /* Регистр кодов распределенных прерываний (старшая часть) */ #define MC_SWIC_TRUE_TIME(n) MC_R (0xA02C + ((n) << 11)) /* Регистр достоверного маркера времени */ #define MC_SWIC_TOUT_CODE(n) MC_R (0xA030 + ((n) << 11)) /* Регистр размера таймаутов */ #define MC_SWIC_ISR_tout_L(n) MC_R (0xA034 + ((n) << 11)) /* Младшие разряды регистра флагов таймаутов ISR */ #define MC_SWIC_ISR_tout_H(n) MC_R (0xA038 + ((n) << 11)) /* Старшие разряды регистра флагов таймаутов ISR */ #define MC_SWIC_LOG_ADDR(n) MC_R (0xA03C + ((n) << 11)) /* Регистр логического адреса */ /* * Регистры канала DMA записи в память дескрипторов принимаемых пакетов SWIC */ #define MC_SWIC_RX_DESC_CSR(n) MC_R (0xB000 + ((n) << 8)) /* Регистр управления и состояния канала */ #define MC_SWIC_RX_DESC_CP(n) MC_R (0xB004 + ((n) << 8)) /* Регистр указателя цепочки канала */ #define MC_SWIC_RX_DESC_IR(n) MC_R (0xB008 + ((n) << 8)) /* Индексный регистр внешней памяти канала */ #define MC_SWIC_RX_DESC_RUN(n) MC_R (0xB00C + ((n) << 8)) /* Псевдорегистр управления состоянием бита RUN */ /* * Регистры канала DMA записи в память принимаемых слов данных SWIC */ #define MC_SWIC_RX_DATA_CSR(n) MC_R (0xB040 + ((n) << 8)) /* Регистр управления и состояния канала */ #define MC_SWIC_RX_DATA_CP(n) MC_R (0xB044 + ((n) << 8)) /* Регистр указателя цепочки канала */ #define MC_SWIC_RX_DATA_IR(n) MC_R (0xB048 + ((n) << 8)) /* Индексный регистр внешней памяти канала */ #define MC_SWIC_RX_DATA_RUN(n) MC_R (0xB04C + ((n) << 8)) /* Псевдорегистр управления состоянием бита RUN */ /* * Регистры канала DMA чтения из памяти дескрипторов передаваемых пакетов SWIC */ #define MC_SWIC_TX_DESC_CSR(n) MC_R (0xB080 + ((n) << 8)) /* Регистр управления и состояния канала */ #define MC_SWIC_TX_DESC_CP(n) MC_R (0xB084 + ((n) << 8)) /* Регистр указателя цепочки канала */ #define MC_SWIC_TX_DESC_IR(n) MC_R (0xB088 + ((n) << 8)) /* Индексный регистр внешней памяти канала */ #define MC_SWIC_TX_DESC_RUN(n) MC_R (0xB08C + ((n) << 8)) /* Псевдорегистр управления состоянием бита RUN */ /* * Регистры канала DMA чтения из памяти передаваемых слов данных SWIC */ #define MC_SWIC_TX_DATA_CSR(n) MC_R (0xB0C0 + ((n) << 8)) /* Регистр управления и состояния канала */ #define MC_SWIC_TX_DATA_CP(n) MC_R (0xB0C4 + ((n) << 8)) /* Регистр указателя цепочки канала */ #define MC_SWIC_TX_DATA_IR(n) MC_R (0xB0C8 + ((n) << 8)) /* Индексный регистр внешней памяти канала */ #define MC_SWIC_TX_DATA_RUN(n) MC_R (0xB0CC + ((n) << 8)) /* Псевдорегистр управления состоянием бита RUN */ /* * Регистры NFC(0-7) */ #define MC_NFC_PACKET(n) MC_R (0xC000 + ((n) << 11)) #define MC_NFC_MEMADDR1(n) MC_R (0xC004 + ((n) << 11)) #define MC_NFC_MEMADDR2(n) MC_R (0xC008 + ((n) << 11)) #define MC_NFC_COMMAND(n) MC_R (0xC00C + ((n) << 11)) #define MC_NFC_PROGRAM(n) MC_R (0xC010 + ((n) << 11)) #define MC_NFC_INTERRUPT_STATUS_EN(n) MC_R (0xC014 + ((n) << 11)) #define MC_NFC_INTERRUPT_SIGNAL_EN(n) MC_R (0xC018 + ((n) << 11)) #define MC_NFC_INTERRUPT_STATUS_(n) MC_R (0xC01C + ((n) << 11)) #define MC_NFC_ID1(n) MC_R (0xC020 + ((n) << 11)) #define MC_NFC_ID2(n) MC_R (0xC024 + ((n) << 11)) #define MC_NFC_FLASH_STATUS(n) MC_R (0xC028 + ((n) << 11)) #define MC_NFC_TIMING(n) MC_R (0xC02C + ((n) << 11)) #define MC_NFC_BUFFER_DATA(n) MC_R (0xC030 + ((n) << 11)) #define MC_NFC_ECC(n) MC_R (0xC034 + ((n) << 11)) #define MC_NFC_ECC_ERROR_CNT(n) MC_R (0xC038 + ((n) << 11)) #define MC_NFC_ECC_SPARE_CMD(n) MC_R (0xC03C + ((n) << 11)) #define MC_NFC_ERROR_CNT_1BIT(n) MC_R (0xC040 + ((n) << 11)) #define MC_NFC_ERROR_CNT_2BIT(n) MC_R (0xC044 + ((n) << 11)) #define MC_NFC_ERROR_CNT_3BIT(n) MC_R (0xC048 + ((n) << 11)) #define MC_NFC_ERROR_CNT_4BIT(n) MC_R (0xC04C + ((n) << 11)) #define MC_NFC_DMA_ADDR(n) MC_R (0xC050 + ((n) << 11)) #define MC_NFC_DMA_BUFFER_BOUNDARY(n) MC_R (0xC054 + ((n) << 11)) #define MC_NFC_ERROR_COUNT_5BIT(n) MC_R (0xC05C + ((n) << 11)) #define MC_NFC_ERROR_COUNT_6BIT(n) MC_R (0xC060 + ((n) << 11)) #define MC_NFC_ERROR_COUNT_7BIT(n) MC_R (0xC064 + ((n) << 11)) #define MC_NFC_ERROR_COUNT_8BIT(n) MC_R (0xC068 + ((n) << 11)) #define MC_NFC_WRITE_PROTECT(n) MC_R (0xC06C + ((n) << 11)) /* * Регистры MFBSP */ #define MC_MFBSP_TX MC_R (0x3800) /* Буфер передачи данных */ #define MC_MFBSP_RX MC_R (0x3800) /* Буфер приема данных */ #define MC_MFBSP_CSR MC_R (0x3804) /* Управление и состояние */ #define MC_MFBSP_DIR MC_R (0x3808) /* Управление направлением * порта ввода-вывода */ #define MC_MFBSP_GPIO_DR MC_R (0x380C) /* Данные порта ввода-вывода */ #define MC_MFBSP_TCTR MC_R (0x3810) /* Управление передатчиком */ #define MC_MFBSP_RCTR MC_R (0x3814) /* Управление приёмником */ #define MC_MFBSP_TSR MC_R (0x3818) /* Состояние передатчика */ #define MC_MFBSP_RSR MC_R (0x381C) /* Состояние приёмника */ /* * Регистры DDR */ #define MC_DDR_CON MC_R (0x1014) /* Регистр конфигурации DDR */ #define MC_DDR_TMR MC_R (0x1018) /* Регистр параметров DDR */ #define MC_DDR_CSR MC_R (0x101C) /* Регистр управления и состояния */ #define MC_DDR_MOD MC_R (0x1020) /* Регистр режимов */ #define MC_DDR_EXT MC_R (0x1024) /* Регистр управления режимами контроля памяти */ #define MC_DDR_ERR MC_R (0x1028) /* Регистр ошибок памяти */ /* * Системные регистры */ #define MC_CRPLL MC_R (0x4000) /* Управление PLL */ #define MC_CLKEN MC_R (0x4004) /* Управление отключением частоты от устройств */ #define MC_CSR0 MC_R (0x4008) /* Управление и состояние 0 */ #define MC_CSR1 MC_R (0x4048) /* Управление и состояние 1 */ #define MC_BOOT MC_R (0x4034) #define MC_MASKR00 MC_R (0x4010) /* Маска прерываний */ #define MC_MASKR10 MC_R (0x4050) /* Маска прерываний */ #define MC_QSTR00 MC_R (0x4014) /* Запросы прерываний от IT, RTT, WDT, UART[3:0], nIRQ[3:0] */ #define MC_QSTR10 MC_R (0x4054) /* Запросы прерываний от IT, RTT, WDT, UART[3:0], nIRQ[3:0] */ #define MC_MASKR01 MC_R (0x4018) /* Маска прерываний от DMA MEM */ #define MC_MASKR11 MC_R (0x4058) /* Маска прерываний от DMA MEM */ #define MC_QSTR01 MC_R (0x401C) /* Запросы прерываний от DMA MEM */ #define MC_QSTR11 MC_R (0x405C) /* Запросы прерываний от DMA MEM */ #define MC_MASKR02 MC_R (0x4020) /* Маска прерываний от SWIC */ #define MC_MASKR12 MC_R (0x4060) /* Маска прерываний от SWIC */ #define MC_QSTR02 MC_R (0x4024) /* Запросы прерываний от SWIC */ #define MC_QSTR12 MC_R (0x4064) /* Запросы прерываний от SWIC */ #define MC_MASKR03 MC_R (0x4028) /* Маска прерываний от контроллера Хэмминга */ #define MC_MASKR13 MC_R (0x4068) /* Маска прерываний от контроллера Хэмминга */ #define MC_QSTR03 MC_R (0x402c) /* Запросы прерываний от контроллера Хэмминга */ #define MC_QSTR13 MC_R (0x406c) /* Запросы прерываний от контроллера Хэмминга */ #define MC_MASKR04 MC_R (0x4038) /* Маска прерываний от MFBSP */ #define MC_MASKR14 MC_R (0x4078) /* Маска прерываний от MFBSP */ #define MC_QSTR04 MC_R (0x403c) /* Запросы прерываний от MFBSP */ #define MC_QSTR14 MC_R (0x407c) /* Запросы прерываний от MFBSP */ #define MC_IRQM MC_R (0x4030) /* Режимы внешних прерываний nIRQ[3:0] */ /* * Регистры контроля по коду Хэмминга внутренней памяти CPU0 */ #define MC_CSR_CRAM00A MC_R (0x4400) /* Регистр управления и состояния CRAM0A */ #define MC_AERROR_CRAM00A MC_R (0x4404) /* FIFO ошибочных адресов CRAM0A */ #define MC_CSR_CRAM00B MC_R (0x4408) /* Регистр управления и состояния CRAM0B */ #define MC_AERROR_CRAM00B MC_R (0x440C) /* FIFO ошибочных адресов CRAM0B */ #define MC_CSR_CRAM01A MC_R (0x4410) /* Регистр управления и состояния CRAM1A */ #define MC_AERROR_CRAM01A MC_R (0x4414) /* FIFO ошибочных адресов CRAM1A */ #define MC_CSR_CRAM01B MC_R (0x4418) /* Регистр управления и состояния CRAM1B */ #define MC_AERROR_CRAM01B MC_R (0x441C) /* FIFO ошибочных адресов CRAM1B */ #define MC_CSR_CRAM02A MC_R (0x4420) /* Регистр управления и состояния CRAM2A */ #define MC_AERROR_CRAM02A MC_R (0x4424) /* FIFO ошибочных адресов CRAM2A */ #define MC_CSR_CRAM02B MC_R (0x4428) /* Регистр управления и состояния CRAM2B */ #define MC_AERROR_CRAM02B MC_R (0x442C) /* FIFO ошибочных адресов CRAM2B */ #define MC_CSR_CRAM03A MC_R (0x4430) /* Регистр управления и состояния CRAM3A */ #define MC_AERROR_CRAM03A MC_R (0x4434) /* FIFO ошибочных адресов CRAM3A */ #define MC_CSR_CRAM03B MC_R (0x4438) /* Регистр управления и состояния CRAM3B */ #define MC_AERROR_CRAM03B MC_R (0x443C) /* FIFO ошибочных адресов CRAM3B */ #define MC_CSR_ICACHE0 MC_R (0x4800) /* Регистр управления и состояния ICACHE */ #define MC_AERROR_ICACHE0 MC_R (0x4804) /* FIFO ошибочных адресов ICACHE */ #define MC_CSR_DCACHE0 MC_R (0x4C00) /* Регистр управления и состояния DCACHE */ #define MC_AERROR_DCACHE0 MC_R (0x4C04) /* FIFO ошибочных адресов DCACHE */ /* * Регистры контроля по коду Хэмминга внутренней памяти CPU1 */ #define MC_CSR_CRAM10A MC_R (0x5400) /* Регистр управления и состояния CRAM0A */ #define MC_AERROR_CRAM10A MC_R (0x5404) /* FIFO ошибочных адресов CRAM0A */ #define MC_CSR_CRAM10B MC_R (0x5408) /* Регистр управления и состояния CRAM0B */ #define MC_AERROR_CRAM10B MC_R (0x540C) /* FIFO ошибочных адресов CRAM0B */ #define MC_CSR_CRAM11A MC_R (0x5410) /* Регистр управления и состояния CRAM1A */ #define MC_AERROR_CRAM11A MC_R (0x5414) /* FIFO ошибочных адресов CRAM1A */ #define MC_CSR_CRAM11B MC_R (0x5418) /* Регистр управления и состояния CRAM1B */ #define MC_AERROR_CRAM11B MC_R (0x541C) /* FIFO ошибочных адресов CRAM1B */ #define MC_CSR_CRAM12A MC_R (0x5420) /* Регистр управления и состояния CRAM2A */ #define MC_AERROR_CRAM12A MC_R (0x5424) /* FIFO ошибочных адресов CRAM2A */ #define MC_CSR_CRAM12B MC_R (0x5428) /* Регистр управления и состояния CRAM2B */ #define MC_AERROR_CRAM12B MC_R (0x542C) /* FIFO ошибочных адресов CRAM2B */ #define MC_CSR_CRAM13A MC_R (0x5430) /* Регистр управления и состояния CRAM3A */ #define MC_AERROR_CRAM13A MC_R (0x5434) /* FIFO ошибочных адресов CRAM3A */ #define MC_CSR_CRAM13B MC_R (0x5438) /* Регистр управления и состояния CRAM3B */ #define MC_AERROR_CRAM13B MC_R (0x543C) /* FIFO ошибочных адресов CRAM3B */ #define MC_CSR_ICACHE1 MC_R (0x5800) /* Регистр управления и состояния ICACHE */ #define MC_AERROR_ICACHE1 MC_R (0x5804) /* FIFO ошибочных адресов ICACHE */ #define MC_CSR_DCACHE1 MC_R (0x5C00) /* Регистр управления и состояния DCACHE */ #define MC_AERROR_DCACHE1 MC_R (0x5C04) /* FIFO ошибочных адресов DCACHE */ /* * SpFr registers */ #define MC_SPFR_BASE MC_R (0x8000) /* * MAILBOX registers */ #define MC_MAILBOX_BASE MC_R (0x7000) /* * SPINLOCK registers */ #define MC_SPINLOCK_BASE MC_R(0x6000) #define MC_SOFTRESET MC_R (MC_SPINLOCK_BASE) #define MC_LOCK0 MC_R (MC_SPINLOCK_BASE + 0x800) #define MC_LOCK1 MC_R (MC_SPINLOCK_BASE + 0x800 + 4) #define MC_LOCK2 MC_R (MC_SPINLOCK_BASE + 0x800 + 8) #define MC_LOCK3 MC_R (MC_SPINLOCK_BASE + 0x800 + 0x0C) #define MC_LOCK4 MC_R (MC_SPINLOCK_BASE + 0x800 + 0x10) #define MC_LOCK5 MC_R (MC_SPINLOCK_BASE + 0x800 + 0x14) #define MC_LOCK6 MC_R (MC_SPINLOCK_BASE + 0x800 + 0x18) #define MC_LOCK7 MC_R (MC_SPINLOCK_BASE + 0x800 + 0x1C) #define MC_LOCK8 MC_R (MC_SPINLOCK_BASE + 0x800 + 0x20) #define MC_LOCK9 MC_R (MC_SPINLOCK_BASE + 0x800 + 0x24) #define MC_LOCK10 MC_R (MC_SPINLOCK_BASE + 0x800 + 0x28) #define MC_LOCK11 MC_R (MC_SPINLOCK_BASE + 0x800 + 0x2C) #define MC_LOCK12 MC_R (MC_SPINLOCK_BASE + 0x800 + 0x30) #define MC_LOCK13 MC_R (MC_SPINLOCK_BASE + 0x800 + 0x34) #define MC_LOCK14 MC_R (MC_SPINLOCK_BASE + 0x800 + 0x38) #define MC_LOCK15 MC_R (MC_SPINLOCK_BASE + 0x800 + 0x3C) #define MC_LOCK16 MC_R (MC_SPINLOCK_BASE + 0x800 + 0x40) #define MC_LOCK17 MC_R (MC_SPINLOCK_BASE + 0x800 + 0x44) #define MC_LOCK18 MC_R (MC_SPINLOCK_BASE + 0x800 + 0x48) #define MC_LOCK19 MC_R (MC_SPINLOCK_BASE + 0x800 + 0x4C) #define MC_LOCK20 MC_R (MC_SPINLOCK_BASE + 0x800 + 0x50) #define MC_LOCK21 MC_R (MC_SPINLOCK_BASE + 0x800 + 0x54) #define MC_LOCK22 MC_R (MC_SPINLOCK_BASE + 0x800 + 0x58) #define MC_LOCK23 MC_R (MC_SPINLOCK_BASE + 0x800 + 0x5C) #define MC_LOCK24 MC_R (MC_SPINLOCK_BASE + 0x800 + 0x60) #define MC_LOCK25 MC_R (MC_SPINLOCK_BASE + 0x800 + 0x64) #define MC_LOCK26 MC_R (MC_SPINLOCK_BASE + 0x800 + 0x68) #define MC_LOCK27 MC_R (MC_SPINLOCK_BASE + 0x800 + 0x6C) #define MC_LOCK28 MC_R (MC_SPINLOCK_BASE + 0x800 + 0x70) #define MC_LOCK29 MC_R (MC_SPINLOCK_BASE + 0x800 + 0x74) #define MC_LOCK30 MC_R (MC_SPINLOCK_BASE + 0x800 + 0x78) #define MC_LOCK31 MC_R (MC_SPINLOCK_BASE + 0x800 + 0x7C) #endif