]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - include/asm-ppc/immap_85xx.h
rename CFG_ macros to CONFIG_SYS
[karo-tx-uboot.git] / include / asm-ppc / immap_85xx.h
index 5377c2eb5bed2c7d5c1dde187c76249ab8719656..52f54959ab60bb426985c7b897d9649da41dcee1 100644 (file)
@@ -1,6 +1,8 @@
 /*
  * MPC85xx Internal Memory Map
  *
+ * Copyright 2007 Freescale Semiconductor.
+ *
  * Copyright(c) 2002,2003 Motorola Inc.
  * Xianghua Xiao (x.xiao@motorola.com)
  *
@@ -55,7 +57,7 @@ typedef struct ccsr_local_ecm {
        uint    lawbar7;        /* 0xce8 - Local Access Window 7 Base Address Register */
        char    res19[4];
        uint    lawar7;         /* 0xcf0 - Local Access Window 7 Attributes Register */
-       char    res20[780];
+       char    res20[780];     /* XXX: LAW 8, LAW9 for 8572 */
        uint    eebacr;         /* 0x1000 - ECM CCB Address Configuration Register */
        char    res21[12];
        uint    eebpcr;         /* 0x1010 - ECM CCB Port Configuration Register */
@@ -84,8 +86,13 @@ typedef struct ccsr_ddr {
        uint    cs1_config;             /* 0x2084 - DDR Chip Select Configuration */
        uint    cs2_config;             /* 0x2088 - DDR Chip Select Configuration */
        uint    cs3_config;             /* 0x208c - DDR Chip Select Configuration */
-       char    res5[112];
-       uint    ext_refrec;             /* 0x2100 - DDR SDRAM Extended Refresh Recovery */
+       char    res4a[48];
+       uint    cs0_config_2;           /* 0x20c0 - DDR Chip Select Configuration 2 */
+       uint    cs1_config_2;           /* 0x20c4 - DDR Chip Select Configuration 2 */
+       uint    cs2_config_2;           /* 0x20c8 - DDR Chip Select Configuration 2 */
+       uint    cs3_config_2;           /* 0x20cc - DDR Chip Select Configuration 2 */
+       char    res5[48];
+       uint    timing_cfg_3;           /* 0x2100 - DDR SDRAM Timing Configuration Register 3 */
        uint    timing_cfg_0;           /* 0x2104 - DDR SDRAM Timing Configuration Register 0 */
        uint    timing_cfg_1;           /* 0x2108 - DDR SDRAM Timing Configuration Register 1 */
        uint    timing_cfg_2;           /* 0x210c - DDR SDRAM Timing Configuration Register 2 */
@@ -99,9 +106,19 @@ typedef struct ccsr_ddr {
        char    res6[4];
        uint    sdram_clk_cntl;         /* 0x2130 - DDR SDRAM Clock Control */
        char    res7[20];
-       uint    init_address;           /* 0x2148 - DDR training initialization address */
-       uint    init_ext_address;       /* 0x214C - DDR training initialization extended address */
-       char    res8_1[2728];
+       uint    init_addr;              /* 0x2148 - DDR training initialization address */
+       uint    init_ext_addr;          /* 0x214C - DDR training initialization extended address */
+       char    res8_1[16];
+       uint    timing_cfg_4;           /* 0x2160 - DDR SDRAM Timing Configuration Register 4 */
+       uint    timing_cfg_5;           /* 0x2164 - DDR SDRAM Timing Configuration Register 5 */
+       char    reg8_1a[8];
+       uint    ddr_zq_cntl;            /* 0x2170 - DDR ZQ calibration control*/
+       uint    ddr_wrlvl_cntl;         /* 0x2174 - DDR write leveling control*/
+       uint    ddr_pd_cntl;            /* 0x2178 - DDR pre-drive conditioning control*/
+       uint    ddr_sr_cntr;            /* 0x217C - DDR self refresh counter */
+       uint    ddr_sdram_rcw_1;        /* 0x2180 - DDR Register Control Words 1 */
+       uint    ddr_sdram_rcw_2;        /* 0x2184 - DDR Register Control Words 2 */
+       char    res8_1b[2672];
        uint    ip_rev1;                /* 0x2BF8 - DDR IP Block Revision 1 */
        uint    ip_rev2;                /* 0x2BFC - DDR IP Block Revision 2 */
        char    res8_2[512];
@@ -215,7 +232,7 @@ typedef struct ccsr_lbc {
        char    res7[12];
        uint    lbcr;           /* 0x50d0 - LBC Configuration Register */
        uint    lcrr;           /* 0x50d4 - LBC Clock Ratio Register */
-       char    res8[12072];
+       char    res8[3880];
 } ccsr_lbc_t;
 
 /*
@@ -718,11 +735,10 @@ typedef struct ccsr_tsec {
 } ccsr_tsec_t;
 
 /*
- * PIC Registers(0x2_6000-0x4_0000-0x8_0000)
+ * PIC Registers(0x4_0000-0x8_0000)
  */
 typedef struct ccsr_pic {
-       char    res0[106496];   /* 0x26000-0x40000 */
-       char    res1[64];
+       char    res1[64];       /* 0x40000 */
        uint    ipidr0;         /* 0x40040 - Interprocessor Interrupt Dispatch Register 0 */
        char    res2[12];
        uint    ipidr1;         /* 0x40050 - Interprocessor Interrupt Dispatch Register 1 */
@@ -1038,7 +1054,7 @@ typedef struct ccsr_cpm {
  * 0x9000-0x90bff: General SIU
  */
 typedef struct ccsr_cpm_siu {
-       char    res1[80];
+       char    res1[80];
        uint    smaer;
        uint    smser;
        uint    smevr;
@@ -1127,9 +1143,9 @@ typedef struct ccsr_cpm_timer {
 /* 0x91018-0x912ff: SDMA */
 typedef struct ccsr_cpm_sdma {
        uchar   sdsr;
-       char    res1[3];
-       uchar   sdmr;
-       char    res2[739];
+       char    res1[3];
+       uchar   sdmr;
+       char    res2[739];
 } ccsr_cpm_sdma_t;
 
 /* 0x91300-0x9131f: FCC1 */
@@ -1212,7 +1228,7 @@ typedef struct ccsr_cpm_fcc3_ext {
 
 /* 0x91400-0x915ef: TC layers */
 typedef struct ccsr_cpm_tmp1 {
-       char    res[496];
+       char    res[496];
 } ccsr_cpm_tmp1_t;
 
 /* 0x915f0-0x9185f: BRGs:5,6,7,8 */
@@ -1280,7 +1296,7 @@ typedef struct ccsr_cpm_scc {
 
 /* 0x91a80-0x91a9f */
 typedef struct ccsr_cpm_tmp2 {
-       char    res[32];
+       char    res[32];
 } ccsr_cpm_tmp2_t;
 
 /* 0x91aa0-0x91aff: SPI */
@@ -1322,16 +1338,16 @@ typedef struct ccsr_cpm {
        /* Some references are into the unique and known dpram spaces,
         * others are from the generic base.
         */
-#define im_dprambase           im_dpram1
-       u_char                  im_dpram1[16*1024];
-       char                    res1[16*1024];
-       u_char                  im_dpram2[16*1024];
-       char                    res2[16*1024];
-       ccsr_cpm_siu_t          im_cpm_siu;     /* SIU Configuration */
-       ccsr_cpm_intctl_t       im_cpm_intctl;  /* Interrupt Controller */
-       ccsr_cpm_iop_t          im_cpm_iop;     /* IO Port control/status */
-       ccsr_cpm_timer_t        im_cpm_timer;   /* CPM timers */
-       ccsr_cpm_sdma_t         im_cpm_sdma;    /* SDMA control/status */
+#define im_dprambase           im_dpram1
+       u_char                  im_dpram1[16*1024];
+       char                    res1[16*1024];
+       u_char                  im_dpram2[16*1024];
+       char                    res2[16*1024];
+       ccsr_cpm_siu_t          im_cpm_siu;     /* SIU Configuration */
+       ccsr_cpm_intctl_t       im_cpm_intctl;  /* Interrupt Controller */
+       ccsr_cpm_iop_t          im_cpm_iop;     /* IO Port control/status */
+       ccsr_cpm_timer_t        im_cpm_timer;   /* CPM timers */
+       ccsr_cpm_sdma_t         im_cpm_sdma;    /* SDMA control/status */
        ccsr_cpm_fcc1_t         im_cpm_fcc1;
        ccsr_cpm_fcc2_t         im_cpm_fcc2;
        ccsr_cpm_fcc3_t         im_cpm_fcc3;
@@ -1520,16 +1536,51 @@ typedef struct ccsr_rio {
        char    res58[60176];
 } ccsr_rio_t;
 
+/* Quick Engine Block Pin Muxing Registers (0xe_0100 - 0xe_01bf) */
+typedef struct par_io {
+       uint    cpodr;          /* 0x100 */
+       uint    cpdat;          /* 0x104 */
+       uint    cpdir1;         /* 0x108 */
+       uint    cpdir2;         /* 0x10c */
+       uint    cppar1;         /* 0x110 */
+       uint    cppar2;         /* 0x114 */
+       char    res[8];
+}par_io_t;
+
 /*
  * Global Utilities Register Block(0xe_0000-0xf_ffff)
  */
 typedef struct ccsr_gur {
        uint    porpllsr;       /* 0xe0000 - POR PLL ratio status register */
+#ifdef CONFIG_MPC8536
+#define MPC85xx_PORPLLSR_DDR_RATIO     0x3e000000
+#define MPC85xx_PORPLLSR_DDR_RATIO_SHIFT       25
+#else
+#define MPC85xx_PORPLLSR_DDR_RATIO     0x00003e00
+#define MPC85xx_PORPLLSR_DDR_RATIO_SHIFT       9
+#endif
        uint    porbmsr;        /* 0xe0004 - POR boot mode status register */
+#define MPC85xx_PORBMSR_HA             0x00070000
        uint    porimpscr;      /* 0xe0008 - POR I/O impedance status and control register */
        uint    pordevsr;       /* 0xe000c - POR I/O device status regsiter */
+#define MPC85xx_PORDEVSR_SGMII1_DIS    0x20000000
+#define MPC85xx_PORDEVSR_SGMII2_DIS    0x10000000
+#define MPC85xx_PORDEVSR_SGMII3_DIS    0x08000000
+#define MPC85xx_PORDEVSR_SGMII4_DIS    0x04000000
+#define MPC85xx_PORDEVSR_SRDS2_IO_SEL   0x38000000
+#define MPC85xx_PORDEVSR_IO_SEL                0x00380000
+#define MPC85xx_PORDEVSR_PCI2_ARB      0x00040000
+#define MPC85xx_PORDEVSR_PCI1_ARB      0x00020000
+#define MPC85xx_PORDEVSR_PCI1_PCI32    0x00010000
+#define MPC85xx_PORDEVSR_PCI1_SPD      0x00008000
+#define MPC85xx_PORDEVSR_PCI2_SPD      0x00004000
+#define MPC85xx_PORDEVSR_DRAM_RTYPE    0x00000060
+#define MPC85xx_PORDEVSR_RIO_CTLS      0x00000008
+#define MPC85xx_PORDEVSR_RIO_DEV_ID    0x00000007
        uint    pordbgmsr;      /* 0xe0010 - POR debug mode status register */
-       char    res1[12];
+       uint    pordevsr2;      /* 0xe0014 - POR I/O device status regsiter 2 */
+#define MPC85xx_PORDEVSR2_SEC_CFG      0x00000020
+       char    res1[8];
        uint    gpporcr;        /* 0xe0020 - General-purpose POR configuration register */
        char    res2[12];
        uint    gpiocr;         /* 0xe0030 - GPIO control register */
@@ -1541,6 +1592,29 @@ typedef struct ccsr_gur {
        uint    pmuxcr;         /* 0xe0060 - Alternate function signal multiplex control */
        char    res6[12];
        uint    devdisr;        /* 0xe0070 - Device disable control */
+#define MPC85xx_DEVDISR_PCI1           0x80000000
+#define MPC85xx_DEVDISR_PCI2           0x40000000
+#define MPC85xx_DEVDISR_PCIE           0x20000000
+#define MPC85xx_DEVDISR_LBC            0x08000000
+#define MPC85xx_DEVDISR_PCIE2          0x04000000
+#define MPC85xx_DEVDISR_PCIE3          0x02000000
+#define MPC85xx_DEVDISR_SEC            0x01000000
+#define MPC85xx_DEVDISR_SRIO           0x00080000
+#define MPC85xx_DEVDISR_RMSG           0x00040000
+#define MPC85xx_DEVDISR_DDR            0x00010000
+#define MPC85xx_DEVDISR_CPU            0x00008000
+#define MPC85xx_DEVDISR_CPU0           MPC85xx_DEVDISR_CPU
+#define MPC85xx_DEVDISR_TB             0x00004000
+#define MPC85xx_DEVDISR_TB0            MPC85xx_DEVDISR_TB
+#define MPC85xx_DEVDISR_CPU1           0x00002000
+#define MPC85xx_DEVDISR_TB1            0x00001000
+#define MPC85xx_DEVDISR_DMA            0x00000400
+#define MPC85xx_DEVDISR_TSEC1          0x00000080
+#define MPC85xx_DEVDISR_TSEC2          0x00000040
+#define MPC85xx_DEVDISR_TSEC3          0x00000020
+#define MPC85xx_DEVDISR_TSEC4          0x00000010
+#define MPC85xx_DEVDISR_I2C            0x00000004
+#define MPC85xx_DEVDISR_DUART          0x00000002
        char    res7[12];
        uint    powmgtcsr;      /* 0xe0080 - Power management status and control register */
        char    res8[12];
@@ -1548,7 +1622,15 @@ typedef struct ccsr_gur {
        char    res9[12];
        uint    pvr;            /* 0xe00a0 - Processor version register */
        uint    svr;            /* 0xe00a4 - System version register */
-       char    res10[3416];
+       char    res10a[8];
+       uint    rstcr;          /* 0xe00b0 - Reset control register */
+#ifdef CONFIG_MPC8568
+       char    res10b[76];
+       par_io_t qe_par_io[7];  /* 0xe0100 - 0xe01bf */
+       char    res10c[3136];
+#else
+       char    res10b[3404];
+#endif
        uint    clkocr;         /* 0xe0e00 - Clock out select register */
        char    res11[12];
        uint    ddrdllcr;       /* 0xe0e10 - DDR DLL control register */
@@ -1560,30 +1642,42 @@ typedef struct ccsr_gur {
        uint    ddrioovcr;      /* 0xe0f24 - DDR IO Override Control */
        uint    res14;          /* 0xe0f28 */
        uint    tsec34ioovcr;   /* 0xe0f2c - eTSEC 3/4 IO override control */
-       char    res15[61651];
+       char    res15[61648];   /* 0xe0f30 to 0xefffff */
 } ccsr_gur_t;
 
 #define PORDEVSR_PCI   (0x00800000)    /* PCI Mode */
 
-typedef struct immap {
-       ccsr_local_ecm_t        im_local_ecm;
-       ccsr_ddr_t              im_ddr;
-       ccsr_i2c_t              im_i2c;
-       ccsr_duart_t            im_duart;
-       ccsr_lbc_t              im_lbc;
-       ccsr_pcix_t             im_pcix;
-       ccsr_pcix_t             im_pcix2;
-       char                    reserved[90112];
-       ccsr_l2cache_t          im_l2cache;
-       ccsr_dma_t              im_dma;
-       ccsr_tsec_t             im_tsec1;
-       ccsr_tsec_t             im_tsec2;
-       ccsr_pic_t              im_pic;
-       ccsr_cpm_t              im_cpm;
-       ccsr_rio_t              im_rio;
-       ccsr_gur_t              im_gur;
-} immap_t;
-
-extern immap_t  *immr;
+#define CONFIG_SYS_MPC85xx_GUTS_OFFSET (0xE0000)
+#define CONFIG_SYS_MPC85xx_GUTS_ADDR   (CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_GUTS_OFFSET)
+#define CONFIG_SYS_MPC85xx_ECM_OFFSET  (0x0000)
+#define CONFIG_SYS_MPC85xx_ECM_ADDR    (CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_ECM_OFFSET)
+#define CONFIG_SYS_MPC85xx_DDR_OFFSET  (0x2000)
+#define CONFIG_SYS_MPC85xx_DDR_ADDR    (CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_DDR_OFFSET)
+#define CONFIG_SYS_MPC85xx_DDR2_OFFSET (0x6000)
+#define CONFIG_SYS_MPC85xx_DDR2_ADDR   (CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_DDR2_OFFSET)
+#define CONFIG_SYS_MPC85xx_LBC_OFFSET  (0x5000)
+#define CONFIG_SYS_MPC85xx_LBC_ADDR    (CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_LBC_OFFSET)
+#define CONFIG_SYS_MPC85xx_PCIX_OFFSET (0x8000)
+#define CONFIG_SYS_MPC85xx_PCIX_ADDR   (CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_PCIX_OFFSET)
+#define CONFIG_SYS_MPC85xx_PCIX2_OFFSET        (0x9000)
+#define CONFIG_SYS_MPC85xx_PCIX2_ADDR  (CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_PCIX2_OFFSET)
+#define CONFIG_SYS_MPC85xx_SATA1_OFFSET        (0x18000)
+#define CONFIG_SYS_MPC85xx_SATA1_ADDR  (CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_SATA1_OFFSET)
+#define CONFIG_SYS_MPC85xx_SATA2_OFFSET        (0x19000)
+#define CONFIG_SYS_MPC85xx_SATA2_ADDR  (CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_SATA2_OFFSET)
+#define CONFIG_SYS_MPC85xx_L2_OFFSET   (0x20000)
+#define CONFIG_SYS_MPC85xx_L2_ADDR     (CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_L2_OFFSET)
+#define CONFIG_SYS_MPC85xx_DMA_OFFSET  (0x21000)
+#define CONFIG_SYS_MPC85xx_DMA_ADDR    (CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_DMA_OFFSET)
+#define CONFIG_SYS_MPC85xx_ESDHC_OFFSET        (0x2e000)
+#define CONFIG_SYS_MPC85xx_ESDHC_ADDR  (CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_ESDHC_OFFSET)
+#define CONFIG_SYS_MPC85xx_PIC_OFFSET  (0x40000)
+#define CONFIG_SYS_MPC85xx_PIC_ADDR    (CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_PIC_OFFSET)
+#define CONFIG_SYS_MPC85xx_CPM_OFFSET  (0x80000)
+#define CONFIG_SYS_MPC85xx_CPM_ADDR    (CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_CPM_OFFSET)
+#define CONFIG_SYS_MPC85xx_SERDES1_OFFSET      (0xE3000)
+#define CONFIG_SYS_MPC85xx_SERDES1_ADDR        (CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_SERDES2_OFFSET)
+#define CONFIG_SYS_MPC85xx_SERDES2_OFFSET      (0xE3100)
+#define CONFIG_SYS_MPC85xx_SERDES2_ADDR        (CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_SERDES2_OFFSET)
 
 #endif /*__IMMAP_85xx__*/