[Balloon] Balloon 3 CPU clock scaling and bus timing

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: Chris Jones
Date:  
To: balloon
Subject: [Balloon] Balloon 3 CPU clock scaling and bus timing
A couple of users of Balloon 3 have recently come across timing problems
when using peripherals on the Samosa bus. The change to
variable-latency IO (VLIO), recently merged into svn trunk, was supposed
to sort this out once and for all. It didn't.

It turns out that the standard arrangement for CPU clock scaling in the
Linux kernel (I've been working with 2.6.29.1) runs the PXA270's memory
clock at 208MHz most of the time. VLIO takes care of the active part of
memory access cycles (when nPWE/nOE/nCS4 are asserted), making sure
they're long enough for the peripheral being accessed. Unfortunately,
when the clock is at 208MHz, the memory controller's registers don't
allow us to lengthen the inactive part of access cycles enough to
satisfy the slowness requirements of some Samosa peripherals. LCD
displays seem to be most sensitive to this.

To sort this out, I've created another kernel patch (balloon3-cpufreq,
only against 2.6.29.1 at the moment) which adjusts the table of CPU
clock frequencies in cpufreq-pxa2xx.c so that the memory clock always
runs at 104MHz. I've made sure that the SDRAM clock stays at 104MHz,
too, since it's derived from the memory clock.

Running the memory clock at 104MHz shouldn't make a noticeable
difference to the performance of anything. In theory, access to the
internal SRAM, LCD SRAM and Quick Capture interface might be a bit slower.

As a consolation prize for any performance loss, the same kernel patch
tweaks the default CPU clock frequency up to its full 520MHz from the
previous 416MHz.

Chris
--
Chris Jones -
Martin-Jones Technology Ltd, makers of Solidlights
148 Catharine Street, Cambridge, CB1 3AR, UK
Phone +44 (0) 1223 655611 Fax +44 (0) 870 112 3908
http://www.solidlights.co.uk/