/* * Hardware register defines for all Elvees MIPS microcontrollers. * * Copyright (C) 2008-2010 Serge Vakulenko, * 2011 Dmitry Podkhvatilin, * * 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_ELVEES_H #define _IO_ELVEES_H /*-------------------------------------- * Coprocessor 0 registers. */ #define C0_INDEX 0 /* индекс доступа к TLB */ #define C0_RANDOM 1 /* индекс TLB для команды Write Random */ #define C0_ENTRYLO0 2 /* строки для чётных страниц TLB */ #define C0_ENTRYLO1 3 /* строки для нечётных страниц TLB */ #define C0_CONTEXT 4 /* указатель на таблицу PTE */ #define C0_PAGEMASK 5 /* маска размера страниц TLB */ #define C0_WIRED 6 /* граница привязанных строк TLB */ #define C0_BADVADDR 8 /* виртуальный адрес последнего исключения */ #define C0_COUNT 9 /* таймер */ #define C0_ENTRYHI 10 /* информация соответствия виртуального адреса */ #define C0_COMPARE 11 /* предельное значение для прерывания по таймеру */ #define C0_STATUS 12 /* режимы функционирования процессора */ #define C0_CAUSE 13 /* причина последнего исключения */ #define C0_EPC 14 /* адрес возврата из исключения */ #define C0_PRID 15 /* идентификатор процессора */ #define C0_CONFIG 16 /* информация о возможностях процессора */ #define C0_LLADDR 17 /* физический адрес последней команды LL */ #define C0_ERROREPC 30 /* адрес возврата из исключения ошибки */ /* * Status register. */ #define ST_IE 0x00000001 /* разрешение прерываний */ #define ST_EXL 0x00000002 /* уровень исключения */ #define ST_ERL 0x00000004 /* уровень ошибки */ #define ST_UM 0x00000010 /* режим пользователя */ #define ST_IM_SW0 0x00000100 /* программное прерывание 0 */ #define ST_IM_SW1 0x00000200 /* программное прерывание 1 */ #define ST_IM_COMPARE 0x00008000 /* от таймера */ #define ST_NMI 0x00080000 /* причина сброса - NMI */ #define ST_TS 0x00200000 /* TLB-закрытие системы */ #define ST_BEV 0x00400000 /* размещение векторов: начальная загрузка */ #define ST_CU0 0x10000000 /* разрешение сопроцессора 0 */ #define ST_CU1 0x20000000 /* разрешение сопроцессора 1 (FPU) */ #ifdef CONFIG_NVCOM01 #define ST_IM_QSTR0 0x00000400 /* от внутренних устройств микроконтроллера */ #define ST_IM_QSTR1 0x00000800 /* от DMA MEM */ #define ST_IM_QSTR2 0x00001000 /* от MFBSP */ #define ST_IM_DSP 0x00004000 /* от DSP */ ///#define ST_IM_COMPARE 0x00008000 /* от таймера 0 */ #endif #if defined(CONFIG_MC24R2)||defined(CONFIG_MC24M)||defined(CONFIG_MC30SF6)||defined(CONFIG_MC0428) /* TODO */ #define ST_IM_QSTR0 0x00000400 /* от QSTR0 */ #define ST_IM_QSTR1 0x00000800 /* от QSTR1 */ #define ST_IM_QSTR2 0x00001000 /* от QSTR2 */ #define ST_IM_QSTR3 0x00002000 /* от QSTR3 */ #define ST_IM_DSP 0x00004000 /* от DSP */ ///#define ST_IM_COMPARE 0x00008000 /* от таймера */ #endif #if defined(CONFIG_MCT04)||defined(CONFIG_MCT06) #define ST_IM_QSTR0 0x00000400 /* от QSTR0 */ #define ST_IM_QSTR1 0x00000800 /* от QSTR1 */ #define ST_IM_QSTR2 0x00001000 /* от QSTR2 */ #define ST_IM_QSTR3 0x00002000 /* от QSTR3 */ #define ST_IM_QSTR4 0x00004000 /* от QSTR4 */ ///#define ST_IM_COMPARE 0x00008000 /* от таймера */ #endif /* * Сause register. */ #define CA_EXC_CODE 0x0000007c /* код исключения */ #define CA_Int 0 /* прерывание */ #define CA_Mod (1 << 2) /* TLB-исключение модификации */ #define CA_TLBL (2 << 2) /* TLB-исключение, загрузка или вызов команды */ #define CA_TLBS (3 << 2) /* TLB-исключение, сохранение */ #define CA_AdEL (4 << 2) /* ошибка адресации, загрузка или вызов команды */ #define CA_AdES (5 << 2) /* ошибка адресации, сохранение */ #define CA_Sys (8 << 2) /* системное исключение */ #define CA_Bp (9 << 2) /* breakpoint */ #define CA_RI (10 << 2) /* зарезервированная команда */ #define CA_CpU (11 << 2) /* недоступность сопроцессора */ #define CA_Ov (12 << 2) /* целочисленное переполнение */ #define CA_Tr (13 << 2) /* trap */ #define CA_MCheck (24 << 2) /* аппаратный контроль */ #define CA_ID 0x00000080 /* прерывание от блока отладки OnCD */ #define CA_IP_SW0 0x00000100 /* программное прерывание 0 */ #define CA_IP_SW1 0x00000200 /* программное прерывание 1 */ #define CA_IP_IRQ0 0x00000400 /* внешнее прерывание 0 */ #define CA_IP_IRQ1 0x00000800 /* внешнее прерывание 1 */ #define CA_IP_IRQ2 0x00001000 /* внешнее прерывание 2 */ #define CA_IP_IRQ3 0x00002000 /* внешнее прерывание 3 */ #if defined(CONFIG_MCT04) #define CA_IP_IRQ4 0x00004000 /* внешнее прерывание 4 */ #endif #define CA_IP_MCU 0x00008000 /* от внутренних устройств микроконтроллера */ #define CA_IV 0x00800000 /* 1 - используется спец.вектор 0x200 */ #define CA_BD 0x80000000 /* исключение в слоте задержки перехода */ /*----------------------------------------------------------------------------- * * Регистры интерфейсов Space Wire, размещенных в контроллере (SWIC0, SWIC1) */ /* * Маски для установки отдельных полей регистров */ /* STATUS */ #define MC_SWIC_DC_ERR 0x00000001 /* Признак ошибки рассоединения */ #define MC_SWIC_P_ERR 0x00000002 /* Признак ошибки четности */ #define MC_SWIC_ESC_ERR 0x00000004 /* Признак ошибки в ESC-последовательности */ #define MC_SWIC_CREDIT_ERR 0x00000008 /* Признак ошибки кредитования */ #define MC_SWIC_DS_STATE 0x000000E0 /* Состояние DS-макроячейки */ #define MC_SWIC_RX_BUF_FULL 0x00000100 /* Буфер приема полон */ #define MC_SWIC_RX_BUF_EMPTY 0x00000200 /* Буфер приема пуст */ #define MC_SWIC_TX_BUF_FULL 0x00000400 /* Буфер передачи полон */ #define MC_SWIC_TX_BUF_EMPTY 0x00000800 /* Буфер передачи пуст */ #define MC_SWIC_GOT_FIRST_BIT 0x00001000 /* Признак получения первого бита */ #define MC_SWIC_CONNECTED 0x00002000 /* Признак установленного соединения */ #define MC_SWIC_GOT_TIME 0x00004000 /* Принят маркер времени из сети */ #define MC_SWIC_GOT_INT 0x00008000 /* Принят код распределенного прерывания из сети */ #define MC_SWIC_GOT_POLL 0x00010000 /* Принят poll-код из сети */ #define MC_SWIC_FL_CONTROL 0x00020000 /* Признак занятости передачей управляющего кода */ #define MC_SWIC_IRQ_LINK 0x00040000 /* Состояние запроса прерырывания LINK */ #define MC_SWIC_IRQ_TIM 0x00080000 /* Состояние запроса прерырывания TIM */ #define MC_SWIC_IRQ_ERR 0x00100000 /* Состояние запроса прерырывания ERR */ /* Значения поля DS_STATE регистра STATUS */ #define MC_SWIC_DS_ERROR_RESET 0 #define MC_SWIC_DS_ERROR_WAIT 1 #define MC_SWIC_DS_READY 2 #define MC_SWIC_DS_STARTED 3 #define MC_SWIC_DS_CONNECTING 4 #define MC_SWIC_DS_RUN 5 /* RX_CODE */ #define MC_SWIC_TIME_CODE 0x000000FF /* Значение маркера времени, принятого из сети последним */ #define MC_SWIC_INT_CODE 0x0000FF00 /* Значение кода распределенного прерывания, принятого из сети последним */ #define MC_SWIC_POLE_CODE 0x00FF0000 /* Значение poll-кода, принятого из сети последним */ /* MODE_CR */ #define MC_SWIC_LinkDisabled 0x00000001 /* Установка LinkDisabled для блока DS-кодирования */ #define MC_SWIC_AutoStart 0x00000002 /* Установка AutoStart для блока DS-кодирования */ #define MC_SWIC_LinkStart 0x00000004 /* Установка LinkStart для блока DS-кодирования */ #define MC_SWIC_RX_RST 0x00000008 /* Установка блока приема в начальное состояние */ #define MC_SWIC_TX_RST 0x00000010 /* Установка блока передачи в начальное состояние */ #define MC_SWIC_DS_RST 0x00000020 /* Установка DS-макроячейки в начальное состояние */ #define MC_SWIC_SWCORE_RST 0x00000040 /* Установка контроллера в начальное состояние */ #define MC_SWIC_WORK_TYPE 0x00000100 /* Тип режима работы */ #define MC_SWIC_TIMING_WR_EN 0x00004000 /* Разрешение записи в поле TIMING регистра TX_SPEED */ #define MC_SWIC_AUTO_TX_SPEED 0x00008000 /* Признак автоматического установления скорости передачи после соединения (см. Спецификацию!!!) */ #define MC_SWIC_LINK_MASK 0x00040000 /* Маска прерывания LINK */ #define MC_SWIC_TIM_MASK 0x00080000 /* Маска прерывания TIM */ #define MC_SWIC_ERR_MASK 0x00100000 /* Маска прерывания ERR */ /* TX_SPEED */ #define MC_SWIC_TX_SPEED_PRM_MASK 0xFF /* Маска коэффициента умножения TX_PLL */ #define MC_SWIC_TX_SPEED_PRM(x) ((x) & 0xFF) /* Установка коэффициента умножения TX_PLL */ #define MC_SWIC_PLL_TX_EN 0x00000100 /* Разрешение работы TX_PLL */ #define MC_SWIC_LVDS_EN 0x00000200 /* Разрешение работы приемопередатчиков LVDS */ #define MC_SWIC_TX_SPEED_CON(x) (((x) & 0xFF) << 10) /* Скорость передачи данных при установлении соединения */ #define MC_SWIC_TIMING(x) (((x) & 0xF) << 20) /* В это поле необходимо записать код, равный тактовой частоте работы CPU, деленной на 10*/ /* TX_CODE */ #define MC_SWIC_TXCODE 0x0000001F /* Управляющий код (содержимое) */ #define MC_SWIC_CODETYPE 0x000000E0 /* Признак кода управления */ /* Значение поля CODETYPE регистра TX_CODE */ #define MC_SWIC_CODETYPE_TIME 2 #define MC_SWIC_CODETYPE_INT 3 #define MC_SWIC_CODETYPE_POLL 5 /* Прерывания для SWIC */ #define MC_SWIC0_IRQ 5 #define MC_SWIC0_TX_DESC_IRQ 0 #define MC_SWIC0_TX_DATA_IRQ 1 #define MC_SWIC0_RX_DESC_IRQ 2 #define MC_SWIC0_RX_DATA_IRQ 3 #define MC_SWIC1_IRQ 6 #define MC_SWIC1_TX_DESC_IRQ 15 #define MC_SWIC1_TX_DATA_IRQ 16 #define MC_SWIC1_RX_DESC_IRQ 17 #define MC_SWIC1_RX_DATA_IRQ 18 #define MC_SWIC_STATUS_BITS "\20"\ "\1DC_ERR\2P_ERR\3ESC_ERR\4CREDIT_ERR\6DS_STATE0\7DS_STATE1\10DS_STATE2"\ "\11RX_BUF_FULL\12RX_BUF_EMPTY\13TX_BUF_FULL\14TX_BUF_EMPTY\15CONNECTED"\ "\17GOT_TIME\20GOT_INT\21GOT_POLL\22FL_CONTROL\23IRQ_LINK\24IRQ_TIM\25IRQ_ERR" #define MC_SWIC_MODE_CR_BITS "\20"\ "\1LinkDisabled\2AutoStart\3LinkStart\4RX_RST\5TX_RST\6DS_RST\7SWCORE_RST"\ "\11WORK_TYPE\12TX_single\13RX_single\14LVDS_Loopback\15CODEC_Loopback"\ "\16DS_Loopback\21LINK_MASK\24TIM_MASK\25ERR_MASK" /* * Регистры DMA */ /* Регистр CSR для каналов DMA */ #define MC_DMA_CSR_RUN 0x00000001 /* Состояние работы канала DMA */ #define MC_DMA_CSR_DIR 0x00000002 /* Направление передачи для каналов MEM_CH */ #define MC_DMA_CSR_WN(n) ((n) << 2) /* Установка длины пачки */ #define MC_DMA_CSR_EN64 0x00000040 /* Передача 64-разрядных данных (для MEM_CH) */ #define MC_DMA_CSR_IPD 0x00000040 /* Запрет прерывания по запросу от порта при выключенном канале DMA(RUN=0) */ #define MC_DMA_CSR_START_DSP 0x00000080 /* Разрешение запуска DSP (для MEM_CH) */ #define MC_DMA_CSR_MODE 0x00000100 /* Режим модификация адреса регистра IR0 */ #define MC_DMA_CSR_2D 0x00000200 /* Режим модификации адреса регистра IR1 */ #if defined(CONFIG_MCT06)||defined(CONFIG_MC0428) #define MC_DMA_CSR_MASK 0x00000400 /* Маска внешнего запроса прямого доступа nDMAR */ #define MC_DMA_CSR_FLYBY 0x00000800 /* Признак выполнения обмена данными в режиме Flyby */ #endif #define MC_DMA_CSR_CHEN 0x00001000 /* Признак разрешения самоинициализации */ #define MC_DMA_CSR_IM 0x00002000 /* Маска прерывания при окончании передачи блока */ #define MC_DMA_CSR_END 0x00004000 /* Признак завершения передачи блока данных */ #define MC_DMA_CSR_DONE 0x00008000 /* Признак завершения передачи цепочки блоков данных */ #define MC_DMA_CSR_WCX_MASK 0xffff0000 /* Маска счетчика слов */ #define MC_DMA_CSR_WCX(n) ((n) << 16) /* Установка счетчика слов */ /* Регистр OR для каналов DMA типа MEM_CH */ #define MC_DMA_OR0(n) (n) /* Приращение регистра IR0 (в словах) */ #define MC_DMA_OR1(n) ((n) << 16) /* Приращение регистра IR1 (в словах) */ #if defined(CONFIG_MCT06)||defined(CONFIG_MC0428) /* Регистр Y */ #define MC_DMA_OY(n) (n & 0x0FFFF) #define MC_DMA_WCY(n) ((n & 0x0FFFF) << 16) #endif /* Псевдорегистр управления RUN */ #define MC_DMA_RUN 0x00000001 /* Управление битом RUN */ /*-------------------------------------- * Системный регистр CSR */ /* * CSR0,1 register */ #define MC_CSR_FM 0x00000001 /* Fixed mapping */ #define MC_CSR_TST_CACHE 0x00000800 /* random access to cache */ #define MC_CSR_FLUSH_I 0x00001000 /* instruction cache invalidate */ #define MC_CSR_FLUSH_D 0x00004000 /* data cache invalidate */ #if defined(CONFIG_MC0428) #define MC_CSR_TR_CRAM 0x00000002 #define MC_CSR_SRIO_LBE 0x08000000 /* Режим работы PMA SRIO: режим петли. */ #else #if defined(CONFIG_MCT06) #define MC_CSR_LL_CLR (0x0001<15) #define MC_CSR_PLL_TST_SEL(n) ((n & 0x0F)<<24) #define MC_CSR_PLL_TST_DIV2 (0x01 << 28) #define MC_CSR_PLL_TST_DIV4 (0x02 << 28) #define MC_CSR_PLL_TST_DIV8 (0x03 << 28) #define MC_CSR_PLL_TST_EN (1 << 31) #else #if defined(CONFIG_MCT04) #define MC_CSR_TR_CRAM 0x00000002 /* * BOOT register */ #define MC_BOOT_BOOT (1 << 0) #else #if defined(CONFIG_MC30SF6) #define MC_CSR_TR_CRAM 0x00000002 #define MC_CSR_SpWR_MODE 0x02000000 /* GigaSpWR synchronisation mode */ #define MC_CSR_CPU_MODE(n) ((n & 0x3)<<8) /* CPU mode */ #else #if defined(CONFIG_MC24R2)||defined(CONFIG_MC24M) #define MC_CSR_CLK(n) ((n) << 4) /* PLL clock multiply, 1..31, 0=1/16 */ #define MC_CSR_CLKEN 0x00010000 /* PLL clock enable */ #endif #endif #endif #endif #endif /* * Системный регистр MASKR */ #ifdef CONFIG_NVCOM01 #define MC_MASKR0_MCC (1 << 31) /* Прерывание от МСС */ #define MC_MASKR0_I2C (1 << 23) /* Прерывание от I2C */ #define MC_MASKR0_IT (1 << 22) /* от таймера IT */ #define MC_MASKR0_RTT (1 << 21) /* от таймера RTT */ #define MC_MASKR0_WDT (1 << 20) /* от таймера WDT */ #define MC_MASKR0_VPOUT_TX (1 << 19) /* от канала DMA VPOUT */ #define MC_MASKR0_VPOUT (1 << 18) /* от контроллера VPOUT */ #define MC_MASKR0_VPIN_RX (1 << 17) /* от канала DMA VPIN */ #define MC_MASKR0_VPIN (1 << 16) /* от контроллера VPIN */ #define MC_MASKR0_ETH_DMA_TX (1 << 15) /* от DMA передачи Ethernet */ #define MC_MASKR0_ETH_DMA_RX (1 << 14) /* от DMA приёма Ethernet */ #define MC_MASKR0_ETH_TX_FRAME (1 << 13) /* от передатчика Ethernet */ #define MC_MASKR0_ETH_RX_FRAME (1 << 12) /* от приёмника Ethernet */ #define MC_MASKR0_USB_EP4 (1 << 11) /* от передатчика USB end point 4 */ #define MC_MASKR0_USB_EP3 (1 << 10) /* от приёмника USB end point 3 */ #define MC_MASKR0_USB_EP2 (1 << 9) /* от передатчика USB end point 2 */ #define MC_MASKR0_USB_EP1 (1 << 8) /* от приёмника USB end point 1 */ #define MC_MASKR0_USB (1 << 7) /* Прерывание от USB */ #define MC_MASKR0_UART1 (1 << 5) /* Прерывание от UART1 */ #define MC_MASKR0_UART0 (1 << 4) /* Прерывание от UART0 */ #define MC_MASKR0_IRQ3 (1 << 3) /* Внешнее прерывание nIRQ3 */ #define MC_MASKR0_IRQ2 (1 << 2) /* Внешнее прерывание nIRQ2 */ #define MC_MASKR0_IRQ1 (1 << 1) /* Внешнее прерывание nIRQ1 */ #define MC_MASKR0_IRQ0 (1 << 0) /* Внешнее прерывание nIRQ0 */ #define MC_MASKR1_DMAMEM_CH3 (1 << 3) /* от канала DMA MEM_CH3 */ #define MC_MASKR1_DMAMEM_CH2 (1 << 2) /* от канала DMA MEM_CH2 */ #define MC_MASKR1_DMAMEM_CH1 (1 << 1) /* от канала DMA MEM_CH1 */ #define MC_MASKR1_DMAMEM_CH0 (1 << 0) /* от канала DMA MEM_CH0 */ #define MC_MASKR2_DMA_MFBSP3 (1 << 15) /* от канала DMA порта MFBSP3 */ #define MC_MASKR2_MFBSP_TX3 (1 << 14) /* готовность MFBSP3 к приёму по DMA */ #define MC_MASKR2_MFBSP_RX3 (1 << 13) /* готовность MFBSP3 к выдаче по DMA */ #define MC_MASKR2_SRQ3 (1 << 12) /* Запрос обслуживания от порта MFBSP3 */ #define MC_MASKR2_DMA_MFBSP2 (1 << 11) /* от канала DMA порта MFBSP2 */ #define MC_MASKR2_MFBSP_TX2 (1 << 10) /* готовность MFBSP2 к приёму по DMA */ #define MC_MASKR2_MFBSP_RX2 (1 << 9) /* готовность MFBSP2 к выдаче по DMA */ #define MC_MASKR2_SRQ2 (1 << 8) /* Запрос обслуживания от порта MFBSP2 */ #define MC_MASKR2_DMA_MFBSP1 (1 << 7) /* от канала DMA порта MFBSP1 */ #define MC_MASKR2_MFBSP_TX1 (1 << 6) /* готовность MFBSP1 к приёму по DMA */ #define MC_MASKR2_MFBSP_RX1 (1 << 5) /* готовность MFBSP1 к выдаче по DMA */ #define MC_MASKR2_SRQ1 (1 << 4) /* Запрос обслуживания от порта MFBSP1 */ #define MC_MASKR2_DMA_MFBSP0 (1 << 3) /* от канала DMA порта MFBSP0 */ #define MC_MASKR2_MFBSP_TX0 (1 << 2) /* готовность MFBSP0 к приёму по DMA */ #define MC_MASKR2_MFBSP_RX0 (1 << 1) /* готовность MFBSP0 к выдаче по DMA */ #define MC_MASKR2_SRQ0 (1 << 0) /* Запрос обслуживания от порта MFBSP0 */ #endif #if defined(CONFIG_MC24R2)||defined(CONFIG_MC24M) #define MC_MASKR0_IT (1 << 22) /* от таймера IT */ #define MC_MASKR0_RTT (1 << 21) /* от таймера RTT */ #define MC_MASKR0_WDT (1 << 20) /* от таймера WDT */ #define MC_MASKR0_UART0 (1 << 4) /* Прерывание от UART0 */ #define MC_MASKR0_IRQ3 (1 << 3) /* Внешнее прерывание nIRQ3 */ #define MC_MASKR0_IRQ2 (1 << 2) /* Внешнее прерывание nIRQ2 */ #define MC_MASKR0_IRQ1 (1 << 1) /* Внешнее прерывание nIRQ1 */ #define MC_MASKR0_IRQ0 (1 << 0) /* Внешнее прерывание nIRQ0 */ #define MC_MASKR1_DMAMEM_CH3 (1 << 3) /* от канала DMA MEM_CH3 */ #define MC_MASKR1_DMAMEM_CH2 (1 << 2) /* от канала DMA MEM_CH2 */ #define MC_MASKR1_DMAMEM_CH1 (1 << 1) /* от канала DMA MEM_CH1 */ #define MC_MASKR1_DMAMEM_CH0 (1 << 0) /* от канала DMA MEM_CH0 */ #define MC_MASKR2_DMA_MFBSP3 (1 << 15) /* от канала DMA порта MFBSP3 */ #define MC_MASKR2_MFBSP_RX3 (1 << 14) /* готовность MFBSP3 к приёму по DMA */ #define MC_MASKR2_MFBSP_TX3 (1 << 13) /* готовность MFBSP3 к выдаче по DMA */ #define MC_MASKR2_SRQ3 (1 << 12) /* Запрос обслуживания от порта MFBSP3 */ #define MC_MASKR2_DMA_MFBSP2 (1 << 11) /* от канала DMA порта MFBSP2 */ #define MC_MASKR2_MFBSP_RX2 (1 << 10) /* готовность MFBSP2 к приёму по DMA */ #define MC_MASKR2_MFBSP_TX2 (1 << 9) /* готовность MFBSP2 к выдаче по DMA */ #define MC_MASKR2_SRQ2 (1 << 8) /* Запрос обслуживания от порта MFBSP2 */ #define MC_MASKR2_DMA_MFBSP1 (1 << 7) /* от канала DMA порта MFBSP1 */ #define MC_MASKR2_MFBSP_RX1 (1 << 6) /* готовность MFBSP1 к приёму по DMA */ #define MC_MASKR2_MFBSP_TX1 (1 << 5) /* готовность MFBSP1 к выдаче по DMA */ #define MC_MASKR2_SRQ1 (1 << 4) /* Запрос обслуживания от порта MFBSP1 */ #define MC_MASKR2_DMA_MFBSP0 (1 << 3) /* от канала DMA порта MFBSP0 */ #define MC_MASKR2_MFBSP_RX0 (1 << 2) /* готовность MFBSP0 к приёму по DMA */ #define MC_MASKR2_MFBSP_TX0 (1 << 1) /* готовность MFBSP0 к выдаче по DMA */ #define MC_MASKR2_SRQ0 (1 << 0) /* Запрос обслуживания от порта MFBSP0 */ #endif #if defined(CONFIG_MCT02R) || defined(CONFIG_MCT03P) #define MC_MASKR0_IT (1 << 22) /* от таймера IT */ #define MC_MASKR0_RTT (1 << 21) /* от таймера RTT */ #define MC_MASKR0_WDT (1 << 20) /* от таймера WDT */ #define MC_MASKR0_UART3 (1 << 7) /* Прерывание от UART3 */ #define MC_MASKR0_UART2 (1 << 6) /* Прерывание от UART2 */ #define MC_MASKR0_UART1 (1 << 5) /* Прерывание от UART1 */ #define MC_MASKR0_UART0 (1 << 4) /* Прерывание от UART0 */ #define MC_MASKR0_IRQ3 (1 << 3) /* Внешнее прерывание nIRQ3 */ #define MC_MASKR0_IRQ2 (1 << 2) /* Внешнее прерывание nIRQ2 */ #define MC_MASKR0_IRQ1 (1 << 1) /* Внешнее прерывание nIRQ1 */ #define MC_MASKR0_IRQ0 (1 << 0) /* Внешнее прерывание nIRQ0 */ /* QSTR1 */ #define MC_MASKR1_DMAMEM_CH7 (1 << 7) /* от канала DMA MEM_CH3 */ #define MC_MASKR1_DMAMEM_CH6 (1 << 6) /* от канала DMA MEM_CH2 */ #define MC_MASKR1_DMAMEM_CH5 (1 << 5) /* от канала DMA MEM_CH1 */ #define MC_MASKR1_DMAMEM_CH4 (1 << 4) /* от канала DMA MEM_CH0 */ #define MC_MASKR1_DMAMEM_CH3 (1 << 3) /* от канала DMA MEM_CH3 */ #define MC_MASKR1_DMAMEM_CH2 (1 << 2) /* от канала DMA MEM_CH2 */ #define MC_MASKR1_DMAMEM_CH1 (1 << 1) /* от канала DMA MEM_CH1 */ #define MC_MASKR1_DMAMEM_CH0 (1 << 0) /* от канала DMA MEM_CH0 */ /* QSTR2 */ #define MC_MASKR2_SW3_TX_DT_CH0 (1 << 31) #define MC_MASKR2_SW3_TX_DS_CH0 (1 << 30) #define MC_MASKR2_SW3_RX_DT_CH0 (1 << 29) #define MC_MASKR2_SW3_RX_DS_CH0 (1 << 28) // 27 #define MC_MASKR2_SW3_LINK (1 << 26) #define MC_MASKR2_SW3_TIME (1 << 25) #define MC_MASKR2_SW3_ERR (1 << 24) #define MC_MASKR2_SW2_TX_DT_CH0 (1 << 23) #define MC_MASKR2_SW2_TX_DS_CH0 (1 << 22) #define MC_MASKR2_SW2_RX_DT_CH0 (1 << 21) #define MC_MASKR2_SW2_RX_DS_CH0 (1 << 20) // 19 #define MC_MASKR2_SW2_LINK (1 << 18) #define MC_MASKR2_SW2_TIME (1 << 17) #define MC_MASKR2_SW2_ERR (1 << 16) #define MC_MASKR2_SW1_TX_DT_CH0 (1 << 15) #define MC_MASKR2_SW1_TX_DS_CH0 (1 << 14) #define MC_MASKR2_SW1_RX_DT_CH0 (1 << 13) #define MC_MASKR2_SW1_RX_DS_CH0 (1 << 12) // 11 #define MC_MASKR2_SW1_LINK (1 << 10) #define MC_MASKR2_SW1_TIME (1 << 9) #define MC_MASKR2_SW1_ERR (1 << 8) #define MC_MASKR2_SW0_TX_DT_CH0 (1 << 7) #define MC_MASKR2_SW0_TX_DS_CH0 (1 << 6) #define MC_MASKR2_SW0_RX_DT_CH0 (1 << 5) #define MC_MASKR2_SW0_RX_DS_CH0 (1 << 4) // 3 #define MC_MASKR2_SW0_LINK (1 << 2) #define MC_MASKR2_SW0_TIME (1 << 1) #define MC_MASKR2_SW0_ERR (1 << 0) /* QSTR4 */ #define MC_MASKR4_DMA_MFBSP3 (1 << 15) /* от канала DMA порта MFBSP3 */ #define MC_MASKR4_MFBSP_TX3 (1 << 14) /* готовность MFBSP3 к приёму по DMA */ #define MC_MASKR4_MFBSP_RX3 (1 << 13) /* готовность MFBSP3 к выдаче по DMA */ #define MC_MASKR4_SRQ3 (1 << 12) /* Запрос обслуживания от порта MFBSP3 */ #define MC_MASKR4_DMA_MFBSP2 (1 << 11) /* от канала DMA порта MFBSP2 */ #define MC_MASKR4_MFBSP_TX2 (1 << 10) /* готовность MFBSP2 к приёму по DMA */ #define MC_MASKR4_MFBSP_RX2 (1 << 9) /* готовность MFBSP2 к выдаче по DMA */ #define MC_MASKR4_SRQ2 (1 << 8) /* Запрос обслуживания от порта MFBSP2 */ #define MC_MASKR4_DMA_MFBSP1 (1 << 7) /* от канала DMA порта MFBSP1 */ #define MC_MASKR4_MFBSP_TX1 (1 << 6) /* готовность MFBSP1 к приёму по DMA */ #define MC_MASKR4_MFBSP_RX1 (1 << 5) /* готовность MFBSP1 к выдаче по DMA */ #define MC_MASKR4_SRQ1 (1 << 4) /* Запрос обслуживания от порта MFBSP1 */ #define MC_MASKR4_DMA_MFBSP0 (1 << 3) /* от канала DMA порта MFBSP0 */ #define MC_MASKR4_MFBSP_TX0 (1 << 2) /* готовность MFBSP0 к приёму по DMA */ #define MC_MASKR4_MFBSP_RX0 (1 << 1) /* готовность MFBSP0 к выдаче по DMA */ #define MC_MASKR4_SRQ0 (1 << 0) /* Запрос обслуживания от порта MFBSP0 */ #endif #if defined(CONFIG_MC30SF6) /* QSTR0 */ #define MC_MASKR0_SPW7 (1 << 30) /* от GigaSpWR */ #define MC_MASKR0_SPW6 (1 << 29) /* от GigaSpWR */ #define MC_MASKR0_SPW5 (1 << 28) /* от GigaSpWR */ #define MC_MASKR0_SPW4 (1 << 27) /* от GigaSpWR */ #define MC_MASKR0_SPW3 (1 << 26) /* от GigaSpWR */ #define MC_MASKR0_SPW2 (1 << 25) /* от GigaSpWR */ #define MC_MASKR0_SPW1 (1 << 24) /* от GigaSpWR */ #define MC_MASKR0_SPW0 (1 << 23) /* от GigaSpWR */ #define MC_MASKR0_IT1 (1 << 22) /* от таймера IT1 */ #define MC_MASKR0_IT0 (1 << 21) /* от таймера IT0 */ #define MC_MASKR0_WDT (1 << 20) /* от таймера WDT */ #define MC_MASKR0_SPW_TX_DAT (1 << 19) /* Прерывание от канала DMA GigaSpWR_TX_DAT_CH */ #define MC_MASKR0_SPW_TX_DES (1 << 18) /* Прерывание от канала DMA GigaSpWR_TX_DES_CH */ #define MC_MASKR0_SPW_RX_DAT (1 << 17) /* Прерывание от канала DMA GigaSpWR_RX_DAT_CH */ #define MC_MASKR0_SPW_RX_DES (1 << 16) /* Прерывание от канала DMA GigaSpWR_RX_DES_CH */ #define MC_MASKR0_EMAC_DMA_TX (1 << 15) /* Прерывание от канала DMA Ethernet по завершению передачи данных */ #define MC_MASKR0_EMAC_DMA_RX (1 << 14) /* Прерывание от канала DMA Ethernet по завершению приёма данных */ #define MC_MASKR0_EMAC_TX_FRAME (1 << 13) /* Прерывание от канала DMA Ethernet по завершению попытки передачи пакета */ #define MC_MASKR0_EMAC_RX_FRAME (1 << 12) /* Прерывание от канала DMA Ethernet по завершению попытки передачи пакета */ #define MC_MASKR0_USB_EP4 (1 << 11) /* Прерывание от End Point 4 USB */ #define MC_MASKR0_USB_EP3 (1 << 10) /* Прерывание от End Point 3 USB */ #define MC_MASKR0_USB_EP2 (1 << 9) /* Прерывание от End Point 2 USB */ #define MC_MASKR0_USB_EP1 (1 << 8) /* Прерывание от End Point 1 USB */ #define MC_MASKR0_USB (1 << 7) /* Прерывание от USB */ #define MC_MASKR0_SPI (1 << 6) /* Прерывание от SPI */ #define MC_MASKR0_UART1 (1 << 5) /* Прерывание от UART1 */ #define MC_MASKR0_UART0 (1 << 4) /* Прерывание от UART0 */ #define MC_MASKR0_IRQ3 (1 << 3) /* Внешнее прерывание nIRQ3 */ #define MC_MASKR0_IRQ2 (1 << 2) /* Внешнее прерывание nIRQ2 */ #define MC_MASKR0_IRQ1 (1 << 1) /* Внешнее прерывание nIRQ1 */ #define MC_MASKR0_IRQ0 (1 << 0) /* Внешнее прерывание nIRQ0 */ /* QSTR1 */ #define MC_MASKR1_DMAMEM_CH17 (1 << 15) /* от канала DMA MEM_CH17 */ #define MC_MASKR1_DMAMEM_CH16 (1 << 14) /* от канала DMA MEM_CH16 */ #define MC_MASKR1_DMAMEM_CH15 (1 << 13) /* от канала DMA MEM_CH15 */ #define MC_MASKR1_DMAMEM_CH14 (1 << 12) /* от канала DMA MEM_CH14 */ #define MC_MASKR1_DMAMEM_CH13 (1 << 11) /* от канала DMA MEM_CH13 */ #define MC_MASKR1_DMAMEM_CH12 (1 << 10) /* от канала DMA MEM_CH12 */ #define MC_MASKR1_DMAMEM_CH11 (1 << 9) /* от канала DMA MEM_CH11 */ #define MC_MASKR1_DMAMEM_CH10 (1 << 8) /* от канала DMA MEM_CH10 */ #define MC_MASKR1_DMAMEM_CH7 (1 << 7) /* от канала DMA MEM_CH7 */ #define MC_MASKR1_DMAMEM_CH6 (1 << 6) /* от канала DMA MEM_CH6 */ #define MC_MASKR1_DMAMEM_CH5 (1 << 5) /* от канала DMA MEM_CH5 */ #define MC_MASKR1_DMAMEM_CH4 (1 << 4) /* от канала DMA MEM_CH4 */ #define MC_MASKR1_DMAMEM_CH3 (1 << 3) /* от канала DMA MEM_CH3 */ #define MC_MASKR1_DMAMEM_CH2 (1 << 2) /* от канала DMA MEM_CH2 */ #define MC_MASKR1_DMAMEM_CH1 (1 << 1) /* от канала DMA MEM_CH1 */ #define MC_MASKR1_DMAMEM_CH0 (1 << 0) /* от канала DMA MEM_CH0 */ /* QSTR2 */ #define MC_MASKR2_SPFMIC_TX_DAT_CH1 (1 << 25) /* от канала DMA SPFMIC_TX_DAT_CH1 */ #define MC_MASKR2_SPFMIC_TX_DES_CH1 (1 << 24) /* от канала DMA SPFMIC_TX_DES_CH1 */ #define MC_MASKR2_SPFMIC_RX_DAT_CH1 (1 << 23) /* от канала DMA SPFMIC_RX_DAT_CH1 */ #define MC_MASKR2_SPFMIC_RX_DES_CH1 (1 << 22) /* от канала DMA SPFMIC_RX_DES_CH1 */ #define MC_MASKR2_SPFMIC1 (1 << 21) /* от контроллера SPFMIC1 */ #define MC_MASKR2_SPFMIC_TX_DAT_CH0 (1 << 20) /* от канала DMA SPFMIC_TX_DAT_CH0 */ #define MC_MASKR2_SPFMIC_TX_DES_CH0 (1 << 19) /* от канала DMA SPFMIC_TX_DES_CH0 */ #define MC_MASKR2_SPFMIC_RX_DAT_CH0 (1 << 18) /* от канала DMA SPFMIC_RX_DAT_CH0 */ #define MC_MASKR2_SPFMIC_RX_DES_CH0 (1 << 17) /* от канала DMA SPFMIC_RX_DES_CH0 */ #define MC_MASKR2_SPFMIC0 (1 << 16) /* от контроллера SPFMIC0 */ #define MC_MASKR2_DMA_MFBSP3 (1 << 15) /* от канала DMA порта MFBSP3 */ #define MC_MASKR2_MFBSP_TX3 (1 << 14) /* готовность MFBSP3 к приёму по DMA */ #define MC_MASKR2_MFBSP_RX3 (1 << 13) /* готовность MFBSP3 к выдаче по DMA */ #define MC_MASKR2_SRQ3 (1 << 12) /* Запрос обслуживания от порта MFBSP3 */ #define MC_MASKR2_DMA_MFBSP2 (1 << 11) /* от канала DMA порта MFBSP2 */ #define MC_MASKR2_MFBSP_TX2 (1 << 10) /* готовность MFBSP2 к приёму по DMA */ #define MC_MASKR2_MFBSP_RX2 (1 << 9) /* готовность MFBSP2 к выдаче по DMA */ #define MC_MASKR2_SRQ2 (1 << 8) /* Запрос обслуживания от порта MFBSP2 */ #define MC_MASKR2_DMA_MFBSP1 (1 << 7) /* от канала DMA порта MFBSP1 */ #define MC_MASKR2_MFBSP_TX1 (1 << 6) /* готовность MFBSP1 к приёму по DMA */ #define MC_MASKR2_MFBSP_RX1 (1 << 5) /* готовность MFBSP1 к выдаче по DMA */ #define MC_MASKR2_SRQ1 (1 << 4) /* Запрос обслуживания от порта MFBSP1 */ #define MC_MASKR2_DMA_MFBSP0 (1 << 3) /* от канала DMA порта MFBSP0 */ #define MC_MASKR2_MFBSP_TX0 (1 << 2) /* готовность MFBSP0 к приёму по DMA */ #define MC_MASKR2_MFBSP_RX0 (1 << 1) /* готовность MFBSP0 к выдаче по DMA */ #define MC_MASKR2_SRQ0 (1 << 0) /* Запрос обслуживания от порта MFBSP0 */ /* QSTR3 */ #define MC_MASKR3_HM_ACC (1 << 31) /* по контролю кода Хэмминга от ACC */ #define MC_MASKR3_HM_DDR1 (1 << 13) /* по контролю кода Хэмминга от DDR_PORT1 */ #define MC_MASKR3_HM_DDR0 (1 << 12) /* по контролю кода Хэмминга от DDR_PORT0 */ #define MC_MASKR3_HM_DSP1 (1 << 9) /* по контролю кода Хэмминга от DSP1 */ #define MC_MASKR3_HM_DSP0 (1 << 8) /* по контролю кода Хэмминга от DSP0 */ #define MC_MASKR3_HM_MPORT (1 << 7) /* по контролю кода Хэмминга от MPORT */ #define MC_MASKR3_HM_DCACHE (1 << 5) /* по контролю кода Хэмминга от DCACHE */ #define MC_MASKR3_HM_ICACHE (1 << 4) /* по контролю кода Хэмминга от ICACHE */ #define MC_MASKR3_HM_CRAM3 (1 << 3) /* по контролю кода Хэмминга от CRAM3 */ #define MC_MASKR3_HM_CRAM2 (1 << 2) /* по контролю кода Хэмминга от CRAM2 */ #define MC_MASKR3_HM_CRAM1 (1 << 1) /* по контролю кода Хэмминга от CRAM1 */ #define MC_MASKR3_HM_CRAM0 (1 << 0) /* по контролю кода Хэмминга от CRAM0 */ /* IRQM */ #define MC_IRQM_IRQ_MODE3 (1 << 11) /* mode external interrupt nIRQ[3] */ #define MC_IRQM_IRQ_MODE2 (1 << 10) /* mode external interrupt nIRQ[2] */ #define MC_IRQM_IRQ_MODE1 (1 << 9) /* mode external interrupt nIRQ[1] */ #define MC_IRQM_IRQ_MODE0 (1 << 8) /* mode external interrupt nIRQ[0] */ #define MC_IRQM_IRQ_NULL3 (1 << 3) /* clear external interrupt nIRQ[3] */ #define MC_IRQM_IRQ_NULL2 (1 << 2) /* clear external interrupt nIRQ[2] */ #define MC_IRQM_IRQ_NULL1 (1 << 1) /* clear external interrupt nIRQ[1] */ #define MC_IRQM_IRQ_NULL0 (1 << 0) /* clear external interrupt nIRQ[0] */ #endif #if defined(CONFIG_MCT04) /* QSTR0 */ #define MC_MASKR0_SW_TX_DAT_CH1 (1 << 31) #define MC_MASKR0_SW_TX_DES_CH1 (1 << 30) #define MC_MASKR0_SW_RX_DAT_CH1 (1 << 29) #define MC_MASKR0_SW_RX_DES_CH1 (1 << 28) #define MC_MASKR0_SW_TIME1 (1 << 26) #define MC_MASKR0_SW_ERR1 (1 << 25) #define MC_MASKR0_SW_LINK1 (1 << 24) #define MC_MASKR0_SW_TX_DAT_CH0 (1 << 23) #define MC_MASKR0_SW_TX_DES_CH0 (1 << 22) #define MC_MASKR0_SW_RX_DAT_CH0 (1 << 21) #define MC_MASKR0_SW_RX_DES_CH0 (1 << 20) #define MC_MASKR0_SW_TIME0 (1 << 18) #define MC_MASKR0_SW_ERR0 (1 << 17) #define MC_MASKR0_SW_LINK0 (1 << 16) #define MC_MASKR0_MAILBOX_WRITE1 (1 << 15) #define MC_MASKR0_MAILBOX_WRITE0 (1 << 14) #define MC_MASKR0_MAILBOX_READ1 (1 << 13) #define MC_MASKR0_MAILBOX_READ0 (1 << 12) #define MC_MASKR0_SRQ0 (1 << 11) #define MC_MASKR0_MFBSP_RXBUF (1 << 10) #define MC_MASKR0_MFBSP_TXBUF (1 << 9) #define MC_MASKR0_UART (1 << 8) /* Прерывание от UART */ #define MC_MASKR0_IRT1 (1 << 6) /* от таймера IRT1 */ #define MC_MASKR0_IRT0 (1 << 5) /* от таймера IRT0 */ #define MC_MASKR0_IRQ (1 << 0) /* Внешнее прерывание nIRQ */ /* QSTR1 */ #define MC_MASKR1_INT_HmDCACHE1 (1 << 29) #define MC_MASKR1_INT_HmICACHE1 (1 << 28) #define MC_MASKR1_INT_HmCRAM1 (1 << 24) #define MC_MASKR1_INT_HmDDR (1 << 23) #define MC_MASKR1_INT_HmDCACHE0 (1 << 21) #define MC_MASKR1_INT_HmICACHE0 (1 << 20) #define MC_MASKR1_INT_HmCRAM0 (1 << 16) #define MC_MASKR1_MEM_CH7 (1 << 7) #define MC_MASKR1_MEM_CH6 (1 << 6) #define MC_MASKR1_MEM_CH5 (1 << 5) #define MC_MASKR1_MEM_CH4 (1 << 4) #define MC_MASKR1_MEM_CH3 (1 << 3) #define MC_MASKR1_MEM_CH2 (1 << 2) #define MC_MASKR1_MEM_CH1 (1 << 1) #define MC_MASKR1_MEM_CH0 (1 << 0) /* QSTR2 */ #define MC_MASKR2_IRQ_NFC7 (1 << 31) #define MC_MASKR2_IRQ_NFC6 (1 << 30) #define MC_MASKR2_IRQ_NFC5 (1 << 29) #define MC_MASKR2_IRQ_NFC4 (1 << 28) #define MC_MASKR2_IRQ_NFC3 (1 << 27) #define MC_MASKR2_IRQ_NFC2 (1 << 26) #define MC_MASKR2_IRQ_NFC1 (1 << 25) #define MC_MASKR2_IRQ_NFC0 (1 << 24) #define MC_MASKR2_IRQ_CONNECT (1 << 23) #define MC_MASKR2_IRQ_DISCONNECT (1 << 22) #define MC_MASKR2_IRQ_TCODE (1 << 21) #define MC_MASKR2_IRQ_INT_ACK (1 << 20) #define MC_MASKR2_IRQ_C01_C11 (1 << 19) #define MC_MASKR2_IRQ_BR_SPF (1 << 18) #define MC_MASKR2_IRQ_ARB_TOUT (1 << 17) #define MC_MASKR2_IRQ_SEND_TOUT (1 << 16) #define MC_MASKR2_IRQ_REC_TOUT (1 << 15) #define MC_MASKR2_IRQ_REC_PACKET (1 << 14) #define MC_MASKR2_IRQ_REC_RMAP (1 << 13) #define MC_MASKR2_IRQ_R1_FINISH (1 << 12) #define MC_MASKR2_IRQ_R2_FINISH (1 << 11) #define MC_MASKR2_IRQ_R3_FINISH (1 << 10) #define MC_MASKR2_IRQ_R4_FINISH (1 << 9) #define MC_MASKR2_IRQ_RMAP_REJ (1 << 8) #define MC_MASKR2_IRQ_WFIFO_ERR (1 << 7) /* QSTR3 */ #define MC_MASKR3_RB_NFC77 (1 << 31) #define MC_MASKR3_RB_NFC76 (1 << 30) #define MC_MASKR3_RB_NFC75 (1 << 29) #define MC_MASKR3_RB_NFC74 (1 << 28) #define MC_MASKR3_RB_NFC73 (1 << 27) #define MC_MASKR3_RB_NFC72 (1 << 26) #define MC_MASKR3_RB_NFC71 (1 << 25) #define MC_MASKR3_RB_NFC70 (1 << 24) #define MC_MASKR3_RB_NFC67 (1 << 23) #define MC_MASKR3_RB_NFC66 (1 << 22) #define MC_MASKR3_RB_NFC65 (1 << 21) #define MC_MASKR3_RB_NFC64 (1 << 20) #define MC_MASKR3_RB_NFC63 (1 << 19) #define MC_MASKR3_RB_NFC62 (1 << 18) #define MC_MASKR3_RB_NFC61 (1 << 17) #define MC_MASKR3_RB_NFC60 (1 << 16) #define MC_MASKR3_RB_NFC57 (1 << 15) #define MC_MASKR3_RB_NFC56 (1 << 14) #define MC_MASKR3_RB_NFC55 (1 << 13) #define MC_MASKR3_RB_NFC54 (1 << 12) #define MC_MASKR3_RB_NFC53 (1 << 11) #define MC_MASKR3_RB_NFC52 (1 << 10) #define MC_MASKR3_RB_NFC51 (1 << 9) #define MC_MASKR3_RB_NFC50 (1 << 8) #define MC_MASKR3_RB_NFC47 (1 << 7) #define MC_MASKR3_RB_NFC46 (1 << 6) #define MC_MASKR3_RB_NFC45 (1 << 5) #define MC_MASKR3_RB_NFC44 (1 << 4) #define MC_MASKR3_RB_NFC43 (1 << 3) #define MC_MASKR3_RB_NFC42 (1 << 2) #define MC_MASKR3_RB_NFC41 (1 << 1) #define MC_MASKR3_RB_NFC40 (1 << 0) /* QSTR4 */ /* IRQM */ #define MC_IRQM_IRQ_MODE3 (1 << 11) #define MC_IRQM_IRQ_MODE2 (1 << 10) #define MC_IRQM_IRQ_MODE1 (1 << 9) #define MC_IRQM_IRQ_MODE0 (1 << 8) #define MC_IRQM_IRQ_NULL (1 << 0) #endif #if defined(CONFIG_MCT06) /* MASKR0 */ #define MC_MASKR0_IT1 (1 << 22) /* от таймера IT1 */ #define MC_MASKR0_IT0 (1 << 21) /* от таймера IT0 */ #define MC_MASKR0_WDT (1 << 20) /* от таймера WDT */ #define MC_MASKR0_UART (1 << 4) /* Прерывание от UART */ #define MC_MASKR0_IRQ3 (1 << 3) /* Внешнее прерывание nIRQ3 */ #define MC_MASKR0_IRQ2 (1 << 2) /* Внешнее прерывание nIRQ2 */ #define MC_MASKR0_IRQ1 (1 << 1) /* Внешнее прерывание nIRQ1 */ #define MC_MASKR0_IRQ0 (1 << 0) /* Внешнее прерывание nIRQ0 */ /* MASKR1 */ #define MC_MASKR1_IT15 (1 << 31) /* от интервального таймера 15 */ #define MC_MASKR1_IT14 (1 << 30) /* от интервального таймера 14 */ #define MC_MASKR1_IT13 (1 << 29) /* от интервального таймера 13 */ #define MC_MASKR1_IT12 (1 << 28) /* от интервального таймера 12 */ #define MC_MASKR1_IT11 (1 << 27) /* от интервального таймера 11 */ #define MC_MASKR1_IT10 (1 << 26) /* от интервального таймера 10 */ #define MC_MASKR1_IT9 (1 << 25) /* от интервального таймера 9 */ #define MC_MASKR1_IT8 (1 << 24) /* от интервального таймера 8 */ #define MC_MASKR1_IT7 (1 << 23) /* от интервального таймера 7 */ #define MC_MASKR1_IT6 (1 << 22) /* от интервального таймера 6 */ #define MC_MASKR1_IT5 (1 << 21) /* от интервального таймера 5 */ #define MC_MASKR1_IT4 (1 << 20) /* от интервального таймера 4 */ #define MC_MASKR1_IT3 (1 << 19) /* от интервального таймера 3 */ #define MC_MASKR1_IT2 (1 << 18) /* от интервального таймера 2 */ #define MC_MASKR1_IT1 (1 << 17) /* от интервального таймера 1 */ #define MC_MASKR1_IT0 (1 << 16) /* от интервального таймера 0 */ #define MC_MASKR1_DMAMEM_CH17 (1 << 15) /* от канала DMA MEM_CH17 */ #define MC_MASKR1_DMAMEM_CH16 (1 << 14) /* от канала DMA MEM_CH16 */ #define MC_MASKR1_DMAMEM_CH15 (1 << 13) /* от канала DMA MEM_CH15 */ #define MC_MASKR1_DMAMEM_CH14 (1 << 12) /* от канала DMA MEM_CH14 */ #define MC_MASKR1_DMAMEM_CH13 (1 << 11) /* от канала DMA MEM_CH13 */ #define MC_MASKR1_DMAMEM_CH12 (1 << 10) /* от канала DMA MEM_CH12 */ #define MC_MASKR1_DMAMEM_CH11 (1 << 9) /* от канала DMA MEM_CH11 */ #define MC_MASKR1_DMAMEM_CH10 (1 << 8) /* от канала DMA MEM_CH10 */ #define MC_MASKR1_DMAMEM_CH7 (1 << 7) /* от канала DMA MEM_CH7 */ #define MC_MASKR1_DMAMEM_CH6 (1 << 6) /* от канала DMA MEM_CH6 */ #define MC_MASKR1_DMAMEM_CH5 (1 << 5) /* от канала DMA MEM_CH5 */ #define MC_MASKR1_DMAMEM_CH4 (1 << 4) /* от канала DMA MEM_CH4 */ #define MC_MASKR1_DMAMEM_CH3 (1 << 3) /* от канала DMA MEM_CH3 */ #define MC_MASKR1_DMAMEM_CH2 (1 << 2) /* от канала DMA MEM_CH2 */ #define MC_MASKR1_DMAMEM_CH1 (1 << 1) /* от канала DMA MEM_CH1 */ #define MC_MASKR1_DMAMEM_CH0 (1 << 0) /* от канала DMA MEM_CH0 */ /* MASKR2 */ #define MC_MASKR2_DMA_MAC13 (1 << 31) /* Прерывание от канала DMA3 EMAC1 */ #define MC_MASKR2_DMA_MAC12 (1 << 30) /* Прерывание от канала DMA2 EMAC1 */ #define MC_MASKR2_DMA_MAC11 (1 << 29) /* Прерывание от канала DMA1 EMAC1 */ #define MC_MASKR2_DMA_MAC10 (1 << 28) /* Прерывание от канала DMA0 EMAC1 */ #define MC_MASKR2_MAC13 (1 << 27) /* Прерывание от канала 3 EMAC1 */ #define MC_MASKR2_MAC12 (1 << 26) /* Прерывание от канала 2 EMAC1 */ #define MC_MASKR2_MAC11 (1 << 25) /* Прерывание от канала 1 EMAC1 */ #define MC_MASKR2_MAC10 (1 << 24) /* Прерывание от канала 0 EMAC1 */ #define MC_MASKR2_MD_MAC1 (1 << 23) /* Прерывание от порта управления EMAC1 */ #define MC_MASKR2_DMA_MAC03 (1 << 22) /* Прерывание от канала DMA3 EMAC0 */ #define MC_MASKR2_DMA_MAC02 (1 << 21) /* Прерывание от канала DMA2 EMAC0 */ #define MC_MASKR2_DMA_MAC01 (1 << 20) /* Прерывание от канала DMA1 EMAC0 */ #define MC_MASKR2_DMA_MAC00 (1 << 19) /* Прерывание от канала DMA0 EMAC0 */ #define MC_MASKR2_MAC03 (1 << 18) /* Прерывание от канала 3 EMAC0 */ #define MC_MASKR2_MAC02 (1 << 17) /* Прерывание от канала 2 EMAC0 */ #define MC_MASKR2_MAC01 (1 << 16) /* Прерывание от канала 1 EMAC0 */ #define MC_MASKR2_MAC00 (1 << 15) /* Прерывание от канала 0 EMAC0 */ #define MC_MASKR2_MD_MAC0 (1 << 14) /* Прерывание от порта управления EMAC0 */ #define MC_MASKR2_DMA_SPFMIC13 (1 << 13) /* Прерывание от канала DMA3 SPFMIC1 */ #define MC_MASKR2_DMA_SPFMIC12 (1 << 12) /* Прерывание от канала DMA2 SPFMIC1 */ #define MC_MASKR2_DMA_SPFMIC11 (1 << 11) /* Прерывание от канала DMA1 SPFMIC1 */ #define MC_MASKR2_DMA_SPFMIC10 (1 << 10) /* Прерывание от канала DMA0 SPFMIC1 */ #define MC_MASKR2_SPFMIC12 (1 << 9) /* Прерывание от канала 2 SPFMIC1 */ #define MC_MASKR2_SPFMIC11 (1 << 8) /* Прерывание от канала 1 SPFMIC1 */ #define MC_MASKR2_SPFMIC10 (1 << 7) /* Прерывание от канала 0 SPFMIC1 */ #define MC_MASKR2_DMA_SPFMIC03 (1 << 6) /* Прерывание от канала DMA3 SPFMIC0 */ #define MC_MASKR2_DMA_SPFMIC02 (1 << 5) /* Прерывание от канала DMA2 SPFMIC0 */ #define MC_MASKR2_DMA_SPFMIC01 (1 << 4) /* Прерывание от канала DMA1 SPFMIC0 */ #define MC_MASKR2_DMA_SPFMIC00 (1 << 3) /* Прерывание от канала DMA0 SPFMIC0 */ #define MC_MASKR2_SPFMIC02 (1 << 2) /* Прерывание от канала 2 SPFMIC0 */ #define MC_MASKR2_SPFMIC01 (1 << 1) /* Прерывание от канала 1 SPFMIC0 */ #define MC_MASKR2_SPFMIC00 (1 << 0) /* Прерывание от канала 0 SPFMIC0 */ /* MASKR3 */ #define MC_MASKR3_DMA_ARINC (1 << 31) /* Прерывание от DMA ARINC429 */ #define MC_MASKR3_ARINC (1 << 30) /* Прерывание от портов ARINC429 */ #define MC_MASKR3_DMA_MFBSP3 (1 << 29) /* Прерывание от DMA MFBSP0 канал 3 */ #define MC_MASKR3_DMA_MFBSP2 (1 << 28) /* Прерывание от DMA MFBSP0 канал 2 */ #define MC_MASKR3_MFBSP12 (1 << 27) /* Прерывание от MFBSP1 канал 2 */ #define MC_MASKR3_MFBSP11 (1 << 26) /* Прерывание от MFBSP1 канал 1 */ #define MC_MASKR3_MFBSP10 (1 << 25) /* Прерывание от MFBSP1 канал 0 */ #define MC_MASKR3_DMA_MFBSP1 (1 << 24) /* Прерывание от DMA MFBSP0 канал 1 */ #define MC_MASKR3_DMA_MFBSP0 (1 << 23) /* Прерывание от DMA MFBSP0 канал 0 */ #define MC_MASKR3_MFBSP02 (1 << 22) /* Прерывание от MFBSP0 канал 2 */ #define MC_MASKR3_MFBSP01 (1 << 21) /* Прерывание от MFBSP0 канал 1 */ #define MC_MASKR3_MFBSP00 (1 << 20) /* Прерывание от MFBSP0 канал 0 */ #define MC_MASKR3_CAN11 (1 << 19) /* Прерывание от CANBIC1 канал 1 */ #define MC_MASKR3_CAN10 (1 << 18) /* Прерывание от CANBIC1 канал 0 */ #define MC_MASKR3_CAN01 (1 << 17) /* Прерывание от CANBIC0 канал 1 */ #define MC_MASKR3_CAN00 (1 << 16) /* Прерывание от CANBIC0 канал 0 */ #define MC_MASKR3_1553BIC1 (1 << 15) /* Прерывание от 1553BIC1 */ #define MC_MASKR3_DMA_1553BIC11 (1 << 14) /* Прерывание от DMA1 1553BIC1 */ #define MC_MASKR3_DMA_1553BIC10 (1 << 13) /* Прерывание от DMA0 1553BIC1 */ #define MC_MASKR3_1553BIC0 (1 << 12) /* Прерывание от 1553BIC0 */ #define MC_MASKR3_DMA_1553BIC01 (1 << 11) /* Прерывание от DMA1 1553BIC0 */ #define MC_MASKR3_DMA_1553BIC00 (1 << 10) /* Прерывание от DMA0 1553BIC0 */ #define MC_MASKR3_HmDSP1 (1 << 9) /* Прерывание по Хэммингу от DSP1 */ #define MC_MASKR3_HmDSP0 (1 << 8) /* Прерывание по Хэммингу от DSP0 */ #define MC_MASKR3_HmMPORT (1 << 7) /* Прерывание по Хэммингу от MPORT */ #define MC_MASKR3_HmDCACHE (1 << 5) /* Прерывание по Хэммингу кэш данных */ #define MC_MASKR3_HmICACHE (1 << 4) /* Прерывание по Хэммингу кэш инструкций */ #define MC_MASKR3_HmCRAM3 (1 << 3) /* Прерывание по Хэммингу от памяти CRAM3 */ #define MC_MASKR3_HmCRAM2 (1 << 2) /* Прерывание по Хэммингу от памяти CRAM2 */ #define MC_MASKR3_HmCRAM1 (1 << 1) /* Прерывание по Хэммингу от памяти CRAM1 */ #define MC_MASKR3_HmCRAM0 (1 << 0) /* Прерывание по Хэммингу от памяти CRAM0 */ /* MASKR4 */ #define MC_MASKR4_DMA_SWIC33 (1 << 31) /* Прерывание от каналa DMA3 SWIC3 */ #define MC_MASKR4_DMA_SWIC32 (1 << 30) /* Прерывание от каналa DMA2 SWIC3 */ #define MC_MASKR4_DMA_SWIC31 (1 << 29) /* Прерывание от каналa DMA1 SWIC3 */ #define MC_MASKR4_DMA_SWIC30 (1 << 28) /* Прерывание от каналa DMA0 SWIC3 */ #define MC_MASKR4_SWIC32 (1 << 26) /* Прерывание 2 от SWIC3 */ #define MC_MASKR4_SWIC31 (1 << 25) /* Прерывание 1 от SWIC3 */ #define MC_MASKR4_SWIC30 (1 << 24) /* Прерывание 0 от SWIC3 */ #define MC_MASKR4_DMA_SWIC23 (1 << 23) /* Прерывание от каналa DMA3 SWIC2 */ #define MC_MASKR4_DMA_SWIC22 (1 << 32) /* Прерывание от каналa DMA2 SWIC2 */ #define MC_MASKR4_DMA_SWIC21 (1 << 21) /* Прерывание от каналa DMA1 SWIC2 */ #define MC_MASKR4_DMA_SWIC20 (1 << 20) /* Прерывание от каналa DMA0 SWIC2 */ #define MC_MASKR4_SWIC22 (1 << 18) /* Прерывание 2 от SWIC2 */ #define MC_MASKR4_SWIC21 (1 << 17) /* Прерывание 1 от SWIC2 */ #define MC_MASKR4_SWIC20 (1 << 16) /* Прерывание 0 от SWIC2 */ #define MC_MASKR4_DMA_SWIC13 (1 << 15) /* Прерывание от каналa DMA3 SWIC1 */ #define MC_MASKR4_DMA_SWIC12 (1 << 14) /* Прерывание от каналa DMA2 SWIC1 */ #define MC_MASKR4_DMA_SWIC11 (1 << 13) /* Прерывание от каналa DMA1 SWIC1 */ #define MC_MASKR4_DMA_SWIC10 (1 << 12) /* Прерывание от каналa DMA0 SWIC1 */ #define MC_MASKR4_SWIC12 (1 << 10) /* Прерывание 2 от SWIC1 */ #define MC_MASKR4_SWIC11 (1 << 9) /* Прерывание 1 от SWIC1 */ #define MC_MASKR4_SWIC10 (1 << 8) /* Прерывание 0 от SWIC1 */ #define MC_MASKR4_DMA_SWIC03 (1 << 7) /* Прерывание от каналa DMA3 SWIC0 */ #define MC_MASKR4_DMA_SWIC02 (1 << 6) /* Прерывание от каналa DMA2 SWIC0 */ #define MC_MASKR4_DMA_SWIC01 (1 << 5) /* Прерывание от каналa DMA1 SWIC0 */ #define MC_MASKR4_DMA_SWIC00 (1 << 4) /* Прерывание от каналa DMA0 SWIC0 */ #define MC_MASKR4_SWIC02 (1 << 2) /* Прерывание 2 от SWIC0 */ #define MC_MASKR4_SWIC01 (1 << 1) /* Прерывание 1 от SWIC0 */ #define MC_MASKR4_SWIC00 (1 << 0) /* Прерывание 0 от SWIC0 */ /* IRQM register */ #define MC_IRQM_MODE_EDGE3 (1 << 11) #define MC_IRQM_MODE_EDGE2 (1 << 10) #define MC_IRQM_MODE_EDGE1 (1 << 9) #define MC_IRQM_MODE_EDGE0 (1 << 8) #define MC_IRQM_MODE_LVL3 ~(MC_IRQM_MODE_EDGE3) #define MC_IRQM_MODE_LVL2 ~(MC_IRQM_MODE_EDGE2) #define MC_IRQM_MODE_LVL1 ~(MC_IRQM_MODE_EDGE1) #define MC_IRQM_MODE_LVL0 ~(MC_IRQM_MODE_EDGE0) #define MC_IRQM_IRQ_NULL3 (1 << 3) #define MC_IRQM_IRQ_NULL2 (1 << 2) #define MC_IRQM_IRQ_NULL1 (1 << 1) #define MC_IRQM_IRQ_NULL0 (1 << 0) #endif #if defined(CONFIG_MC0428) /* MASKR0 */ #define MC_MASKR0_I2C (1 << 23) /* Прерывание от контроллера шины I2C */ #define MC_MASKR0_IT1 (1 << 22) /* от таймера IT1 */ #define MC_MASKR0_IT0 (1 << 21) /* от таймера IT0 */ #define MC_MASKR0_WDT (1 << 20) /* от таймера WDT */ #define MC_MASKR0_VPOUT_CH (1 << 19) /* Прерывание от канала DMA VPOUT_CH по передаче массива данных */ #define MC_MASKR0_VPOUT (1 << 18) /* Прерывание от контроллера VPOUT */ #define MC_MASKR0_VPIN_CH (1 << 17) /* Прерывание от канала DMA VPIN_CH по приему массива данных */ #define MC_MASKR0_VPIN (1 << 16) /* Прерывание от контроллера VPIN */ #define MC_MASKR0_EMAC_TX_CH (1 << 15) /* Прерывание от DMA контроллера Ethernet MAC по завершению передачи данных */ #define MC_MASKR0_EMAC_RX_CH (1 << 14) /* Прерывание от DMA контроллера Ethernet MAC по завершению приема данных */ #define MC_MASKR0_EMAC_TX_FRAME (1 << 13) /* Прерывание от контроллера Ethernet MAC по завершению передачи пакета */ #define MC_MASKR0_EMAC_RX_FRAME (1 << 12) /* Прерывание от контроллера Ethernet MAC по приему кадра или по переполнению входного FIFO */ #define MC_MASKR0_PMSC_MASTER (1 << 6) /* Прерывание от PMSC в режиме Master */ #define MC_MASKR0_PMSC_MBR (1 << 5) /* Прерывание от PMSC при записи в почтовый ящик */ #define MC_MASKR0_UART (1 << 4) /* Прерывание от UART */ #define MC_MASKR0_IRQ3 (1 << 3) /* Внешнее прерывание nIRQ3 */ #define MC_MASKR0_IRQ2 (1 << 2) /* Внешнее прерывание nIRQ2 */ #define MC_MASKR0_IRQ1 (1 << 1) /* Внешнее прерывание nIRQ1 */ #define MC_MASKR0_IRQ0 (1 << 0) /* Внешнее прерывание nIRQ0 */ /* MASKR1 */ #define MC_MASKR1_MEM_CH17 (1 << 15) /* от канала DMA MEM_CH17 */ #define MC_MASKR1_MEM_CH16 (1 << 14) /* от канала DMA MEM_CH16 */ #define MC_MASKR1_MEM_CH15 (1 << 13) /* от канала DMA MEM_CH15 */ #define MC_MASKR1_MEM_CH14 (1 << 12) /* от канала DMA MEM_CH14 */ #define MC_MASKR1_MEM_CH13 (1 << 11) /* от канала DMA MEM_CH13 */ #define MC_MASKR1_MEM_CH12 (1 << 10) /* от канала DMA MEM_CH12 */ #define MC_MASKR1_MEM_CH11 (1 << 9) /* от канала DMA MEM_CH11 */ #define MC_MASKR1_MEM_CH10 (1 << 8) /* от канала DMA MEM_CH10 */ #define MC_MASKR1_MEM_CH7 (1 << 7) /* от канала DMA MEM_CH7 */ #define MC_MASKR1_MEM_CH6 (1 << 6) /* от канала DMA MEM_CH6 */ #define MC_MASKR1_MEM_CH5 (1 << 5) /* от канала DMA MEM_CH5 */ #define MC_MASKR1_MEM_CH4 (1 << 4) /* от канала DMA MEM_CH4 */ #define MC_MASKR1_MEM_CH3 (1 << 3) /* от канала DMA MEM_CH3 */ #define MC_MASKR1_MEM_CH2 (1 << 2) /* от канала DMA MEM_CH2 */ #define MC_MASKR1_MEM_CH1 (1 << 1) /* от канала DMA MEM_CH1 */ #define MC_MASKR1_MEM_CH0 (1 << 0) /* от канала DMA MEM_CH0 */ /* MASKR02 */ #define MC_MASKR2_SRIO1_MCE_DEC (1 << 15) /* В SRIO1 принял символ Multicast-Event */ #define MC_MASKR2_SRIO1_RST_CMD (1 << 14) /* В SRIO1 поступили 4 команды Reset-Device Command. */ #define MC_MASKR2_SRIO1_PORT_ERR (1 << 13) /* LPU SRIO1 находится в нерабочем состоянии */ #define MC_MASKR2_SRIO1_MPU_TX (1 << 12) /* Прерывание от MPU_TX SRIO1 */ #define MC_MASKR2_SRIO1_MPU_RX (1 << 11) /* Прерывание от MPU_RX SRIO1 */ #define MC_MASKR2_SRIO1_LSU (1 << 10) /* Прерывание от LSU SRIO1 */ #define MC_MASKR2_SRIO1_DOORBEL (1 << 9) /* В SRIO1 поступил пакет типа DOORBELL */ #define MC_MASKR2_SRIO1_PWRITE (1 << 8) /* SRIO1 поступил пакет типа PORT_WRITE */ #define MC_MASKR2_SRIO0_MCE_DEC (1 << 7) /* В SRIO0 принял символ Multicast-Event */ #define MC_MASKR2_SRIO0_RST_CMD (1 << 6) /* В SRIO0 поступили 4 команды Reset-Device Command. */ #define MC_MASKR2_SRIO0_PORT_ERR (1 << 5) /* LPU SRIO0 находится в нерабочем состоянии */ #define MC_MASKR2_SRIO0_MPU_TX (1 << 4) /* Прерывание от MPU_TX SRIO0 */ #define MC_MASKR2_SRIO0_MPU_RX (1 << 3) /* Прерывание от MPU_RX SRIO0 */ #define MC_MASKR2_SRIO0_LSU (1 << 2) /* Прерывание от LSU SRIO0 */ #define MC_MASKR2_SRIO0_DOORBEL (1 << 1) /* В SRIO0 поступил пакет типа DOORBELL */ #define MC_MASKR2_SRIO0_PWRITE (1 << 0) /* SRIO0 поступил пакет типа PORT_WRITE */ /* MASKR3 */ #define MC_MASKR3_SW_TX_DAT_CH1 (1 << 31) /* Прерывание от канала DMA SW_TX_DAT_CH1 */ #define MC_MASKR3_SW_TX_DES_CH1 (1 << 30) /* Прерывание от канала DMA SW_TX_DES_CH1 */ #define MC_MASKR3_SW_RX_DAT_CH1 (1 << 29) /* Прерывание от канала DMA SW_RX_DAT_CH1 */ #define MC_MASKR3_SW_RX_DES_CH1 (1 << 28) /* Прерывание от канала DMA SW_RX_DES_CH1 */ #define MC_MASKR3_SW_TIME1 (1 << 26) /* Прерывание от SWIC1 при получении маркер времени или распределенного прерывания */ #define MC_MASKR3_SW_ERR1 (1 << 25) /* Прерывание от SWIC1 при ошибке в канале */ #define MC_MASKR3_SW_LINK1 (1 << 24) /* Прерывание от SWIC1 при установлении соединения */ #define MC_MASKR3_SW_TX_DAT_CH0 (1 << 23) /* Прерывание от канала DMA SW_TX_DAT_CH0 */ #define MC_MASKR3_SW_TX_DES_CH0 (1 << 22) /* Прерывание от канала DMA SW_TX_DES_CH0 */ #define MC_MASKR3_SW_RX_DAT_CH0 (1 << 21) /* Прерывание от канала DMA SW_RX_DAT_CH0 */ #define MC_MASKR3_SW_RX_DES_CH0 (1 << 20) /* Прерывание от канала DMA SW_RX_DES_CH0 */ #define MC_MASKR3_SW_TIME0 (1 << 18) /* Прерывание от SWIC0 при получении маркер времени или распределенного прерывания */ #define MC_MASKR3_SW_ERR0 (1 << 17) /* Прерывание от SWIC0 при ошибке в канале */ #define MC_MASKR3_SW_LINK0 (1 << 16) /* Прерывание от SWIC0 при установлении соединения */ #define MC_MASKR3_MFBSP_RX_CH1 (1 << 13) /* Прерывание от канала DMA порта MFBSP1 при приеме данных */ #define MC_MASKR3_MFBSP_TX_CH1 (1 << 12) /* Прерывание от канала DMA порта MFBSP1 при передаче данных */ #define MC_MASKR3_MFBSP_RXBUF1 (1 << 10) /* число 64-х разрядных слов в буфере приёма больше чем RLEV */ #define MC_MASKR3_MFBSP_TXBUF1 (1 << 9) /* число 64-х разрядных слов, находящихся в буфере передачи меньше, либо равно TLEV */ #define MC_MASKR3_SRQ1 (1 << 8) /* Запрос обслуживания от порта MFBSP1. */ #define MC_MASKR3_MFBSP_RX_CH0 (1 << 5) /* Прерывание от канала DMA порта MFBSP0 при приеме данных */ #define MC_MASKR3_MFBSP_TX_CH0 (1 << 4) /* Прерывание от канала DMA порта MFBSP0 при передаче данных */ #define MC_MASKR3_MFBSP_RXBUF0 (1 << 2) /* число 64-х разрядных слов в буфере приёма больше чем RLEV */ #define MC_MASKR3_MFBSP_TXBUF0 (1 << 1) /* число 64-х разрядных слов, находящихся в буфере передачи меньше, либо равно TLEV */ #define MC_MASKR3_SRQ0 (1 << 0) /* Запрос обслуживания от порта MFBSP0 */ /* IRQM register */ #define MC_IRQM_MODE_EDGE3 (1 << 11) #define MC_IRQM_MODE_EDGE2 (1 << 10) #define MC_IRQM_MODE_EDGE1 (1 << 9) #define MC_IRQM_MODE_EDGE0 (1 << 8) #define MC_IRQM_IRQ_NULL3 (1 << 3) #define MC_IRQM_IRQ_NULL2 (1 << 2) #define MC_IRQM_IRQ_NULL1 (1 << 1) #define MC_IRQM_IRQ_NULL0 (1 << 0) #endif /* * Системный регистр CLKEN */ #if defined(CONFIG_MC0428) #define MC_CLKEN_SRIO1 (1 << 29) /* Управление включением тактовой частоты контроллера SRIO1 */ #define MC_CLKEN_SRIO0 (1 << 28) /* Управление включением тактовой частоты контроллера SRIO0 */ #define MC_CLKEN_SWIC1 (1 << 25) /* Управление включением тактовой частоты SWIC1 */ #define MC_CLKEN_SWIC0 (1 << 24) /* Управление включением тактовой частоты SWIC0 */ #define MC_CLKEN_EMAC (1 << 20) /* Управление включением тактовой частоты Ethernet MAC */ #define MC_CLKEN_VPOUT (1 << 19) /* Управление включением тактовой частоты VPOUT */ #define MC_CLKEN_VPIN (1 << 18) /* Управление включением тактовой частоты VPIN */ #define MC_CLKEN_PMSC (1 << 16) /* Управление включением тактовой частоты PMSC */ #define MC_CLKEN_DMA1 (1 << 13) /* Управление включением тактовой частоты каналов DMA MEM_CH10 – MEM_CH17 */ #define MC_CLKEN_DMA0 (1 << 12) /* Управление включением тактовой частоты каналов DMA MEM_CH00 – MEM_CH07 */ #define MC_CLKEN_MFBSP1 (1 << 9) /* Управление включением тактовой частоты MFBSP1 */ #define MC_CLKEN_MFBSP0 (1 << 8) /* Управление включением тактовой частоты MFBSP0 */ #define MC_CLKEN_DSP3 (1 << 7) /* Включение тактовой частоты ядра DSP3 */ #define MC_CLKEN_DSP2 (1 << 6) /* Включение тактовой частоты ядра DSP2 */ #define MC_CLKEN_DSP1 (1 << 5) /* Включение тактовой частоты ядра DSP1 */ #define MC_CLKEN_DSP0 (1 << 4) /* Включение тактовой частоты ядра DSP0 */ #define MC_CLKEN_DDR1 (1 << 3) /* Включение тактовой частоты порта DDR_PORT1 */ #define MC_CLKEN_DDR0 (1 << 2) /* Включение тактовой частоты порта DDR_PORT0 */ #define MC_CLKEN_CORE (1 << 0) /* Включение тактовой частоты ядра (CPU, UART, IT0, IT1, WDT, I2C) */ #else #if defined(CONFIG_MCT04) #define MC_CLKEN_SpFR (1 << 28) /* Включение тактовой частоты SpFR */ #define MC_CLKEN_SWIC1 (1 << 25) /* Включение тактовой частоты SWIC1 */ #define MC_CLKEN_SWIC0 (1 << 24) /* Включение тактовой частоты SWIC0 */ #define MC_CLKEN_NFC7 (1 << 23) /* Включение тактовой частоты NFC7 */ #define MC_CLKEN_NFC6 (1 << 22) /* Включение тактовой частоты NFC6 */ #define MC_CLKEN_NFC5 (1 << 21) /* Включение тактовой частоты NFC5 */ #define MC_CLKEN_NFC4 (1 << 20) /* Включение тактовой частоты NFC4 */ #define MC_CLKEN_NFC3 (1 << 19) /* Включение тактовой частоты NFC3 */ #define MC_CLKEN_NFC2 (1 << 18) /* Включение тактовой частоты NFC2 */ #define MC_CLKEN_NFC1 (1 << 17) /* Включение тактовой частоты NFC1 */ #define MC_CLKEN_NFC0 (1 << 16) /* Включение тактовой частоты NFC0 */ #define MC_CLKEN_DMA (1 << 12) /* Включение тактовой частоты DMA */ #define MC_CLKEN_DDR (1 << 6) /* Включение тактовой частоты DDR_PORT */ #define MC_CLKEN_CPU1 (1 << 1) /* Включение тактовой частоты CPU1 */ #define MC_CLKEN_CORE (1 << 0) /* Включение тактовой частоты ядра (CPU0, MPORT, TIMER, UART, I2C, MFBSP0) */ #else #if defined(CONFIG_MC30SF6) #define MC_CLKEN_GSpWR (1 << 28) #define MC_CLKEN_SPFMIC1 (1 << 27) #define MC_CLKEN_SPFMIC0 (1 << 26) #define MC_CLKEN_USB (1 << 22) #define MC_CLKEN_ACC (1 << 21) #define MC_CLKEN_EMAC (1 << 20) #define MC_CLKEN_DMA0 (1 << 12) #define MC_CLKEN_MFBSP3_1 (1 << 8) #define MC_CLKEN_DDR1 (1 << 7) #define MC_CLKEN_DDR0 (1 << 6) #define MC_CLKEN_DSP1 (1 << 5) #define MC_CLKEN_DSP0 (1 << 4) #define MC_CLKEN_CPU2 (1 << 2) #define MC_CLKEN_CPU1 (1 << 1) #define MC_CLKEN_CPU0 (1 << 0) #else #if defined(CONFIG_MCT06) #define MC_CLKEN_SWIC3 (1 << 29) /* Управление включением тактовой частоты SWIC3 */ #define MC_CLKEN_SWIC2 (1 << 28) /* Управление включением тактовой частоты SWIC2 */ #define MC_CLKEN_SWIC1 (1 << 27) /* Управление включением тактовой частоты SWIC1 */ #define MC_CLKEN_SWIC0 (1 << 26) /* Управление включением тактовой частоты SWIC0 */ #define MC_CLKEN_EMAC1 (1 << 21) /* Управление включением тактовой частоты Ethernet MAC1 */ #define MC_CLKEN_EMAC0 (1 << 20) /* Управление включением тактовой частоты Ethernet MAC0 */ #define MC_CLKEN_MFBSP1 (1 << 18) /* Управление включением тактовой частоты MFBSP1 */ #define MC_CLKEN_MFBSP0 (1 << 17) /* Управление включением тактовой частоты MFBSP0 */ #define MC_CLKEN_ARINC429 (1 << 16) /* Управление включением тактовой частоты ARINC429 */ #define MC_CLKEN_1553BIC1 (1 << 15) /* Управление включением тактовой частоты 1553BIC1 */ #define MC_CLKEN_1553BIC0 (1 << 14) /* Управление включением тактовой частоты 1553BIC0 */ #define MC_CLKEN_DMA1 (1 << 13) /* Управление включением тактовой частоты каналов DMA MEM_CH10 – MEM_CH17 */ #define MC_CLKEN_DMA0 (1 << 12) /* Управление включением тактовой частоты каналов DMA MEM_CH00 – MEM_CH07 */ #define MC_CLKEN_SPFMIC1 (1 << 9) /* Управление включением тактовой частоты SPFMIC1 */ #define MC_CLKEN_SPFMIC0 (1 << 8) /* Управление включением тактовой частоты SPFMIC0 */ #define MC_CLKEN_CANBIC1 (1 << 7) /* Управление включением тактовой частоты CANBIC1 */ #define MC_CLKEN_CANBIC0 (1 << 6) /* Управление включением тактовой частоты CANBIC0 */ #define MC_CLKEN_DSP1 (1 << 5) /* Включение тактовой частоты DSP1 */ #define MC_CLKEN_DSP0 (1 << 4) /* Включение тактовой частоты DSP0 */ #define MC_CLKEN_CORE (1 << 0) /* Управление включением тактовой частоты, поступающей от PLL_CORE */ #else #define MC_CLKEN_MCC (1 << 31) /* Включение тактовой частоты MCC */ #define MC_CLKEN_SWIC(n) (1 << (24+(n))) /* Включение тактовой частоты SWIC */ #define MC_CLKEN_USB (1 << 22) /* Включение тактовой частоты USB */ #define MC_CLKEN_EMAC (1 << 20) /* Включение тактовой частоты EMAC */ #define MC_CLKEN_VPOUT (1 << 19) /* Включение тактовой частоты VPOUT */ #define MC_CLKEN_VPIN (1 << 18) /* Включение тактовой частоты VPIN */ #define MC_CLKEN_DMA_MEM (1 << 12) /* Включение тактовой частоты DMA_MEM */ #define MC_CLKEN_MFBSP (1 << 8) /* Включение тактовой частоты MFBSP 1-3 */ #define MC_CLKEN_DSP1 (1 << 5) /* Включение тактовой частоты DSP1 */ #define MC_CLKEN_DSP0 (1 << 4) /* Включение тактовой частоты DSP0 */ #define MC_CLKEN_CORE2 (1 << 2) /* Отключение (нулем) тактовой частоты CPU, CRAM, коммутатора AXI, MPORT, UART, I2C, MFBSP0 (от TIMER частота не отключается) */ #define MC_CLKEN_CPU (1 << 1) /* Отключение (нулем) тактовой частоты CPU */ #define MC_CLKEN_CORE (1 << 0) /* Включение тактовой частоты ядра (CPU, MPORT, TIMER, UART, I2C, MFBSP0) */ #endif #endif #endif #endif /* * Системный регистр CR_PLL */ #if defined(CONFIG_MC0428) #define MC_CRPLL_PLL_DDR_EN (1 << 31) #define MC_CRPLL_SEL_DDR(n) (((n) & 0x07F) << 24) #define MC_CRPLL_PLL_DSP_EN (1 << 23) #define MC_CRPLL_SEL_DSP(n) (((n) & 0x07F) << 16) #define MC_CRPLL_SEL_MPORT(n) (((n) & 0x07F) << 8) #define MC_CRPLL_CLKSEL_CORE(n) (n & 0x07F) /* Коэффициент частоты PLL_CORE */ #else #if defined(CONFIG_MCT04) #define MC_CRPLL_CLKSEL_DDR(n) ((n & 0x07F) << 24) #define MC_CRPLL_PLL_NAND_EN (1 << 23) #define MC_CRPLL_CLKSEL_NAND(n) ((n & 0x07F) << 16) #define MC_CRPLL_PLL_CORE_EN (1 << 7) #define MC_CRPLL_CLKSEL_CORE(n) (n & 0x0F) /* Коэффициент частоты PLL_CORE */ #else #if defined(CONFIG_MC30SF6) #define MC_CRPLL_PLL_DDR_EN (1 << 31) #define MC_CRPLL_SEL_DDR(n) (((n) & 0x07F) << 24) #define MC_CRPLL_PLL_DSP_EN (1 << 23) #define MC_CRPLL_SEL_DSP(n) (((n) & 0x07F) << 16) #define MC_CRPLL_PLL_MPORT_EN (1 << 15) #define MC_CRPLL_SEL_MPORT(n) (((n) & 0x07F) << 8) #define MC_CRPLL_PLL_CORE_EN (1 << 7) #define MC_CRPLL_CLKSEL_CORE(n) (n & 0x07F) /* Коэффициент частоты PLL_CORE */ /* CR_PLL1 */ #define MC_CRPLL_ACC_EN (1 << 23) #define MC_CRPLL_SEL_ACC(n) (((n) & 0x07F) << 16) #else #if defined(MCT06) #define MC_CRPLL_CLK_SEL_50_EN (1 << 31) #define MC_CRPLL_CLK_SEL_50(n) (((n) & 0x07F) << 24) #define MC_CRPLL_PLL_DSP_EN (1 << 23) #define MC_CRPLL_SEL_DSP(n) (((n) & 0x07F) << 16) #define MC_CRPLL_PLL_MPORT_EN (1 << 15) #define MC_CRPLL_SEL_MPORT(n) (((n) & 0x07F) << 8) #define MC_CRPLL_PLL_CORE_EN (1 << 7) #define MC_CRPLL_CLKSEL_CORE(n) (n & 0x07F) /* Коэффициент частоты PLL_CORE */ #else #define MC_CRPLL_DSP (1 << 23) /* Выбор тактовой частоты PLL_DSP */ #define MC_CRPLL_CLKSEL_DSP(n) ((n) << 16) /* Коэффициент частоты PLL_DSP */ #define MC_CRPLL_CLKSEL_MPORT(n) ((n) << 8) /* Коэффициент частоты PLL_MPORT */ #define MC_CRPLL_CLKSEL_CORE(n) (n) /* Коэффициент частоты PLL_CORE */ #endif #endif #endif #endif #if defined(CONFIG_MCT06) /* * Регистр AXI_RND */ #define MC_AXI_RND_DIS (1 << 15) /* отключение режима кольца, схема приоритетов становится сквозной */ #define MC_AXI_RND_LIN(n) (n & 0x0F) /* определяет схему приоритетов при доступе контроллеров DMA к AXI */ #endif /////// MPORT /* * Регистры порта внешней памяти CSCONi */ #define MC_CSCON_CSMASK(addr) ((addr) >> 24 & 0xff) /* Address mask bits 31:24 */ #define MC_CSCON_CSBA(addr) ((addr) >> 16 & 0xff00) /* Base address bits 31:24 */ #define MC_CSCON_WS(n) ((n) << 16) /* Wait states for async memory */ #define MC_CSCON_E (1 << 20) /* Enable for nCS0, nCS1, nCS2 */ #define MC_CSCON_T (1 << 21) /* Sync memory flag (only nCS0, nCS1) */ #define MC_CSCON_AE (1 << 22) /* Wait for nACK */ #define MC_CSCON_W64 (1 << 23) /* 64-bit data width */ #define MC_CSCON3_BYTE (1 << 23) /* 8-bit data width for nCS3 */ #define MC_CSCON3_OVER (1 << 24) /* Status: no nACK for 256 CLK periods */ #define MC_CSCON3_ADDR(addr) (((addr) & 3) << 20) /* Address bits 1:0 for 8-bit memory access */ /* * Регистр конфигурации синхронной динамической памяти SDRCON */ #define MC_SDRCON_PS_512 (0 << 0) /* Page size 512 */ #define MC_SDRCON_PS_1024 (1 << 0) /* Page size 1024 */ #define MC_SDRCON_PS_2048 (2 << 0) /* Page size 2048 */ #define MC_SDRCON_PS_4096 (3 << 0) /* Page size 4096 */ #if defined(CONFIG_MC24R2)||defined(CONFIG_MC24M) #define MC_SDRCON_RFR(nsec,khz) ((((nsec)*(khz)+999999)/1000000) << 4) /* Refresh period */ #define MC_SDRCON_BL_1 (0 << 16) /* Bursh length 1 */ #define MC_SDRCON_BL_2 (1 << 16) /* Bursh length 2 */ #define MC_SDRCON_BL_4 (2 << 16) /* Bursh length 4 */ #define MC_SDRCON_BL_8 (3 << 16) /* Bursh length 8 */ #define MC_SDRCON_BL_PAGE (7 << 16) /* Bursh full page */ #define MC_SDRCON_WBM (1 << 19) /* Write burst mode - single write */ #define MC_SDRCON_CL (1 << 20) /* CAS latency: 0 - 2, 1 - 3 cycles */ #define MC_SDRCON_INIT (1 << 31) /* Initialize SDRAM, 2 usec */ #endif #if defined(CONFIG_NVCOM01)||defined(CONFIG_MCT06)||defined(CONFIG_MC0428) #define MC_SDRCON_RFR(nsec,khz) (((nsec*khz+999999)/1000000) << 16) /* Refresh period */ #define MC_SDRCON_CL_2 (2 << 4) /* CAS latency 2 cycles */ #define MC_SDRCON_CL_3 (3 << 4) /* CAS latency 3 cycles */ #endif /* * Регистр управления и состояния SDRCSR */ #if !defined(CONFIG_MC0428) #define MC_SDRCSR_APPLY (1 << 6) /* перепись содержимого регистров MPORT в одноименные исполнительные регистры */ #endif #define MC_SDRCSR_EXIT (1 << 4) /* вывод SDRAM из режимов саморегенерации и пониженного потребления */ #define MC_SDRCSR_PWDN (1 << 3) /* переводит SDRAM в режим пониженного потребления */ #define MC_SDRCSR_SREF (1 << 2) /* переводит SDRAM в режим саморегенерации */ #define MC_SDRCSR_AREF (1 << 1) /* при записи 1 выполняется команда авторегенерации SDRAM */ #define MC_SDRCSR_INIT (1 << 0) /* при записи 1 выполняется инициализация SDRAM */ /* * Регистр управления режимами контроля и коррекции памяти модифицированным кодом Хэмминга CSR_EXT */ #define MC_CSR_EXT_SERR_MSK 0xFF000000 /* маска счетчика одиночных ошибок */ #define MC_CSR_EXT_NUM_SERR(n) ((n & 0x0FF) << 16) /* Допустимый порог одиночных ошибок */ #define MC_CSR_EXT_DERR_MSK 0x0000FF00 /* маска счетчика двойных ошибок */ #define MC_CSR_EXT_ROM (1 << 4) /* Признак отключения контроля для блока на nCS[3] */ #define MC_CSR_EXT_RMW (1 << 3) /* Разрешение операции чтение-модификация-запись */ #define MC_CSR_EXT_NEMPTY (1 << 2) /* Признак наличия данных в FIFO ошибочных адресов */ #define MC_CSR_EXT_MODE(n) (n & 0x03) /* Режим работы памяти */ #define MC_CSR_EXT_MODE_NCORR 0 /* режим без коррекции ошибок */ #define MC_CSR_EXT_MODE_WCORR 1 /* режим с коррекцией ошибок */ #define MC_CSR_EXT_MODE_TSR 2 /* режим тестирования */ /* * Регистр параметров синхронной динамической памяти SDRTMR */ #define MC_SDRTMR_TWR(n) ((n) << 0) /* Write recovery delay */ #define MC_SDRTMR_TRP(n) ((n) << 4) /* Минимальный период Precharge */ #define MC_SDRTMR_TRCD(n) ((n) << 8) /* Минимальная задержка между * Active и Read/Write */ #define MC_SDRTMR_TRAS(n) ((n) << 16) /* Минимальная задержка между * Active и Precharge */ #define MC_SDRTMR_TRFC(n) ((n) << 20) /* Минимальный интервал между Refresh */ #if defined(CONFIG_MC0428) #define MC_SDRTMR_TRC(n) ((n) << 24) /* Минимальный период команд ACTIVE */ #endif /* * Регистр FLY_WS */ #define MC_FLY_WS_FWS3(n) ((n & 0x0F) << 12) /* Число тактов ожидания для внешнего устройства 3 */ #define MC_FLY_WS_FWS2(n) ((n & 0x0F) << 8) /* Число тактов ожидания для внешнего устройства 2 */ #define MC_FLY_WS_FWS1(n) ((n & 0x0F) << 4) /* Число тактов ожидания для внешнего устройства 1 */ #define MC_FLY_WS_FWS0(n) ((n & 0x0F) << 0) /* Число тактов ожидания для внешнего устройства 0 */ /* * Регистр AERROR_EXT */ #define MC_AERROR_EXT_ADDR_ERR_MSK (0xFFFFFFFC) /* маска адреса ячейки памяти при чтении из которой обнаружена ошибка */ #define MC_AERROR_EXT_CERR_MSK (0x3) /* маска кода ошибки */ /*-------------------------------------- * Интервальный таймер, регистр управления ITCSR */ #define MC_ITCSR_EN 0x00000001 /* разрешение работы таймера */ #define MC_ITCSR_INT 0x00000002 /* признак срабатывания таймера */ #if defined(CONFIG_MCT04) #define MC_ITCSR_TICK 0x00000004 /* Бит тестирования регистра счетчика ITCOUNT и регистра предделителя IRTSCALE */ #define MC_ITCSR_CLK_SEL(n) ((n & 1) << 3) /* Задает тактовую частоту от которой работает IT */ #define MC_ITCSR_CLK_SEL_CLK (0) /* тактовая частота CPU */ #define MC_ITCSR_CLK_SEL_XTI (1 << 3) /* внешняя тактовая частота XTI */ #else #if defined(CONFIG_MCT06)||defined(CONFIG_MC0428) #define MC_ITCSR_TICK 0x00000004 /* Бит тестирования регистра счетчика ITCOUNT и регистра предделителя IRTSCALE */ #define MC_ITCSR_CLK_SEL(n) ((n & 3) << 3) /* Задает тактовую частоту от которой работает IT */ #define MC_ITCSR_CLK_SEL_CLK (0) /* тактовая частота CPU */ #define MC_ITCSR_CLK_SEL_XTI (1 << 3) /* внешняя тактовая частота XTI */ #define MC_ITCSR_CLK_SEL_RTCXTI (0x02 << 3) /* внешняя тактовая частота RTCXTI */ #endif #endif /*-------------------------------------- * Сторожевой таймер, регистр управления WTCSR */ #define MC_WTCSR_KEY1 0x000000A0 /* первый ключ */ #define MC_WTCSR_KEY2 0x000000F5 /* второй ключ */ #define MC_WTCSR_EN 0x00000100 /* разрешение работы таймера */ #define MC_WTCSR_INT 0x00000200 /* признак срабатывания таймера */ #define MC_WTCSR_MODE_ITM 0x00000400 /* режим обычного таймера */ #define MC_WTCSR_RLD 0x00000800 /* периодическая перезагрузка */ #define MC_WTCSR_INT_CTR 0x00003000 /* управление типом прерывания */ #define MC_WTCSR_INT_DISABLE 0x00000000 /* прерывание не формируется */ #define MC_WTCSR_INT_TIMER 0x00001000 /* обычное прерывание QSTR[29] */ #define MC_WTCSR_INT_NMI 0x00002000 /* немаскируемое прерывание */ #define MC_WTCSR_INT_EXTSIG 0x00003000 /* внешний сигнал WDT */ /*-------------------------------------- * UART. */ /* * Line control register */ #define MC_LCR_5BITS 0x00 /* character length: 5 bits */ #define MC_LCR_6BITS 0x01 /* character length: 6 bits */ #define MC_LCR_7BITS 0x02 /* character length: 7 bits */ #define MC_LCR_8BITS 0x03 /* character length: 8 bits */ #define MC_LCR_STOPB 0x04 /* use 2 stop bits */ #define MC_LCR_PENAB 0x08 /* parity enable */ #define MC_LCR_PEVEN 0x10 /* even parity */ #define MC_LCR_PFORCE 0x20 /* force parity */ #define MC_LCR_SBREAK 0x40 /* break control */ #define MC_LCR_DLAB 0x80 /* divisor latch access bit */ /* * FIFO control register */ #define MC_FCR_ENABLE 0x01 /* enable FIFO */ #define MC_FCR_RCV_RST 0x02 /* clear receive FIFO */ #define MC_FCR_XMT_RST 0x04 /* clear transmit FIFO */ #define MC_FCR_TRIGGER_1 0x00 /* receive FIFO level: 1/4 byte */ #define MC_FCR_TRIGGER_4 0x40 /* receive FIFO level: 4/16 bytes */ #define MC_FCR_TRIGGER_8 0x80 /* receive FIFO level: 8/56 bytes */ #define MC_FCR_TRIGGER_14 0xc0 /* receive FIFO level: 14/60 bytes */ /* * Line status register */ #define MC_LSR_RXRDY 0x01 /* receiver ready */ #define MC_LSR_OE 0x02 /* overrun error */ #define MC_LSR_PE 0x04 /* parity error */ #define MC_LSR_FE 0x08 /* framing error */ #define MC_LSR_BI 0x10 /* break interrupt */ #define MC_LSR_TXRDY 0x20 /* transmitter holding register empty */ #define MC_LSR_TEMT 0x40 /* transmitter empty */ #define MC_LSR_FIFOE 0x80 /* error in receive FIFO */ /* * Interrupt enable register */ #define MC_IER_ERXRDY 0x01 /* enable receive data/timeout intr */ #define MC_IER_ETXRDY 0x02 /* enable transmitter interrupts */ #define MC_IER_ERLS 0x04 /* enable receive line status intr */ #define MC_IER_EMSC 0x08 /* enable modem status interrupts */ /* * Interrupt identification register */ #define MC_IIR_NOPEND 0x01 /* no interrupt pending */ #define MC_IIR_IMASK 0x0e /* interrupt type mask */ #define MC_IIR_FENAB 0xc0 /* set if FIFOs are enabled */ #define MC_IIR_RLS 0x06 /* receiver line status */ #define MC_IIR_RXRDY 0x04 /* receiver data available */ #define MC_IIR_RXTOUT 0x0c /* character timeout indication */ #define MC_IIR_TXRDY 0x02 /* transmitter holding reg empty */ #define MC_IIR_MLSC 0x00 /* modem status */ /* * Modem control register */ #define MC_MCR_DTR 0x01 /* control DTR output */ #define MC_MCR_RTS 0x02 /* control RTS output */ #define MC_MCR_OUT1 0x04 /* control OUT1 output */ #define MC_MCR_OUT2 0x08 /* control OUT2 output, used as * global interrupt enable in PCs */ #define MC_MCR_LOOPBACK 0x10 /* set local loopback mode */ /* * Modem status register */ #define MC_MSR_DCTS 0x01 /* CTS changed */ #define MC_MSR_DDSR 0x02 /* DSR changed */ #define MC_MSR_TERI 0x04 /* RI changed from 0 to 1 */ #define MC_MSR_DDCD 0x08 /* DCD changed */ #define MC_MSR_CTS 0x10 /* CTS input */ #define MC_MSR_DSR 0x20 /* DSR input */ #define MC_MSR_RI 0x40 /* RI input */ #define MC_MSR_DCD 0x80 /* DCD input */ /* * Compute the 16-bit baud rate divisor, given * the oscillator frequency and baud rate. * Round to the nearest integer. */ #define MC_DL_BAUD(fr,bd) (((fr)/8 + (bd)) / (bd) / 2) /*-------------------------------------- * Coprocessor 1 (FPU) registers. */ #define C1_FIR 0 /* implementation and revision */ #define C1_FCCR 25 /* condition codes */ #define C1_FEXR 26 /* exceptions */ #define C1_FENR 28 /* enables */ #define C1_FCSR 31 /* control/status */ /* * FPU control/status register */ #define FCSR_ROUND 0x00000003 /* round mode */ #define FCSR_ROUND_N 0x00000000 /* round to nearest */ #define FCSR_ROUND_Z 0x00000001 /* round toward zero */ #define FCSR_ROUND_P 0x00000002 /* round toward positive infinity */ #define FCSR_ROUND_M 0x00000003 /* round toward negative infinity */ #define FCSR_FLAG_I 0x00000004 /* flag: inexact result */ #define FCSR_FLAG_U 0x00000008 /* flag: underflow */ #define FCSR_FLAG_O 0x00000010 /* flag: overflow */ #define FCSR_FLAG_Z 0x00000020 /* flag: divide by zero */ #define FCSR_FLAG_V 0x00000040 /* flag: invalid operation */ #define FCSR_ENABLES 0x00000f80 /* enables */ #define FCSR_ENABLE_I 0x00000080 /* enables: inexact result */ #define FCSR_ENABLE_U 0x00000100 /* enables: underflow */ #define FCSR_ENABLE_O 0x00000200 /* enables: overflow */ #define FCSR_ENABLE_Z 0x00000400 /* enables: divide by zero */ #define FCSR_ENABLE_V 0x00000800 /* enables: invalid operation */ #define FCSR_CAUSE_I 0x00001000 /* cause: inexact result */ #define FCSR_CAUSE_U 0x00002000 /* cause: underflow */ #define FCSR_CAUSE_O 0x00004000 /* cause: overflow */ #define FCSR_CAUSE_Z 0x00008000 /* cause: divide by zero */ #define FCSR_CAUSE_V 0x00010000 /* cause: invalid operation */ #define FCSR_CAUSE_E 0x00020000 /* cause: unimplemented */ #define FCSR_FS 0x01000000 /* flush to zero */ #define FCSR_COND_0 0x00800000 /* condition code 0 */ #define FCSR_COND_1 0x02000000 /* condition code 1 */ #define FCSR_COND_2 0x04000000 /* condition code 2 */ #define FCSR_COND_3 0x08000000 /* condition code 3 */ #define FCSR_COND_4 0x10000000 /* condition code 4 */ #define FCSR_COND_5 0x20000000 /* condition code 5 */ #define FCSR_COND_6 0x40000000 /* condition code 6 */ #define FCSR_COND_7 0x80000000 /* condition code 7 */ /* * MFBSP_CSR - регистр управления MFBSP */ #define MC_MFBSP_LEN (1 << 0) #define MC_MFBSP_LTRAN (1 << 1) #define MC_MFBSP_LCLK_RATE(n) ((((n) & 1) << 2) | (((n) & 0x1e) << 10)) #define MC_MFBSP_LSTAT(n) ((n) << 3) #define MC_MFBSP_LRERR (1 << 5) #define MC_MFBSP_LDW (1 << 6) #define MC_MFBSP_SRQ_TX (1 << 7) #define MC_MFBSP_SRQ_RX (1 << 8) #define MC_MFBSP_SPI_I2S_EN (1 << 9) #define MC_MFBSP_GET_LCLK_RATE(x) (((x) >> 2) & 1) | (((x) >> 10) & 0x1e) #if defined(CONFIG_MCT04) #define MC_MFBSP_RXBUF_IRQ_EN (1 << 15) /* TODO */ #define MC_MFBSP_TXBUF_IRQ_EN (1 << 16) /* TODO */ #endif /* * MFBSP_DIR - регистр управления направлением выводов MFBSP */ #define MC_MFBSP_RCLK_DIR (1 << 0) #define MC_MFBSP_TCLK_DIR (1 << 1) #define MC_MFBSP_RCS_DIR (1 << 2) #define MC_MFBSP_TCS_DIR (1 << 3) #define MC_MFBSP_RD_DIR (1 << 4) #define MC_MFBSP_TD_DIR (1 << 4) /* * MC_MFBSP_RCTR - регистр управления приёмником MFBSP */ #define MC_MFBSP_REN (1 << 0) #define MC_MFBSP_RMODE (1 << 1) #define MC_MFBSP_RCLK_CP (1 << 2) #define MC_MFBSP_RCS_CP (1 << 3) #if defined(CONFIF_MCT04) #define MC_MFBSP_RCLK_RATE_L(n) ((n & 0x1F) << 4) /* TODO */ #endif #define MC_MFBSP_RNEG (1 << 10) #define MC_MFBSP_RDEL (1 << 11) #define MC_MFBSP_RWORDCNT(n) ((n) << 12) #define MC_MFBSP_RWORDCNT_MASK MC_MFBSP_RWORDCNT(0x1F) #define MC_MFBSP_RMBF (1 << 19) #define MC_MFBSP_RWORDLEN(n) ((n) << 20) #define MC_MFBSP_RWORDLEN_MASK MC_MFBSP_RWORDCNT(0x3F) #define MC_MFBSP_RPACK (1 << 25) #define MC_MFBSP_RSIGN (1 << 26) /* * MC_MFBSP_TCTR - регистр управления передатчиком MFBSP */ #define MC_MFBSP_TEN (1 << 0) #define MC_MFBSP_TMODE (1 << 1) #define MC_MFBSP_SS_DO (1 << 3) #if defined(CONFIF_MCT04) #define MC_MFBSP_TCLK_RATE(n) ((n & 0x1F) << 4) /* TODO */ #endif #define MC_MFBSP_TNEG (1 << 10) #define MC_MFBSP_TDEL (1 << 11) #define MC_MFBSP_TWORDCNT(n) ((n) << 12) #define MC_MFBSP_TWORDCNT_MASK MC_MFBSP_TWORDCNT(0x1F) #define MC_MFBSP_TMBF (1 << 19) #define MC_MFBSP_TWORDLEN(n) ((n) << 20) #define MC_MFBSP_TWORDLEN_MASK MC_MFBSP_TWORDCNT(0x3F) #define MC_MFBSP_TPACK (1 << 25) #define MC_MFBSP_SS(n) (1 << (30 + (n))) /* * MFBSP_GPIO_DR и MFBSP_DIR */ #define MC_MFBSP_GPIO_LACK (1 << 0) #define MC_MFBSP_GPIO_LCLK (1 << 1) #define MC_MFBSP_GPIO_LDAT(n) (1 << ((n) + 2)) /* * MFBSP_RSR */ #define MC_MFBSP_RBE (1 << 0) #define MC_MFBSP_RBF (1 << 1) #define MC_MFBSP_RBHF (1 << 2) #define MC_MFBSP_RBHL (1 << 3) #if defined(CONFIG_MCT04) #define MC_MFBSP_RSR_RLEV(n) (((n) & 0x07) << 4) #define MC_MFBSP_RSBE (1 << 7) #define MC_MFBSP_RSBF (1 << 8) #define MC_MFBSP_RERR (1 << 9) #define MC_MFBSP_RRUN (1 << 10) #define MC_MFBSP_RCLK_RATE_H(n) (((n) & 0x1F) << 12) #define MC_MFBSP_RB_DIFF(x) (((x) >> 20) & 0x07) #define MC_MFBSP_RSS_RATE(n) (((n) & 0xF) << 24) #else #define MC_MFBSP_RSBE (1 << 4) #define MC_MFBSP_RSBF (1 << 5) #define MC_MFBSP_RXBUF_R (1 << 8) #define MC_MFBSP_RXBUF_D (1 << 9) #define MC_MFBSP_RXBUF (1 << 10) #define MC_MFBSP_RLEV(n) ((n) << 16) #define MC_MFBSP_RB_DIFF(x) (((x) & 0xF) << 24) #endif /* * MFBSP_TSR */ #define MC_MFBSP_TBE (1 << 0) #define MC_MFBSP_TBF (1 << 1) #define MC_MFBSP_TBHF (1 << 2) #define MC_MFBSP_TBLL (1 << 3) #if defined(CONFIG_MCT04) #define MC_MFBSP_TLEV(x) ((x) >> 4) & 0x1F) #define MC_MFBSP_TSBE (1 << 7) #define MC_MFBSP_TSBF (1 << 8) #define MC_MFBSP_TERR (1 << 9) #define MC_MFBSP_TRUN (1 << 10) #define MC_MFBSP_TCLK_RATE(n) (((n) & 0x1F) << 12) #define MC_MFBSP_TB_DIFF(x) (((x) >> 20) & 0x07) #define MC_MFBSP_TSS_RATE(n) (((n) & 0xF) << 24) #else #define MC_MFBSP_TSBE (1 << 4) #define MC_MFBSP_TSBF (1 << 5) #define MC_MFBSP_TXBUF_R (1 << 8) #define MC_MFBSP_TXBUF_D (1 << 9) #define MC_MFBSP_TXBUF (1 << 10) #define MC_MFBSP_TLEV(n) ((n) << 16) #define MC_MFBSP_TBES(n) ((n) << 20) #define MC_MFBSP_TB_DIFF(x) (((x) >> 24) & 0xF) #endif #if !defined(CONFIG_MCT04) /* * MFBSP_RCTR_RATE */ #define MC_MFBSP_RCLK_RATE(n) (n) #define MC_MFBSP_RSS_RATE(n) ((n) << 12) /* * MFBSP_TCTR_RATE */ #define MC_MFBSP_TCLK_RATE(n) (n) #define MC_MFBSP_TSS_RATE(n) ((n) << 12) #endif /* * MFBSP_EMERG */ #define MC_MFBSP_RST_LPTBUF (1 << 0) #define MC_MFBSP_RST_TXBUF (1 << 1) #define MC_MFBSP_RST_RXBUF (1 << 2) #define MC_MFBSP_RST_TX_DBG (1 << 4) #define MC_MFBSP_RST_RX_DBG (1 << 5) /* * MFBSP_IMASK */ #define MC_MFBSP_LPT_IRQ_EN (1 << 0) #define MC_MFBSP_TX_ERR_IRQ_EN (1 << 4) #define MC_MFBSP_TX_LEV_IRQ_EN (1 << 5) #define MC_MFBSP_TXBUF_R_EN (1 << 6) #define MC_MFBSP_RX_ERR_IRQ_EN (1 << 12) #define MC_MFBSP_RX_LEV_IRQ_EN (1 << 13) #define MC_MFBSP_RXBUF_R_EN (1 << 14) /*-------------------------------------- * Регистры контроллера Ethernet */ /* * MAC_CONTROL - управление MAC */ #define MAC_CONTROL_FULLD (1 << 0) /* дуплексный режим */ #define MAC_CONTROL_EN_TX_DMA (1 << 1) /* разрешение передающего TX DMА */ #define MAC_CONTROL_EN_TX (1 << 2) /* разрешение передачи */ #define MAC_CONTROL_IRQ_TX_DONE (1 << 3) /* прерывание от передачи */ #define MAC_CONTROL_EN_RX (1 << 4) /* разрешение приема */ #define MAC_CONTROL_LOOPBACK (1 << 5) /* режим зацикливания */ #define MAC_CONTROL_FULLD_RX (1 << 6) /* тестовый режим приема */ #define MAC_CONTROL_IRQ_RX_DONE (1 << 7) /* прерывание по приёму */ #define MAC_CONTROL_IRQ_RX_OVF (1 << 8) /* прерывание по переполнению */ #define MAC_CONTROL_CP_TX (1 << 9) /* сброс передающего TX_FIFO */ #define MAC_CONTROL_RST_TX (1 << 10) /* сброс блока передачи */ #define MAC_CONTROL_CP_RX (1 << 11) /* сброс принимающего RX_FIFO */ #define MAC_CONTROL_RST_RX (1 << 12) /* сброс блока приема */ /* * IFS_COLL_MODE - режим обработки коллизии */ #define IFS_COLL_MODE_ATTEMPT_NUM(n) ((n) & 15) /* Количество попыток повторных передач */ #define IFS_COLL_MODE_EN_CW (1 << 4) /* Разрешение отслеживания окна коллизии */ #define IFS_COLL_MODE_TM_BACKOFF (1 << 7) /* Тестовый режим */ #define IFS_COLL_MODE_COLL_WIN(n) ((n) << 8) /* Размер окна коллизии */ #define IFS_COLL_MODE_JAMB(n) ((n) << 16) /* Байт jam-сообщения */ #define IFS_COLL_MODE_IFS(n) ((n) << 24) /* Межкадровый интервал */ /* * TX_FRAME_CONTROL - управление передачей кадра */ #define TX_FRAME_CONTROL_LENGTH(n) ((n) & 0xfff) /* Число байт данных */ #define TX_FRAME_CONTROL_TYPE_EN (1 << 12) /* Поле длины задаёт тип */ #define TX_FRAME_CONTROL_FCS_CLT_EN (1 << 13) /* Контрольная сумма из регистра */ #define TX_FRAME_CONTROL_DISENCAPFR (1 << 14) /* Запрет формирования кадра в блоке передачи */ #define TX_FRAME_CONTROL_DISPAD (1 << 15) /* Запрет заполнителей */ #define TX_FRAME_CONTROL_TX_REQ (1 << 16) /* Передача кадра */ /* * STATUS_TX - статус передачи кадра */ #define STATUS_TX_ONTX_REQ (1 << 0) /* Выполняется запрос передачи */ #define STATUS_TX_ONTRANSMIT (1 << 1) /* Выполняется передача кадра */ #define STATUS_TX_BUSY (1 << 2) /* Среда передачи занята */ #define STATUS_TX_DONE (1 << 3) /* Передача завершена */ #define STATUS_TX_TRANSMIT_DISABLED (1 << 4) /* Передача не разрешена */ #define STATUS_TX_NOT_ENOUGH_DATA (1 << 5) /* Мало данных в TX FIFO */ #define STATUS_TX_TRANSMIT_OK (1 << 6) /* Передача кадра успешно выполнена */ #define STATUS_TX_EXCESSIVE_COLL (1 << 7) /* Повторная передача не удалась */ #define STATUS_TX_LATE_COLL (1 << 8) /* Поздняя коллизия */ #define STATUS_TX_ONCOL (1 << 11) /* Коллизия в среде передачи */ #define STATUS_TX_COLL_NUM(s) ((s) >> 12 & 15) /* Счетчик попыток повторных передач */ #define STATUS_TX_TXW(s) ((s) >> 16 & 0x3ff) /* Число слов в TX FIFO */ #define STATUS_TX_BITS "\20"\ "\1ONTX_REQ\2ONTRANSMIT\3BUSY\4DONE\5DISABLED\6NDATA\7TXOK\10EXCCOLL"\ "\11LATECOLL\14ONCOL" /* * RX_FRAME_CONTROL - управление приемом кадра */ #define RX_FRAME_CONTROL_DIS_RCV_FCS (1 << 0) /* Отключение сохранения контрольной суммы */ #define RX_FRAME_CONTROL_DIS_PAD_DEL (1 << 1) /* Отключение удаления заполнителей */ #define RX_FRAME_CONTROL_ACC_TOOSHORT (1 << 2) /* Прием коротких кадров */ #define RX_FRAME_CONTROL_DIS_TOOLONG (1 << 3) /* Отбрасывание слишком длинных кадров */ #define RX_FRAME_CONTROL_DIS_FCSCHERR (1 << 4) /* Отбрасывание кадров с ошибкой контрольной суммы */ #define RX_FRAME_CONTROL_DIS_LENGTHERR (1 << 5) /* Отбрасывание кадров с ошибкой длины */ #define RX_FRAME_CONTROL_DIS_BC (1 << 6) /* Запрещение приема кадров с широковещательным адресом */ #define RX_FRAME_CONTROL_EN_MCM (1 << 7) /* Разрешение приема кадров с групповым адресом по маске */ #define RX_FRAME_CONTROL_EN_MCHT (1 << 8) /* Разрешение приема кадров с групповым адресом по хеш-таблице */ #define RX_FRAME_CONTROL_EN_ALL (1 << 9) /* Разрешение приема кадров с любым адресом */ /* * STATUS_RX - статус приема кадра */ #define STATUS_RX_RCV_DISABLED (1 << 0) /* Приём не разрешён */ #define STATUS_RX_ONRECEIVE (1 << 1) /* Выполняется приём кадра */ #define STATUS_RX_DONE (1 << 3) /* Есть кадры в RX FIFO */ #define STATUS_RX_NUM_FR(s) ((s) >> 4 & 0x7f) /* Число принятых кадров */ #define STATUS_RX_STATUS_OVF (1 << 11) /* Переполнение FIFO статусов */ #define STATUS_RX_RXW(s) ((s) >> 12 & 0x3ff) /* Число слов в RX FIFO */ #define STATUS_RX_FIFO_OVF (1 << 23) /* Переполнение FIFO данных */ #define STATUS_RX_NUM_MISSED(s) ((s) >> 24 & 0x3f) /* Число пропущенных кадров */ #define STATUS_RX_BITS "\30"\ "\1DISABLED\2ONRECEIVE\4DONE\14STATUS_OVF\30FIFO_OVF" /* * RX_FRAME_STATUS_FIFO - FIFO статусов принятых кадров */ #define RX_FRAME_STATUS_LEN(s) ((s) & 0xfff) /* Число байт в принятом кадре */ #define RX_FRAME_STATUS_OK (1 << 12) /* Кадр принят без ошибок */ #define RX_FRAME_STATUS_LENGTH_ERROR (1 << 13) /* Ошибка длины данных */ #define RX_FRAME_STATUS_ALIGN_ERROR (1 << 14) /* Ошибка выравнивания */ #define RX_FRAME_STATUS_FRAME_ERROR (1 << 15) /* Ошибка формата кадра */ #define RX_FRAME_STATUS_TOO_LONG (1 << 16) /* Слишком длинный кадр */ #define RX_FRAME_STATUS_TOO_SHORT (1 << 17) /* Слишком короткий кадр */ #define RX_FRAME_STATUS_DRIBBLE_NIBBLE (1 << 18) /* Нечётное число полубайт */ #define RX_FRAME_STATUS_LEN_FIELD (1 << 19) /* Распознавание поля LENGTH */ #define RX_FRAME_STATUS_FCS_DEL (1 << 20) /* Удаление поля FCS */ #define RX_FRAME_STATUS_PAD_DEL (1 << 21) /* Удаление поля PAD */ #define RX_FRAME_STATUS_UC (1 << 22) /* Распознавание адреса MAC */ #define RX_FRAME_STATUS_MCM (1 << 23) /* Групповой адрес по маске */ #define RX_FRAME_STATUS_MCHT (1 << 24) /* Групповой адрес по хэш-таблице */ #define RX_FRAME_STATUS_BC (1 << 25) /* Широковещательный адрес */ #define RX_FRAME_STATUS_ALL (1 << 26) /* Приём кадров с любым адресом */ /* * MD_MODE - режим работы порта MD */ #define MD_MODE_DIVIDER(n) ((n) & 0xff) /* делитель для частоты MDC */ #define MD_MODE_RST (1 << 8) /* сброс порта PHY */ /* * MD_CONTROL - управление порта MD */ #define MD_CONTROL_DATA(n) ((n) & 0xffff) /* данные для записи */ #define MD_CONTROL_REG(n) (((n) & 0x1f) << 16) /* адрес регистра PHY */ #define MD_CONTROL_PHY(n) (((n) & 0x1f) << 24) /* адрес PHY */ #define MD_CONTROL_IRQ(n) (1 << 29) /* нужно прерывание */ #define MD_CONTROL_OP_READ (1 << 30) /* операция чтения */ #define MD_CONTROL_OP_WRITE (2 << 30) /* операция записи */ /* * MD_STATUS - статус порта MD */ #define MD_STATUS_DATA 0xffff /* прочитанные данные */ #define MD_STATUS_BUSY (1 << 29) /* порт занят */ #define MD_STATUS_END_READ (1 << 30) /* завершилась операция чтения */ #define MD_STATUS_END_WRITE (1 << 31) /* завершилась операция записи */ /* * DDR_PORT registers */ /* * DDR_ERR */ #if defined(CONFIG_MCT04) #define MC_DDR_Code_ERR(x) ((x) & 0x3) #define MC_DDR_ADDR_ERR(x) ((x) & 0xFFFFFFFC) #else #endif /* * DDR_EXT */ #if defined(CONFIG_MCT04) #define MC_DDR_MODE(n) ((n) & 0x03) /* TODO */ #define MC_DDR_NEMPTY (1 << 2) #define MC_DDR_Cnt_DERR(n) ((n & 0xFF) << 8) #define MC_DDR_Num_SERR(n) ((n & 0x0F) << 16) #define MC_DDR_Cnt_SERR(n) ((n & 0xFF) << 24) #else #endif /* * DDR_MOD */ #if defined(CONFIG_MCT04) #define MC_DDR_SEL(n) ((n & 0x1F)) #define MC_DDR_TMODE (1 << 15) #define MC_DDR_tEYE(n) ((n & 0xFFFF) << 16) #else #endif /* * DDR_CSR */ #if defined(CONFIG_MCT04) #define MC_DDR_INIT (1 << 0) #define MC_DDR_AREF (1 << 1) #define MC_DDR_SREF (1 << 2) #define MC_DDR_PWDN (1 << 3) #define MC_DDR_EXIT (1 << 4) #define MC_DDR_EYEW (1 << 5) #define MC_DDR_APPLY (1 << 6) #else #endif /* * DDR_TMR */ #if defined(CONFIG_MCT04) #define MC_DDR_tWR(n) ((n & 0x3)) #define MC_DDR_tRP(n) ((n & 0x03) << 4) #define MC_DDR_tRCD(n) ((n & 0x03) << 8) #define MC_DDR_tRTW(n) ((n & 0x03) << 12) #define MC_DDR_tRAS(n) ((n & 0x0F) << 16) #define MC_DDR_tRFC(n) ((n & 0x0F) << 20) #define MC_DDR_tRC(n) ((n & 0x0F) << 24) #else #endif /* * DDR_CON */ #if defined(CONFIG_MCT04) #define MC_DDR_PS(n) ((n & 0x07)) #define MC_DDR_CL(n) ((n & 0x07) << 4) #define MC_DDR_DS (1 << 8) #define MC_DDR_tWTR (1 << 12) #define MC_DDR_tRFR(n) ((n & 0x3FFF) << 16) #else #endif #endif #if defined(CONFIG_MCT06) /* * RST_PROG register - devices software reset */ #define MC_PROG_RST_CAN1 (1 << 9) #define MC_PROG_RST_CAN0 (1 << 8) #define MC_PROG_RST_SPF1 (1 << 7) #define MC_PROG_RST_SPF0 (1 << 6) #define MC_PROG_RST_SWIC3 (1 << 5) #define MC_PROG_RST_SWIC2 (1 << 4) #define MC_PROG_RST_SWIC1 (1 << 3) #define MC_PROG_RST_SWIC0 (1 << 2) #define MC_PROG_RST_ARINC (1 << 1) #endif #if defined(CONFIG_MCT06) /* * CSR_CRAM */ #define MC_CSR_CRAM_SERR_MSK (0xFF000000)/* маска значения счетчика одиночных ошибок */ #define MC_CSR_CRAM_NumSERR(n) ((n & 0xFF) << 15) /* Число одиночных ошибок данных, при котором формируется прерывание */ #define MC_CSR_CRAM_DERR_MSK (0x0000FF00)/* маска значения счетчика двойных ошибок */ #define MC_CSR_CRAM_NEMPTY (1 << 2) /* Признак наличия данных в FIFO ошибочных адресов */ #define MC_CSR_CRAM_MODE(n) (n & 0x03) /* Режим работы памяти */ #define MC_CSR_CRAM_MODE_NCORR 0 /* режим без коррекции ошибок */ #define MC_CSR_CRAM_MODE_WCORR 1 /* режим с коррекцией ошибок */ #define MC_CSR_CRAM_MODE_TST 2 /* режим тестирования блока контрольных разрядов */ /* * AERROR_CRAM */ #define MC_AERROR_CRAM_ADR_MSK 0xFFFFFFFC /* маска значения адреса слова памяти, в котором произошла ошибка */ #define MC_AERROR_CRAM_ERR_MSK 0x00000003 /* маска кода ошибки */ /* * AERROR_ICACHE */ #define MC_AERROR_ICACHE_PC_MSK 0x0FFF0 /* Адрес слова [13:2], в котором произошла ошибка */ #define MC_AERROR_ICACHE_ERR_TMSK 0x000C /* маска кода ошибки ITAG */ #define MC_AERROR_ICACHE_ERR_CMSK 0x0003 /* маска кода ошибки ICACHE */ /* * AERROR_DCACHE */ #define MC_AERROR_DCACHE_PC_MSK 0x0FFF0 /* Адрес слова [13:2], в котором произошла ошибка */ #define MC_AERROR_DCACHE_ERR_TMSK 0x000C /* маска кода ошибки DTAG */ #define MC_AERROR_DCACHE_ERR_CMSK 0x0003 /* маска кода ошибки DCACHE */ #endif /* _IO_ELVEES_H */