diff options
author | Brad Griffis | 2018-06-15 16:48:23 -0500 |
---|---|---|
committer | Brad Griffis | 2018-06-15 16:48:23 -0500 |
commit | 9cf4306f10503ffebcce9e28de8ff6c234daf773 (patch) | |
tree | 406736b76d99d585ef026240bca15fb050a71cfa | |
parent | db71b24c1c3019be9b4a59a807ae8b2b493ecd56 (diff) | |
download | am43xx-dss-files-9cf4306f10503ffebcce9e28de8ff6c234daf773.tar.gz am43xx-dss-files-9cf4306f10503ffebcce9e28de8ff6c234daf773.tar.xz am43xx-dss-files-9cf4306f10503ffebcce9e28de8ff6c234daf773.zip |
[AM4] Fix IOCTRL parsing
-rwxr-xr-x | am43xx-ddr-analysis.dss | 168 |
1 files changed, 106 insertions, 62 deletions
diff --git a/am43xx-ddr-analysis.dss b/am43xx-ddr-analysis.dss index 1cf7756..10612ea 100755 --- a/am43xx-ddr-analysis.dss +++ b/am43xx-ddr-analysis.dss | |||
@@ -46,10 +46,10 @@ function getRegisterValue(ds, addr) | |||
46 | return ds.memory.readWord(0,addr,false); | 46 | return ds.memory.readWord(0,addr,false); |
47 | } | 47 | } |
48 | 48 | ||
49 | function interpret_cmd_phy_macro(value, index) | 49 | function interpret_addrctrl_phy_macro(value_wd0, value_wd1, index) |
50 | { | 50 | { |
51 | WD1 = (value >> (21+index)) & 1; | 51 | WD1 = (value_wd1 >> index) & 1; |
52 | WD0 = (value >> (10+index)) & 1; | 52 | WD0 = (value_wd0 >> index) & 1; |
53 | WD = (WD1 << 1) | WD0; | 53 | WD = (WD1 << 1) | WD0; |
54 | if (WD == 0) return_string = "Pullup/Pulldown disabled\n"; | 54 | if (WD == 0) return_string = "Pullup/Pulldown disabled\n"; |
55 | if (WD == 1) return_string = "Weak pullup enabled\n"; | 55 | if (WD == 1) return_string = "Weak pullup enabled\n"; |
@@ -270,19 +270,8 @@ if (original_CM_PER_EMIF_CLKSTCTRL & 0x7<<8) { | |||
270 | file.write(" * If you are attempting to enter DS0 this is normal.\n"); | 270 | file.write(" * If you are attempting to enter DS0 this is normal.\n"); |
271 | } | 271 | } |
272 | 272 | ||
273 | // CONTROL: DDR_CMD0_IOCTRL | 273 | // CONTROL: CTRL_DDR_ADDRCTRL_IOCTRL |
274 | reg_val = printRegisterValue(debugSessionDAP, "CONTROL: DDR_CMD0_IOCTRL", 0x44E11404); | 274 | reg_val = printRegisterValue(debugSessionDAP, "CTRL_DDR_ADDRCTRL_IOCTRL", 0x44E11404); |
275 | file.write(" * ddr_ba2 " + interpret_cmd_phy_macro(reg_val, 0)); | ||
276 | file.write(" * ddr_wen " + interpret_cmd_phy_macro(reg_val, 1)); | ||
277 | file.write(" * ddr_ba0 " + interpret_cmd_phy_macro(reg_val, 2)); | ||
278 | file.write(" * ddr_a5 " + interpret_cmd_phy_macro(reg_val, 3)); | ||
279 | file.write(" * ddr_ck " + interpret_cmd_phy_macro(reg_val, 4)); | ||
280 | file.write(" * ddr_ckn " + interpret_cmd_phy_macro(reg_val, 5)); | ||
281 | file.write(" * ddr_a3 " + interpret_cmd_phy_macro(reg_val, 6)); | ||
282 | file.write(" * ddr_a4 " + interpret_cmd_phy_macro(reg_val, 7)); | ||
283 | file.write(" * ddr_a8 " + interpret_cmd_phy_macro(reg_val, 8)); | ||
284 | file.write(" * ddr_a9 " + interpret_cmd_phy_macro(reg_val, 9)); | ||
285 | file.write(" * ddr_a6 " + interpret_cmd_phy_macro(reg_val, 10)); | ||
286 | file.write(" * Bits 9:5 control ddr_ck and ddr_ckn\n"); | 275 | file.write(" * Bits 9:5 control ddr_ck and ddr_ckn\n"); |
287 | file.write(" - Slew "); | 276 | file.write(" - Slew "); |
288 | if ( (reg_val & 0x300) == (0 << 8) ) {file.write("fastest\n");} | 277 | if ( (reg_val & 0x300) == (0 << 8) ) {file.write("fastest\n");} |
@@ -291,7 +280,7 @@ if ( (reg_val & 0x300) == (2 << 8) ) {file.write("fast\n");} | |||
291 | if ( (reg_val & 0x300) == (3 << 8) ) {file.write("slowest\n");} | 280 | if ( (reg_val & 0x300) == (3 << 8) ) {file.write("slowest\n");} |
292 | var drive_strength_mA = ((reg_val & 0xE0) >> 5) + 5; | 281 | var drive_strength_mA = ((reg_val & 0xE0) >> 5) + 5; |
293 | file.write(" - Drive Strength " + drive_strength_mA + " mA\n"); | 282 | file.write(" - Drive Strength " + drive_strength_mA + " mA\n"); |
294 | file.write(" * Bits 4:0 control ddr_ba0, ddr_ba2, ddr_wen, ddr_a[9:8], ddr_a[6:3]\n"); | 283 | file.write(" * Bits 4:0 control all other address/control pins\n"); |
295 | file.write(" - Slew "); | 284 | file.write(" - Slew "); |
296 | if ( (reg_val & 0x18) == (0 << 3) ) {file.write("fastest\n");} | 285 | if ( (reg_val & 0x18) == (0 << 3) ) {file.write("fastest\n");} |
297 | if ( (reg_val & 0x18) == (1 << 3) ) {file.write("slow\n");} | 286 | if ( (reg_val & 0x18) == (1 << 3) ) {file.write("slow\n");} |
@@ -300,37 +289,63 @@ if ( (reg_val & 0x18) == (3 << 3) ) {file.write("slowest\n");} | |||
300 | var drive_strength_mA = ((reg_val & 0x07) >> 0) + 5; | 289 | var drive_strength_mA = ((reg_val & 0x07) >> 0) + 5; |
301 | file.write(" - Drive Strength " + drive_strength_mA + " mA\n"); | 290 | file.write(" - Drive Strength " + drive_strength_mA + " mA\n"); |
302 | 291 | ||
303 | // CONTROL: DDR_CMD1_IOCTRL | 292 | // CTRL_DDR_ADDRCTRL_WD0_IOCTRL and CTRL_DDR_ADDRCTRL_WD1_IOCTRL |
304 | reg_val = printRegisterValue(debugSessionDAP, "CONTROL: DDR_CMD1_IOCTRL", 0x44E11408); | 293 | var reg_val_wd0; |
305 | file.write(" * ddr_a15 " + interpret_cmd_phy_macro(reg_val, 1)); | 294 | var reg_val_wd1; |
306 | file.write(" * ddr_a2 " + interpret_cmd_phy_macro(reg_val, 2)); | 295 | reg_val_wd0 = printRegisterValue(debugSessionDAP, "CTRL_DDR_ADDRCTRL_WD0_IOCTRL", 0x44E11408); |
307 | file.write(" * ddr_a12 " + interpret_cmd_phy_macro(reg_val, 3)); | 296 | reg_val_wd1 = printRegisterValue(debugSessionDAP, "CTRL_DDR_ADDRCTRL_WD1_IOCTRL", 0x44E1140C); |
308 | file.write(" * ddr_a7 " + interpret_cmd_phy_macro(reg_val, 4)); | 297 | file.write(" * [ddr_a0 ] " + interpret_addrctrl_phy_macro(reg_val_wd0, reg_val_wd1, 0)); |
309 | file.write(" * ddr_ba1 " + interpret_cmd_phy_macro(reg_val, 5)); | 298 | file.write(" * [ddr_a1 ] " + interpret_addrctrl_phy_macro(reg_val_wd0, reg_val_wd1, 1)); |
310 | file.write(" * ddr_a10 " + interpret_cmd_phy_macro(reg_val, 6)); | 299 | file.write(" * [ddr_a2 ] " + interpret_addrctrl_phy_macro(reg_val_wd0, reg_val_wd1, 2)); |
311 | file.write(" * ddr_a0 " + interpret_cmd_phy_macro(reg_val, 7)); | 300 | file.write(" * [ddr_a3 ] " + interpret_addrctrl_phy_macro(reg_val_wd0, reg_val_wd1, 3)); |
312 | file.write(" * ddr_a11 " + interpret_cmd_phy_macro(reg_val, 8)); | 301 | file.write(" * [ddr_a4 ] " + interpret_addrctrl_phy_macro(reg_val_wd0, reg_val_wd1, 4)); |
313 | file.write(" * ddr_casn " + interpret_cmd_phy_macro(reg_val, 9)); | 302 | file.write(" * [ddr_a5 ] " + interpret_addrctrl_phy_macro(reg_val_wd0, reg_val_wd1, 5)); |
314 | file.write(" * ddr_rasn " + interpret_cmd_phy_macro(reg_val, 10)); | 303 | file.write(" * [ddr_a6 ] " + interpret_addrctrl_phy_macro(reg_val_wd0, reg_val_wd1, 6)); |
315 | file.write(" * Bits 4:0 control ddr_15, ddr_a[12:10], ddr_a7, ddr_a2, ddr_a0, ddr_ba1, ddr_casn, ddr_rasn\n"); | 304 | file.write(" * [ddr_a7 ] " + interpret_addrctrl_phy_macro(reg_val_wd0, reg_val_wd1, 7)); |
305 | file.write(" * [ddr_a8 ] " + interpret_addrctrl_phy_macro(reg_val_wd0, reg_val_wd1, 8)); | ||
306 | file.write(" * [ddr_a9 ] " + interpret_addrctrl_phy_macro(reg_val_wd0, reg_val_wd1, 9)); | ||
307 | file.write(" * [ddr_a10 ] " + interpret_addrctrl_phy_macro(reg_val_wd0, reg_val_wd1, 10)); | ||
308 | file.write(" * [ddr_a11 ] " + interpret_addrctrl_phy_macro(reg_val_wd0, reg_val_wd1, 11)); | ||
309 | file.write(" * [ddr_a12 ] " + interpret_addrctrl_phy_macro(reg_val_wd0, reg_val_wd1, 12)); | ||
310 | file.write(" * [ddr_a13 ] " + interpret_addrctrl_phy_macro(reg_val_wd0, reg_val_wd1, 13)); | ||
311 | file.write(" * [ddr_a14 ] " + interpret_addrctrl_phy_macro(reg_val_wd0, reg_val_wd1, 14)); | ||
312 | file.write(" * [ddr_a15 ] " + interpret_addrctrl_phy_macro(reg_val_wd0, reg_val_wd1, 15)); | ||
313 | file.write(" * [ddr_ba2 ] " + interpret_addrctrl_phy_macro(reg_val_wd0, reg_val_wd1, 16)); | ||
314 | file.write(" * [ddr_ba1 ] " + interpret_addrctrl_phy_macro(reg_val_wd0, reg_val_wd1, 17)); | ||
315 | file.write(" * [ddr_ba0 ] " + interpret_addrctrl_phy_macro(reg_val_wd0, reg_val_wd1, 18)); | ||
316 | file.write(" * [ddr_wen ] " + interpret_addrctrl_phy_macro(reg_val_wd0, reg_val_wd1, 19)); | ||
317 | file.write(" * [ddr_rasn ] " + interpret_addrctrl_phy_macro(reg_val_wd0, reg_val_wd1, 20)); | ||
318 | file.write(" * [ddr_casn ] " + interpret_addrctrl_phy_macro(reg_val_wd0, reg_val_wd1, 21)); | ||
319 | file.write(" * [ddr_nck ] " + interpret_addrctrl_phy_macro(reg_val_wd0, reg_val_wd1, 22)); | ||
320 | file.write(" * [ddr_ck ] " + interpret_addrctrl_phy_macro(reg_val_wd0, reg_val_wd1, 23)); | ||
321 | file.write(" * [ddr_cke ] " + interpret_addrctrl_phy_macro(reg_val_wd0, reg_val_wd1, 24)); | ||
322 | file.write(" * [ddr_csn1 ] " + interpret_addrctrl_phy_macro(reg_val_wd0, reg_val_wd1, 25)); | ||
323 | file.write(" * [ddr_csn0 ] " + interpret_addrctrl_phy_macro(reg_val_wd0, reg_val_wd1, 26)); | ||
324 | file.write(" * [ddr_resetn] " + interpret_addrctrl_phy_macro(reg_val_wd0, reg_val_wd1, 27)); | ||
325 | file.write(" * [ddr_odt1 ] " + interpret_addrctrl_phy_macro(reg_val_wd0, reg_val_wd1, 28)); | ||
326 | file.write(" * [ddr_odt0 ] " + interpret_addrctrl_phy_macro(reg_val_wd0, reg_val_wd1, 29)); | ||
327 | |||
328 | // CTRL_DDR_DATA0_IOCTRL | ||
329 | reg_val = printRegisterValue(debugSessionDAP, "CTRL_DDR_DATA0_IOCTRL", 0x44E11440); | ||
330 | file.write(" * ddr_d0 " + interpret_data_phy_macro(reg_val, 0)); | ||
331 | file.write(" * ddr_d1 " + interpret_data_phy_macro(reg_val, 1)); | ||
332 | file.write(" * ddr_d2 " + interpret_data_phy_macro(reg_val, 2)); | ||
333 | file.write(" * ddr_d3 " + interpret_data_phy_macro(reg_val, 3)); | ||
334 | file.write(" * ddr_d4 " + interpret_data_phy_macro(reg_val, 4)); | ||
335 | file.write(" * ddr_d5 " + interpret_data_phy_macro(reg_val, 5)); | ||
336 | file.write(" * ddr_d6 " + interpret_data_phy_macro(reg_val, 6)); | ||
337 | file.write(" * ddr_d7 " + interpret_data_phy_macro(reg_val, 7)); | ||
338 | file.write(" * ddr_dqm0 " + interpret_data_phy_macro(reg_val, 8)); | ||
339 | file.write(" * ddr_dqs0 and ddr_dqsn0 " + interpret_data_phy_macro(reg_val, 9)); | ||
340 | file.write(" * Bits 9:5 control ddr_dqs0, ddr_dqsn0\n"); | ||
316 | file.write(" - Slew "); | 341 | file.write(" - Slew "); |
317 | if ( (reg_val & 0x18) == (0 << 3) ) {file.write("fastest\n");} | 342 | if ( (reg_val & 0x300) == (0 << 8) ) {file.write("fastest\n");} |
318 | if ( (reg_val & 0x18) == (1 << 3) ) {file.write("slow\n");} | 343 | if ( (reg_val & 0x300) == (1 << 8) ) {file.write("slow\n");} |
319 | if ( (reg_val & 0x18) == (2 << 3) ) {file.write("fast\n");} | 344 | if ( (reg_val & 0x300) == (2 << 8) ) {file.write("fast\n");} |
320 | if ( (reg_val & 0x18) == (3 << 3) ) {file.write("slowest\n");} | 345 | if ( (reg_val & 0x300) == (3 << 8) ) {file.write("slowest\n");} |
321 | var drive_strength_mA = ((reg_val & 0x07) >> 0) + 5; | 346 | var drive_strength_mA = ((reg_val & 0xE0) >> 5) + 5; |
322 | file.write(" - Drive Strength " + drive_strength_mA + " mA\n"); | 347 | file.write(" - Drive Strength " + drive_strength_mA + " mA\n"); |
323 | 348 | file.write(" * Bits 4:0 control ddr_d[7:0], dqm0\n"); | |
324 | // CONTROL: DDR_CMD2_IOCTRL | ||
325 | reg_val = printRegisterValue(debugSessionDAP, "CONTROL: DDR_CMD2_IOCTRL", 0x44E1140C); | ||
326 | file.write(" * ddr_cke " + interpret_cmd_phy_macro(reg_val, 0)); | ||
327 | file.write(" * ddr_resetn " + interpret_cmd_phy_macro(reg_val, 1)); | ||
328 | file.write(" * ddr_odt " + interpret_cmd_phy_macro(reg_val, 2)); | ||
329 | file.write(" * ddr_a14 " + interpret_cmd_phy_macro(reg_val, 4)); | ||
330 | file.write(" * ddr_a13 " + interpret_cmd_phy_macro(reg_val, 5)); | ||
331 | file.write(" * ddr_csn0 " + interpret_cmd_phy_macro(reg_val, 6)); | ||
332 | file.write(" * ddr_a1 " + interpret_cmd_phy_macro(reg_val, 8)); | ||
333 | file.write(" * Bits 4:0 control ddr_cke, ddr_resetn, ddr_odt, ddr_csn0, ddr_[a14:13], ddr_a1\n"); | ||
334 | file.write(" - Slew "); | 349 | file.write(" - Slew "); |
335 | if ( (reg_val & 0x18) == (0 << 3) ) {file.write("fastest\n");} | 350 | if ( (reg_val & 0x18) == (0 << 3) ) {file.write("fastest\n");} |
336 | if ( (reg_val & 0x18) == (1 << 3) ) {file.write("slow\n");} | 351 | if ( (reg_val & 0x18) == (1 << 3) ) {file.write("slow\n");} |
@@ -339,8 +354,8 @@ if ( (reg_val & 0x18) == (3 << 3) ) {file.write("slowest\n");} | |||
339 | var drive_strength_mA = ((reg_val & 0x07) >> 0) + 5; | 354 | var drive_strength_mA = ((reg_val & 0x07) >> 0) + 5; |
340 | file.write(" - Drive Strength " + drive_strength_mA + " mA\n"); | 355 | file.write(" - Drive Strength " + drive_strength_mA + " mA\n"); |
341 | 356 | ||
342 | // CONTROL: DDR_DATA0_IOCTRL | 357 | // CTRL_DDR_DATA1_IOCTRL |
343 | reg_val = printRegisterValue(debugSessionDAP, "CONTROL: DDR_DATA0_IOCTRL", 0x44E11440); | 358 | reg_val = printRegisterValue(debugSessionDAP, "CTRL_DDR_DATA1_IOCTRL", 0x44E11444); |
344 | file.write(" * ddr_d8 " + interpret_data_phy_macro(reg_val, 0)); | 359 | file.write(" * ddr_d8 " + interpret_data_phy_macro(reg_val, 0)); |
345 | file.write(" * ddr_d9 " + interpret_data_phy_macro(reg_val, 1)); | 360 | file.write(" * ddr_d9 " + interpret_data_phy_macro(reg_val, 1)); |
346 | file.write(" * ddr_d10 " + interpret_data_phy_macro(reg_val, 2)); | 361 | file.write(" * ddr_d10 " + interpret_data_phy_macro(reg_val, 2)); |
@@ -368,19 +383,19 @@ if ( (reg_val & 0x18) == (3 << 3) ) {file.write("slowest\n");} | |||
368 | var drive_strength_mA = ((reg_val & 0x07) >> 0) + 5; | 383 | var drive_strength_mA = ((reg_val & 0x07) >> 0) + 5; |
369 | file.write(" - Drive Strength " + drive_strength_mA + " mA\n"); | 384 | file.write(" - Drive Strength " + drive_strength_mA + " mA\n"); |
370 | 385 | ||
371 | // CONTROL: DDR_DATA1_IOCTRL | 386 | // CTRL_DDR_DATA2_IOCTRL |
372 | reg_val = printRegisterValue(debugSessionDAP, "CONTROL: DDR_DATA1_IOCTRL", 0x44E11444); | 387 | reg_val = printRegisterValue(debugSessionDAP, "CTRL_DDR_DATA2_IOCTRL", 0x44E11448); |
373 | file.write(" * ddr_d0 " + interpret_data_phy_macro(reg_val, 0)); | 388 | file.write(" * ddr_d16 " + interpret_data_phy_macro(reg_val, 0)); |
374 | file.write(" * ddr_d1 " + interpret_data_phy_macro(reg_val, 1)); | 389 | file.write(" * ddr_d17 " + interpret_data_phy_macro(reg_val, 1)); |
375 | file.write(" * ddr_d2 " + interpret_data_phy_macro(reg_val, 2)); | 390 | file.write(" * ddr_d18 " + interpret_data_phy_macro(reg_val, 2)); |
376 | file.write(" * ddr_d3 " + interpret_data_phy_macro(reg_val, 3)); | 391 | file.write(" * ddr_d19 " + interpret_data_phy_macro(reg_val, 3)); |
377 | file.write(" * ddr_d4 " + interpret_data_phy_macro(reg_val, 4)); | 392 | file.write(" * ddr_d20 " + interpret_data_phy_macro(reg_val, 4)); |
378 | file.write(" * ddr_d5 " + interpret_data_phy_macro(reg_val, 5)); | 393 | file.write(" * ddr_d21 " + interpret_data_phy_macro(reg_val, 5)); |
379 | file.write(" * ddr_d6 " + interpret_data_phy_macro(reg_val, 6)); | 394 | file.write(" * ddr_d22 " + interpret_data_phy_macro(reg_val, 6)); |
380 | file.write(" * ddr_d7 " + interpret_data_phy_macro(reg_val, 7)); | 395 | file.write(" * ddr_d23 " + interpret_data_phy_macro(reg_val, 7)); |
381 | file.write(" * ddr_dqm0 " + interpret_data_phy_macro(reg_val, 8)); | 396 | file.write(" * ddr_dqm2 " + interpret_data_phy_macro(reg_val, 8)); |
382 | file.write(" * ddr_dqs0 and ddr_dqsn0 " + interpret_data_phy_macro(reg_val, 9)); | 397 | file.write(" * ddr_dqs2 and ddr_dqsn2 " + interpret_data_phy_macro(reg_val, 9)); |
383 | file.write(" * Bits 9:5 control ddr_dqs0, ddr_dqsn0\n"); | 398 | file.write(" * Bits 9:5 control ddr_dqs2, ddr_dqsn2\n"); |
384 | file.write(" - Slew "); | 399 | file.write(" - Slew "); |
385 | if ( (reg_val & 0x300) == (0 << 8) ) {file.write("fastest\n");} | 400 | if ( (reg_val & 0x300) == (0 << 8) ) {file.write("fastest\n");} |
386 | if ( (reg_val & 0x300) == (1 << 8) ) {file.write("slow\n");} | 401 | if ( (reg_val & 0x300) == (1 << 8) ) {file.write("slow\n");} |
@@ -388,7 +403,36 @@ if ( (reg_val & 0x300) == (2 << 8) ) {file.write("fast\n");} | |||
388 | if ( (reg_val & 0x300) == (3 << 8) ) {file.write("slowest\n");} | 403 | if ( (reg_val & 0x300) == (3 << 8) ) {file.write("slowest\n");} |
389 | var drive_strength_mA = ((reg_val & 0xE0) >> 5) + 5; | 404 | var drive_strength_mA = ((reg_val & 0xE0) >> 5) + 5; |
390 | file.write(" - Drive Strength " + drive_strength_mA + " mA\n"); | 405 | file.write(" - Drive Strength " + drive_strength_mA + " mA\n"); |
391 | file.write(" * Bits 4:0 control ddr_d[7:0], dqm0\n"); | 406 | file.write(" * Bits 4:0 control ddr_d[23:16], ddr_dqm2\n"); |
407 | file.write(" - Slew "); | ||
408 | if ( (reg_val & 0x18) == (0 << 3) ) {file.write("fastest\n");} | ||
409 | if ( (reg_val & 0x18) == (1 << 3) ) {file.write("slow\n");} | ||
410 | if ( (reg_val & 0x18) == (2 << 3) ) {file.write("fast\n");} | ||
411 | if ( (reg_val & 0x18) == (3 << 3) ) {file.write("slowest\n");} | ||
412 | var drive_strength_mA = ((reg_val & 0x07) >> 0) + 5; | ||
413 | file.write(" - Drive Strength " + drive_strength_mA + " mA\n"); | ||
414 | |||
415 | // CTRL_DDR_DATA3_IOCTRL | ||
416 | reg_val = printRegisterValue(debugSessionDAP, "CTRL_DDR_DATA3_IOCTRL", 0x44E1144C); | ||
417 | file.write(" * ddr_d24 " + interpret_data_phy_macro(reg_val, 0)); | ||
418 | file.write(" * ddr_d25 " + interpret_data_phy_macro(reg_val, 1)); | ||
419 | file.write(" * ddr_d26 " + interpret_data_phy_macro(reg_val, 2)); | ||
420 | file.write(" * ddr_d27 " + interpret_data_phy_macro(reg_val, 3)); | ||
421 | file.write(" * ddr_d28 " + interpret_data_phy_macro(reg_val, 4)); | ||
422 | file.write(" * ddr_d29 " + interpret_data_phy_macro(reg_val, 5)); | ||
423 | file.write(" * ddr_d30 " + interpret_data_phy_macro(reg_val, 6)); | ||
424 | file.write(" * ddr_d31 " + interpret_data_phy_macro(reg_val, 7)); | ||
425 | file.write(" * ddr_dqm3 " + interpret_data_phy_macro(reg_val, 8)); | ||
426 | file.write(" * ddr_dqs3 and ddr_dqsn3 " + interpret_data_phy_macro(reg_val, 9)); | ||
427 | file.write(" * Bits 9:5 control ddr_dqs3, ddr_dqsn3\n"); | ||
428 | file.write(" - Slew "); | ||
429 | if ( (reg_val & 0x300) == (0 << 8) ) {file.write("fastest\n");} | ||
430 | if ( (reg_val & 0x300) == (1 << 8) ) {file.write("slow\n");} | ||
431 | if ( (reg_val & 0x300) == (2 << 8) ) {file.write("fast\n");} | ||
432 | if ( (reg_val & 0x300) == (3 << 8) ) {file.write("slowest\n");} | ||
433 | var drive_strength_mA = ((reg_val & 0xE0) >> 5) + 5; | ||
434 | file.write(" - Drive Strength " + drive_strength_mA + " mA\n"); | ||
435 | file.write(" * Bits 4:0 control ddr_d[31:24], ddr_dqm3\n"); | ||
392 | file.write(" - Slew "); | 436 | file.write(" - Slew "); |
393 | if ( (reg_val & 0x18) == (0 << 3) ) {file.write("fastest\n");} | 437 | if ( (reg_val & 0x18) == (0 << 3) ) {file.write("fastest\n");} |
394 | if ( (reg_val & 0x18) == (1 << 3) ) {file.write("slow\n");} | 438 | if ( (reg_val & 0x18) == (1 << 3) ) {file.write("slow\n");} |