Read delay calibration: return error codes
authorJean THOMAS <git0@pub.jeanthomas.me>
Mon, 3 Aug 2020 10:38:28 +0000 (12:38 +0200)
committerJean THOMAS <git0@pub.jeanthomas.me>
Mon, 3 Aug 2020 10:38:28 +0000 (12:38 +0200)
libgram/README.md
libgram/include/gram.h
libgram/src/calibration.c

index 1ab1a835ecd0c5affac221a28f65fd721d4dd093..41a8b48a783e43121d0e49b3c327d220a2953b0d 100644 (file)
@@ -1,6 +1,6 @@
 # libgram, the C companion for gram
 
-libgram is the C library for gram core initialization and memory testing.
+libgram is the C library for gram core initialization and calibration.
 
 ## HowTo
 
@@ -31,6 +31,7 @@ Link it to this library and you should be good to go!
 ```
 GRAM_ERR_NONE: No error happened (hardcoded to zero)
 GRAM_ERR_UNDOCUMENTED: Undocumented error, shame on us lazy coders (take a look at the code)
+GRAM_ERR_RDLY_MAX: Read delay calibration unsuccessful because its value exceeds DQSBUFM's max
 ```
 
 ## Using libgram outside the SoC
index 5640df6f4f97d8deb9a4f2f92da852b7f7d97b9c..52eb010628ffe53642e302b4ccb56bdb478de1d6 100644 (file)
@@ -8,7 +8,7 @@
 enum GramError {
        GRAM_ERR_NONE = 0,
        GRAM_ERR_UNDOCUMENTED,
-       GRAM_ERR_MEMTEST,
+       GRAM_ERR_RDLY_MAX,
 };
 
 struct gramCoreRegs;
index 04839987fbe3b68f5396e6c04ef2f1aeb0a7c51d..8d89ebdebf56808069c870d47798f8f1026dd93f 100644 (file)
@@ -61,6 +61,8 @@ int gram_generate_calibration(const struct gramCtx *ctx, struct gramProfile *pro
                if (gram_read_burstdet(&ctx, 0)) {
                        min_rdly_p0 = rdly;
                        break;
+               } else if (rdly == 7) {
+                       return GRAM_ERR_RDLY_MAX;
                }
        }
 
@@ -76,6 +78,8 @@ int gram_generate_calibration(const struct gramCtx *ctx, struct gramProfile *pro
                if (gram_read_burstdet(&ctx, 1)) {
                        min_rdly_p1 = rdly;
                        break;
+               } else if (rdly == 7) {
+                       return GRAM_ERR_RDLY_MAX;
                }
        }
 
@@ -92,6 +96,8 @@ int gram_generate_calibration(const struct gramCtx *ctx, struct gramProfile *pro
                if (!gram_read_burstdet(&ctx, 0)) {
                        max_rdly_p0 = rdly - 1;
                        break;
+               } else if (rdly == 7) {
+                       return GRAM_ERR_RDLY_MAX;
                }
        }
 
@@ -107,6 +113,8 @@ int gram_generate_calibration(const struct gramCtx *ctx, struct gramProfile *pro
                if (!gram_read_burstdet(&ctx, 1)) {
                        max_rdly_p1 = rdly - 1;
                        break;
+               } else if (rdly == 7) {
+                       return GRAM_ERR_RDLY_MAX;
                }
        }
 
@@ -116,7 +124,7 @@ int gram_generate_calibration(const struct gramCtx *ctx, struct gramProfile *pro
        profile->rdly_p0 = (min_rdly_p0+max_rdly_p0)/2;
        profile->rdly_p1 = (min_rdly_p1+max_rdly_p1)/2;
 
-       return 0;
+       return GRAM_ERR_NONE;
 }
 
 void gram_load_calibration(const struct gramCtx *ctx, const struct gramProfile *profile) {