]> git.sur5r.net Git - u-boot/blobdiff - include/asm-ppc/immap_83xx.h
ppc4xx: Add UBI support to PLU405 boards
[u-boot] / include / asm-ppc / immap_83xx.h
index 34ea2959902eba1a6bedb332e56d8bd33cacd23e..c60a7d21c3244da5849a8f6dd53805a4e6e8c42a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * (C) Copyright 2004-2007 Freescale Semiconductor, Inc.
+ * (C) Copyright 2004-2009 Freescale Semiconductor, Inc.
  *
  * MPC83xx Internal Memory Map
  *
@@ -30,6 +30,9 @@
 
 #include <asm/types.h>
 #include <asm/fsl_i2c.h>
+#include <asm/mpc8xxx_spi.h>
+#include <asm/fsl_lbc.h>
+#include <asm/fsl_dma.h>
 
 /*
  * Local Access Window
@@ -50,21 +53,28 @@ typedef struct sysconf83xx {
        law83xx_t lblaw[4];     /* LBIU local access window */
        u8 res2[0x20];
        law83xx_t pcilaw[2];    /* PCI local access window */
-       u8 res3[0x30];
+       u8 res3[0x10];
+       law83xx_t pcielaw[2];   /* PCI Express local access window */
+       u8 res4[0x10];
        law83xx_t ddrlaw[2];    /* DDR local access window */
-       u8 res4[0x50];
+       u8 res5[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];
+       u8 res6[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[0x0C];
+       u8 res7[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];
+       u8 res8[0xC];
+       u32 pecr1;              /* PCI Express control register 1 */
+       u32 pecr2;              /* PCI Express control register 2 */
+       u8 res9[0xB8];
 } sysconf83xx_t;
 
 /*
@@ -339,64 +349,6 @@ typedef struct duart83xx {
        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;
-
-/*
- * Serial Peripheral Interface
- */
-typedef struct spi83xx {
-       u32 mode;               /* mode register */
-       u32 event;              /* event register */
-       u32 mask;               /* mask register */
-       u32 com;                /* command register */
-       u8 res0[0x10];
-       u32 tx;                 /* transmit register */
-       u32 rx;                 /* receive register */
-       u8 res1[0xFD8];
-} spi83xx_t;
-
 /*
  * DMA/Messaging Unit
  */
@@ -416,51 +368,7 @@ typedef struct dma83xx {
        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 */
-       u32 dmamr1;             /* 0x180 DMA 1 mode register */
-       u32 dmasr1;             /* 0x184 DMA 1 status register */
-       u32 dmacdar1;           /* 0x188 DMA 1 current descriptor address register */
-       u32 res9;               /* 0x18C reserved */
-       u32 dmasar1;            /* 0x190 DMA 1 source address register */
-       u32 res10;              /* 0x194 reserved */
-       u32 dmadar1;            /* 0x198 DMA 1 destination address register */
-       u32 res11;              /* 0x19C reserved */
-       u32 dmabcr1;            /* 0x1A0 DMA 1 byte count register */
-       u32 dmandar1;           /* 0x1A4 DMA 1 next descriptor address register */
-       u32 res12[0x16];        /* 0x1A8-0x199 reserved */
-       u32 dmamr2;             /* 0x200 DMA 2 mode register */
-       u32 dmasr2;             /* 0x204 DMA 2 status register */
-       u32 dmacdar2;           /* 0x208 DMA 2 current descriptor address register */
-       u32 res13;              /* 0x20C reserved */
-       u32 dmasar2;            /* 0x210 DMA 2 source address register */
-       u32 res14;              /* 0x214 reserved */
-       u32 dmadar2;            /* 0x218 DMA 2 destination address register */
-       u32 res15;              /* 0x21C reserved */
-       u32 dmabcr2;            /* 0x220 DMA 2 byte count register */
-       u32 dmandar2;           /* 0x224 DMA 2 next descriptor address register */
-       u32 res16[0x16];        /* 0x228-0x279 reserved */
-       u32 dmamr3;             /* 0x280 DMA 3 mode register */
-       u32 dmasr3;             /* 0x284 DMA 3 status register */
-       u32 dmacdar3;           /* 0x288 DMA 3 current descriptor address register */
-       u32 res17;              /* 0x28C reserved */
-       u32 dmasar3;            /* 0x290 DMA 3 source address register */
-       u32 res18;              /* 0x294 reserved */
-       u32 dmadar3;            /* 0x298 DMA 3 destination address register */
-       u32 res19;              /* 0x29C reserved */
-       u32 dmabcr3;            /* 0x2A0 DMA 3 byte count register */
-       u32 dmandar3;           /* 0x2A4 DMA 3 next descriptor address register */
-       u32 dmagsr;             /* 0x2A8 DMA general status register */
-       u32 res20[0x15];        /* 0x2AC-0x2FF reserved */
+       struct fsl_dma dma[4];
 } dma83xx_t;
 
 /*
@@ -557,8 +465,110 @@ typedef struct security83xx {
 /*
  *  PCI Express
  */
+struct pex_inbound_window {
+       u32 ar;
+       u32 tar;
+       u32 barl;
+       u32 barh;
+};
+
+struct pex_outbound_window {
+       u32 ar;
+       u32 bar;
+       u32 tarl;
+       u32 tarh;
+};
+
+struct pex_csb_bridge {
+       u32 pex_csb_ver;
+       u32 pex_csb_cab;
+       u32 pex_csb_ctrl;
+       u8 res0[8];
+       u32 pex_dms_dstmr;
+       u8 res1[4];
+       u32 pex_cbs_stat;
+       u8 res2[0x20];
+       u32 pex_csb_obctrl;
+       u32 pex_csb_obstat;
+       u8 res3[0x98];
+       u32 pex_csb_ibctrl;
+       u32 pex_csb_ibstat;
+       u8 res4[0xb8];
+       u32 pex_wdma_ctrl;
+       u32 pex_wdma_addr;
+       u32 pex_wdma_stat;
+       u8 res5[0x94];
+       u32 pex_rdma_ctrl;
+       u32 pex_rdma_addr;
+       u32 pex_rdma_stat;
+       u8 res6[0xd4];
+       u32 pex_ombcr;
+       u32 pex_ombdr;
+       u8 res7[0x38];
+       u32 pex_imbcr;
+       u32 pex_imbdr;
+       u8 res8[0x38];
+       u32 pex_int_enb;
+       u32 pex_int_stat;
+       u32 pex_int_apio_vec1;
+       u32 pex_int_apio_vec2;
+       u8 res9[0x10];
+       u32 pex_int_ppio_vec1;
+       u32 pex_int_ppio_vec2;
+       u32 pex_int_wdma_vec1;
+       u32 pex_int_wdma_vec2;
+       u32 pex_int_rdma_vec1;
+       u32 pex_int_rdma_vec2;
+       u32 pex_int_misc_vec;
+       u8 res10[4];
+       u32 pex_int_axi_pio_enb;
+       u32 pex_int_axi_wdma_enb;
+       u32 pex_int_axi_rdma_enb;
+       u32 pex_int_axi_misc_enb;
+       u32 pex_int_axi_pio_stat;
+       u32 pex_int_axi_wdma_stat;
+       u32 pex_int_axi_rdma_stat;
+       u32 pex_int_axi_misc_stat;
+       u8 res11[0xa0];
+       struct pex_outbound_window pex_outbound_win[4];
+       u8 res12[0x100];
+       u32 pex_epiwtar0;
+       u32 pex_epiwtar1;
+       u32 pex_epiwtar2;
+       u32 pex_epiwtar3;
+       u8 res13[0x70];
+       struct pex_inbound_window pex_inbound_win[4];
+};
+
 typedef struct pex83xx {
-       u8 fixme[0x1000];
+       u8 pex_cfg_header[0x404];
+       u32 pex_ltssm_stat;
+       u8 res0[0x30];
+       u32 pex_ack_replay_timeout;
+       u8 res1[4];
+       u32 pex_gclk_ratio;
+       u8 res2[0xc];
+       u32 pex_pm_timer;
+       u32 pex_pme_timeout;
+       u8 res3[4];
+       u32 pex_aspm_req_timer;
+       u8 res4[0x18];
+       u32 pex_ssvid_update;
+       u8 res5[0x34];
+       u32 pex_cfg_ready;
+       u8 res6[0x24];
+       u32 pex_bar_sizel;
+       u8 res7[4];
+       u32 pex_bar_sel;
+       u8 res8[0x20];
+       u32 pex_bar_pf;
+       u8 res9[0x88];
+       u32 pex_pme_to_ack_tor;
+       u8 res10[0xc];
+       u32 pex_ss_intr_mask;
+       u8 res11[0x25c];
+       struct pex_csb_bridge bridge;
+       u8 res12[0x160];
 } pex83xx_t;
 
 /*
@@ -603,7 +613,7 @@ typedef struct tdmdmac83xx {
        u8 fixme[0x2000];
 } tdmdmac83xx_t;
 
-#if defined(CONFIG_MPC834X)
+#if defined(CONFIG_MPC834x)
 typedef struct immap {
        sysconf83xx_t           sysconf;        /* System configuration */
        wdt83xx_t               wdt;            /* Watch Dog Timer (WDT) Registers */
@@ -625,9 +635,9 @@ typedef struct immap {
        u8                      res2[0x1300];
        duart83xx_t             duart[2];       /* DUART */
        u8                      res3[0x900];
-       lbus83xx_t              lbus;           /* Local Bus Controller Registers */
+       fsl_lbus_t              lbus;   /* Local Bus Controller Registers */
        u8                      res4[0x1000];
-       spi83xx_t               spi;            /* Serial Peripheral Interface */
+       spi8xxx_t               spi;            /* Serial Peripheral Interface */
        dma83xx_t               dma;            /* DMA */
        pciconf83xx_t           pci_conf[2];    /* PCI Software Configuration Registers */
        ios83xx_t               ios;            /* Sequencer */
@@ -640,6 +650,12 @@ typedef struct immap {
        u8                      res7[0xC0000];
 } immap_t;
 
+#ifdef CONFIG_HAS_FSL_MPH_USB
+#define CONFIG_SYS_MPC83xx_USB_OFFSET  0x22000 /* use the MPH controller */
+#else
+#define CONFIG_SYS_MPC83xx_USB_OFFSET  0x23000 /* use the DR controller */
+#endif
+
 #elif defined(CONFIG_MPC8313)
 typedef struct immap {
        sysconf83xx_t           sysconf;        /* System configuration */
@@ -659,9 +675,9 @@ typedef struct immap {
        u8                      res1[0x1300];
        duart83xx_t             duart[2];       /* DUART */
        u8                      res2[0x900];
-       lbus83xx_t              lbus;           /* Local Bus Controller Registers */
+       fsl_lbus_t              lbus;   /* Local Bus Controller Registers */
        u8                      res3[0x1000];
-       spi83xx_t               spi;            /* Serial Peripheral Interface */
+       spi8xxx_t               spi;            /* Serial Peripheral Interface */
        dma83xx_t               dma;            /* DMA */
        pciconf83xx_t           pci_conf[1];    /* PCI Software Configuration Registers */
        u8                      res4[0x80];
@@ -694,9 +710,9 @@ typedef struct immap {
        u8                      res1[0x1300];
        duart83xx_t             duart[2];       /* DUART */
        u8                      res2[0x900];
-       lbus83xx_t              lbus;           /* Local Bus Controller Registers */
+       fsl_lbus_t              lbus;   /* Local Bus Controller Registers */
        u8                      res3[0x1000];
-       spi83xx_t               spi;            /* Serial Peripheral Interface */
+       spi8xxx_t               spi;            /* Serial Peripheral Interface */
        dma83xx_t               dma;            /* DMA */
        pciconf83xx_t           pci_conf[1];    /* PCI Software Configuration Registers */
        u8                      res4[0x80];
@@ -720,7 +736,7 @@ typedef struct immap {
        u8                      res12[0x1CF00];
 } immap_t;
 
-#elif defined(CONFIG_MPC837X)
+#elif defined(CONFIG_MPC837x)
 typedef struct immap {
        sysconf83xx_t           sysconf;        /* System configuration */
        wdt83xx_t               wdt;            /* Watch Dog Timer (WDT) Registers */
@@ -739,9 +755,9 @@ typedef struct immap {
        u8                      res1[0x1300];
        duart83xx_t             duart[2];       /* DUART */
        u8                      res2[0x900];
-       lbus83xx_t              lbus;           /* Local Bus Controller Registers */
+       fsl_lbus_t              lbus;   /* Local Bus Controller Registers */
        u8                      res3[0x1000];
-       spi83xx_t               spi;            /* Serial Peripheral Interface */
+       spi8xxx_t               spi;            /* Serial Peripheral Interface */
        dma83xx_t               dma;            /* DMA */
        pciconf83xx_t           pci_conf[1];    /* PCI Software Configuration Registers */
        u8                      res4[0x80];
@@ -789,7 +805,7 @@ typedef struct immap {
        u8                      res4[0x1300];
        duart83xx_t             duart[2];       /* DUART */
        u8                      res5[0x900];
-       lbus83xx_t              lbus;           /* Local Bus Controller Registers */
+       fsl_lbus_t              lbus;   /* Local Bus Controller Registers */
        u8                      res6[0x2000];
        dma83xx_t               dma;            /* DMA */
        pciconf83xx_t           pci_conf[1];    /* PCI Software Configuration Registers */
@@ -804,7 +820,7 @@ typedef struct immap {
        u8                      qe[0x100000];   /* QE block */
 } immap_t;
 
-#elif defined(CONFIG_MPC832X)
+#elif defined(CONFIG_MPC832x)
 typedef struct immap {
        sysconf83xx_t           sysconf;        /* System configuration */
        wdt83xx_t               wdt;            /* Watch Dog Timer (WDT) Registers */
@@ -828,7 +844,7 @@ typedef struct immap {
        u8                      res3[0x1300];
        duart83xx_t             duart[2];       /* DUART */
        u8                      res4[0x900];
-       lbus83xx_t              lbus;           /* Local Bus Controller Registers */
+       fsl_lbus_t              lbus;   /* Local Bus Controller Registers */
        u8                      res5[0x2000];
        dma83xx_t               dma;            /* DMA */
        pciconf83xx_t           pci_conf[1];    /* PCI Software Configuration Registers */
@@ -842,4 +858,14 @@ typedef struct immap {
 } immap_t;
 #endif
 
+#define CONFIG_SYS_MPC83xx_DMA_OFFSET  (0x8000)
+#define CONFIG_SYS_MPC83xx_DMA_ADDR    (CONFIG_SYS_IMMR + CONFIG_SYS_MPC83xx_DMA_OFFSET)
+#define CONFIG_SYS_MPC83xx_ESDHC_OFFSET        (0x2e000)
+#define CONFIG_SYS_MPC83xx_ESDHC_ADDR  (CONFIG_SYS_IMMR + CONFIG_SYS_MPC83xx_ESDHC_OFFSET)
+
+#ifndef CONFIG_SYS_MPC83xx_USB_OFFSET
+#define CONFIG_SYS_MPC83xx_USB_OFFSET  0x23000
+#endif
+#define CONFIG_SYS_MPC83xx_USB_ADDR \
+                       (CONFIG_SYS_IMMR + CONFIG_SYS_MPC83xx_USB_OFFSET)
 #endif                         /* __IMMAP_83xx__ */