immap_83xx.h

来自「最新版的u-boot,2008-10-18发布」· C头文件 代码 · 共 835 行 · 第 1/2 页

H
835
字号
/* * (C) Copyright 2004-2007 Freescale Semiconductor, Inc. * * MPC83xx Internal Memory Map * * Contributors: *	Dave Liu <daveliu@freescale.com> *	Tanya Jiang <tanya.jiang@freescale.com> *	Mandy Lavi <mandy.lavi@freescale.com> *	Eran Liberty <liberty@freescale.com> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * This program 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. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * */#ifndef __IMMAP_83xx__#define __IMMAP_83xx__#include <asm/types.h>#include <asm/fsl_i2c.h>#include <asm/mpc8xxx_spi.h>/* * Local Access Window */typedef struct law83xx {	u32 bar;		/* LBIU local access window base address register */	u32 ar;			/* LBIU local access window attribute register */} law83xx_t;/* * System configuration registers */typedef struct sysconf83xx {	u32 immrbar;		/* Internal memory map base address register */	u8 res0[0x04];	u32 altcbar;		/* Alternate configuration base address register */	u8 res1[0x14];	law83xx_t lblaw[4];	/* LBIU local access window */	u8 res2[0x20];	law83xx_t pcilaw[2];	/* PCI local access window */	u8 res3[0x30];	law83xx_t ddrlaw[2];	/* DDR local access window */	u8 res4[0x50];	u32 sgprl;		/* System General Purpose Register Low */	u32 sgprh;		/* System General Purpose Register High */	u32 spridr;		/* System Part and Revision ID Register */	u8 res5[0x04];	u32 spcr;		/* System Priority Configuration Register */	u32 sicrl;		/* System I/O Configuration Register Low */	u32 sicrh;		/* System I/O Configuration Register High */	u8 res6[0x04];	u32 sidcr0;		/* System I/O Delay Configuration Register 0 */	u32 sidcr1;		/* System I/O Delay Configuration Register 1 */	u32 ddrcdr;		/* DDR Control Driver Register */	u32 ddrdsr;		/* DDR Debug Status Register */	u32 obir;		/* Output Buffer Impedance Register */	u8 res7[0xCC];} sysconf83xx_t;/* * Watch Dog Timer (WDT) Registers */typedef struct wdt83xx {	u8 res0[4];	u32 swcrr;		/* System watchdog control register */	u32 swcnr;		/* System watchdog count register */	u8 res1[2];	u16 swsrr;		/* System watchdog service register */	u8 res2[0xF0];} wdt83xx_t;/* * RTC/PIT Module Registers */typedef struct rtclk83xx {	u32 cnr;		/* control register */	u32 ldr;		/* load register */	u32 psr;		/* prescale register */	u32 ctr;		/* counter value field register */	u32 evr;		/* event register */	u32 alr;		/* alarm register */	u8 res0[0xE8];} rtclk83xx_t;/* * Global timer module */typedef struct gtm83xx {	u8 cfr1;		/* Timer1/2 Configuration */	u8 res0[3];	u8 cfr2;		/* Timer3/4 Configuration */	u8 res1[10];	u16 mdr1;		/* Timer1 Mode Register */	u16 mdr2;		/* Timer2 Mode Register */	u16 rfr1;		/* Timer1 Reference Register */	u16 rfr2;		/* Timer2 Reference Register */	u16 cpr1;		/* Timer1 Capture Register */	u16 cpr2;		/* Timer2 Capture Register */	u16 cnr1;		/* Timer1 Counter Register */	u16 cnr2;		/* Timer2 Counter Register */	u16 mdr3;		/* Timer3 Mode Register */	u16 mdr4;		/* Timer4 Mode Register */	u16 rfr3;		/* Timer3 Reference Register */	u16 rfr4;		/* Timer4 Reference Register */	u16 cpr3;		/* Timer3 Capture Register */	u16 cpr4;		/* Timer4 Capture Register */	u16 cnr3;		/* Timer3 Counter Register */	u16 cnr4;		/* Timer4 Counter Register */	u16 evr1;		/* Timer1 Event Register */	u16 evr2;		/* Timer2 Event Register */	u16 evr3;		/* Timer3 Event Register */	u16 evr4;		/* Timer4 Event Register */	u16 psr1;		/* Timer1 Prescaler Register */	u16 psr2;		/* Timer2 Prescaler Register */	u16 psr3;		/* Timer3 Prescaler Register */	u16 psr4;		/* Timer4 Prescaler Register */	u8 res[0xC0];} gtm83xx_t;/* * Integrated Programmable Interrupt Controller */typedef struct ipic83xx {	u32 sicfr;		/* System Global Interrupt Configuration Register */	u32 sivcr;		/* System Global Interrupt Vector Register */	u32 sipnr_h;		/* System Internal Interrupt Pending Register - High */	u32 sipnr_l;		/* System Internal Interrupt Pending Register - Low */	u32 siprr_a;		/* System Internal Interrupt Group A Priority Register */	u8 res0[8];	u32 siprr_d;		/* System Internal Interrupt Group D Priority Register */	u32 simsr_h;		/* System Internal Interrupt Mask Register - High */	u32 simsr_l;		/* System Internal Interrupt Mask Register - Low */	u8 res1[4];	u32 sepnr;		/* System External Interrupt Pending Register */	u32 smprr_a;		/* System Mixed Interrupt Group A Priority Register */	u32 smprr_b;		/* System Mixed Interrupt Group B Priority Register */	u32 semsr;		/* System External Interrupt Mask Register */	u32 secnr;		/* System External Interrupt Control Register */	u32 sersr;		/* System Error Status Register */	u32 sermr;		/* System Error Mask Register */	u32 sercr;		/* System Error Control Register */	u8 res2[4];	u32 sifcr_h;		/* System Internal Interrupt Force Register - High */	u32 sifcr_l;		/* System Internal Interrupt Force Register - Low */	u32 sefcr;		/* System External Interrupt Force Register */	u32 serfr;		/* System Error Force Register */	u32 scvcr;		/* System Critical Interrupt Vector Register */	u32 smvcr;		/* System Management Interrupt Vector Register */	u8 res3[0x98];} ipic83xx_t;/* * System Arbiter Registers */typedef struct arbiter83xx {	u32 acr;		/* Arbiter Configuration Register */	u32 atr;		/* Arbiter Timers Register */	u8 res[4];	u32 aer;		/* Arbiter Event Register */	u32 aidr;		/* Arbiter Interrupt Definition Register */	u32 amr;		/* Arbiter Mask Register */	u32 aeatr;		/* Arbiter Event Attributes Register */	u32 aeadr;		/* Arbiter Event Address Register */	u32 aerr;		/* Arbiter Event Response Register */	u8 res1[0xDC];} arbiter83xx_t;/* * Reset Module */typedef struct reset83xx {	u32 rcwl;		/* Reset Configuration Word Low Register */	u32 rcwh;		/* Reset Configuration Word High Register */	u8 res0[8];	u32 rsr;		/* Reset Status Register */	u32 rmr;		/* Reset Mode Register */	u32 rpr;		/* Reset protection Register */	u32 rcr;		/* Reset Control Register */	u32 rcer;		/* Reset Control Enable Register */	u8 res1[0xDC];} reset83xx_t;/* * Clock Module */typedef struct clk83xx {	u32 spmr;		/* system PLL mode Register */	u32 occr;		/* output clock control Register */	u32 sccr;		/* system clock control Register */	u8 res0[0xF4];} clk83xx_t;/* * Power Management Control Module */typedef struct pmc83xx {	u32 pmccr;		/* PMC Configuration Register */	u32 pmcer;		/* PMC Event Register */	u32 pmcmr;		/* PMC Mask Register */	u32 pmccr1;		/* PMC Configuration Register 1 */	u32 pmccr2;		/* PMC Configuration Register 2 */	u8 res0[0xEC];} pmc83xx_t;/* * General purpose I/O module */typedef struct gpio83xx {	u32 dir;		/* direction register */	u32 odr;		/* open drain register */	u32 dat;		/* data register */	u32 ier;		/* interrupt event register */	u32 imr;		/* interrupt mask register */	u32 icr;		/* external interrupt control register */	u8 res0[0xE8];} gpio83xx_t;/* * QE Ports Interrupts Registers */typedef struct qepi83xx {	u8 res0[0xC];	u32 qepier;		/* QE Ports Interrupt Event Register */	u32 qepimr;		/* QE Ports Interrupt Mask Register */	u32 qepicr;		/* QE Ports Interrupt Control Register */	u8 res1[0xE8];} qepi83xx_t;/* * QE Parallel I/O Ports */typedef struct gpio_n {	u32 podr;		/* Open Drain Register */	u32 pdat;		/* Data Register */	u32 dir1;		/* direction register 1 */	u32 dir2;		/* direction register 2 */	u32 ppar1;		/* Pin Assignment Register 1 */	u32 ppar2;		/* Pin Assignment Register 2 */} gpio_n_t;typedef struct qegpio83xx {	gpio_n_t ioport[0x7];	u8 res0[0x358];} qepio83xx_t;/* * QE Secondary Bus Access Windows */typedef struct qesba83xx {	u32 lbmcsar;		/* Local bus memory controller start address */	u32 sdmcsar;		/* Secondary DDR memory controller start address */	u8 res0[0x38];	u32 lbmcear;		/* Local bus memory controller end address */	u32 sdmcear;		/* Secondary DDR memory controller end address */	u8 res1[0x38];	u32 lbmcar;		/* Local bus memory controller attributes */	u32 sdmcar;		/* Secondary DDR memory controller attributes */	u8 res2[0x378];} qesba83xx_t;/* * DDR Memory Controller Memory Map */typedef struct ddr_cs_bnds {	u32 csbnds;	u8 res0[4];} ddr_cs_bnds_t;typedef struct ddr83xx {	ddr_cs_bnds_t csbnds[4];/* Chip Select x Memory Bounds */	u8 res0[0x60];	u32 cs_config[4];	/* Chip Select x Configuration */	u8 res1[0x70];	u32 timing_cfg_3;	/* SDRAM Timing Configuration 3 */	u32 timing_cfg_0;	/* SDRAM Timing Configuration 0 */	u32 timing_cfg_1;	/* SDRAM Timing Configuration 1 */	u32 timing_cfg_2;	/* SDRAM Timing Configuration 2 */	u32 sdram_cfg;		/* SDRAM Control Configuration */	u32 sdram_cfg2;		/* SDRAM Control Configuration 2 */	u32 sdram_mode;		/* SDRAM Mode Configuration */	u32 sdram_mode2;	/* SDRAM Mode Configuration 2 */	u32 sdram_md_cntl;	/* SDRAM Mode Control */	u32 sdram_interval;	/* SDRAM Interval Configuration */	u32 ddr_data_init;	/* SDRAM Data Initialization */	u8 res2[4];	u32 sdram_clk_cntl;	/* SDRAM Clock Control */	u8 res3[0x14];	u32 ddr_init_addr;	/* DDR training initialization address */	u32 ddr_init_ext_addr;	/* DDR training initialization extended address */	u8 res4[0xAA8];	u32 ddr_ip_rev1;	/* DDR IP block revision 1 */	u32 ddr_ip_rev2;	/* DDR IP block revision 2 */	u8 res5[0x200];	u32 data_err_inject_hi;	/* Memory Data Path Error Injection Mask High */	u32 data_err_inject_lo;	/* Memory Data Path Error Injection Mask Low */	u32 ecc_err_inject;	/* Memory Data Path Error Injection Mask ECC */	u8 res6[0x14];	u32 capture_data_hi;	/* Memory Data Path Read Capture High */	u32 capture_data_lo;	/* Memory Data Path Read Capture Low */	u32 capture_ecc;	/* Memory Data Path Read Capture ECC */	u8 res7[0x14];	u32 err_detect;		/* Memory Error Detect */	u32 err_disable;	/* Memory Error Disable */	u32 err_int_en;		/* Memory Error Interrupt Enable */	u32 capture_attributes;	/* Memory Error Attributes Capture */	u32 capture_address;	/* Memory Error Address Capture */	u32 capture_ext_address;/* Memory Error Extended Address Capture */	u32 err_sbe;		/* Memory Single-Bit ECC Error Management */	u8 res8[0xA4];	u32 debug_reg;	u8 res9[0xFC];} ddr83xx_t;/* * DUART */typedef struct duart83xx {	u8 urbr_ulcr_udlb;	/* combined register for URBR, UTHR and UDLB */	u8 uier_udmb;		/* combined register for UIER and UDMB */	u8 uiir_ufcr_uafr;	/* combined register for UIIR, UFCR and UAFR */	u8 ulcr;		/* line control register */	u8 umcr;		/* MODEM control register */	u8 ulsr;		/* line status register */	u8 umsr;		/* MODEM status register */	u8 uscr;		/* scratch register */	u8 res0[8];	u8 udsr;		/* DMA status register */	u8 res1[3];	u8 res2[0xEC];} duart83xx_t;/* * Local Bus Controller Registers */typedef struct lbus_bank {	u32 br;			/* Base Register */	u32 or;			/* Option Register */} lbus_bank_t;typedef struct lbus83xx {	lbus_bank_t bank[8];	u8 res0[0x28];	u32 mar;		/* UPM Address Register */	u8 res1[0x4];	u32 mamr;		/* UPMA Mode Register */	u32 mbmr;		/* UPMB Mode Register */	u32 mcmr;		/* UPMC Mode Register */	u8 res2[0x8];	u32 mrtpr;		/* Memory Refresh Timer Prescaler Register */	u32 mdr;		/* UPM Data Register */	u8 res3[0x4];	u32 lsor;		/* Special Operation Initiation Register */	u32 lsdmr;		/* SDRAM Mode Register */	u8 res4[0x8];	u32 lurt;		/* UPM Refresh Timer */	u32 lsrt;		/* SDRAM Refresh Timer */	u8 res5[0x8];	u32 ltesr;		/* Transfer Error Status Register */	u32 ltedr;		/* Transfer Error Disable Register */	u32 lteir;		/* Transfer Error Interrupt Register */	u32 lteatr;		/* Transfer Error Attributes Register */	u32 ltear;		/* Transfer Error Address Register */	u8 res6[0xC];	u32 lbcr;		/* Configuration Register */	u32 lcrr;		/* Clock Ratio Register */	u8 res7[0x8];	u32 fmr;		/* Flash Mode Register */	u32 fir;		/* Flash Instruction Register */	u32 fcr;		/* Flash Command Register */	u32 fbar;		/* Flash Block Addr Register */	u32 fpar;		/* Flash Page Addr Register */	u32 fbcr;		/* Flash Byte Count Register */	u8 res8[0xF08];} lbus83xx_t;/* * DMA/Messaging Unit */typedef struct dma83xx {	u32 res0[0xC];		/* 0x0-0x29 reseverd */	u32 omisr;		/* 0x30 Outbound message interrupt status register */	u32 omimr;		/* 0x34 Outbound message interrupt mask register */	u32 res1[0x6];		/* 0x38-0x49 reserved */	u32 imr0;		/* 0x50 Inbound message register 0 */	u32 imr1;		/* 0x54 Inbound message register 1 */	u32 omr0;		/* 0x58 Outbound message register 0 */	u32 omr1;		/* 0x5C Outbound message register 1 */	u32 odr;		/* 0x60 Outbound doorbell register */	u32 res2;		/* 0x64-0x67 reserved */	u32 idr;		/* 0x68 Inbound doorbell register */	u32 res3[0x5];		/* 0x6C-0x79 reserved */	u32 imisr;		/* 0x80 Inbound message interrupt status register */	u32 imimr;		/* 0x84 Inbound message interrupt mask register */	u32 res4[0x1E];		/* 0x88-0x99 reserved */	u32 dmamr0;		/* 0x100 DMA 0 mode register */	u32 dmasr0;		/* 0x104 DMA 0 status register */	u32 dmacdar0;		/* 0x108 DMA 0 current descriptor address register */	u32 res5;		/* 0x10C reserved */	u32 dmasar0;		/* 0x110 DMA 0 source address register */	u32 res6;		/* 0x114 reserved */	u32 dmadar0;		/* 0x118 DMA 0 destination address register */	u32 res7;		/* 0x11C reserved */	u32 dmabcr0;		/* 0x120 DMA 0 byte count register */	u32 dmandar0;		/* 0x124 DMA 0 next descriptor address register */	u32 res8[0x16];		/* 0x128-0x179 reserved */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?