
On Tue, Aug 14, 2012 at 02:03:55PM +0200, Andreas Bießmann wrote:
On 14.08.2012 11:08, Markus Hubig wrote:
On Tue, Aug 14, 2012 at 08:22:11AM +0200, Andreas Bießmann wrote:
On 27.07.12 11:16, Markus Hubig wrote:
<snipp>
Has anyone an ideea how to fix this? Or what's the cause of it? Is it even related to u-boot or is it something at91bootstrap is doing wrong?
can you please check http://patchwork.ozlabs.org/patch/107896/
It seems this patch was set to 'Accepted' but never applied to the master repository. Unfortunately this got lost in nirvana end of last year. I will apply it in any case but can you please check if it fixes your problem?
Unfortunately not ... but it dosen't do any harm.
How sad!
I wonder if this has something to do with the ominous PC9. It is possible that this PC9 switches some vital element e.g. power supply, 'output enable' of UART level shifter or something else which needs some settling. Have you tried adding some delay in between setting this pin and activating the serial port output pins?
Hmm no, good idea. I tryed this in board_early_init_f(), but again with no console output at all ...
| int board_early_init_f(void) | { | struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC; | | /* Enable clocks for all PIOs */ | writel((1 << ATMEL_ID_PIOA) | (1 << ATMEL_ID_PIOB) | | (1 << ATMEL_ID_PIOC), &pmc->pcer); | | /* Enable the serial interface */ | at91_set_gpio_output(AT91_PIN_PC9, 1); | mdelay(1000); | at91_seriald_hw_init(); | | return 0; | }
Did you investigate the PCB? Which device is directly behind the DB9 connector? Can you find a datasheet for that device and check if it has some power saving features? Can you check if these power saving features switched with the PC9? Did taskit respond to your request for detailed information?
Problem is, I don't have the circuit diagrams and taskit didn't respond yet ...
Another possible reason can be the fact that you enable the output pins after serial port is enabled (serial_init runs way before board_init).
This is what I think too! But board_early_init_f() is called befor serial_init() so this would be the place to put this, but I don't unterstand why the
| at91_set_gpio_output(AT91_PIN_PC9, 1);
command is not working in board_early_init_f() ...
I even put this into serial_init() but again with no luck ...
Therefore your output is put into the TX register but I don't know what happens then. Eventually the output is delayed until the output pins are enabled in conjunction with the 'SYS' clock. Maybe the TX logic is happily shifting the bits into nirvana until you switch on the output pins. In conjunction with the PC9 thing this could be your problem.
I'll wait what taskit says, maybe this will shine some light on this issue.
Cheers, Markus