diff options
author | Sonic Zhang <sonic.zhang@analog.com> | 2012-11-28 22:41:17 -0500 |
---|---|---|
committer | Steven Miao <realmz6@gmail.com> | 2013-05-07 06:25:59 -0400 |
commit | c83a917112ccab57044e4c8aede4c0a765c1041c (patch) | |
tree | 7c005a1249fb00f1aab5692ca7904042c14700a7 /arch/blackfin | |
parent | c1be5a5b1b355d40e6cf79cc979eb66dafa24ad1 (diff) |
blackfin: dmc: Improve DDR2 write through in DMC effict controller.
Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
Signed-off-by: Steven Miao <realmz6@gmail.com>
Diffstat (limited to 'arch/blackfin')
-rw-r--r-- | arch/blackfin/include/asm/mem_init.h | 9 | ||||
-rw-r--r-- | arch/blackfin/mach-bf609/include/mach/cdefBF60x_base.h | 2 |
2 files changed, 11 insertions, 0 deletions
diff --git a/arch/blackfin/include/asm/mem_init.h b/arch/blackfin/include/asm/mem_init.h index 9b33e7247864..c865b33eeb68 100644 --- a/arch/blackfin/include/asm/mem_init.h +++ b/arch/blackfin/include/asm/mem_init.h | |||
@@ -335,6 +335,7 @@ | |||
335 | struct ddr_config { | 335 | struct ddr_config { |
336 | u32 ddr_clk; | 336 | u32 ddr_clk; |
337 | u32 dmc_ddrctl; | 337 | u32 dmc_ddrctl; |
338 | u32 dmc_effctl; | ||
338 | u32 dmc_ddrcfg; | 339 | u32 dmc_ddrcfg; |
339 | u32 dmc_ddrtr0; | 340 | u32 dmc_ddrtr0; |
340 | u32 dmc_ddrtr1; | 341 | u32 dmc_ddrtr1; |
@@ -348,6 +349,7 @@ static struct ddr_config ddr_config_table[] __attribute__((section(".data_l1"))) | |||
348 | [0] = { | 349 | [0] = { |
349 | .ddr_clk = 125, | 350 | .ddr_clk = 125, |
350 | .dmc_ddrctl = 0x00000904, | 351 | .dmc_ddrctl = 0x00000904, |
352 | .dmc_effctl = 0x004400C0, | ||
351 | .dmc_ddrcfg = 0x00000422, | 353 | .dmc_ddrcfg = 0x00000422, |
352 | .dmc_ddrtr0 = 0x20705212, | 354 | .dmc_ddrtr0 = 0x20705212, |
353 | .dmc_ddrtr1 = 0x201003CF, | 355 | .dmc_ddrtr1 = 0x201003CF, |
@@ -358,6 +360,7 @@ static struct ddr_config ddr_config_table[] __attribute__((section(".data_l1"))) | |||
358 | [1] = { | 360 | [1] = { |
359 | .ddr_clk = 133, | 361 | .ddr_clk = 133, |
360 | .dmc_ddrctl = 0x00000904, | 362 | .dmc_ddrctl = 0x00000904, |
363 | .dmc_effctl = 0x004400C0, | ||
361 | .dmc_ddrcfg = 0x00000422, | 364 | .dmc_ddrcfg = 0x00000422, |
362 | .dmc_ddrtr0 = 0x20806313, | 365 | .dmc_ddrtr0 = 0x20806313, |
363 | .dmc_ddrtr1 = 0x2013040D, | 366 | .dmc_ddrtr1 = 0x2013040D, |
@@ -368,6 +371,7 @@ static struct ddr_config ddr_config_table[] __attribute__((section(".data_l1"))) | |||
368 | [2] = { | 371 | [2] = { |
369 | .ddr_clk = 150, | 372 | .ddr_clk = 150, |
370 | .dmc_ddrctl = 0x00000904, | 373 | .dmc_ddrctl = 0x00000904, |
374 | .dmc_effctl = 0x004400C0, | ||
371 | .dmc_ddrcfg = 0x00000422, | 375 | .dmc_ddrcfg = 0x00000422, |
372 | .dmc_ddrtr0 = 0x20A07323, | 376 | .dmc_ddrtr0 = 0x20A07323, |
373 | .dmc_ddrtr1 = 0x20160492, | 377 | .dmc_ddrtr1 = 0x20160492, |
@@ -378,6 +382,7 @@ static struct ddr_config ddr_config_table[] __attribute__((section(".data_l1"))) | |||
378 | [3] = { | 382 | [3] = { |
379 | .ddr_clk = 166, | 383 | .ddr_clk = 166, |
380 | .dmc_ddrctl = 0x00000904, | 384 | .dmc_ddrctl = 0x00000904, |
385 | .dmc_effctl = 0x004400C0, | ||
381 | .dmc_ddrcfg = 0x00000422, | 386 | .dmc_ddrcfg = 0x00000422, |
382 | .dmc_ddrtr0 = 0x20A07323, | 387 | .dmc_ddrtr0 = 0x20A07323, |
383 | .dmc_ddrtr1 = 0x2016050E, | 388 | .dmc_ddrtr1 = 0x2016050E, |
@@ -388,6 +393,7 @@ static struct ddr_config ddr_config_table[] __attribute__((section(".data_l1"))) | |||
388 | [4] = { | 393 | [4] = { |
389 | .ddr_clk = 200, | 394 | .ddr_clk = 200, |
390 | .dmc_ddrctl = 0x00000904, | 395 | .dmc_ddrctl = 0x00000904, |
396 | .dmc_effctl = 0x004400C0, | ||
391 | .dmc_ddrcfg = 0x00000422, | 397 | .dmc_ddrcfg = 0x00000422, |
392 | .dmc_ddrtr0 = 0x20a07323, | 398 | .dmc_ddrtr0 = 0x20a07323, |
393 | .dmc_ddrtr1 = 0x2016050f, | 399 | .dmc_ddrtr1 = 0x2016050f, |
@@ -398,6 +404,7 @@ static struct ddr_config ddr_config_table[] __attribute__((section(".data_l1"))) | |||
398 | [5] = { | 404 | [5] = { |
399 | .ddr_clk = 225, | 405 | .ddr_clk = 225, |
400 | .dmc_ddrctl = 0x00000904, | 406 | .dmc_ddrctl = 0x00000904, |
407 | .dmc_effctl = 0x004400C0, | ||
401 | .dmc_ddrcfg = 0x00000422, | 408 | .dmc_ddrcfg = 0x00000422, |
402 | .dmc_ddrtr0 = 0x20E0A424, | 409 | .dmc_ddrtr0 = 0x20E0A424, |
403 | .dmc_ddrtr1 = 0x302006DB, | 410 | .dmc_ddrtr1 = 0x302006DB, |
@@ -408,6 +415,7 @@ static struct ddr_config ddr_config_table[] __attribute__((section(".data_l1"))) | |||
408 | [6] = { | 415 | [6] = { |
409 | .ddr_clk = 250, | 416 | .ddr_clk = 250, |
410 | .dmc_ddrctl = 0x00000904, | 417 | .dmc_ddrctl = 0x00000904, |
418 | .dmc_effctl = 0x004400C0, | ||
411 | .dmc_ddrcfg = 0x00000422, | 419 | .dmc_ddrcfg = 0x00000422, |
412 | .dmc_ddrtr0 = 0x20E0A424, | 420 | .dmc_ddrtr0 = 0x20E0A424, |
413 | .dmc_ddrtr1 = 0x3020079E, | 421 | .dmc_ddrtr1 = 0x3020079E, |
@@ -469,6 +477,7 @@ static inline void init_dmc(u32 dmc_clk) | |||
469 | bfin_write_DMC0_TR2(ddr_config_table[i].dmc_ddrtr2); | 477 | bfin_write_DMC0_TR2(ddr_config_table[i].dmc_ddrtr2); |
470 | bfin_write_DMC0_MR(ddr_config_table[i].dmc_ddrmr); | 478 | bfin_write_DMC0_MR(ddr_config_table[i].dmc_ddrmr); |
471 | bfin_write_DMC0_EMR1(ddr_config_table[i].dmc_ddrmr1); | 479 | bfin_write_DMC0_EMR1(ddr_config_table[i].dmc_ddrmr1); |
480 | bfin_write_DMC0_EFFCTL(ddr_config_table[i].dmc_effctl); | ||
472 | bfin_write_DMC0_CTL(ddr_config_table[i].dmc_ddrctl); | 481 | bfin_write_DMC0_CTL(ddr_config_table[i].dmc_ddrctl); |
473 | break; | 482 | break; |
474 | } | 483 | } |
diff --git a/arch/blackfin/mach-bf609/include/mach/cdefBF60x_base.h b/arch/blackfin/mach-bf609/include/mach/cdefBF60x_base.h index 4954cf3f7e16..102ee4025ac9 100644 --- a/arch/blackfin/mach-bf609/include/mach/cdefBF60x_base.h +++ b/arch/blackfin/mach-bf609/include/mach/cdefBF60x_base.h | |||
@@ -312,6 +312,8 @@ | |||
312 | #define bfin_write_DMC0_EMR1(val) bfin_write32(DMC0_EMR1, val) | 312 | #define bfin_write_DMC0_EMR1(val) bfin_write32(DMC0_EMR1, val) |
313 | #define bfin_read_DMC0_CTL() bfin_read32(DMC0_CTL) | 313 | #define bfin_read_DMC0_CTL() bfin_read32(DMC0_CTL) |
314 | #define bfin_write_DMC0_CTL(val) bfin_write32(DMC0_CTL, val) | 314 | #define bfin_write_DMC0_CTL(val) bfin_write32(DMC0_CTL, val) |
315 | #define bfin_read_DMC0_EFFCTL() bfin_read32(DMC0_EFFCTL) | ||
316 | #define bfin_write_DMC0_EFFCTL(val) bfin_write32(DMC0_EFFCTL, val) | ||
315 | #define bfin_read_DMC0_STAT() bfin_read32(DMC0_STAT) | 317 | #define bfin_read_DMC0_STAT() bfin_read32(DMC0_STAT) |
316 | #define bfin_write_DMC0_STAT(val) bfin_write32(DMC0_STAT, val) | 318 | #define bfin_write_DMC0_STAT(val) bfin_write32(DMC0_STAT, val) |
317 | #define bfin_read_DMC0_DLLCTL() bfin_read32(DMC0_DLLCTL) | 319 | #define bfin_read_DMC0_DLLCTL() bfin_read32(DMC0_DLLCTL) |