@ -3,7 +3,7 @@
* The Internal Memory Map for devices with QE on them . This
* is the superset of all QE devices ( 8360 , etc . ) .
*
* Copyright ( c ) 2006 - 2009 Freescale Semiconductor , Inc .
* Copyright ( c ) 2006 - 2009 , 2011 Freescale Semiconductor , Inc .
* Author : Shlomi Gridih < gridish @ freescale . com >
*
* This program is free software ; you can redistribute it and / or modify it
@ -15,8 +15,19 @@
# ifndef __IMMAP_QE_H__
# define __IMMAP_QE_H__
/* QE I-RAM
*/
# ifdef CONFIG_MPC83xx
# if defined(CONFIG_MPC8360)
# define QE_MURAM_SIZE 0xc000UL
# define MAX_QE_RISC 2
# define QE_NUM_OF_SNUM 28
# elif defined(CONFIG_MPC832x)
# define QE_MURAM_SIZE 0x4000UL
# define MAX_QE_RISC 1
# define QE_NUM_OF_SNUM 28
# endif
# endif
/* QE I-RAM */
typedef struct qe_iram {
u32 iadd ; /* I-RAM Address Register */
u32 idata ; /* I-RAM Data Register */
@ -25,8 +36,7 @@ typedef struct qe_iram {
u8 res1 [ 0x70 ] ;
} __attribute__ ( ( packed ) ) qe_iram_t ;
/* QE Interrupt Controller
*/
/* QE Interrupt Controller */
typedef struct qe_ic {
u32 qicr ;
u32 qivec ;
@ -49,8 +59,7 @@ typedef struct qe_ic {
u8 res3 [ 0x1C ] ;
} __attribute__ ( ( packed ) ) qe_ic_t ;
/* Communications Processor
*/
/* Communications Processor */
typedef struct cp_qe {
u32 cecr ; /* QE command register */
u32 ceccr ; /* QE controller configuration register */
@ -87,8 +96,7 @@ typedef struct cp_qe {
u8 res13 [ 0x280 ] ;
} __attribute__ ( ( packed ) ) cp_qe_t ;
/* QE Multiplexer
*/
/* QE Multiplexer */
typedef struct qe_mux {
u32 cmxgcr ; /* CMX general clock route register */
u32 cmxsi1cr_l ; /* CMX SI1 clock route low register */
@ -102,8 +110,7 @@ typedef struct qe_mux {
u8 res0 [ 0x1C ] ;
} __attribute__ ( ( packed ) ) qe_mux_t ;
/* QE Timers
*/
/* QE Timers */
typedef struct qe_timers {
u8 gtcfr1 ; /* Timer 1 2 global configuration register */
u8 res0 [ 0x3 ] ;
@ -133,8 +140,7 @@ typedef struct qe_timers {
u8 res2 [ 0x46 ] ;
} __attribute__ ( ( packed ) ) qe_timers_t ;
/* BRG
*/
/* BRG */
typedef struct qe_brg {
u32 brgc1 ; /* BRG1 configuration register */
u32 brgc2 ; /* BRG2 configuration register */
@ -155,8 +161,7 @@ typedef struct qe_brg {
u8 res0 [ 0x40 ] ;
} __attribute__ ( ( packed ) ) qe_brg_t ;
/* SPI
*/
/* SPI */
typedef struct spi {
u8 res0 [ 0x20 ] ;
u32 spmode ; /* SPI mode register */
@ -174,8 +179,7 @@ typedef struct spi {
u8 res7 [ 0x8 ] ;
} __attribute__ ( ( packed ) ) spi_t ;
/* SI
*/
/* SI */
typedef struct si1 {
u16 siamr1 ; /* SI1 TDMA mode register */
u16 sibmr1 ; /* SI1 TDMB mode register */
@ -222,16 +226,14 @@ typedef struct si1 {
u8 res9 [ 0xBB ] ;
} __attribute__ ( ( packed ) ) si1_t ;
/* SI Routing Tables
*/
/* SI Routing Tables */
typedef struct sir {
u8 tx [ 0x400 ] ;
u8 rx [ 0x400 ] ;
u8 res0 [ 0x800 ] ;
} __attribute__ ( ( packed ) ) sir_t ;
/* USB Controller.
*/
/* USB Controller. */
typedef struct usb_ctlr {
u8 usb_usmod ;
u8 usb_usadr ;
@ -253,8 +255,7 @@ typedef struct usb_ctlr {
u8 res6 [ 0x22 ] ;
} __attribute__ ( ( packed ) ) usb_t ;
/* MCC
*/
/* MCC */
typedef struct mcc {
u32 mcce ; /* MCC event register */
u32 mccm ; /* MCC mask register */
@ -263,8 +264,7 @@ typedef struct mcc {
u8 res0 [ 0xF0 ] ;
} __attribute__ ( ( packed ) ) mcc_t ;
/* QE UCC Slow
*/
/* QE UCC Slow */
typedef struct ucc_slow {
u32 gumr_l ; /* UCCx general mode register (low) */
u32 gumr_h ; /* UCCx general mode register (high) */
@ -368,8 +368,7 @@ typedef struct ucc_ethernet {
u8 res5 [ 0x200 - 0x1c4 ] ;
} __attribute__ ( ( packed ) ) uec_t ;
/* QE UCC Fast
*/
/* QE UCC Fast */
typedef struct ucc_fast {
u32 gumr ; /* UCCx general mode register */
u32 upsmr ; /* UCCx protocol-specific mode register */
@ -403,8 +402,7 @@ typedef struct ucc_fast {
uec_t ucc_eth ;
} __attribute__ ( ( packed ) ) ucc_fast_t ;
/* QE UCC
*/
/* QE UCC */
typedef struct ucc_common {
u8 res1 [ 0x90 ] ;
u8 guemr ;
@ -419,8 +417,7 @@ typedef struct ucc {
} ;
} __attribute__ ( ( packed ) ) ucc_t ;
/* MultiPHY UTOPIA POS Controllers (UPC)
*/
/* MultiPHY UTOPIA POS Controllers (UPC) */
typedef struct upc {
u32 upgcr ; /* UTOPIA/POS general configuration register */
u32 uplpa ; /* UTOPIA/POS last PHY address */
@ -476,8 +473,7 @@ typedef struct upc {
u8 res2 [ 0x150 ] ;
} __attribute__ ( ( packed ) ) upc_t ;
/* SDMA
*/
/* SDMA */
typedef struct sdma {
u32 sdsr ; /* Serial DMA status register */
u32 sdmr ; /* Serial DMA mode register */
@ -497,8 +493,7 @@ typedef struct sdma {
u8 res2 [ 0x38 ] ;
} __attribute__ ( ( packed ) ) sdma_t ;
/* Debug Space
*/
/* Debug Space */
typedef struct dbg {
u32 bpdcr ; /* Breakpoint debug command register */
u32 bpdsr ; /* Breakpoint debug status register */
@ -582,40 +577,9 @@ typedef struct qe_immap {
u8 res14 [ 0x300 ] ;
u8 res15 [ 0x3A00 ] ;
u8 res16 [ 0x8000 ] ; /* 0x108000 - 0x110000 */
# if defined(CONFIG_MPC8568)
u8 muram [ 0x10000 ] ; /* 0x1_0000 - 0x2_0000 Multi-user RAM */
u8 res17 [ 0x20000 ] ; /* 0x2_0000 - 0x4_0000 */
# elif defined(CONFIG_MPC8569)
u8 muram [ 0x20000 ] ; /* 0x1_0000 - 0x3_0000 Multi-user RAM */
u8 res17 [ 0x10000 ] ; /* 0x3_0000 - 0x4_0000 */
# else
u8 muram [ 0xC000 ] ; /* 0x110000 - 0x11C000 Multi-user RAM */
u8 res17 [ 0x24000 ] ; /* 0x11C000 - 0x140000 */
u8 res18 [ 0xC0000 ] ; /* 0x140000 - 0x200000 */
# endif
u8 muram [ QE_MURAM_SIZE ] ;
} __attribute__ ( ( packed ) ) qe_map_t ;
extern qe_map_t * qe_immr ;
# if defined(CONFIG_MPC8568)
# define QE_MURAM_SIZE 0x10000UL
# elif defined(CONFIG_MPC8569)
# define QE_MURAM_SIZE 0x20000UL
# elif defined(CONFIG_MPC8360)
# define QE_MURAM_SIZE 0xc000UL
# elif defined(CONFIG_MPC832x)
# define QE_MURAM_SIZE 0x4000UL
# endif
# if defined(CONFIG_MPC8323)
# define MAX_QE_RISC 1
# define QE_NUM_OF_SNUM 28
# elif defined(CONFIG_MPC8569)
# define MAX_QE_RISC 4
# define QE_NUM_OF_SNUM 46
# else
# define MAX_QE_RISC 2
# define QE_NUM_OF_SNUM 28
# endif
# endif /* __IMMAP_QE_H__ */