asynchronous clocking mode for arm920t
Hi all,
( was: [U-Boot-Users] [PATCH 4/4] add csb637 (at91rm9200) support )
Quoted 5 lines · I wrote:
Quoted 3 lines
this patch switches the at91rm9200 to synchronous clock mode after initialization (it would otherwise stay in FastBus mode which is the _slowest_ clock mode).
But I thought FastBus mode is the prefered setting for ARM cpus.
Now I retract the above statement and claim the oposite! ;-)
Anders' is correct. Atmel support told me a year ago "Linux uses the Asynchronous mode."
With his patch I now get 79.87 BogoMIPS again (without less the 40).
So I helps for AT91RM9200.
But I don't see something similar for my i.MX ARM9 and still this on in running as fast as expected...
The reason ist that this setting is done in board/mx1fs2/lowlevel_init.S and board/scb9328/lowlevel_init.S.
So I'd say the asynchronous clocking mode is best for all arm920t cpus and thus maybe this is the better patch:
Index: u-boot/cpu/arm920t/start.S
===================================================================
RCS file: /cvsroot/u-boot/u-boot/cpu/arm920t/start.S,v retrieving revision 1.13
cpu/arm920t/start.S 4 May 2005 11:27:35 -0000 renamed from cpu/arm920t/start.S 5 Apr 2005 22:30:51 -0000 1.13 +2 -1
@@ -246,13 +246,14 @@ mcr p15, 0, r0, c8, c7, 0 /* flush v4 TLB */ /* - * disable MMU stuff and caches + * disable MMU stuff and caches, switch to Asynchronous Clocking Mode */ mrc p15, 0, r0, c1, c0, 0 bic r0, r0, #0x00002300 @ clear bits 13, 9:8 (--V- --RS) bic r0, r0, #0x00000087 @ clear bits 7, 2:0 (B--- -CAM) orr r0, r0, #0x00000002 @ set bit 2 (A) Align orr r0, r0, #0x00001000 @ set bit 12 (I) I-Cache + orr r0, r0, #0xC0000000 @ set bit 31 (iA) and 30 (nF) mcr p15, 0, r0, c1, c0, 0
Can someone comment on the s3c24x0 cpu?
--
Steven
Steven Scholz <[email protected]> schreibt:
Quoted 5 lines
So I'd say the asynchronous clocking mode is best for all arm920t cpus and
thus maybe this is the better patch:Index:
u-boot/cpu/arm920t/start.S
Hi Steven,
you're not supposed to switch clocking mode before the PLLs are set up and have had time to stabilize. This takes place in the first part of lowlevel_init, which is called _after_ the code your patch touches.
If we switch clocking mode in start.S we can only do so after lowlevel_init returns (a few lines further down).
Cheers
Anders
Anders,
Quoted 6 lines
you're not supposed to switch clocking mode before the PLLs are set up and have had time to stabilize. This takes place in the first part of
lowlevel_init, which is called _after_ the code your patch touches.
If we switch clocking mode instart.Swe can only do so afterlowlevel_initreturns (a few lines further down).
Of course, you're right.
But still, I'd love to hear if this is working for s3c24x0 as well.
--
Steven
Hi Steven,
just to avoid misunderstandings:
Indeed it seems the clocking mode is a general ARM920 issue and not an AT91RM9200-specific one.
I fully agree that the right place to set it is in cpu/arm920t/start.S as you suggested - only I didn't have the courage to do it, since I can only test on one board (csb637).
Cheers
Anders
Hi Anders,
Quoted 6 lines
just to avoid misunderstandings:
Indeed it seems the clocking mode is a general ARM920 issue and not an AT91RM9200-specific one.
I fully agree that the right place to set it is incpu/arm920t/start.Sas you suggested - only I didn't have the courage to do it, since I can only test on one board (csb637).
No need to be afraid. Wolfgang does _not_ bite! ;-)
Just prepare a proper patch, explain in the Changelog entry (you have to provide) what you are doing and why.
If it sounds sane, noone objectcs and some people can confirm that the patch is working (I am happy to test), I am sure Wolfgang will apply your patch. Although I don't know how deep his patch stack currently is...
--
Steven