|
@@ -1504,6 +1504,8 @@ int setup_sdram (AUX_MEM_DIMM_INFO * info)
|
|
|
|
|
|
/* for (i = info->slot * 2; i < ((info->slot * 2) + info->banks); i++) */
|
|
/* for (i = info->slot * 2; i < ((info->slot * 2) + info->banks); i++) */
|
|
{
|
|
{
|
|
|
|
+ int l, l1;
|
|
|
|
+
|
|
i = info->slot;
|
|
i = info->slot;
|
|
DP (printf
|
|
DP (printf
|
|
("\n*** Running a MRS cycle for bank %d ***\n", i));
|
|
("\n*** Running a MRS cycle for bank %d ***\n", i));
|
|
@@ -1511,20 +1513,39 @@ int setup_sdram (AUX_MEM_DIMM_INFO * info)
|
|
/* map the bank */
|
|
/* map the bank */
|
|
memory_map_bank (i, 0, GB / 4);
|
|
memory_map_bank (i, 0, GB / 4);
|
|
#if 1 /* test only */
|
|
#if 1 /* test only */
|
|
- /* set SDRAM mode */ /* To_do check it */
|
|
|
|
|
|
+
|
|
|
|
+ tmp = GTREGREAD (SDRAM_MODE);
|
|
|
|
+ GT_REG_WRITE (EXTENDED_DRAM_MODE, 0x0);
|
|
|
|
+ GT_REG_WRITE (SDRAM_OPERATION, 0x4);
|
|
|
|
+ while (GTREGREAD (SDRAM_OPERATION) != 0) {
|
|
|
|
+ DP (printf
|
|
|
|
+ ("\n*** SDRAM_OPERATION 1418 after SDRAM_MODE: Module still busy ... please wait... ***\n"));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ GT_REG_WRITE (SDRAM_MODE, tmp | 0x80);
|
|
GT_REG_WRITE (SDRAM_OPERATION, 0x3);
|
|
GT_REG_WRITE (SDRAM_OPERATION, 0x3);
|
|
- check = GTREGREAD (SDRAM_OPERATION);
|
|
|
|
- DP (printf
|
|
|
|
- ("\n*** SDRAM_OPERATION 1418 (0 = Normal Operation) = %08lx ***\n",
|
|
|
|
- check));
|
|
|
|
|
|
+ while (GTREGREAD (SDRAM_OPERATION) != 0) {
|
|
|
|
+ DP (printf
|
|
|
|
+ ("\n*** SDRAM_OPERATION 1418 after SDRAM_MODE: Module still busy ... please wait... ***\n"));
|
|
|
|
+ }
|
|
|
|
+ l1 = 0;
|
|
|
|
+ for (l=0;l<200;l++)
|
|
|
|
+ l1 += GTREGREAD (SDRAM_OPERATION);
|
|
|
|
|
|
|
|
+ GT_REG_WRITE (SDRAM_MODE, tmp);
|
|
|
|
+ GT_REG_WRITE (SDRAM_OPERATION, 0x3);
|
|
|
|
+ while (GTREGREAD (SDRAM_OPERATION) != 0) {
|
|
|
|
+ DP (printf
|
|
|
|
+ ("\n*** SDRAM_OPERATION 1418 after SDRAM_MODE: Module still busy ... please wait... ***\n"));
|
|
|
|
+ }
|
|
|
|
|
|
/* switch back to normal operation mode */
|
|
/* switch back to normal operation mode */
|
|
- GT_REG_WRITE (SDRAM_OPERATION, 0);
|
|
|
|
- check = GTREGREAD (SDRAM_OPERATION);
|
|
|
|
- DP (printf
|
|
|
|
- ("\n*** SDRAM_OPERATION 1418 (0 = Normal Operation) = %08lx ***\n",
|
|
|
|
- check));
|
|
|
|
|
|
+ GT_REG_WRITE (SDRAM_OPERATION, 0x5);
|
|
|
|
+ while (GTREGREAD (SDRAM_OPERATION) != 0) {
|
|
|
|
+ DP (printf
|
|
|
|
+ ("\n*** SDRAM_OPERATION 1418 after SDRAM_MODE: Module still busy ... please wait... ***\n"));
|
|
|
|
+ }
|
|
|
|
+
|
|
#endif /* test only */
|
|
#endif /* test only */
|
|
/* unmap the bank */
|
|
/* unmap the bank */
|
|
memory_map_bank (i, 0, 0);
|
|
memory_map_bank (i, 0, 0);
|