Merge branch 'next' into for-linus
[linux-2.6-microblaze.git] / drivers / memory / jedec_ddr.h
index 4a21b50..e59ccbd 100644 (file)
@@ -29,6 +29,7 @@
 #define DDR_TYPE_LPDDR2_S4     3
 #define DDR_TYPE_LPDDR2_S2     4
 #define DDR_TYPE_LPDDR2_NVM    5
+#define DDR_TYPE_LPDDR3                6
 
 /* DDR IO width */
 #define DDR_IO_WIDTH_4         1
@@ -169,4 +170,64 @@ extern const struct lpddr2_timings
        lpddr2_jedec_timings[NUM_DDR_TIMING_TABLE_ENTRIES];
 extern const struct lpddr2_min_tck lpddr2_jedec_min_tck;
 
+/*
+ * Structure for timings for LPDDR3 based on LPDDR2 plus additional fields.
+ * All parameters are in pico seconds(ps) excluding max_freq, min_freq which
+ * are in Hz.
+ */
+struct lpddr3_timings {
+       u32 max_freq;
+       u32 min_freq;
+       u32 tRFC;
+       u32 tRRD;
+       u32 tRPab;
+       u32 tRPpb;
+       u32 tRCD;
+       u32 tRC;
+       u32 tRAS;
+       u32 tWTR;
+       u32 tWR;
+       u32 tRTP;
+       u32 tW2W_C2C;
+       u32 tR2R_C2C;
+       u32 tWL;
+       u32 tDQSCK;
+       u32 tRL;
+       u32 tFAW;
+       u32 tXSR;
+       u32 tXP;
+       u32 tCKE;
+       u32 tCKESR;
+       u32 tMRD;
+};
+
+/*
+ * Min value for some parameters in terms of number of tCK cycles(nCK)
+ * Please set to zero parameters that are not valid for a given memory
+ * type
+ */
+struct lpddr3_min_tck {
+       u32 tRFC;
+       u32 tRRD;
+       u32 tRPab;
+       u32 tRPpb;
+       u32 tRCD;
+       u32 tRC;
+       u32 tRAS;
+       u32 tWTR;
+       u32 tWR;
+       u32 tRTP;
+       u32 tW2W_C2C;
+       u32 tR2R_C2C;
+       u32 tWL;
+       u32 tDQSCK;
+       u32 tRL;
+       u32 tFAW;
+       u32 tXSR;
+       u32 tXP;
+       u32 tCKE;
+       u32 tCKESR;
+       u32 tMRD;
+};
+
 #endif /* __JEDEC_DDR_H */