mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-10-31 03:58:17 +00:00 
			
		
		
		
	* Patch by Josef Baumgartner, 10 Feb 2004: Fixes for Coldfire port * Patch by Brad Kemp, 11 Feb 2004: Fix CFI flash driver problems
		
			
				
	
	
		
			448 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			448 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * MCF5272 Internal Memory Map
 | |
|  *
 | |
|  * Copyright (c) 2003 Josef Baumgartner <josef.baumgartner@telex.de>
 | |
|  *
 | |
|  * See file CREDITS for list of people who contributed to this
 | |
|  * project.
 | |
|  *
 | |
|  * 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_5272__
 | |
| #define __IMMAP_5272__
 | |
| 
 | |
| /* System configuration registers
 | |
| */
 | |
| typedef	struct sys_ctrl {
 | |
| 	uint	sc_mbar;
 | |
| 	ushort	sc_scr;
 | |
| 	ushort	sc_spr;
 | |
| 	uint	sc_pmr;
 | |
| 	char	res1[2];
 | |
| 	ushort	sc_alpr;
 | |
| 	uint	sc_dir;
 | |
| 	char	res2[12];
 | |
| } sysctrl_t;
 | |
| 
 | |
| /* Interrupt module registers
 | |
| */
 | |
| typedef struct int_ctrl {
 | |
| 	uint	int_icr1;
 | |
| 	uint	int_icr2;
 | |
| 	uint	int_icr3;
 | |
| 	uint	int_icr4;
 | |
| 	uint	int_isr;
 | |
| 	uint	int_pitr;
 | |
| 	uint	int_piwr;
 | |
| 	uchar	res1[3];
 | |
| 	uchar	int_pivr;
 | |
| } intctrl_t;
 | |
| 
 | |
| /* Chip select module registers.
 | |
| */
 | |
| typedef struct	cs_ctlr {
 | |
| 	uint	cs_br0;
 | |
| 	uint	cs_or0;
 | |
| 	uint	cs_br1;
 | |
| 	uint	cs_or1;
 | |
| 	uint	cs_br2;
 | |
| 	uint	cs_or2;
 | |
| 	uint	cs_br3;
 | |
| 	uint	cs_or3;
 | |
| 	uint	cs_br4;
 | |
| 	uint	cs_or4;
 | |
| 	uint	cs_br5;
 | |
| 	uint	cs_or5;
 | |
| 	uint	cs_br6;
 | |
| 	uint	cs_or6;
 | |
| 	uint	cs_br7;
 | |
| 	uint	cs_or7;
 | |
| } csctrl_t;
 | |
| 
 | |
| /* GPIO port registers
 | |
| */
 | |
| typedef struct	gpio_ctrl {
 | |
| 	uint	gpio_pacnt;
 | |
| 	ushort	gpio_paddr;
 | |
| 	ushort	gpio_padat;
 | |
| 	uint	gpio_pbcnt;
 | |
| 	ushort	gpio_pbddr;
 | |
| 	ushort	gpio_pbdat;
 | |
| 	uchar	res1[4];
 | |
| 	ushort	gpio_pcddr;
 | |
| 	ushort	gpio_pcdat;
 | |
| 	uint	gpio_pdcnt;
 | |
| 	uchar	res2[4];
 | |
| } gpio_t;
 | |
| 
 | |
| /* QSPI module registers
 | |
|  */
 | |
| typedef struct	qspi_ctrl {
 | |
| 	ushort	qspi_qmr;
 | |
| 	uchar	res1[2];
 | |
| 	ushort	qspi_qdlyr;
 | |
| 	uchar	res2[2];
 | |
| 	ushort	qspi_qwr;
 | |
| 	uchar	res3[2];
 | |
| 	ushort	qspi_qir;
 | |
| 	uchar	res4[2];
 | |
| 	ushort	qspi_qar;
 | |
| 	uchar	res5[2];
 | |
| 	ushort	qspi_qdr;
 | |
| 	uchar	res6[10];
 | |
| } qspi_t;
 | |
| 
 | |
| /* PWM module registers
 | |
|  */
 | |
| typedef struct	pwm_ctrl {
 | |
| 	uchar	pwm_pwcr0;
 | |
| 	uchar	res1[3];
 | |
| 	uchar	pwm_pwcr1;
 | |
| 	uchar	res2[3];
 | |
| 	uchar	pwm_pwcr2;
 | |
| 	uchar	res3[7];
 | |
| 	uchar	pwm_pwwd0;
 | |
| 	uchar	res4[3];
 | |
| 	uchar	pwm_pwwd1;
 | |
| 	uchar	res5[3];
 | |
| 	uchar	pwm_pwwd2;
 | |
| 	uchar	res6[7];
 | |
| } pwm_t;
 | |
| 
 | |
| /* DMA module registers
 | |
|  */
 | |
| typedef struct	dma_ctrl {
 | |
| 	ulong	dma_dmr;
 | |
| 	uchar	res1[2];
 | |
| 	ushort	dma_dir;
 | |
| 	ulong	dma_dbcr;
 | |
| 	ulong	dma_dsar;
 | |
| 	ulong	dma_ddar;
 | |
| 	uchar	res2[12];
 | |
| } dma_t;
 | |
| 
 | |
| /* UART module registers
 | |
|  */
 | |
| typedef struct uart_ctrl {
 | |
| 	uchar	uart_umr;
 | |
| 	uchar	res1[3];
 | |
| 	uchar	uart_usr_ucsr;
 | |
| 	uchar	res2[3];
 | |
| 	uchar	uart_ucr;
 | |
| 	uchar	res3[3];
 | |
| 	uchar	uart_urb_utb;
 | |
| 	uchar	res4[3];
 | |
| 	uchar	uart_uipcr_uacr;
 | |
| 	uchar	res5[3];
 | |
| 	uchar	uart_uisr_uimr;
 | |
| 	uchar	res6[3];
 | |
| 	uchar	uart_udu;
 | |
| 	uchar	res7[3];
 | |
| 	uchar	uart_udl;
 | |
| 	uchar	res8[3];
 | |
| 	uchar	uart_uabu;
 | |
| 	uchar	res9[3];
 | |
| 	uchar	uart_uabl;
 | |
| 	uchar	res10[3];
 | |
| 	uchar	uart_utf;
 | |
| 	uchar	res11[3];
 | |
| 	uchar	uart_urf;
 | |
| 	uchar	res12[3];
 | |
| 	uchar	uart_ufpd;
 | |
| 	uchar	res13[3];
 | |
| 	uchar	uart_uip;
 | |
| 	uchar	res14[3];
 | |
| 	uchar	uart_uop1;
 | |
| 	uchar	res15[3];
 | |
| 	uchar	uart_uop0;
 | |
| 	uchar	res16[3];
 | |
| } uart_t;
 | |
| 
 | |
| /* SDRAM controller registers, offset: 0x180
 | |
|  */
 | |
| typedef struct sdram_ctrl {
 | |
| 	uchar   res1[2];
 | |
| 	ushort	sdram_sdcr;
 | |
| 	uchar	res2[2];
 | |
| 	ushort	sdram_sdtr;
 | |
| 	uchar	res3[120];
 | |
| } sdramctrl_t;
 | |
| 
 | |
| /* Timer module registers
 | |
|  */
 | |
| typedef struct timer_ctrl {
 | |
| 	ushort	timer_tmr;
 | |
| 	ushort	res1;
 | |
| 	ushort	timer_trr;
 | |
| 	ushort	res2;
 | |
| 	ushort	timer_tcap;
 | |
| 	ushort	res3;
 | |
| 	ushort	timer_tcn;
 | |
| 	ushort	res4;
 | |
| 	ushort	timer_ter;
 | |
| 	uchar	res5[14];
 | |
| } timer_t;
 | |
| 
 | |
| /* Watchdog registers
 | |
|  */
 | |
| typedef struct wdog_ctrl {
 | |
| 	ushort	wdog_wrrr;
 | |
| 	ushort	res1;
 | |
| 	ushort	wdog_wirr;
 | |
| 	ushort	res2;
 | |
| 	ushort	wdog_wcr;
 | |
| 	ushort	res3;
 | |
| 	ushort	wdog_wer;
 | |
| 	uchar	res4[114];
 | |
| } wdog_t;
 | |
| 
 | |
| /* PLIC module registers
 | |
|  */
 | |
| typedef struct plic_ctrl {
 | |
| 	ulong	plic_p0b1rr;
 | |
| 	ulong	plic_p1b1rr;
 | |
| 	ulong	plic_p2b1rr;
 | |
| 	ulong	plic_p3b1rr;
 | |
| 	ulong	plic_p0b2rr;
 | |
| 	ulong	plic_p1b2rr;
 | |
| 	ulong	plic_p2b2rr;
 | |
| 	ulong	plic_p3b2rr;
 | |
| 	uchar	plic_p0drr;
 | |
| 	uchar	plic_p1drr;
 | |
| 	uchar	plic_p2drr;
 | |
| 	uchar	plic_p3drr;
 | |
| 	uchar	res1[4];
 | |
| 	ulong	plic_p0b1tr;
 | |
| 	ulong	plic_p1b1tr;
 | |
| 	ulong	plic_p2b1tr;
 | |
| 	ulong	plic_p3b1tr;
 | |
| 	ulong	plic_p0b2tr;
 | |
| 	ulong	plic_p1b2tr;
 | |
| 	ulong	plic_p2b2tr;
 | |
| 	ulong	plic_p3b2tr;
 | |
| 	uchar	plic_p0dtr;
 | |
| 	uchar	plic_p1dtr;
 | |
| 	uchar	plic_p2dtr;
 | |
| 	uchar	plic_p3dtr;
 | |
| 	uchar	res2[4];
 | |
| 	ushort	plic_p0cr;
 | |
| 	ushort	plic_p1cr;
 | |
| 	ushort	plic_p2cr;
 | |
| 	ushort	plic_p3cr;
 | |
| 	ushort	plic_p0icr;
 | |
| 	ushort	plic_p1icr;
 | |
| 	ushort	plic_p2icr;
 | |
| 	ushort	plic_p3icr;
 | |
| 	ushort	plic_p0gmr;
 | |
| 	ushort	plic_p1gmr;
 | |
| 	ushort	plic_p2gmr;
 | |
| 	ushort	plic_p3gmr;
 | |
| 	ushort	plic_p0gmt;
 | |
| 	ushort	plic_p1gmt;
 | |
| 	ushort	plic_p2gmt;
 | |
| 	ushort	plic_p3gmt;
 | |
| 	uchar	res3;
 | |
| 	uchar	plic_pgmts;
 | |
| 	uchar	plic_pgmta;
 | |
| 	uchar	res4;
 | |
| 	uchar	plic_p0gcir;
 | |
| 	uchar	plic_p1gcir;
 | |
| 	uchar	plic_p2gcir;
 | |
| 	uchar	plic_p3gcir;
 | |
| 	uchar	plic_p0gcit;
 | |
| 	uchar	plic_p1gcit;
 | |
| 	uchar	plic_p2gcit;
 | |
| 	uchar	plic_p3gcit;
 | |
| 	uchar	res5[3];
 | |
| 	uchar	plic_pgcitsr;
 | |
| 	uchar	res6[3];
 | |
| 	uchar	plic_pdcsr;
 | |
| 	ushort	plic_p0psr;
 | |
| 	ushort	plic_p1psr;
 | |
| 	ushort	plic_p2psr;
 | |
| 	ushort	plic_p3psr;
 | |
| 	ushort	plic_pasr;
 | |
| 	uchar	res7;
 | |
| 	uchar	plic_plcr;
 | |
| 	ushort	res8;
 | |
| 	ushort	plic_pdrqr;
 | |
| 	ushort	plic_p0sdr;
 | |
| 	ushort	plic_p1sdr;
 | |
| 	ushort	plic_p2sdr;
 | |
| 	ushort	plic_p3sdr;
 | |
| 	ushort	res9;
 | |
| 	ushort	plic_pcsr;
 | |
| 	uchar	res10[1184];
 | |
| } plic_t;
 | |
| 
 | |
| /* Fast ethernet controller registers
 | |
|  */
 | |
| typedef struct fec {
 | |
| 	uint	fec_ecntrl;		/* ethernet control register		*/
 | |
| 	uint	fec_ievent;		/* interrupt event register		*/
 | |
| 	uint	fec_imask;		/* interrupt mask register		*/
 | |
| 	uint	fec_ivec;		/* interrupt level and vector status	*/
 | |
| 	uint	fec_r_des_active;	/* Rx ring updated flag			*/
 | |
| 	uint	fec_x_des_active;	/* Tx ring updated flag			*/
 | |
| 	uint	res3[10];		/* reserved				*/
 | |
| 	uint	fec_mii_data;		/* MII data register			*/
 | |
| 	uint	fec_mii_speed;		/* MII speed control register		*/
 | |
| 	uint	res4[17];		/* reserved				*/
 | |
| 	uint	fec_r_bound;		/* end of RAM (read-only)		*/
 | |
| 	uint	fec_r_fstart;		/* Rx FIFO start address		*/
 | |
| 	uint	res5[6];		/* reserved				*/
 | |
| 	uint	fec_x_fstart;		/* Tx FIFO start address		*/
 | |
| 	uint	res7[21];		/* reserved				*/
 | |
| 	uint	fec_r_cntrl;		/* Rx control register			*/
 | |
| 	uint	fec_r_hash;		/* Rx hash register			*/
 | |
| 	uint	res8[14];		/* reserved				*/
 | |
| 	uint	fec_x_cntrl;		/* Tx control register			*/
 | |
| 	uint	res9[0x9e];		/* reserved				*/
 | |
| 	uint	fec_addr_low;		/* lower 32 bits of station address	*/
 | |
| 	uint	fec_addr_high;		/* upper 16 bits of station address	*/
 | |
| 	uint	fec_hash_table_high;	/* upper 32-bits of hash table		*/
 | |
| 	uint	fec_hash_table_low;	/* lower 32-bits of hash table		*/
 | |
| 	uint	fec_r_des_start;	/* beginning of Rx descriptor ring	*/
 | |
| 	uint	fec_x_des_start;	/* beginning of Tx descriptor ring	*/
 | |
| 	uint	fec_r_buff_size;	/* Rx buffer size			*/
 | |
| 	uint	res2[9];		/* reserved				*/
 | |
| 	uchar	fec_fifo[960];		/* fifo RAM				*/
 | |
| } fec_t;
 | |
| 
 | |
| /* USB module registers
 | |
| */
 | |
| typedef struct usb {
 | |
| 	ushort	res1;
 | |
| 	ushort	usb_fnr;
 | |
| 	ushort	res2;
 | |
| 	ushort	usb_fnmr;
 | |
| 	ushort	res3;
 | |
| 	ushort	usb_rfmr;
 | |
| 	ushort	res4;
 | |
| 	ushort	usb_rfmmr;
 | |
| 	uchar	res5[3];
 | |
| 	uchar	usb_far;
 | |
| 	ulong	usb_asr;
 | |
| 	ulong	usb_drr1;
 | |
| 	ulong	usb_drr2;
 | |
| 	ushort	res6;
 | |
| 	ushort	usb_specr;
 | |
| 	ushort	res7;
 | |
| 	ushort	usb_ep0sr;
 | |
| 	ulong	usb_iep0cfg;
 | |
| 	ulong	usb_oep0cfg;
 | |
| 	ulong	usb_ep1cfg;
 | |
| 	ulong	usb_ep2cfg;
 | |
| 	ulong	usb_ep3cfg;
 | |
| 	ulong	usb_ep4cfg;
 | |
| 	ulong	usb_ep5cfg;
 | |
| 	ulong	usb_ep6cfg;
 | |
| 	ulong	usb_ep7cfg;
 | |
| 	ulong	usb_ep0ctl;
 | |
| 	ushort	res8;
 | |
| 	ushort	usb_ep1ctl;
 | |
| 	ushort	res9;
 | |
| 	ushort	usb_ep2ctl;
 | |
| 	ushort	res10;
 | |
| 	ushort	usb_ep3ctl;
 | |
| 	ushort	res11;
 | |
| 	ushort	usb_ep4ctl;
 | |
| 	ushort	res12;
 | |
| 	ushort	usb_ep5ctl;
 | |
| 	ushort	res13;
 | |
| 	ushort	usb_ep6ctl;
 | |
| 	ushort	res14;
 | |
| 	ushort	usb_ep7ctl;
 | |
| 	ulong	usb_ep0isr;
 | |
| 	ushort	res15;
 | |
| 	ushort	usb_ep1isr;
 | |
| 	ushort	res16;
 | |
| 	ushort	usb_ep2isr;
 | |
| 	ushort	res17;
 | |
| 	ushort	usb_ep3isr;
 | |
| 	ushort	res18;
 | |
| 	ushort	usb_ep4isr;
 | |
| 	ushort	res19;
 | |
| 	ushort	usb_ep5isr;
 | |
| 	ushort	res20;
 | |
| 	ushort	usb_ep6isr;
 | |
| 	ushort	res21;
 | |
| 	ushort	usb_ep7isr;
 | |
| 	ulong	usb_ep0imr;
 | |
| 	ushort	res22;
 | |
| 	ushort	usb_ep1imr;
 | |
| 	ushort	res23;
 | |
| 	ushort	usb_ep2imr;
 | |
| 	ushort	res24;
 | |
| 	ushort	usb_ep3imr;
 | |
| 	ushort	res25;
 | |
| 	ushort	usb_ep4imr;
 | |
| 	ushort	res26;
 | |
| 	ushort	usb_ep5imr;
 | |
| 	ushort	res27;
 | |
| 	ushort	usb_ep6imr;
 | |
| 	ushort	res28;
 | |
| 	ushort	usb_ep7imr;
 | |
| 	ulong	usb_ep0dr;
 | |
| 	ulong	usb_ep1dr;
 | |
| 	ulong	usb_ep2dr;
 | |
| 	ulong	usb_ep3dr;
 | |
| 	ulong	usb_ep4dr;
 | |
| 	ulong	usb_ep5dr;
 | |
| 	ulong	usb_ep6dr;
 | |
| 	ulong	usb_ep7dr;
 | |
| 	ushort	res29;
 | |
| 	ushort	usb_ep0dpr;
 | |
| 	ushort	res30;
 | |
| 	ushort	usb_ep1dpr;
 | |
| 	ushort	res31;
 | |
| 	ushort	usb_ep2dpr;
 | |
| 	ushort	res32;
 | |
| 	ushort	usb_ep3dpr;
 | |
| 	ushort	res33;
 | |
| 	ushort	usb_ep4dpr;
 | |
| 	ushort	res34;
 | |
| 	ushort	usb_ep5dpr;
 | |
| 	ushort	res35;
 | |
| 	ushort	usb_ep6dpr;
 | |
| 	ushort	res36;
 | |
| 	ushort	usb_ep7dpr;
 | |
| 	uchar	res37[788];
 | |
| 	uchar	usb_cfgram[1024];
 | |
| } usb_t;
 | |
| 
 | |
| /* Internal memory map.
 | |
| */
 | |
| typedef struct immap {
 | |
| 	sysctrl_t	sysctrl_reg;	/* System configuration registers */
 | |
| 	intctrl_t	intctrl_reg;	/* Interrupt controller registers */
 | |
| 	csctrl_t	csctrl_reg;	/* Chip select controller registers */
 | |
| 	gpio_t		gpio_reg;	/* GPIO controller registers */
 | |
| 	qspi_t		qspi_reg;	/* QSPI controller registers */
 | |
| 	pwm_t		pwm_reg;	/* Pulse width modulation registers */
 | |
| 	dma_t		dma_reg;	/* DMA registers */
 | |
| 	uart_t		uart_reg[2];	/* UART registers */
 | |
| 	sdramctrl_t	sdram_reg;	/* SDRAM controller registers */
 | |
| 	timer_t		timer_reg[4];	/* Timer registers */
 | |
| 	wdog_t		wdog_reg;	/* Watchdog registers */
 | |
| 	plic_t		plic_reg;	/* Physical layer interface registers */
 | |
| 	fec_t		fec_reg;	/* Fast ethernet controller registers */
 | |
| 	usb_t		usb_reg;	/* USB controller registers */
 | |
| } immap_t;
 | |
| 
 | |
| #endif /* __IMMAP_5272__ */
 |