uart.c: avoid changing parameter RAM on-the-fly for the console
Steffen Rumler
Steffen.Rumler at siemens.com
Fri Feb 4 02:17:30 EST 2005
Hi,
We are using the 2.4.20 PPC kernel running on the TQM859T module.
A lot of this kind of modules always hangs during the boot,
something like this:
Linux version 2.4.20-rthal5 (ru at styx) (gcc version 2.95.3 20010111 (prerelease/franzo/20010111))
#31 Thu Feb 3 15:07:0
1 CET 2005
On node 0 totalpages: 8128
zone(0): 8128 pages.
zone(1): 0 pages.
zone(2): 0 pages.
...
CPM UART driver version 0.03+
ttyS00 at 0x0280 is a SMC
^^^^^
THE SYSTEM HANGS HERE :-(
Deeper inspecting the uart.c, we recognized that the SMC (or SCC)
hardware related to the console will be (re-)configured multiple times in:
(1) serial_console_setup(): early setup with small BD tables
(2) rs_8xx_init(): bigger BD tables; without interrupts
(3) startup(): with interrupts
The re-configuring (1->2, 2->3) will be performed on-the-fly,
without disabling the hardware.
According to Motorola this is _NOT_ allowed and dangerous.
For the SMC, it is suggested to run a 'STOP TX' CPCR command followed
by disabling RX/TX in SMCMR (TEN/REN), in order to stop the controller
correctly.
I suggest to do this inside rs_8xx_init() and startup() as shown
in the patch below.
The SCC is not addressed by the patch.
With this fix, the modules hanging before can boot now.
Steffen
--
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: patch
Url: http://ozlabs.org/pipermail/linuxppc-embedded/attachments/20050203/be325b82/attachment.txt
More information about the Linuxppc-embedded
mailing list