SPI API improvements
[platform/kernel/u-boot.git] / include / mpc83xx.h
index 4c23094..d2e1e2b 100644 (file)
 
 /* SPRIDR - System Part and Revision ID Register
  */
-#define SPRIDR_PARTID                  0xFFFF0000      /* Part Identification */
-#define SPRIDR_REVID                   0x0000FFFF      /* Revision Identification */
-
-#define SPR_8349E_REV10                        0x80300100
-#define SPR_8349_REV10                 0x80310100
-#define SPR_8347E_REV10_TBGA           0x80320100
-#define SPR_8347_REV10_TBGA            0x80330100
-#define SPR_8347E_REV10_PBGA           0x80340100
-#define SPR_8347_REV10_PBGA            0x80350100
-#define SPR_8343E_REV10                        0x80360100
-#define SPR_8343_REV10                 0x80370100
-
-#define SPR_8349E_REV11                        0x80300101
-#define SPR_8349_REV11                 0x80310101
-#define SPR_8347E_REV11_TBGA           0x80320101
-#define SPR_8347_REV11_TBGA            0x80330101
-#define SPR_8347E_REV11_PBGA           0x80340101
-#define SPR_8347_REV11_PBGA            0x80350101
-#define SPR_8343E_REV11                        0x80360101
-#define SPR_8343_REV11                 0x80370101
-
-#define SPR_8349E_REV31                        0x80300300
-#define SPR_8349_REV31                 0x80310300
-#define SPR_8347E_REV31_TBGA           0x80320300
-#define SPR_8347_REV31_TBGA            0x80330300
-#define SPR_8347E_REV31_PBGA           0x80340300
-#define SPR_8347_REV31_PBGA            0x80350300
-#define SPR_8343E_REV31                        0x80360300
-#define SPR_8343_REV31                 0x80370300
-
-#define SPR_8360E_REV10                        0x80480010
-#define SPR_8360_REV10                 0x80490010
-#define SPR_8360E_REV11                        0x80480011
-#define SPR_8360_REV11                 0x80490011
-#define SPR_8360E_REV12                        0x80480012
-#define SPR_8360_REV12                 0x80490012
-#define SPR_8360E_REV20                        0x80480020
-#define SPR_8360_REV20                 0x80490020
-#define SPR_8360E_REV21                        0x80480021
-#define SPR_8360_REV21                 0x80490021
-
-#define SPR_8323E_REV10                        0x80620010
-#define SPR_8323_REV10                 0x80630010
-#define SPR_8321E_REV10                        0x80660010
-#define SPR_8321_REV10                 0x80670010
-#define SPR_8323E_REV11                        0x80620011
-#define SPR_8323_REV11                 0x80630011
-#define SPR_8321E_REV11                        0x80660011
-#define SPR_8321_REV11                 0x80670011
-
-#define SPR_8313E_REV10                        0x80B00010
-#define SPR_8313_REV10                 0x80B10010
-#define SPR_8311E_REV10                        0x80B20010
-#define SPR_8311_REV10                 0x80B30010
-
-#define SPR_8379E_REV10                        0x80C20010
-#define SPR_8379_REV10                 0x80C30010
-#define SPR_8378E_REV10                        0x80C40010
-#define SPR_8378_REV10                 0x80C50010
-#define SPR_8377E_REV10                        0x80C60010
-#define SPR_8377_REV10                 0x80C70010
+#define SPRIDR_PARTID                  0xFFFF0000      /* Part Id */
+#define SPRIDR_REVID                   0x0000FFFF      /* Revision Id */
+
+#if defined(CONFIG_MPC834X)
+#define REVID_MAJOR(spridr)            ((spridr & 0x0000FF00) >> 8)
+#define REVID_MINOR(spridr)            (spridr & 0x000000FF)
+#else
+#define REVID_MAJOR(spridr)            ((spridr & 0x000000F0) >> 4)
+#define REVID_MINOR(spridr)            (spridr & 0x0000000F)
+#endif
+
+#define PARTID_NO_E(spridr)            ((spridr & 0xFFFE0000) >> 16)
+#define IS_E_PROCESSOR(spridr)         (!(spridr & 0x00010000)) /* has SEC */
+
+#define SPR_8311                       0x80B2
+#define SPR_8313                       0x80B0
+#define SPR_8314                       0x80B6
+#define SPR_8315                       0x80B4
+#define SPR_8321                       0x8066
+#define SPR_8323                       0x8062
+#define SPR_8343                       0x8036
+#define SPR_8347_TBGA_                 0x8032
+#define SPR_8347_PBGA_                 0x8034
+#define SPR_8349                       0x8030
+#define SPR_8358_TBGA_                 0x804A
+#define SPR_8358_PBGA_                 0x804E
+#define SPR_8360                       0x8048
+#define SPR_8377                       0x80C6
+#define SPR_8378                       0x80C4
+#define SPR_8379                       0x80C2
 
 /* SPCR - System Priority Configuration Register
  */
 #define SPCR_PCIPR                     0x03000000      /* PCI bridge system bus request priority */
 #define SPCR_PCIPR_SHIFT               (31-7)
 #define SPCR_OPT                       0x00800000      /* Optimize */
+#define SPCR_OPT_SHIFT                 (31-8)
 #define SPCR_TBEN                      0x00400000      /* E300 PowerPC core time base unit enable */
 #define SPCR_TBEN_SHIFT                        (31-9)
 #define SPCR_COREPR                    0x00300000      /* E300 PowerPC Core system bus request priority */
 /* SPCR bits - MPC831x and MPC837x specific */
 #define SPCR_TSECDP                    0x00003000      /* TSEC data priority */
 #define SPCR_TSECDP_SHIFT              (31-19)
-#define SPCR_TSECEP                    0x00000C00      /* TSEC emergency priority */
-#define SPCR_TSECEP_SHIFT              (31-21)
-#define SPCR_TSECBDP                   0x00000300      /* TSEC buffer descriptor priority */
-#define SPCR_TSECBDP_SHIFT             (31-23)
+#define SPCR_TSECBDP                   0x00000C00      /* TSEC buffer descriptor priority */
+#define SPCR_TSECBDP_SHIFT             (31-21)
+#define SPCR_TSECEP                    0x00000300      /* TSEC emergency priority */
+#define SPCR_TSECEP_SHIFT              (31-23)
 #endif
 
 /* SICRL/H - System I/O Configuration Register Low/High
 #define SICRL_URT_CTPR                 0x06000000
 #define SICRL_IRQ_CTPR                 0x00C00000
 
-#elif defined(CONFIG_MPC831X)
-/* SICRL bits - MPC831x specific */
+#elif defined(CONFIG_MPC8313)
+/* SICRL bits - MPC8313 specific */
 #define SICRL_LBC                      0x30000000
 #define SICRL_UART                     0x0C000000
 #define SICRL_SPI_A                    0x03000000
 #define SICRL_ETSEC1_A                 0x0000000C
 #define SICRL_ETSEC2_A                 0x00000003
 
-/* SICRH bits - MPC831x specific */
+/* SICRH bits - MPC8313 specific */
 #define SICRH_INTR_A                   0x02000000
 #define SICRH_INTR_B                   0x00C00000
 #define SICRH_IIC                      0x00300000
 #define SICRH_TSOBI1                   0x00000002
 #define SICRH_TSOBI2                   0x00000001
 
+#elif defined(CONFIG_MPC8315)
+/* SICRL bits - MPC8315 specific */
+#define SICRL_DMA_CH0                  0xc0000000
+#define SICRL_DMA_SPI                  0x30000000
+#define SICRL_UART                     0x0c000000
+#define SICRL_IRQ4                     0x02000000
+#define SICRL_IRQ5                     0x01800000
+#define SICRL_IRQ6_7                   0x00400000
+#define SICRL_IIC1                     0x00300000
+#define SICRL_TDM                      0x000c0000
+#define SICRL_TDM_SHARED               0x00030000
+#define SICRL_PCI_A                    0x0000c000
+#define SICRL_ELBC_A                   0x00003000
+#define SICRL_ETSEC1_A                 0x000000c0
+#define SICRL_ETSEC1_B                 0x00000030
+#define SICRL_ETSEC1_C                 0x0000000c
+#define SICRL_TSEXPOBI                 0x00000001
+
+/* SICRH bits - MPC8315 specific */
+#define SICRH_GPIO_0                   0xc0000000
+#define SICRH_GPIO_1                   0x30000000
+#define SICRH_GPIO_2                   0x0c000000
+#define SICRH_GPIO_3                   0x03000000
+#define SICRH_GPIO_4                   0x00c00000
+#define SICRH_GPIO_5                   0x00300000
+#define SICRH_GPIO_6                   0x000c0000
+#define SICRH_GPIO_7                   0x00030000
+#define SICRH_GPIO_8                   0x0000c000
+#define SICRH_GPIO_9                   0x00003000
+#define SICRH_GPIO_10                  0x00000c00
+#define SICRH_GPIO_11                  0x00000300
+#define SICRH_ETSEC2_A                 0x000000c0
+#define SICRH_TSOBI1                   0x00000002
+#define SICRH_TSOBI2                   0x00000001
+
 #elif defined(CONFIG_MPC837X)
 /* SICRL bits - MPC837x specific */
 #define SICRL_USB_A                    0xC0000000
 #define HRCWL_CE_TO_PLL_1X30           0x0000001E
 #define HRCWL_CE_TO_PLL_1X31           0x0000001F
 
+#elif defined(CONFIG_MPC8315)
+#define HRCWL_SVCOD                    0x30000000
+#define HRCWL_SVCOD_SHIFT              28
+#define HRCWL_SVCOD_DIV_2              0x00000000
+#define HRCWL_SVCOD_DIV_4              0x10000000
+#define HRCWL_SVCOD_DIV_8              0x20000000
+#define HRCWL_SVCOD_DIV_1              0x30000000
+
 #elif defined(CONFIG_MPC837X)
 #define HRCWL_SVCOD                    0x30000000
 #define HRCWL_SVCOD_SHIFT              28
 
 /* RSR - Reset Status Register
  */
-#if defined(CONFIG_MPC837X)
+#if defined(CONFIG_MPC831X) || defined(CONFIG_MPC837X)
 #define RSR_RSTSRC                     0xF0000000      /* Reset source */
 #define RSR_RSTSRC_SHIFT               28
 #else
 #define SCCR_USBCM_2                   0x00A00000
 #define SCCR_USBCM_3                   0x00F00000
 
-#elif defined(CONFIG_MPC831X)
+#elif defined(CONFIG_MPC8313)
 /* TSEC1 bits are for TSEC2 as well */
 #define SCCR_TSEC1CM                   0xc0000000
 #define SCCR_TSEC1CM_SHIFT             30
+#define SCCR_TSEC1CM_0                 0x00000000
 #define SCCR_TSEC1CM_1                 0x40000000
 #define SCCR_TSEC1CM_2                 0x80000000
 #define SCCR_TSEC1CM_3                 0xC0000000
 #define SCCR_USBDRCM_2                 0x00200000
 #define SCCR_USBDRCM_3                 0x00300000
 
+#elif defined(CONFIG_MPC8315)
+/* SCCR bits - MPC8315 specific */
+#define SCCR_TSEC1CM                   0xc0000000
+#define SCCR_TSEC1CM_SHIFT             30
+#define SCCR_TSEC1CM_0                 0x00000000
+#define SCCR_TSEC1CM_1                 0x40000000
+#define SCCR_TSEC1CM_2                 0x80000000
+#define SCCR_TSEC1CM_3                 0xC0000000
+
+#define SCCR_TSEC2CM                   0x30000000
+#define SCCR_TSEC2CM_SHIFT             28
+#define SCCR_TSEC2CM_0                 0x00000000
+#define SCCR_TSEC2CM_1                 0x10000000
+#define SCCR_TSEC2CM_2                 0x20000000
+#define SCCR_TSEC2CM_3                 0x30000000
+
+#define SCCR_USBDRCM                   0x00c00000
+#define SCCR_USBDRCM_SHIFT             22
+#define SCCR_USBDRCM_0                 0x00000000
+#define SCCR_USBDRCM_1                 0x00400000
+#define SCCR_USBDRCM_2                 0x00800000
+#define SCCR_USBDRCM_3                 0x00c00000
+
+#define SCCR_PCIEXP1CM                 0x00300000
+#define SCCR_PCIEXP2CM                 0x000c0000
+
+#define SCCR_SATA1CM                   0x00003000
+#define SCCR_SATA1CM_SHIFT             12
+#define SCCR_SATACM                    0x00003c00
+#define SCCR_SATACM_SHIFT              10
+#define SCCR_SATACM_0                  0x00000000
+#define SCCR_SATACM_1                  0x00001400
+#define SCCR_SATACM_2                  0x00002800
+#define SCCR_SATACM_3                  0x00003c00
+
+#define SCCR_TDMCM                     0x00000030
+#define SCCR_TDMCM_SHIFT               4
+#define SCCR_TDMCM_0                   0x00000000
+#define SCCR_TDMCM_1                   0x00000010
+#define SCCR_TDMCM_2                   0x00000020
+#define SCCR_TDMCM_3                   0x00000030
+
 #elif defined(CONFIG_MPC837X)
 /* SCCR bits - MPC837x specific */
 #define SCCR_TSEC1CM                   0xc0000000
  */
 #define CSCONFIG_EN                    0x80000000
 #define CSCONFIG_AP                    0x00800000
+#define CSCONFIG_ODT_WR_ACS            0x00010000
 #define CSCONFIG_ROW_BIT               0x00000700
 #define CSCONFIG_ROW_BIT_12            0x00000000
 #define CSCONFIG_ROW_BIT_13            0x00000100
 #define TIMING_CFG0_PRE_PD_EXIT_SHIFT  16
 #define TIMING_CFG0_ODT_PD_EXIT                0x00000F00
 #define TIMING_CFG0_ODT_PD_EXIT_SHIFT  8
-#define TIMING_CFG0_MRS_CYC            0x00000F00
+#define TIMING_CFG0_MRS_CYC            0x0000000F
 #define TIMING_CFG0_MRS_CYC_SHIFT      0
 
 /* TIMING_CFG_1 - DDR SDRAM Timing Configuration 1
 #define TIMING_CFG1_WRTORD_SHIFT       0
 #define TIMING_CFG1_CASLAT_20          0x00030000      /* CAS latency = 2.0 */
 #define TIMING_CFG1_CASLAT_25          0x00040000      /* CAS latency = 2.5 */
+#define TIMING_CFG1_CASLAT_30          0x00050000      /* CAS latency = 2.5 */
 
 /* TIMING_CFG_2 - DDR SDRAM Timing Configuration 2
  */
 
 /* DDRCDR - DDR Control Driver Register
  */
+#define DDRCDR_DHC_EN          0x80000000
 #define DDRCDR_EN              0x40000000
 #define DDRCDR_PZ              0x3C000000
 #define DDRCDR_PZ_MAXZ         0x00000000