Merge: Add support for AMCC 440SPe CPU based eval board (Yucca).
[platform/kernel/u-boot.git] / include / asm-ppc / processor.h
index f036b68..ea5b0d2 100644 (file)
 #define SPRN_HASH1     0x3D2   /* Primary Hash Address Register */
 #define SPRN_HASH2     0x3D3   /* Secondary Hash Address Resgister */
 #define SPRN_HID0      0x3F0   /* Hardware Implementation Register 0 */
+
+#define HID0_ICE_SHIFT         15
+#define HID0_DCE_SHIFT         14
+#define HID0_DLOCK_SHIFT       12
+
 #define   HID0_EMCP    (1<<31)         /* Enable Machine Check pin */
 #define   HID0_EBA     (1<<29)         /* Enable Bus Address Parity */
 #define   HID0_EBD     (1<<28)         /* Enable Bus Data Parity */
 #define   HID0_NAP     (1<<22)
 #define   HID0_SLEEP   (1<<21)
 #define   HID0_DPM     (1<<20)
-#define   HID0_ICE     (1<<15)         /* Instruction Cache Enable */
-#define   HID0_DCE     (1<<14)         /* Data Cache Enable */
+#define   HID0_ICE     (1<<HID0_ICE_SHIFT)     /* Instruction Cache Enable */
+#define   HID0_DCE     (1<<HID0_DCE_SHIFT)     /* Data Cache Enable */
 #define   HID0_ILOCK   (1<<13)         /* Instruction Cache Lock */
-#define   HID0_DLOCK   (1<<12)         /* Data Cache Lock */
+#define   HID0_DLOCK   (1<<HID0_DLOCK_SHIFT)   /* Data Cache Lock */
 #define   HID0_ICFI    (1<<11)         /* Instr. Cache Flash Invalidate */
 #define   HID0_DCFI    (1<<10)         /* Data Cache Flash Invalidate */
 #define   HID0_DCI     HID0_DCFI
 #define SPRN_SRR1      0x01B   /* Save/Restore Register 1 */
 #define SPRN_SRR2      0x3DE   /* Save/Restore Register 2 */
 #define SPRN_SRR3      0x3DF   /* Save/Restore Register 3 */
+#ifdef CONFIG_BOOKE
+#define SPRN_SVR       0x3FF   /* System Version Register */
+#else
+#define SPRN_SVR       0x11E   /* System Version Register */
+#endif
 #define SPRN_TBHI      0x3DC   /* Time Base High */
 #define SPRN_TBHU      0x3CC   /* Time Base High User-mode */
 #define SPRN_TBLO      0x3DD   /* Time Base Low */
 #define SPRN_TBLU      0x3CD   /* Time Base Low User-mode */
-#define SPRN_TBRL      0x10D   /* Time Base Read Lower Register */
-#define SPRN_TBRU      0x10C   /* Time Base Read Upper Register */
-#define SPRN_TBWL      0x11D   /* Time Base Write Lower Register */
-#define SPRN_TBWU      0x11C   /* Time Base Write Upper Register */
+#define SPRN_TBRL      0x10C   /* Time Base Read Lower Register */
+#define SPRN_TBRU      0x10D   /* Time Base Read Upper Register */
+#define SPRN_TBWL      0x11C   /* Time Base Write Lower Register */
+#define SPRN_TBWU      0x11D   /* Time Base Write Upper Register */
 #ifndef CONFIG_BOOKE
 #define SPRN_TCR       0x3DA   /* Timer Control Register */
 #else
 #define SPRN_MAS4       0x274   /* MMU Assist Register 4 */
 #define SPRN_MAS5       0x275   /* MMU Assist Register 5 */
 #define SPRN_MAS6       0x276   /* MMU Assist Register 6 */
+#define SPRN_MAS7      0x3B0   /* MMU Assist Register 7 */
 
 #define SPRN_IVOR32     0x210   /* Interrupt Vector Offset Register 32 */
 #define SPRN_IVOR33     0x211   /* Interrupt Vector Offset Register 33 */
 #if defined(CONFIG_E500)
 #define PIR    SPRN_PIR
 #endif
+#define SVR    SPRN_SVR        /* System-On-Chip Version Register */
 #define PVR    SPRN_PVR        /* Processor Version */
 #define RPA    SPRN_RPA        /* Required Physical Address Register */
 #define SDR1   SPRN_SDR1       /* MMU hash base register */
 #define SPRG3   SPRN_SPRG3
 #define SRR0   SPRN_SRR0       /* Save and Restore Register 0 */
 #define SRR1   SPRN_SRR1       /* Save and Restore Register 1 */
+#define SVR    SPRN_SVR        /* System Version Register */
 #define TBRL   SPRN_TBRL       /* Time Base Read Lower Register */
 #define TBRU   SPRN_TBRU       /* Time Base Read Upper Register */
 #define TBWL   SPRN_TBWL       /* Time Base Write Lower Register */
 #define MAS4   SPRN_MAS4
 #define MAS5   SPRN_MAS5
 #define MAS6   SPRN_MAS6
+#define MAS7   SPRN_MAS7
 
 /* Device Control Registers */
 
 #define   IOCR_SCS     0x00000002
 #define   IOCR_SPC     0x00000001
 
+/* System-On-Chip Version Register */
+
+/* System-On-Chip Version Register (SVR) field extraction */
+
+#define SVR_VER(svr)   (((svr) >> 16) & 0xFFFF) /* Version field */
+#define SVR_REV(svr)   (((svr) >>  0) & 0xFFFF) /* Revision field */
+
+#define SVR_CID(svr)   (((svr) >> 28) & 0x0F)   /* Company or manufacturer ID */
+#define SVR_SOCOP(svr) (((svr) >> 22) & 0x3F)   /* SOC integration options */
+#define SVR_SID(svr)   (((svr) >> 16) & 0x3F)   /* SOC ID */
+#define SVR_PROC(svr)  (((svr) >> 12) & 0x0F)   /* Process revision field */
+#define SVR_MFG(svr)   (((svr) >>  8) & 0x0F)   /* Manufacturing revision */
+#define SVR_MJREV(svr) (((svr) >>  4) & 0x0F)   /* Major SOC design revision indicator */
+#define SVR_MNREV(svr) (((svr) >>  0) & 0x0F)   /* Minor SOC design revision indicator */
+
+/* System-On-Chip Version Numbers (version field only) */
+#define SVR_MPC5200    0x8011
 
 /* Processor Version Register */
 
 #define PVR_REV(pvr)  (((pvr) >>   0) & 0xFFFF)        /* Revison field */
 
 /*
- * IBM has further subdivided the standard PowerPC 16-bit version and
+ * AMCC has further subdivided the standard PowerPC 16-bit version and
  * revision subfields of the PVR for the PowerPC 403s into the following:
  */
 
 #define PVR_405GPR_RB  0x50910951
 #define PVR_440GP_RB   0x40120440
 #define PVR_440GP_RC   0x40120481
+#define PVR_440EP_RA   0x42221850
+#define PVR_440EP_RB   0x422218D3 /* 440EP rev B and 440GR rev A have same PVR */
+#define PVR_440EP_RC   0x422218D4 /* 440EP rev C and 440GR rev B have same PVR */
+#define PVR_440GR_RA   0x422218D3 /* 440EP rev B and 440GR rev A have same PVR */
+#define PVR_440GR_RB   0x422218D4 /* 440EP rev C and 440GR rev B have same PVR */
 #define PVR_440GX_RA   0x51B21850
 #define PVR_440GX_RB   0x51B21851
+#define PVR_440GX_RC   0x51B21892
+#define PVR_440GX_RF   0x51B21894
 #define PVR_405EP_RB   0x51210950
+#define PVR_440SP_RA   0x53221850
+#define PVR_440SP_RB   0x53221891
+#define PVR_440SPe_RA  0x53421890
+#define PVR_440SPe_RB  0x53521891
 #define PVR_601                0x00010000
 #define PVR_602                0x00050000
 #define PVR_603                0x00030000
 #define PVR_7400        0x000C0000
 #define PVR_7410        0x800C0000
 #define PVR_7450        0x80000000
-#define PVR_8540        0x80200010
-#define PVR_8560        0x80200010
+
+#define PVR_85xx       0x80200000
+#define PVR_85xx_REV1  (PVR_85xx | 0x0010)
+#define PVR_85xx_REV2  (PVR_85xx | 0x0020)
+
 
 /*
  * For the 8xx processors, all of them report the same PVR family for
 #define PVR_8260_HIP4   0x80811014
 #define PVR_8260_HIP7   0x80822011
 #define PVR_8260_HIP7R1 0x80822013
+#define PVR_8260_HIP7RA        0x80822014
+
+
+/*
+ * System Version Register
+ */
+
+/* System Version Register (SVR) field extraction */
+
+#define SVR_VER(svr)   (((svr) >>  16) & 0xFFFF)       /* Version field */
+#define SVR_REV(svr)   (((svr) >>   0) & 0xFFFF)       /* Revison field */
+
+#define SVR_FAM(svr)   (((svr) >> 20) & 0xFFF) /* Family field */
+#define SVR_MEM(svr)   (((svr) >> 16) & 0xF)   /* Member field */
+
+#define SVR_MAJ(svr)   (((svr) >>  4) & 0xF)   /* Major revision field*/
+#define SVR_MIN(svr)   (((svr) >>  0) & 0xF)   /* Minor revision field*/
+
+
+/*
+ * SVR_VER() Version Values
+ */
+
+#define SVR_8540       0x8030
+#define SVR_8560       0x8070
+#define SVR_8555       0x8079
+#define SVR_8541       0x807A
+#define SVR_8548       0x8031
+#define SVR_8548_E     0x8039
+
 
 /* I am just adding a single entry for 8260 boards.  I think we may be
  * able to combine mbx, fads, rpxlite, bseip, and classic into a single
 #define _MACH_gemini   0x00000200      /* Synergy Microsystems gemini board */
 #define _MACH_classic  0x00000400      /* RPCG RPX-Classic 8xx board */
 #define _MACH_oak      0x00000800      /* IBM "Oak" 403 eval. board */
-#define _MACH_walnut   0x00001000      /* IBM "Walnut" 405GP eval. board */
+#define _MACH_walnut   0x00001000      /* AMCC "Walnut" 405GP eval. board */
 #define _MACH_8260     0x00002000      /* Generic 8260 */
 #define _MACH_sandpoint 0x00004000     /* Motorola SPS Processor eval board */
 #define _MACH_tqm860   0x00008000      /* TQM860/L */
 #define _MACH_tqm8xxL  0x00010000      /* TQM8xxL */
+#define _MACH_hidden_dragon 0x00020000 /* Motorola Hidden Dragon eval board */
 
 
 /* see residual.h for these */
@@ -981,6 +1057,8 @@ void _nmask_and_or_msr(unsigned long nmask, unsigned long or_val);
 #define have_of 0
 #elif defined(CONFIG_SANDPOINT)
 #define _machine _MACH_sandpoint
+#elif defined(CONFIG_HIDDEN_DRAGON)
+#define _machine _MACH_hidden_dragon
 #define have_of 0
 #else
 #error "Machine not defined correctly"