diff options
author | Sonic Zhang <sonic.zhang@analog.com> | 2008-01-27 03:32:31 -0500 |
---|---|---|
committer | Bryan Wu <bryan.wu@analog.com> | 2008-01-27 03:32:31 -0500 |
commit | 971d5bc4e5c75bfc4466deaff09839cd6f918eca (patch) | |
tree | 1a3259e1c00c519e71e0f0842de3ec257781482c /arch/blackfin | |
parent | b03b08ba9c7235861adf4dde712dade0bb756fe0 (diff) |
[Blackfin] arch: Fix bug to Enable bf548 to Re-program Clocks while Kernel boots.
Reprogram DDR EBIU register properly for bf548.
Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
Diffstat (limited to 'arch/blackfin')
-rw-r--r-- | arch/blackfin/Kconfig | 19 | ||||
-rw-r--r-- | arch/blackfin/mach-bf548/head.S | 47 |
2 files changed, 64 insertions, 2 deletions
diff --git a/arch/blackfin/Kconfig b/arch/blackfin/Kconfig index 5ebcfd226ed8..1364dcaccc18 100644 --- a/arch/blackfin/Kconfig +++ b/arch/blackfin/Kconfig | |||
@@ -317,7 +317,7 @@ config VCO_MULT | |||
317 | range 1 64 | 317 | range 1 64 |
318 | default "22" if BFIN533_EZKIT | 318 | default "22" if BFIN533_EZKIT |
319 | default "45" if BFIN533_STAMP | 319 | default "45" if BFIN533_STAMP |
320 | default "20" if (BFIN537_STAMP || BFIN527_EZKIT) | 320 | default "20" if (BFIN537_STAMP || BFIN527_EZKIT || BFIN548_EZKIT) |
321 | default "22" if BFIN533_BLUETECHNIX_CM | 321 | default "22" if BFIN533_BLUETECHNIX_CM |
322 | default "20" if BFIN537_BLUETECHNIX_CM | 322 | default "20" if BFIN537_BLUETECHNIX_CM |
323 | default "20" if BFIN561_BLUETECHNIX_CM | 323 | default "20" if BFIN561_BLUETECHNIX_CM |
@@ -354,7 +354,7 @@ config SCLK_DIV | |||
354 | range 1 15 | 354 | range 1 15 |
355 | default 5 if BFIN533_EZKIT | 355 | default 5 if BFIN533_EZKIT |
356 | default 5 if BFIN533_STAMP | 356 | default 5 if BFIN533_STAMP |
357 | default 4 if (BFIN537_STAMP || BFIN527_EZKIT) | 357 | default 4 if (BFIN537_STAMP || BFIN527_EZKIT || BFIN548_EZKIT) |
358 | default 5 if BFIN533_BLUETECHNIX_CM | 358 | default 5 if BFIN533_BLUETECHNIX_CM |
359 | default 4 if BFIN537_BLUETECHNIX_CM | 359 | default 4 if BFIN537_BLUETECHNIX_CM |
360 | default 4 if BFIN561_BLUETECHNIX_CM | 360 | default 4 if BFIN561_BLUETECHNIX_CM |
@@ -409,6 +409,7 @@ config MEM_SIZE | |||
409 | default 32 if BFIN533_EZKIT | 409 | default 32 if BFIN533_EZKIT |
410 | default 64 if BFIN527_EZKIT | 410 | default 64 if BFIN527_EZKIT |
411 | default 64 if BFIN537_STAMP | 411 | default 64 if BFIN537_STAMP |
412 | default 64 if BFIN548_EZKIT | ||
412 | default 64 if BFIN561_EZKIT | 413 | default 64 if BFIN561_EZKIT |
413 | default 128 if BFIN533_STAMP | 414 | default 128 if BFIN533_STAMP |
414 | default 64 if PNAV10 | 415 | default 64 if PNAV10 |
@@ -416,6 +417,7 @@ config MEM_SIZE | |||
416 | 417 | ||
417 | config MEM_ADD_WIDTH | 418 | config MEM_ADD_WIDTH |
418 | int "SDRAM Memory Address Width" | 419 | int "SDRAM Memory Address Width" |
420 | depends on (!BF54x) | ||
419 | default 9 if BFIN533_EZKIT | 421 | default 9 if BFIN533_EZKIT |
420 | default 9 if BFIN561_EZKIT | 422 | default 9 if BFIN561_EZKIT |
421 | default 9 if H8606_HVSISTEMAS | 423 | default 9 if H8606_HVSISTEMAS |
@@ -424,6 +426,19 @@ config MEM_ADD_WIDTH | |||
424 | default 11 if BFIN533_STAMP | 426 | default 11 if BFIN533_STAMP |
425 | default 10 if PNAV10 | 427 | default 10 if PNAV10 |
426 | 428 | ||
429 | |||
430 | choice | ||
431 | prompt "DDR SDRAM Chip Type" | ||
432 | depends on BFIN548_EZKIT | ||
433 | default MEM_MT46V32M16_5B | ||
434 | |||
435 | config MEM_MT46V32M16_6T | ||
436 | bool "MT46V32M16_6T" | ||
437 | |||
438 | config MEM_MT46V32M16_5B | ||
439 | bool "MT46V32M16_5B" | ||
440 | endchoice | ||
441 | |||
427 | config ENET_FLASH_PIN | 442 | config ENET_FLASH_PIN |
428 | int "PF port/pin used for flash and ethernet sharing" | 443 | int "PF port/pin used for flash and ethernet sharing" |
429 | depends on (BFIN533_STAMP) | 444 | depends on (BFIN533_STAMP) |
diff --git a/arch/blackfin/mach-bf548/head.S b/arch/blackfin/mach-bf548/head.S index 745662e88759..74fe258421a5 100644 --- a/arch/blackfin/mach-bf548/head.S +++ b/arch/blackfin/mach-bf548/head.S | |||
@@ -324,12 +324,25 @@ ENTRY(_start_dma_code) | |||
324 | w[p0] = r0.l; | 324 | w[p0] = r0.l; |
325 | ssync; | 325 | ssync; |
326 | 326 | ||
327 | #if defined(CONFIG_BF54x) | ||
328 | P2.H = hi(EBIU_RSTCTL); | ||
329 | P2.L = lo(EBIU_RSTCTL); | ||
330 | R0 = [P2]; | ||
331 | BITSET (R0, 3); | ||
332 | #else | ||
327 | P2.H = hi(EBIU_SDGCTL); | 333 | P2.H = hi(EBIU_SDGCTL); |
328 | P2.L = lo(EBIU_SDGCTL); | 334 | P2.L = lo(EBIU_SDGCTL); |
329 | R0 = [P2]; | 335 | R0 = [P2]; |
330 | BITSET (R0, 24); | 336 | BITSET (R0, 24); |
337 | #endif | ||
331 | [P2] = R0; | 338 | [P2] = R0; |
332 | SSYNC; | 339 | SSYNC; |
340 | #if defined(CONFIG_BF54x) | ||
341 | .LSRR_MODE: | ||
342 | R0 = [P2]; | ||
343 | CC = BITTST(R0, 4); | ||
344 | if !CC JUMP .LSRR_MODE; | ||
345 | #endif | ||
333 | 346 | ||
334 | r0 = CONFIG_VCO_MULT & 63; /* Load the VCO multiplier */ | 347 | r0 = CONFIG_VCO_MULT & 63; /* Load the VCO multiplier */ |
335 | r0 = r0 << 9; /* Shift it over, */ | 348 | r0 = r0 << 9; /* Shift it over, */ |
@@ -361,6 +374,39 @@ ENTRY(_start_dma_code) | |||
361 | w[p0] = r0.l; | 374 | w[p0] = r0.l; |
362 | ssync; | 375 | ssync; |
363 | 376 | ||
377 | #if defined(CONFIG_BF54x) | ||
378 | P2.H = hi(EBIU_RSTCTL); | ||
379 | P2.L = lo(EBIU_RSTCTL); | ||
380 | R0 = [P2]; | ||
381 | CC = BITTST(R0, 0); | ||
382 | if CC jump .Lskipddrrst; | ||
383 | BITSET (R0, 0); | ||
384 | .Lskipddrrst: | ||
385 | BITCLR (R0, 3); | ||
386 | [P2] = R0; | ||
387 | SSYNC; | ||
388 | |||
389 | p0.l = lo(EBIU_DDRCTL0); | ||
390 | p0.h = hi(EBIU_DDRCTL0); | ||
391 | r0.l = lo(mem_DDRCTL0); | ||
392 | r0.h = hi(mem_DDRCTL0); | ||
393 | [p0] = r0; | ||
394 | ssync; | ||
395 | |||
396 | p0.l = lo(EBIU_DDRCTL1); | ||
397 | p0.h = hi(EBIU_DDRCTL1); | ||
398 | r0.l = lo(mem_DDRCTL1); | ||
399 | r0.h = hi(mem_DDRCTL1); | ||
400 | [p0] = r0; | ||
401 | ssync; | ||
402 | |||
403 | p0.l = lo(EBIU_DDRCTL2); | ||
404 | p0.h = hi(EBIU_DDRCTL2); | ||
405 | r0.l = lo(mem_DDRCTL2); | ||
406 | r0.h = hi(mem_DDRCTL2); | ||
407 | [p0] = r0; | ||
408 | ssync; | ||
409 | #else | ||
364 | p0.l = lo(EBIU_SDRRC); | 410 | p0.l = lo(EBIU_SDRRC); |
365 | p0.h = hi(EBIU_SDRRC); | 411 | p0.h = hi(EBIU_SDRRC); |
366 | r0 = mem_SDRRC; | 412 | r0 = mem_SDRRC; |
@@ -394,6 +440,7 @@ ENTRY(_start_dma_code) | |||
394 | R1 = R1 | R0; | 440 | R1 = R1 | R0; |
395 | [P2] = R1; | 441 | [P2] = R1; |
396 | SSYNC; | 442 | SSYNC; |
443 | #endif | ||
397 | 444 | ||
398 | p0.h = hi(SIC_IWR0); | 445 | p0.h = hi(SIC_IWR0); |
399 | p0.l = lo(SIC_IWR0); | 446 | p0.l = lo(SIC_IWR0); |