mx31.h
来自「linux 内核源代码」· C头文件 代码 · 共 336 行
H
336 行
/* * Copyright 2004-2007 Freescale Semiconductor, Inc. All Rights Reserved. *//* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */#ifndef __ASM_ARCH_MXC_MX31_H__#define __ASM_ARCH_MXC_MX31_H__#ifndef __ASM_ARCH_MXC_HARDWARE_H__#error "Do not include directly."#endif/*! * defines the hardware clock tick rate */#define CLOCK_TICK_RATE 16625000/* * MX31 memory map: * * Virt Phys Size What * --------------------------------------------------------------------------- * F8000000 1FFC0000 16K IRAM * F9000000 30000000 256M L2CC * FC000000 43F00000 1M AIPS 1 * FC100000 50000000 1M SPBA * FC200000 53F00000 1M AIPS 2 * FC500000 60000000 128M ROMPATCH * FC400000 68000000 128M AVIC * 70000000 256M IPU (MAX M2) * 80000000 256M CSD0 SDRAM/DDR * 90000000 256M CSD1 SDRAM/DDR * A0000000 128M CS0 Flash * A8000000 128M CS1 Flash * B0000000 32M CS2 * B2000000 32M CS3 * F4000000 B4000000 32M CS4 * B6000000 32M CS5 * FC320000 B8000000 64K NAND, SDRAM, WEIM, M3IF, EMI controllers * C0000000 64M PCMCIA/CF */#define CS0_BASE_ADDR 0xA0000000#define CS1_BASE_ADDR 0xA8000000#define CS2_BASE_ADDR 0xB0000000#define CS3_BASE_ADDR 0xB2000000#define CS4_BASE_ADDR 0xB4000000#define CS4_BASE_ADDR_VIRT 0xF4000000#define CS4_SIZE SZ_32M#define CS5_BASE_ADDR 0xB6000000#define PCMCIA_MEM_BASE_ADDR 0xBC000000/* * IRAM */#define IRAM_BASE_ADDR 0x1FFC0000 /* internal ram */#define IRAM_BASE_ADDR_VIRT 0xF8000000#define IRAM_SIZE SZ_16K/* * L2CC */#define L2CC_BASE_ADDR 0x30000000#define L2CC_BASE_ADDR_VIRT 0xF9000000#define L2CC_SIZE SZ_1M/* * AIPS 1 */#define AIPS1_BASE_ADDR 0x43F00000#define AIPS1_BASE_ADDR_VIRT 0xFC000000#define AIPS1_SIZE SZ_1M#define MAX_BASE_ADDR (AIPS1_BASE_ADDR + 0x00004000)#define EVTMON_BASE_ADDR (AIPS1_BASE_ADDR + 0x00008000)#define CLKCTL_BASE_ADDR (AIPS1_BASE_ADDR + 0x0000C000)#define ETB_SLOT4_BASE_ADDR (AIPS1_BASE_ADDR + 0x00010000)#define ETB_SLOT5_BASE_ADDR (AIPS1_BASE_ADDR + 0x00014000)#define ECT_CTIO_BASE_ADDR (AIPS1_BASE_ADDR + 0x00018000)#define I2C_BASE_ADDR (AIPS1_BASE_ADDR + 0x00080000)#define I2C3_BASE_ADDR (AIPS1_BASE_ADDR + 0x00084000)#define OTG_BASE_ADDR (AIPS1_BASE_ADDR + 0x00088000)#define ATA_BASE_ADDR (AIPS1_BASE_ADDR + 0x0008C000)#define UART1_BASE_ADDR (AIPS1_BASE_ADDR + 0x00090000)#define UART2_BASE_ADDR (AIPS1_BASE_ADDR + 0x00094000)#define I2C2_BASE_ADDR (AIPS1_BASE_ADDR + 0x00098000)#define OWIRE_BASE_ADDR (AIPS1_BASE_ADDR + 0x0009C000)#define SSI1_BASE_ADDR (AIPS1_BASE_ADDR + 0x000A0000)#define CSPI1_BASE_ADDR (AIPS1_BASE_ADDR + 0x000A4000)#define KPP_BASE_ADDR (AIPS1_BASE_ADDR + 0x000A8000)#define IOMUXC_BASE_ADDR (AIPS1_BASE_ADDR + 0x000AC000)#define UART4_BASE_ADDR (AIPS1_BASE_ADDR + 0x000B0000)#define UART5_BASE_ADDR (AIPS1_BASE_ADDR + 0x000B4000)#define ECT_IP1_BASE_ADDR (AIPS1_BASE_ADDR + 0x000B8000)#define ECT_IP2_BASE_ADDR (AIPS1_BASE_ADDR + 0x000BC000)/* * SPBA global module enabled #0 */#define SPBA0_BASE_ADDR 0x50000000#define SPBA0_BASE_ADDR_VIRT 0xFC100000#define SPBA0_SIZE SZ_1M#define MMC_SDHC1_BASE_ADDR (SPBA0_BASE_ADDR + 0x00004000)#define MMC_SDHC2_BASE_ADDR (SPBA0_BASE_ADDR + 0x00008000)#define UART3_BASE_ADDR (SPBA0_BASE_ADDR + 0x0000C000)#define CSPI2_BASE_ADDR (SPBA0_BASE_ADDR + 0x00010000)#define SSI2_BASE_ADDR (SPBA0_BASE_ADDR + 0x00014000)#define SIM1_BASE_ADDR (SPBA0_BASE_ADDR + 0x00018000)#define IIM_BASE_ADDR (SPBA0_BASE_ADDR + 0x0001C000)#define ATA_DMA_BASE_ADDR (SPBA0_BASE_ADDR + 0x00020000)#define MSHC1_BASE_ADDR (SPBA0_BASE_ADDR + 0x00024000)#define MSHC2_BASE_ADDR (SPBA0_BASE_ADDR + 0x00024000)#define SPBA_CTRL_BASE_ADDR (SPBA0_BASE_ADDR + 0x0003C000)/* * AIPS 2 */#define AIPS2_BASE_ADDR 0x53F00000#define AIPS2_BASE_ADDR_VIRT 0xFC200000#define AIPS2_SIZE SZ_1M#define CCM_BASE_ADDR (AIPS2_BASE_ADDR + 0x00080000)#define CSPI3_BASE_ADDR (AIPS2_BASE_ADDR + 0x00084000)#define FIRI_BASE_ADDR (AIPS2_BASE_ADDR + 0x0008C000)#define GPT1_BASE_ADDR (AIPS2_BASE_ADDR + 0x00090000)#define EPIT1_BASE_ADDR (AIPS2_BASE_ADDR + 0x00094000)#define EPIT2_BASE_ADDR (AIPS2_BASE_ADDR + 0x00098000)#define GPIO3_BASE_ADDR (AIPS2_BASE_ADDR + 0x000A4000)#define SCC_BASE_ADDR (AIPS2_BASE_ADDR + 0x000AC000)#define SCM_BASE_ADDR (AIPS2_BASE_ADDR + 0x000AE000)#define SMN_BASE_ADDR (AIPS2_BASE_ADDR + 0x000AF000)#define RNGA_BASE_ADDR (AIPS2_BASE_ADDR + 0x000B0000)#define IPU_CTRL_BASE_ADDR (AIPS2_BASE_ADDR + 0x000C0000)#define AUDMUX_BASE_ADDR (AIPS2_BASE_ADDR + 0x000C4000)#define MPEG4_ENC_BASE_ADDR (AIPS2_BASE_ADDR + 0x000C8000)#define GPIO1_BASE_ADDR (AIPS2_BASE_ADDR + 0x000CC000)#define GPIO2_BASE_ADDR (AIPS2_BASE_ADDR + 0x000D0000)#define SDMA_BASE_ADDR (AIPS2_BASE_ADDR + 0x000D4000)#define RTC_BASE_ADDR (AIPS2_BASE_ADDR + 0x000D8000)#define WDOG_BASE_ADDR (AIPS2_BASE_ADDR + 0x000DC000)#define PWM_BASE_ADDR (AIPS2_BASE_ADDR + 0x000E0000)#define RTIC_BASE_ADDR (AIPS2_BASE_ADDR + 0x000EC000)/* * ROMP and AVIC */#define ROMP_BASE_ADDR 0x60000000#define ROMP_BASE_ADDR_VIRT 0xFC500000#define ROMP_SIZE SZ_1M#define AVIC_BASE_ADDR 0x68000000#define AVIC_BASE_ADDR_VIRT 0xFC400000#define AVIC_SIZE SZ_1M/* * NAND, SDRAM, WEIM, M3IF, EMI controllers */#define X_MEMC_BASE_ADDR 0xB8000000#define X_MEMC_BASE_ADDR_VIRT 0xFC320000#define X_MEMC_SIZE SZ_64K#define NFC_BASE_ADDR (X_MEMC_BASE_ADDR + 0x0000)#define ESDCTL_BASE_ADDR (X_MEMC_BASE_ADDR + 0x1000)#define WEIM_BASE_ADDR (X_MEMC_BASE_ADDR + 0x2000)#define M3IF_BASE_ADDR (X_MEMC_BASE_ADDR + 0x3000)#define EMI_CTL_BASE_ADDR (X_MEMC_BASE_ADDR + 0x4000)#define PCMCIA_CTL_BASE_ADDR EMI_CTL_BASE_ADDR/* * Memory regions and CS */#define IPU_MEM_BASE_ADDR 0x70000000#define CSD0_BASE_ADDR 0x80000000#define CSD1_BASE_ADDR 0x90000000#define CS0_BASE_ADDR 0xA0000000#define CS1_BASE_ADDR 0xA8000000#define CS2_BASE_ADDR 0xB0000000#define CS3_BASE_ADDR 0xB2000000#define CS4_BASE_ADDR 0xB4000000#define CS4_BASE_ADDR_VIRT 0xF4000000#define CS4_SIZE SZ_32M#define CS5_BASE_ADDR 0xB6000000#define PCMCIA_MEM_BASE_ADDR 0xBC000000/*! * This macro defines the physical to virtual address mapping for all the * peripheral modules. It is used by passing in the physical address as x * and returning the virtual address. If the physical address is not mapped, * it returns 0xDEADBEEF */#define IO_ADDRESS(x) \ (((x >= IRAM_BASE_ADDR) && (x < (IRAM_BASE_ADDR + IRAM_SIZE))) ? IRAM_IO_ADDRESS(x):\ ((x >= L2CC_BASE_ADDR) && (x < (L2CC_BASE_ADDR + L2CC_SIZE))) ? L2CC_IO_ADDRESS(x):\ ((x >= AIPS1_BASE_ADDR) && (x < (AIPS1_BASE_ADDR + AIPS1_SIZE))) ? AIPS1_IO_ADDRESS(x):\ ((x >= SPBA0_BASE_ADDR) && (x < (SPBA0_BASE_ADDR + SPBA0_SIZE))) ? SPBA0_IO_ADDRESS(x):\ ((x >= AIPS2_BASE_ADDR) && (x < (AIPS2_BASE_ADDR + AIPS2_SIZE))) ? AIPS2_IO_ADDRESS(x):\ ((x >= ROMP_BASE_ADDR) && (x < (ROMP_BASE_ADDR + ROMP_SIZE))) ? ROMP_IO_ADDRESS(x):\ ((x >= AVIC_BASE_ADDR) && (x < (AVIC_BASE_ADDR + AVIC_SIZE))) ? AVIC_IO_ADDRESS(x):\ ((x >= CS4_BASE_ADDR) && (x < (CS4_BASE_ADDR + CS4_SIZE))) ? CS4_IO_ADDRESS(x):\ ((x >= X_MEMC_BASE_ADDR) && (x < (X_MEMC_BASE_ADDR + X_MEMC_SIZE))) ? X_MEMC_IO_ADDRESS(x):\ 0xDEADBEEF)/* * define the address mapping macros: in physical address order */#define IRAM_IO_ADDRESS(x) \ (((x) - IRAM_BASE_ADDR) + IRAM_BASE_ADDR_VIRT)#define L2CC_IO_ADDRESS(x) \ (((x) - L2CC_BASE_ADDR) + L2CC_BASE_ADDR_VIRT)#define AIPS1_IO_ADDRESS(x) \ (((x) - AIPS1_BASE_ADDR) + AIPS1_BASE_ADDR_VIRT)#define SPBA0_IO_ADDRESS(x) \ (((x) - SPBA0_BASE_ADDR) + SPBA0_BASE_ADDR_VIRT)#define AIPS2_IO_ADDRESS(x) \ (((x) - AIPS2_BASE_ADDR) + AIPS2_BASE_ADDR_VIRT)#define ROMP_IO_ADDRESS(x) \ (((x) - ROMP_BASE_ADDR) + ROMP_BASE_ADDR_VIRT)#define AVIC_IO_ADDRESS(x) \ (((x) - AVIC_BASE_ADDR) + AVIC_BASE_ADDR_VIRT)#define CS4_IO_ADDRESS(x) \ (((x) - CS4_BASE_ADDR) + CS4_BASE_ADDR_VIRT)#define X_MEMC_IO_ADDRESS(x) \ (((x) - X_MEMC_BASE_ADDR) + X_MEMC_BASE_ADDR_VIRT)#define PCMCIA_IO_ADDRESS(x) \ (((x) - X_MEMC_BASE_ADDR) + X_MEMC_BASE_ADDR_VIRT)/* Start of physical RAM - On many MX31 platforms, this is the first SDRAM bank (CSD0) */#define PHYS_OFFSET CSD0_BASE_ADDR/* * Interrupt numbers */#define MXC_INT_PEN_ADS7843 0#define MXC_INT_RESV1 1#define MXC_INT_CS8900A 2#define MXC_INT_I2C3 3#define MXC_INT_I2C2 4#define MXC_INT_MPEG4_ENCODER 5#define MXC_INT_RTIC 6#define MXC_INT_FIRI 7#define MXC_INT_MMC_SDHC2 8#define MXC_INT_MMC_SDHC1 9#define MXC_INT_I2C 10#define MXC_INT_SSI2 11#define MXC_INT_SSI1 12#define MXC_INT_CSPI2 13#define MXC_INT_CSPI1 14#define MXC_INT_ATA 15#define MXC_INT_MBX 16#define MXC_INT_CSPI3 17#define MXC_INT_UART3 18#define MXC_INT_IIM 19#define MXC_INT_SIM2 20#define MXC_INT_SIM1 21#define MXC_INT_RNGA 22#define MXC_INT_EVTMON 23#define MXC_INT_KPP 24#define MXC_INT_RTC 25#define MXC_INT_PWM 26#define MXC_INT_EPIT2 27#define MXC_INT_EPIT1 28#define MXC_INT_GPT 29#define MXC_INT_RESV30 30#define MXC_INT_RESV31 31#define MXC_INT_UART2 32#define MXC_INT_NANDFC 33#define MXC_INT_SDMA 34#define MXC_INT_USB1 35#define MXC_INT_USB2 36#define MXC_INT_USB3 37#define MXC_INT_USB4 38#define MXC_INT_MSHC1 39#define MXC_INT_MSHC2 40#define MXC_INT_IPU_ERR 41#define MXC_INT_IPU_SYN 42#define MXC_INT_RESV43 43#define MXC_INT_RESV44 44#define MXC_INT_UART1 45#define MXC_INT_UART4 46#define MXC_INT_UART5 47#define MXC_INT_ECT 48#define MXC_INT_SCC_SCM 49#define MXC_INT_SCC_SMN 50#define MXC_INT_GPIO2 51#define MXC_INT_GPIO1 52#define MXC_INT_CCM 53#define MXC_INT_PCMCIA 54#define MXC_INT_WDOG 55#define MXC_INT_GPIO3 56#define MXC_INT_RESV57 57#define MXC_INT_EXT_POWER 58#define MXC_INT_EXT_TEMPER 59#define MXC_INT_EXT_SENSOR60 60#define MXC_INT_EXT_SENSOR61 61#define MXC_INT_EXT_WDOG 62#define MXC_INT_EXT_TV 63#define MXC_MAX_INT_LINES 64#define MXC_GPIO_INT_BASE MXC_MAX_INT_LINES/*! * Number of GPIO port as defined in the IC Spec */#define GPIO_PORT_NUM 3/*! * Number of GPIO pins per port */#define GPIO_NUM_PIN 32#define PROD_SIGNATURE 0x1 /* For MX31 */#define SYSTEM_REV_MIN CHIP_REV_1_0#define SYSTEM_REV_NUM 3#endif /* __ASM_ARCH_MXC_MX31_H__ */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?